---
name: evolve
description: "Analyzes agent/skill failures, drafts prompt/permission fixes. Triggers: improve agent, refine skill, system prompt, optimize agent."
effort: medium
disable-model-invocation: true
context: fork
agent: meta-architect
allowed-tools: Read, Edit, Grep, Glob
---

# Evolve Command

$ARGUMENTS

Triggers the Meta-Architect to improve agent and skill definitions based on observed patterns.

## Usage

```bash
/evolve [source]
# /evolve learnings        : analyze kb/learnings/ for recurring failure patterns
# /evolve last-failure     : analyze the most recent error log
# /evolve agents           : audit all agent definitions for gaps
```

## Protocol

### 1. Analyze

Read the input source and extract actionable patterns:

- **learnings**: grep `kb/learnings/` for entries tagged `failure`, `retry`, `timeout`, or `inefficiency`
- **last-failure**: read the most recent file in `kb/learnings/` and identify root cause
- **agents**: scan all `.md` files in `app/agents/` for missing tools, vague prompts, or mismatched model tiers

### 2. Design

Draft changes targeting the identified patterns:

| Target | File Location | Change Type |
|--------|--------------|-------------|
| Agent definitions | `app/agents/*.md` | Frontmatter (tools, model), system prompt text |
| Skill definitions | `app/skills/*/SKILL.md` | Description, workflow steps, allowed-tools |
| Rules | `app/rules/` | New or updated rule files |

Show the proposed diff to the user before applying.

### 3. Implement

Apply approved changes. After each edit:

- Run `python3 scripts/validate.py` to confirm structural integrity
- Verify YAML frontmatter parses without errors
- Confirm no forbidden patterns (eval, exec, shell=True)

### 4. Report

Create a summary documenting what evolved:

```markdown
## Evolution Report
- **Source**: [learnings | last-failure | agents]
- **Pattern found**: [description of failure/inefficiency]
- **Changes applied**:
  - `app/agents/[name].md`: [what changed and why]
- **Validation**: passed / failed
```

## Rules

- **MUST** delegate file edits to the `meta-architect` agent — this command is the trigger, the agent owns the changes
- **MUST** have a concrete failure signal (recurring error, named incident, repeated correction) before evolving — do not mutate based on vibes
- **NEVER** evolve an agent based on a **single** failure instance — evolution is pattern-matching, not reaction
- **NEVER** touch `.claude/agents/*` files directly from this skill; `meta-architect` is the only agent with that authority
- **CRITICAL**: every evolution names the trigger, the change, and the expected measurable shift (e.g., "reduces false routing of `/debug` to `/fix`")
- **MANDATORY**: run `scripts/validate.py --strict` after every applied change; roll back if the score drops

## Gotchas

- Small changes to an agent's description can silently re-route a dozen adjacent queries. After an evolution, run the skill router against a saved set of representative queries to confirm no drift.
- `kb/learnings/` entries without a `status: final` frontmatter field are often drafts — aggregating them treats speculative observations as validated patterns. Filter by status before mining.
- "Last-failure" often points at the **symptom**, not the root cause. A route-to-wrong-agent failure may actually be a description-field ambiguity; fix the description, not the router.
- Changes to agent frontmatter fields (`tools`, `model`) propagate to the installed global config only after `ai-toolkit update`. A locally-evolved agent still runs old behavior until the user reinstalls.
- Evolution in isolation invites regression. Keep a changelog (`kb/learnings/` entries or `CHANGELOG.md`) so future sessions can see what was tried and reverted.

## When NOT to Use

- For a specific, known agent edit — call `meta-architect` directly
- For fixing a failing test — use `/fix` or `/debug`
- For auditing **current** skill/agent quality — use `scripts/evaluate_skills.py` and `scripts/audit_skills.py --ci`
- For creating a **new** agent — use `/agent-creator`
- When no recurring pattern exists (single data point) — wait and observe; do not over-fit to noise
