/optimize
Drive structured autoresearch iteration after evo:discover and the baseline commit. Use when the user invokes /evo:optimize or asks to try ideas, try variants, run experiments, use available GPUs, improve the current best/frontier, continue an evo search, or compare candidate
$ npx -y skills add evo-hq/evo --skill optimize --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
- Slash command
/optimize
Context preview
The summary Claude sees to decide when to auto-load this skill.
Drive structured autoresearch iteration after evo:discover and the baseline commit. Use when the user invokes /evo:optimize or asks to try ideas, try variants, run experiments, use available GPUs, improve the current best/frontier, continue an evo search, or compare candidate
SKILL.md
optimize.SKILL.mdname: optimize
description: Drive structured autoresearch iteration after evo:discover and the baseline commit. Use when the user invokes /evo:optimize or asks to try ideas, try variants, run experiments, use available GPUs, improve the current best/frontier, continue an evo search, or compare candidate changes in an evo workspace. The orchestrator plans and spawns optimization subagents; candidate edits/runs belong to those subagents. Width is set via subagents=N (1 for serial workloads, larger for parallel); the loop's structural value applies at any width.
argument-hint: "[subagents=N] [budget=N] [stall=N]"
evo_version: 0.8.0
Run the `evo` optimization loop. Each round, the orchestrator writes structured briefs and spawns subagents that execute within them. Each subagent is semi-autonomous: it reads the pointer traces, forms the concrete edit, runs experiments, and can iterate within its branch. Runs until interrupted or the stall limit is reached.
**This skill is the canonical loop for ALL post-discover work — including serial workloads.** If the workspace's resource profile forces width 1 (single GPU, single-process benchmark, etc.), you still invoke `/evo:optimize` -- just pass `subagents=1`. The loop's value is the STRUCTURE around each experiment (scan-subagent cross-cutting analysis between rounds, verifier pre/post hooks via the subagent skill, ideator spawning on stall, frontier reconciliation, stop-hook discipline), NOT just parallelism. Bypassing optimize because "I'm running serial work anyway" loses every piece of that structure -- you've reverted to ad-hoc experiment iteration with none of evo's loop benefits, just the bookkeeping.
**Plain-language trigger.** In an initialized evo workspace, casual user wording like "try a couple ideas", "try different variants", "use the available GPUs", "continue from the current best", or "see what improves" is an optimize request unless the user explicitly asks for a read-only report. Do not treat the lack of a slash command as permission to bypass this protocol. Loading this skill from plain-language wording is also explicit authorization to use the host's subagent mechanism for the resolved round width; the user does not have to say "spawn subagents" or "parallel agents" separately.
**Candidate-work delegation invariant.** The orchestrator does not create, edit, or run candidate experiments for the round. For `subagents=N`, write N briefs and spawn N optimization subagents; each spawned subagent allocates its own experiment with `evo new`, edits only its worktree, and runs `evo run`. Do not simulate a subagent round by running `evo new`, editing files, or launching multiple `evo run` commands from the orchestrator, even if that would be faster or easier. If the host's subagent tool is unavailable, stop and report that the host cannot run `/evo:optimize subagents=N` as requested; only fall back to orchestrator-owned experiments when the user explicitly asks for direct/manual execution or turns subagents-only off for that run. Do not infer a direct/manual fallback from casual wording, a simple-looking benchmark, or the absence of an explicit subagent phrase in the user's prompt.
**Resource-cap invariant.** `subagents=N` is live concurrency, not total ideas. Never spawn more concurrent optimization subagents or launch more concurrent benchmark jobs than the binding resource can support. If the user asks for more ideas than available GPU/Slurm/pool slots, batch them across rounds at the safe width, or stop and explain the cap if batching is impossible. Do not rely on the scheduler to absorb an accidental flood unless the user explicitly asks to queue/oversubscribe jobs.
**Bounded-run stop rule.** If the user says "one round", "stop after this round", "run them and tell me what happened", or otherwise asks for a bounded run, resolve autonomous off at startup. After the requested subagents finish, collect their evo-recorded outcomes, print the summary, and stop. Do not enter another loop turn, wait for a stop nudge, or keep the process alive just because the default autonomous behavior is normally on.
Evo surface -- loop-relevant
You're inside `/evo:optimize`. Things you'll pull/dispatch during the loop:
main thread (you)
├── Skills (Skill tool)
│ └── evo:finetuning before writing or changing any train.py
│
└── Subagents to dispatch (Task tool, subagent_type=...)
└── evo:ideator stalled, or every ~5 committed experiments.
One subagent per brief:
failure_analysis, literature, frontier_extrapolation
subagent thread (each subagent spawned by step 5)
├── evo:subagent skill loaded by the subagent on first turn -- the brief's
│ first sentence mandates it (not auto-loaded)
└── evo:verifier subagent MANDATORY pre AND post every evo run.
Pre: ~30s static analysis before the experiment runs.
Post: result-validity audit after it commits.
references (Read tool, on demand)
├── discover/references/sizing-the-round.md pick subagents=N
├── references/evo-wait.md waiting without burning context
├── finetuning/references/glue.md train.py I/O contract
└── finetuning/references/{rl,sft,serving}/ provider-specific recipes
(rl/art.md, sft/tinker.md,
serving/vllm.md)Full surface tree (orchestrator entry-point view, including benchmark-reviewer, infra-setup, and the complete references catalogue) lives in `evo:discover`'s "Evo surface" section.
Host conventions
This skill runs on any host that implements the Agent Skills spec. When the body uses generic phrases, apply the host's best-fit equivalent:
- **"spawn N subagents in parallel"** -- use your host's parallel-subagent tool. See Step 5 below for the per-host spawn commands.
Read more
name: optimize description: Drive structured autoresearch iteration after evo:discover and the baseline commit. Use when the user invokes /evo:optimize or asks to try ideas, try variants, run experiments, use available GPUs, improve the current best/frontier, continue an evo search, or compare candidate changes in an evo workspace. The orchestrator plans and spawns optimization subagents; candidate edits/runs belong to those subagents. Width is set via subagents=N (1 for serial workloads, larger for parallel); the loop's structural value applies at any width. argument-hint: "[subagents=N] [budget=N] [stall=N]" evo_version: 0.8.0
Run the `evo` optimization loop. Each round, the orchestrator writes structured briefs and spawns subagents that execute within them. Each subagent is semi-autonomous: it reads the pointer traces, forms the concrete edit, runs experiments, and can iterate within its branch. Runs until interrupted or the stall limit is reached.
**This skill is the canonical loop for ALL post-discover work — including serial workloads.** If the workspace's resource profile forces width 1 (single GPU, single-process benchmark, etc.), you still invoke `/evo:optimize` -- just pass `subagents=1`. The loop's value is the STRUCTURE around each experiment (scan-subagent cross-cutting analysis between rounds, verifier pre/post hooks via the subagent skill, ideator spawning on stall, frontier reconciliation, stop-hook discipline), NOT just parallelism. Bypassing optimize because "I'm running serial work anyway" loses every piece of that structure -- you've reverted to ad-hoc experiment iteration with none of evo's loop benefits, just the bookkeeping.
**Plain-language trigger.** In an initialized evo workspace, casual user wording like "try a couple ideas", "try different variants", "use the available GPUs", "continue from the current best", or "see what improves" is an optimize request unless the user explicitly asks for a read-only report. Do not treat the lack of a slash command as permission to bypass this protocol. Loading this skill from plain-language wording is also explicit authorization to use the host's subagent mechanism for the resolved round width; the user does not have to say "spawn subagents" or "parallel agents" separately.
**Candidate-work delegation invariant.** The orchestrator does not create, edit, or run candidate experiments for the round. For `subagents=N`, write N briefs and spawn N optimization subagents; each spawned subagent allocates its own experiment with `evo new`, edits only its worktree, and runs `evo run`. Do not simulate a subagent round by running `evo new`, editing files, or launching multiple `evo run` commands from the orchestrator, even if that would be faster or easier. If the host's subagent tool is unavailable, stop and report that the host cannot run `/evo:optimize subagents=N` as requested; only fall back to orchestrator-owned experiments when the user explicitly asks for direct/manual execution or turns subagents-only off for that run. Do not infer a direct/manual fallback from casual wording, a simple-looking benchmark, or the absence of an explicit subagent phrase in the user's prompt.
**Resource-cap invariant.** `subagents=N` is live concurrency, not total ideas. Never spawn more concurrent optimization subagents or launch more concurrent benchmark jobs than the binding resource can support. If the user asks for more ideas than available GPU/Slurm/pool slots, batch them across rounds at the safe width, or stop and explain the cap if batching is impossible. Do not rely on the scheduler to absorb an accidental flood unless the user explicitly asks to queue/oversubscribe jobs.
**Bounded-run stop rule.** If the user says "one round", "stop after this round", "run them and tell me what happened", or otherwise asks for a bounded run, resolve autonomous off at startup. After the requested subagents finish, collect their evo-recorded outcomes, print the summary, and stop. Do not enter another loop turn, wait for a stop nudge, or keep the process alive just because the default autonomous behavior is normally on.
Evo surface -- loop-relevant
You're inside `/evo:optimize`. Things you'll pull/dispatch during the loop:
main thread (you)
├── Skills (Skill tool)
│ └── evo:finetuning before writing or changing any train.py
│
└── Subagents to dispatch (Task tool, subagent_type=...)
└── evo:ideator stalled, or every ~5 committed experiments.
One subagent per brief:
failure_analysis, literature, frontier_extrapolation
subagent thread (each subagent spawned by step 5)
├── evo:subagent skill loaded by the subagent on first turn -- the brief's
│ first sentence mandates it (not auto-loaded)
└── evo:verifier subagent MANDATORY pre AND post every evo run.
Pre: ~30s static analysis before the experiment runs.
Post: result-validity audit after it commits.
references (Read tool, on demand)
├── discover/references/sizing-the-round.md pick subagents=N
├── references/evo-wait.md waiting without burning context
├── finetuning/references/glue.md train.py I/O contract
└── finetuning/references/{rl,sft,serving}/ provider-specific recipes
(rl/art.md, sft/tinker.md,
serving/vllm.md)Full surface tree (orchestrator entry-point view, including benchmark-reviewer, infra-setup, and the complete references catalogue) lives in `evo:discover`'s "Evo surface" section.
Host conventions
This skill runs on any host that implements the Agent Skills spec. When the body uses generic phrases, apply the host's best-fit equivalent:
- **"spawn N subagents in parallel"** -- use your host's parallel-subagent tool. See Step 5 below for the per-host spawn commands.
Get started with autoresearch on any codebase - with two simple commands. Do you want to do more with autoresearch or need a custom, hands-on deployment? Request access to evo platform or email hello@evo-hq.com.
Other skills on evo.
- /discover
Initialize evo for the current repository by exploring the codebase, proposing unexplored optimization dimensions, constructing the benchmark inside a baseline worktree, and running the first experiment. Use when the user invokes /evo:discover, mentions setting up evo, wants to
Open skill - /infra-setup
Non-user-invocable provider/setup reference for evo backend switching, prerequisite checks, and auth/install guidance.
Open skill - /report
Read-only evo run reporting. Use when the user invokes /evo:report, asks what happened overnight, asks what improved recently, asks for the best/frontier candidates, asks for a quick score chart without opening the dashboard, or wants the scatter plot in chat output. Never run
Open skill - /ship
Land the winning experiment from an evo run as a clean, mergeable change -- open a PR when the repo has a remote, otherwise merge into the working branch. Distills the best-scoring experiment down to the minimal diff that reproduces its behaviour, shaped for the qualities a
Open skill - /subagent
Protocol that evo optimization subagents follow when dispatched from /optimize. Auto-loaded by spawned subagents via their host's skill loader. The orchestrator may also invoke this skill to understand the brief shape its dispatched subagents expect + what they're required to
Open skill - /discover
Initialize evo for the current repository by exploring the codebase, proposing unexplored optimization dimensions, constructing the benchmark inside a baseline worktree, and running the first experiment. Use when the user invokes /evo:discover, mentions setting up evo, wants to
Open skill

