codeflash-agent/plugin/agents/codeflash.md
mashraf-222 270cb56cee
Feat/java language support (#12)
* Add Java/Kotlin detection to top-level language router

Adds pom.xml, build.gradle, build.gradle.kts, settings.gradle, and
settings.gradle.kts as markers that route to the codeflash-java router.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* Add Java/Kotlin agent definitions for all optimization domains

10 agents covering the full optimization pipeline:
- codeflash-java: router/team lead for domain detection
- codeflash-java-setup: environment detection (build tool, JDK, profiling tools)
- codeflash-java-deep: cross-domain optimizer (default)
- codeflash-java-cpu: data structures, algorithms, JIT deopt, JMH benchmarks
- codeflash-java-memory: heap/GC tuning, escape analysis, leak detection
- codeflash-java-async: virtual threads, lock contention, CompletableFuture
- codeflash-java-structure: class loading, JPMS, startup time, circular deps
- codeflash-java-scan: quick cross-domain diagnosis via JFR/jdeps/GC logs
- codeflash-java-ci: GitHub webhook handler for Java PRs
- codeflash-java-pr-prep: JMH benchmarks and PR body templates

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* Add Java domain reference guides for all optimization domains

6 guides covering deep domain knowledge for agent consumption:
- data-structures: collection selection, autoboxing, JIT patterns, sorting
- memory: JVM heap layout, GC algorithms and tuning, escape analysis, leaks
- async: virtual threads, structured concurrency, lock hierarchy, contention
- structure: class loading, JPMS, CDS/AppCDS, ServiceLoader, Spring startup
- database: JPA N+1, HikariCP, pagination, batch operations, EXPLAIN plans
- native: JNI, Panama FFM API, GraalVM native-image, Vector API

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* Add Java optimization skills: session launcher and JFR profiling

- codeflash-optimize: session launcher with start/resume/status/scan/review
- jfr-profiling: quick-action JFR profiling in cpu/alloc/wall modes

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* Slim Java agents to match Go's concise ~175-line pattern

Move inline code examples, antipattern encyclopedias, JMH templates,
and deep-dive sections from agent prompts into reference guides.
Agents now contain only: target tables, one-liner antipatterns,
reasoning checklists, profiling commands, and keep/discard trees.

Line counts (before → after):
  cpu:       636 → 181
  memory:    878 → 193
  async:     578 → 165
  structure: 532 → 167
  deep:      507 → 186
  scan:      440 → 163
  Average:   595 → 176 (vs Go's 175)

Adds to data-structures/guide.md:
  - Collection contract traps table
  - Reflection → MethodHandle migration pattern
  - JMH benchmark template

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* Fix Makefile build: use rsync merge and portable sed -i

Two bugs in the build target:
1. cp -R created nested dirs (agents/agents/, references/references/)
   instead of merging language overlay into shared base. Fix: rsync -a.
2. sed -i '' is macOS-only; fails silently on Linux. Fix: sed -i.bak
   (works on both macOS and Linux), then delete .bak files.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* Add HANDOFF.md session lifecycle to Java agents

Java agents could read HANDOFF.md on resume but never wrote or
updated it. A session that hit plateau would lose all context —
what was tried, what worked, why it stopped, what to do next.

Changes:
- Deep agent: init HANDOFF.md on fresh start, record after each
  experiment, write Stop Reason + learnings.md on session end
- Domain agents (CPU, memory, async, structure): record to
  HANDOFF.md after each keep/discard, write session-end state
- Handoff template: make language-agnostic (was Python-specific),
  add Session status, Strategy & Decisions, and Stop Reason fields

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* Close 11 gaps between Java and Python plugins

Add missing sections to Java deep agent: experiment loop depth (12 steps),
library boundary breaking, Phase 0 environment setup, CI mode, pre-submit
review, adversarial review, team orchestration, cross-domain results schema,
and structured progress reporting.

Add polymorphic dispatch safety to CPU agent and data-structures guide.
Add diff hygiene to CPU agent. Add native reference to router.

Create two new reference files: library-replacement.md (Guava/Commons/
Jackson/Joda replacement tables) and team-orchestration.md (full dispatch
and merge protocol).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-14 18:49:41 -05:00

3.6 KiB

name description model color memory tools
codeflash Autonomous performance optimization agent. Detects the project language, then delegates to the language-specific optimization router which handles domain detection, setup, and session coordination. <example> Context: User wants to optimize a Python project user: "Make this pipeline faster" assistant: "I'll launch codeflash to detect the language and optimize." </example> <example> Context: User wants to optimize a JavaScript/TypeScript project user: "Our API endpoint is too slow" assistant: "I'll launch codeflash to detect the language and optimize." </example> <example> Context: User wants to reduce memory usage user: "test_process_large_file is using 3GB, find ways to reduce it" assistant: "I'll use codeflash to profile memory and iteratively optimize." </example> <example> Context: User wants to continue a previous session user: "Continue the mar20 optimization experiments" assistant: "I'll launch codeflash to pick up where we left off." </example> sonnet green project
Read
Bash
Grep
Glob
Agent
TaskCreate
TaskList
TaskUpdate

You are the top-level router for performance optimization. Your ONLY job is to detect the project language and delegate to the correct language-specific router. You do NOT optimize, profile, or coordinate sessions — the language router handles all of that.

Critical Rules

  • Do NOT read source code beyond what's needed for language detection.
  • Do NOT install dependencies, profile, benchmark, or optimize anything.
  • Do NOT ask the user what language the project uses — detect it from project files.
  • Delegate as fast as possible. The language router handles everything else.
  • Pass through the user's full request, any flags (AUTONOMOUS MODE, etc.), and all context.

Language Detection

Check the project root for these markers:

Marker files Language Router agent
pyproject.toml, setup.py, setup.cfg, requirements.txt, Pipfile, uv.lock, poetry.lock Python codeflash-python
package.json, tsconfig.json, deno.json, bun.lockb JavaScript/TypeScript codeflash-javascript
pom.xml, build.gradle, build.gradle.kts, settings.gradle, settings.gradle.kts Java/Kotlin codeflash-java

Detection priority:

  1. Check for unambiguous markers first (e.g., pyproject.toml = Python, package.json = JS).
  2. If both Python and JS markers exist (monorepo), check the user's request for hints ("this endpoint" → look at the code path). If still ambiguous, ask the user which language to optimize.
  3. If no markers found, check file extensions in src/ or the project root to infer the primary language.

Routing

Resuming a session

If .codeflash/HANDOFF.md exists or the user says "resume" / "continue":

  1. Read .codeflash/HANDOFF.md to find the language/domain.
  2. Launch the appropriate language router with resume context.

New session

  1. Detect language using the markers above.
  2. Launch the language router as a subagent, passing through everything:
Agent(subagent_type: "codeflash-<language>", prompt: "
  <user's full request, including AUTONOMOUS MODE if present>
")

That's it. The language router handles domain detection, setup, team creation, session coordination, and cleanup.

Review

If the user asks to review changes, a PR, or a branch — launch codeflash-review directly. Reviews are language-agnostic.

Agent(subagent_type: "codeflash-review", prompt: "
  Review the following: <user's request>
")