Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Iteratively reviews and fixes Claude Code skill quality issues until they meet standards. Runs automated fix-review cycles using the skill-reviewer agent. Use to fix skill quality issues, improve skill descriptions, run automated skill review loops, or iteratively refine a skill. Triggers on 'fix my skill', 'improve skill quality', 'skill improvement loop'. NOT for one-time reviews—use /skill-reviewer directly.
.claude/skills/trailofbits-skill-improver/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-07 | ✗→✓ | ▲ Improved | 59% | 0% |
| case-10 | ✗→✓ | ▲ Improved | 19% | 0% |
| case-11 | ✗→✓ | ▲ Improved | 29% | 0% |
| case-12 | ✗→✓ | ▲ Improved | 20% | 0% |
| case-14 | ✗→✓ | ▲ Improved | 374% | 0% |
Iteratively improve a Claude Code skill using the skill-reviewer agent until it meets quality standards.
Requires the plugin-dev plugin which provides the skill-reviewer agent.
Verify it's enabled: run /plugins — plugin-dev should appear in the list. If missing, install from the Trail of Bits plugin repository.
The user provided: $ARGUMENTS (if empty, take the target skill from the conversation).
Skip this section on continuation. A stop-hook prompt names an iteration and session ID — the session is already active, so go straight to the Core Loop. The setup script refuses to start a second session for the same skill.
/SKILL.md and the file exists, use it directlySKILL.md, use that pathGlob(pattern="**/SKILL.md") and filter by skill name or path substring:Run the setup script with the resolved absolute path:
bash"${CLAUDE_PLUGIN_ROOT}/scripts/setup-skill-improver.sh" "<RESOLVED_SKILL_PATH>" [--max-iterations N]
If ${CLAUDE_PLUGIN_ROOT} is empty or not substituted (e.g. under Codex), locate the script instead: try ${CODEX_PLUGIN_ROOT}/scripts/setup-skill-improver.sh, else find ~/.claude ~/.codex . -path '*/plugins/skill-improver/scripts/setup-skill-improver.sh' -print -quit.
Add --max-iterations N only if the user specified it. The script writes the session state file that arms the stop hook; the loop then continues automatically until completion.
/skill-reviewer directly insteadThese block skill loading or cause runtime failures:
These significantly degrade skill effectiveness:
These are polish items that may or may not improve the skill:
Before implementing any minor issue fix, evaluate:
Only implement minor fixes that are clearly beneficial. Skill-reviewer may produce false positives.
Use the skill-reviewer agent from the plugin-dev plugin. Request a review by asking Claude to:
> Review the skill at SKILL_PATH] using the plugin-dev:skill-reviewer agent. Provide a detailed quality assessment with issues categorized by severity.
Replace [SKILL_PATH] with the absolute path to the skill directory (e.g., /path/to/plugins/my-plugin/skills/my-skill).
Iteration 1 — skill-reviewer output:
textCritical: SKILL.md:1 - Missing required 'name' field in frontmatter Major: SKILL.md:3 - Description uses second person ("you should use") Minor: Line 45 is verbose
Fixes applied:
Iteration 2 — run skill-reviewer again to verify fixes:
textMinor: Line 45 is verbose
Minor issue evaluation: Line 45 communicates effectively as-is. The verbosity provides useful context. Skip.
All critical/major issues resolved. Output the completion marker:
<skill-improvement-complete>Note: The marker MUST appear in the output. Statements like "quality bar met" or "looks good" will NOT stop the loop.
CRITICAL: The stop hook ONLY checks for the explicit marker below. No other signal will terminate the loop.
Output this marker when done:
<skill-improvement-complete>When to output the marker:
When NOT to output the marker:
The marker is the ONLY way to complete the loop. Natural language like "looks good" or "quality bar met" will NOT stop the loop.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 5,316 | 18,529 | +249% | 1 | 1 | 0% | 298 | 1,820 | +511% | 0 | 0 | — |
case-02 | fail→fail | 5,299 | 5,183 | -2% | 1 | 1 | 0% | 314 | 1,780 | +467% | 0 | 0 | — |
case-03 | fail→fail | 4,294 | 5,561 | +30% | 1 | 1 | 0% | 168 | 1,793 | +967% | 0 | 0 | — |
case-04 | fail→fail | 5,383 | 7,256 | +35% | 1 | 1 | 0% | 203 | 1,894 | +833% | 0 | 0 | — |
case-05 | pass→pass | 3,571 | 3,489 | -2% | 1 | 1 | 0% | 434 | 2,130 | +391% | 0 | 0 | — |
case-06 | fail→fail | 4,753 | 8,371 | +76% | 1 | 1 | 0% | 262 | 1,886 | +620% | 0 | 0 | — |
case-07 | fail→pass | 9,022 | 4,998 | -45% | 1 | 1 | 0% | 1,484 | 2,357 | +59% | 0 | 0 | — |
case-08 | pass→pass | 4,535 | 4,223 | -7% | 1 | 1 | 0% | 708 | 2,101 | +197% | 0 | 0 | — |
case-09 | pass→pass | 6,075 | 4,032 | -34% | 1 | 1 | 0% | 858 | 2,149 | +150% | 0 | 0 | — |
case-10 | fail→pass | 10,318 | 1,912 | -81% | 1 | 1 | 0% | 1,568 | 1,868 | +19% | 0 | 0 | — |
case-11 | fail→pass | 9,800 | 2,360 | -76% | 1 | 1 | 0% | 1,483 | 1,916 | +29% | 0 | 0 | — |
case-12 | fail→pass | 9,487 | 2,667 | -72% | 1 | 1 | 0% | 1,698 | 2,034 | +20% | 0 | 0 | — |
case-13 | fail→fail | 3,553 | 2,887 | -19% | 1 | 1 | 0% | 473 | 1,957 | +314% | 0 | 0 | — |
case-14 | fail→pass | 2,856 | 7,910 | +177% | 1 | 1 | 0% | 403 | 1,911 | +374% | 0 | 0 | — |
case-15 | pass→pass | 3,777 | 3,781 | +0% | 1 | 1 | 0% | 566 | 2,217 | +292% | 0 | 0 | — |
case-16 | fail→pass | 5,398 | 2,754 | -49% | 1 | 1 | 0% | 828 | 1,974 | +138% | 0 | 0 | — |
case-17 | pass→pass | 12,138 | 4,674 | -61% | 1 | 1 | 0% | 1,773 | 2,316 | +31% | 0 | 0 | — |
case-18 | fail→pass | 15,491 | 3,189 | -79% | 1 | 1 | 0% | 2,370 | 2,003 | -15% | 0 | 0 | — |
case-19 | pass→pass | 6,523 | 4,474 | -31% | 1 | 1 | 0% | 879 | 2,294 | +161% | 0 | 0 | — |
case-20 | fail→pass | 11,679 | 2,825 | -76% | 1 | 1 | 0% | 1,079 | 2,043 | +89% | 0 | 0 | — |
case-21 | pass→pass | 4,199 | 2,729 | -35% | 1 | 1 | 0% | 522 | 1,939 | +271% | 0 | 0 | — |
case-22 | pass→pass | 6,893 | 3,612 | -48% | 1 | 1 | 0% | 1,086 | 2,037 | +88% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 17 counted toward the lift figure. The other 5 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +36 percentage points is the difference between those two pass rates over the 17 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
| Model | Method | Date | Lift |
|---|---|---|---|
| gemini-3.6-flash | verified | 8/7/2026 | +32% |
Other measured skills in the registry, with their headline benchmark lift.