Using cap evolve
Skill skillberry-ai/cap-evolve/skills/orchestrate/using-cap-evolve
Entry-point router for cap-evolve. Use the moment a user asks to OPTIMIZE an agent capability against an eval — "optimize <X>", "make <X> score higher on <benchmark>", "improve this skill/tool/prompt". Decides whether a project already exists and routes accordingly: to intake (Phase 1) for a fresh request, or straight into the phase chain / `cap-evolve run` when `.capevolve/project/` is already scaffolded. Explains the two ways to run (standalone `/cap-evolve:<phase>` chain vs the fully-automatic `cap-evolve run`) and restates the non-negotiable honesty rules. Does no optimization itself.From its SKILL.md
npx -y skills add skillberry-ai/cap-evolve --skill using-cap-evolveAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- runs commandsInstructs the agent to run 2 commands, including `python scripts/run.py "$ARGUMENTS" --base .capevolve` and 1 more.
SKILL.md
3.3 KB, 698 tokens by cl100k_base, as published. Nobody here has run it
using-cap-evolve — the router
This is the front door. When someone says "optimize <X>", you land here first. The router does not run any phase — it figures out where the user is and sends them to the right next step, then gets out of the way.
Routing decision
Run the resolver to see the current state and the recommended next command:
python scripts/run.py "$ARGUMENTS" --base .capevolve
It prints {state, next, sequence, ...}:
- state
fresh(no.capevolve/project/): route to/cap-evolve:intake— it interviews the user, scaffolds the project, and gathers inputs. Never skip intake on a fresh request; never fabricate a NEEDED input. - state
scaffolded(capevolve.yamlexists, check not yet green): route to/cap-evolve:implement-and-checkand stop at the hard gate (cap-evolve checkmust print{"ok": true}). - state
ready(check green): offer the two run modes below. - state
running/finalized: route to/cap-evolve:reportfor status / the sealed-test result.
Two ways to run (both honest, same engine)
- Standalone phase chain — drive it turn by turn, inspecting each step:
/cap-evolve:intake→/cap-evolve:implement-and-check→/cap-evolve:baseline→/cap-evolve:<algorithm>(e.g.hill-climb,gepa,skillopt, oragent-optimizein agent mode) →/cap-evolve:finalize→/cap-evolve:report. Use when you want to review each phase, or to run just one phase. - Fully automatic —
/cap-evolve:orchestrate --execute, or directly:
Sequences every phase, enforces the hard gate before spending budget, decides when to stop (budget/stall), and ends with the sealed-test number.cap-evolve run --spec .capevolve/project/capevolve.yaml
Host-agnostic fallback (no plugin / non-Claude host): point the agent at
RUN.md and follow it step by step. Same rules, no Claude-only features needed.
The non-negotiable rules (restated; enforced by core + hooks)
- Split train/val/test once, seeded; test is scored only at finalize, once.
- Accept on val by significance, never on the data the optimizer edited.
- Do not edit
splits.json,rollouts/test/*, or*test*gold*files — the plugin's PreToolUse hook blocks it; the seal lives in core. - An iteration may not "finish" while
cap-evolve checkis red (Stop hook).
References
references/routing.md— the state machine, the session-start injection JSON shape, and how this router relates toorchestrate.
What ships with it: 6 files
10.9 KB alongside SKILL.md, 4 of them executable
references/
- routing.md2.4 KB
scripts/
- abstract.pyruns231 B
- _bootstrap.pyruns1.3 KB
- check.pyruns2.0 KB
- run.pyruns4.5 KB
- meta.yaml421 B
Gives 0 of the 12 instructions most performance cost skills give in 698 tokens
Counted across 797 of the 1,117 authors here whose files we hold, read 2026-09-06
- Check for product marketing context firstin 46 of 797, across 20 files
- Measure before optimizingin 31 of 797, across 25 files
- Profile first to identify the actual bottleneckin 23 of 797, across 22 files
- Verify your robots.txt allows AI crawlersin 21 of 797, across 12 files
- Import directly and avoid barrel filesin 19 of 797, across 15 files
- Spawn all runs in the same turnin 18 of 797, across 11 files
- Write a draft of the skillin 17 of 797, across 10 files
- Understand the user's intentin 17 of 797, across 10 files
- Use React.cache for per-request deduplicationin 16 of 797, across 11 files
- Profile before optimizingin 16 of 797, across 14 files
- Include specific numbers with sourcesin 15 of 797, across 8 files
- Add lazy loading to below-fold imagesin 15 of 797, across 10 files
Said here and by no other author read
- Ask the user for any needed input that is missing
- Run python run.py from the base directory
- Follow the next step returned
- Resume interrupted runs
- Reuse baseline for new attempts
Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once. Length counted with cl100k_base; the agent that loads this file may tokenize it differently.