Harness-evolver harness:deploy

Use when the user is done evolving and wants to finalize, clean up, tag the result, or push the optimized agent.

install
source · Clone the upstream repo
git clone https://github.com/raphaelchristi/harness-evolver
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/raphaelchristi/harness-evolver "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/deploy" ~/.claude/skills/raphaelchristi-harness-evolver-harness-deploy && rm -rf "$T"
manifest: skills/deploy/SKILL.md
source content

/harness:deploy

Finalize the evolution results. In v3, the best code is already in the main branch (auto-merged during evolve). Deploy is about cleanup, tagging, and pushing.

What To Do

TOOLS="${EVOLVER_TOOLS:-$([ -d ".evolver/tools" ] && echo ".evolver/tools" || echo "$HOME/.evolver/tools")}"
EVOLVER_PY="${EVOLVER_PY:-$([ -f "$HOME/.evolver/venv/bin/python" ] && echo "$HOME/.evolver/venv/bin/python" || echo "python3")}"

1. Show Results

python3 -c "
import json
c = json.load(open('.evolver.json'))
baseline = c['history'][0]['score'] if c['history'] else 0
best = c['best_score']
improvement = best - baseline
print(f'Baseline: {baseline:.3f}')
print(f'Best: {best:.3f} (+{improvement:.3f}, {improvement/max(baseline,0.001)*100:.0f}% improvement)')
print(f'Iterations: {c[\"iterations\"]}')
print(f'Experiment: {c[\"best_experiment\"]}')
"

Show git diff from before evolution started:

git log --oneline --since="$(python3 -c "import json; print(json.load(open('.evolver.json'))['created_at'][:10])")" | head -20

2. Ask What To Do (interactive)

{
  "questions": [{
    "question": "Evolution complete. What would you like to do?",
    "header": "Deploy",
    "multiSelect": false,
    "options": [
      {"label": "Tag and push", "description": "Create a git tag with the score and push to remote"},
      {"label": "Just review", "description": "Show the full diff of all changes made during evolution"},
      {"label": "Clean up only", "description": "Remove temporary files (trace_insights.json, etc.) but don't push"},
      {"label": "Promote learnings", "description": "Add proven evolution insights to CLAUDE.md (permanent knowledge)"}
    ]
  }]
}

3. Execute

If "Tag and push":

VERSION=$(python3 -c "import json; c=json.load(open('.evolver.json')); print(f'evolver-v{c[\"iterations\"]}')")
SCORE=$(python3 -c "import json; print(f'{json.load(open(\".evolver.json\"))[\"best_score\"]:.3f}')")
git tag -a "$VERSION" -m "Evolver: score $SCORE"
git push origin main --tags

If "Just review":

git diff HEAD~{iterations} HEAD

If "Clean up only":

rm -f trace_insights.json best_results.json comparison.json production_seed.md production_seed.json

If "Promote learnings":

$EVOLVER_PY $TOOLS/promote_learnings.py --memory evolution_memory.md --target CLAUDE.md --threshold 5 --dry-run

Show the dry-run output. If the user approves, run without

--dry-run
.

4. Report

  • What was done
  • LangSmith experiment URL for the best result
  • Suggest reviewing the changes before deploying to production