| name | autorefine |
| description | Self-improving content refinement loop with a user-defined AI judge. Use when the user wants to iteratively improve any content (copy, slides, emails, briefs, scripts, headlines) through repeated generate → judge → iterate cycles. Triggers on phrases like "refine this until it's good", "run autorefine", "keep improving this", "iterate on this with a judge", "make this better automatically", or any request to repeatedly improve content against defined quality criteria. The user owns the criteria — this skill ships with zero hardcoded taste. |
autorefine
A self-improving loop for any content. You define what "good" looks like. The skill handles the rest.
How It Works
Load criteria → Generate versions → Checklist filter → AI judge scores → Winner saved → Repeat
Every iteration starts from the previous winner. The loop runs until the threshold is hit or max iterations reached. The judge never sees who generated the content — clean separation, no ego.
Setup (First Run)
- Check if
criteria.md exists in the current workspace or project folder
- If not → copy
assets/criteria-template.md to the working directory and ask the user to fill it in before running
- If yes → load it and proceed
The Loop — Step by Step
Step 1: Generate
- Produce 3 versions of the content using the user's brief
- Variations should differ meaningfully — not just synonyms. Try different angles, structures, tones.
Step 2: Checklist Filter (binary)
- Load the MUST-HAVE section from
criteria.md
- Each version either passes or fails — no partial credit
- Versions that fail any must-have are eliminated before scoring
- If all 3 fail → revise all and repeat from Step 1 (counts as one iteration)
Step 3: AI Judge (scored)
- Take surviving versions and score each criterion from the SCORED section in
criteria.md
- Score each criterion 1–10, then compute weighted average
- Return:
{ score, reasoning, pass, improvement_notes }
- Pass threshold: default 7.0 unless user specifies otherwise in
criteria.md
Step 4: Decision
- Score ≥ threshold → winner found, exit loop
- Score < threshold → use
improvement_notes as input for next generation
- Max iterations default: 5 (user can override)
Step 5: Output
- Winning content (clean, no annotations)
- Iteration log: what was tried, what scored what, why
- Prompt the user: "Want to add anything to criteria.md based on this run?"
Rules
See references/rules.md for the full do's and don'ts. Core rules:
DO:
- Separate generation from judgment — never let the same agent judge its own output in a single pass
- Always run the checklist before scoring — it's the quality floor
- Log every iteration — losing versions are learning data
- After human correction → update
criteria.md immediately
- Start each iteration from the previous winner, not scratch
DON'T:
- Use vague criteria like "make it good" — criteria must be testable
- Run more than 7 iterations without a human checkpoint
- Skip the checklist to save time — it exists for a reason
- Discard losing versions — keep the log
- Hardcode your taste into the skill —
criteria.md is where taste lives
Taste Accumulation
The judge gets better over time because criteria.md grows:
Base criteria → Run → Human corrects → Append correction → Next run is smarter
Every time the user says "this isn't right because X" → append that as a new criterion:
- [date] Avoid passive voice in headlines (user correction)
- [date] Market size must cite a source, not just a number (user correction)
Over time the judge sounds like the user — because it literally is the user, accumulated.
References
- Rules + do's/don'ts:
references/rules.md
- How to write good criteria:
references/how-to-write-criteria.md
Assets
- Blank criteria template:
assets/criteria-template.md — copy this to your project and fill it in