grade-iterate — скилл для Claude Code: цикл оценки агента
Третий этап сборки Claude Managed Agent: задаёт рубрику, читает вердикты грейдера и гоняет итерации до прохождения. Пригодится, когда агент уже запущен, но выдаёт не то.
/plugin marketplace add alirezarezvani/claude-skills
/plugin install agent-launcher-skills@claude-code-skillsЧто делает grade-iterate
Скилл описывает ограниченный цикл «оценка → доработка». Сначала outcome_builder.py собирает payload для события user.define_outcome из build-sheet агента. Рубрика обязательна, а max_iterations зажимается в диапазон 1..20 — бесконечного улучшения тут не бывает по замыслу.
Дальше verdict_reader.py разбирает результат грейдера и предлагает следующий шаг: SHIP при satisfied, SHARPEN с повторным прогоном при needs_revision, ESCALATE при max_iterations_reached или failed, RESUME при interrupted. Если осталась одна итерация или меньше, скрипт советует сделать единственную самую ценную правку либо сразу эскалировать. Каждая итерация должна переводить хотя бы одну строку рубрики из fail в pass, иначе прогон встанет на лимите.
Когда версия прошла, eval_scaffold.py генерирует отложенные кейсы и план параллельного прогона. Потолок — 25 потоков CMA. Отложенные кейсы агент во время итераций не видел, иначе проверка обобщения теряет смысл. Это отдельный этап от первого запуска и от перевода агента на расписание.
Какие задачи решает
- задать рубрику и лимит итераций для агента CMA
- прочитать вердикт грейдера и понять, что делать дальше
- отличить правку промпта от правки инструментов после провала
- прогнать отложенные кейсы параллельно после успеха
- зафиксировать вердикт на цели перед переводом на расписание
Примеры запросов агенту
- Оцени моего агента по рубрике и скажи, что чинить
- Прогони цикл оценки, пока версия не пройдёт рубрику
- Собери отложенные кейсы и план параллельного прогона для агента
Как установить grade-iterate
1Через маркетплейс плагинов
/plugin marketplace add alirezarezvani/claude-skills/plugin install agent-launcher-skills@claude-code-skillsКоманда ставит плагин agent-launcher-skills целиком, со всеми его скиллами
2Через Skills CLI (Vercel)
npx skills add alirezarezvani/claude-skills --skill grade-iterate -a claude-code3Вручную: положить файлы
~/.claude/skills/grade-iterate/SKILL.mdПапка скилла целиком; для одного проекта — .claude/skills/grade-iterate/
Вручную: положить файлы
.agents/skills/grade-iterate/SKILL.mdДля всех проектов — ~/.agents/skills/
Вручную: положить файлы
.cursor/skills/grade-iterate/SKILL.mdCursor читает и .agents/skills/, и .claude/skills/
1GitHub CLI
gh skill install alirezarezvani/claude-skills grade-iterate2Вручную: положить файлы
.github/skills/grade-iterate/SKILL.mdКомандой платформы
gemini skills install https://github.com/alirezarezvani/claude-skills --path agent-launcher/skills/grade-iterateВручную: положить файлы
.devin/skills/grade-iterate/SKILL.mdСтарый путь .windsurf/skills/ тоже читается
Claude.ai
Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills
По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов
Вопросы о grade-iterate
Как установить grade-iterate в Claude Code?
Через маркетплейс: сначала /plugin marketplace add alirezarezvani/claude-skills, затем /plugin install agent-launcher-skills@claude-code-skills.
Что делает grade-iterate?
Собирает payload с рубрикой и лимитом итераций, читает вердикт грейдера и предлагает следующий шаг, а после прохождения версии готовит отложенные кейсы для параллельного прогона.
Чем grade-iterate отличается от stage-launch и run-without-you?
Это третий этап: он про цикл оценки и доработки. stage-launch отвечает за первый запуск, а run-without-you — за перевод агента на расписание.
Исходный текст
SKILL.md · MIT
---
name: grade-iterate
description: Phase 3 of building a Claude Managed Agent — the bounded grade→iterate loop. Define a CMA outcome (a required markdown rubric graded by an isolated grader), read each verdict, decide the next move (sharpen / re-run / promote to schedule), and once a version passes, run held-back eval cases in parallel. Use when the user says "grade my agent", "make it pass the rubric", "iterate until it's good", "is it good enough", or when the orchestrator routes phase=grade-iterate. outcome_builder.py builds the user.define_outcome payload (rubric required, max_iterations clamped 1..20 — never unbounded); verdict_reader.py reads the grader result and recommends the next move; eval_scaffold.py generates held-back cases + a parallel run plan (capped at the 25-thread CMA ceiling). Distinct from stage-launch (first launch) and run-without-you (scheduling).
license: MIT
metadata:
version: 2.11.2
author: Alireza Rezvani
tags: [cma, outcome, rubric, grader, grade-iterate, loop, max-iterations, eval, held-back]
compatible_tools: [claude-code, codex-cli, cursor, antigravity, opencode, gemini-cli]
---
# Phase 3 — Grade → Iterate (the bounded loop)
This is the plugin's **loop**: CMA's `outcome` primitive self-grades the agent's
work in an isolated context and feeds failing verdicts back for the next attempt.
It is **always bounded** by `max_iterations` (1..20) — never "improve forever".
See [`../../references/loops-and-workflows.md`](../../references/loops-and-workflows.md)
and the outcome section of
[`../../references/cma-primitives.md`](../../references/cma-primitives.md).
## Workflow
1. **Define the outcome.**
```bash
python3 scripts/outcome_builder.py \
--sheet ./my-agent/build-sheet.json --max-iterations 5 \
--out ./my-agent/payloads/outcome.json
```
The **rubric is required**; `max_iterations` is clamped to 1..20. Send the
payload as a `user.define_outcome` event (append to the running session).
2. **Read every verdict first.**
```bash
python3 scripts/verdict_reader.py --result ./my-agent/last-verdict.json
```
Tables the rubric outcome and recommends: **SHIP** (`satisfied`), **SHARPEN**
then re-run (`needs_revision`), **ESCALATE** (`max_iterations_reached` /
`failed`), **RESUME** (`interrupted`). With ≤1 iteration left it flips to
"make the single highest-value fix or escalate now".
3. **Loop invariant.** Each iteration must move ≥1 rubric line fail→pass, or the
run halts at the cap and escalates. Don't burn the budget on cosmetic edits.
4. **Once a version passes, run held-back eval.**
```bash
python3 scripts/eval_scaffold.py \
--sheet ./my-agent/build-sheet.json --out ./my-agent/eval.json --concurrency 5
```
Held-back cases (never seen during iteration) run in parallel, capped at the
25-thread CMA ceiling, each graded against the same rubric.
5. **Decide.** SHIP as v0, or promote to a scheduled deployment (Phase 4). Record
the verdict on the goal: `goal_state.py set --phase run-without-you`.
## Hard rules
- **Bounded, always.** No outcome without a `max_iterations` cap.
- **Read the verdict before acting.** The grader's explanation drives the next move.
- **Held-back cases are held back.** Never grade generalization on cases the agent
already iterated against.
## Forcing-question library (recommend + cite)
1. "What are the 3–5 rubric lines?" *Recommend:* grounded, checkable criteria.
*Cite:* cma-primitives.md (rubric required).
2. "How many iterations before you'd rather look yourself?" *Recommend:* 3–5.
*Cite:* loops-and-workflows.md (bounded loop).
3. "On a fail, sharpen the prompt or the tools?" *Recommend:* whichever rubric line
failed points to. *Cite:* verdict_reader next-move table.
4. "Which cases did the agent NOT see?" *Recommend:* hold back ≥3 for generalization.
*Cite:* this SKILL (held-back eval).
## Tools
- `scripts/outcome_builder.py` — user.define_outcome payload (rubric required, cap 1..20).
- `scripts/verdict_reader.py` — grader result → next move.
- `scripts/eval_scaffold.py` — held-back cases + parallel run plan (≤25 threads).
© Alireza Rezvani · MIT · alirezarezvani/claude-skills