ワンクリックで
optimize
Run the evo optimization loop with parallel subagents until interrupted.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
Run the evo optimization loop with parallel subagents until interrupted.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
Validate, lint, audit, or debug Ansible playbooks, roles, inventories, FQCN, tasks.
Validate, lint, audit, or review azure-pipelines.yml — syntax, security, best practices.
Validate, lint, audit, or check Fluent Bit configs (INPUT, FILTER, OUTPUT, tag routing).
Generate/create/scaffold Jenkinsfile — declarative, scripted, shared library, CI/CD pipelines.
Generate/create/scaffold Terragrunt HCL files — root.hcl, terragrunt.hcl, child modules, stacks, multi-env layouts.
Validate, lint, audit, or check Terragrunt .hcl/terragrunt.hcl files, stacks, modules, compliance.
| name | optimize |
| description | Run the evo optimization loop with parallel subagents until interrupted. |
| argument-hint | [subagents=N] [budget=N] [stall=N] |
Run the evo optimization loop. Each round, the orchestrator writes structured briefs and spawns parallel 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 runs on any host that implements the Agent Skills spec. When the body uses generic phrases, apply the host's best-fit equivalent:
Agent with run_in_background, spawn_agent + wait_agent, spawn_agents_on_csv for batch). Respect the host's concurrency cap -- if N exceeds it, run in batches. If the host has no parallel-subagent tool, run them serially and note the reduced round width in the final summary./evo:optimize) -- translate to your host's mention syntax when speaking to the user (e.g. $evo optimize on Codex -- plugin namespace then skill name, separated by a space).These defaults can be overridden via arguments: /optimize [subagents=N] [budget=N] [stall=N]
evo status should succeed)/discover first)Orchestrator (this agent):
- Reads state, identifies failure patterns cross-cutting the tree
- Writes one brief per subagent: objective + parent + boundaries + pointer traces
- Verifies briefs are diverse (no two attacking the same surface)
- Collects results, prunes dead branches, adjusts strategy
Subagent A (brief, budget: N iterations):
- Reads its pointer traces, forms the concrete edit
- Creates experiment, edits target, runs benchmark, analyzes
- If budget remains and sees a promising follow-up, continues
- Can run up to N serial experiments on its own branch
- Returns: what it tried, what worked, what it learned
Subagent B (different brief, budget: N iterations):
- Same protocol, non-overlapping objective
...
Both layers read traces; the depth differs. The orchestrator scans for cross-cutting patterns (which failures are common, which branches plateau) -- enough to pick N non-overlapping briefs. Subagents read their pointer traces in depth, enough to commit to a concrete edit. Structured briefs are what prevent parallel subagents from duplicating each other's work.
Trace instrumentation style: .evo/meta.json's instrumentation_mode records sdk vs inline. Subagents must stay consistent with it (see skills/subagent/SKILL.md for details).
Repeat until interrupted or stall limit reached:
evo scratchpad # full state: tree, best path, frontier, annotations, diffs, gates, what-not-to-try
evo frontier # explorable nodes (JSON)
evo status # one-line summary
evo annotations # all annotations (filterable with --task/--exp)
evo path <id> # root-to-node chain with scores
evo diff <id> # diff vs parent
evo diff <id> <other> # diff between any two experiments
evo gate list <id> # effective gates for a node (inherited from ancestors)
On the first iteration, also read .evo/project.md to understand the optimization surface.
From the scratchpad, frontier, traces, and annotations, determine:
evo gate list <id>) -- subagents must satisfy theseRead the "Awaiting Decision" section of the scratchpad. Evaluated nodes (ran, bad outcome, not yet discarded) are a cross-agent signal: if three subagents in the last round produced evaluated nodes that all failed the same gate, surface the pattern -- maybe the gate is too tight, maybe the approach has a shared flaw. Either tell the next round to avoid it, or propose a brief that attacks it directly. Without this cross-cutting read, each subagent rediscovers the same wall independently.
Then write one brief per subagent with these four fields:
Be specific and bounded. Vague briefs like "improve accuracy" cause subagents to duplicate each other's work; structured briefs prevent it.
Diversity check (before spawning). Re-read the N briefs side by side. If two briefs:
merge or re-scope one of them. The frontier/pruning logic handles tree-level exploration vs exploitation algorithmically -- the orchestrator's job is just to make sure the round's N briefs don't collapse onto each other.
Spawn all subagents in a single batch using your host's parallel-subagent tool (see "Host conventions" for examples). They must execute in parallel, not sequentially -- serial execution defeats the per-round width.
Pick a faster model for straightforward briefs and a stronger model for harder ones requiring deeper trace analysis, if your host exposes per-call model selection.
Each subagent prompt must include:
skills/subagent/SKILL.md and follow its protocolAfter all subagents complete:
Cross-cut the round's evaluated nodes. Before moving on, read experiments/<id>/attempts/NNN/outcome.json for each evaluated node from this round. The structured gates[] entries and benchmark.result let you spot shared failure modes the subagent summaries may have glossed over (e.g., three different subagents produced evaluated nodes whose gate_failures all included refund_flow -- that's a structural constraint the next round must confront, not three independent bad hypotheses).
Prune dead branches where 3+ children all regressed:
evo prune <exp_id> --reason "exhausted: N children all regressed"
Update notes with cross-cutting learnings:
evo set <exp_id> --note "key insight from round N"
Continue if:
Stop if:
On stop, print a final summary:
evo diff <best_exp_id>Go back to step 1.