'One-fix-at-a-time, approval-gated design fix recovery. Given a checklist of fixes (handover doc, CHECKLIST.md, or inline list), applies each individually, presents a diff, and waits for an explicit APPROVE / REJECT / NO CHANGES decision before committing. Trigger phrases: /design-iteration, "go through the checklist one by one", "fix these one at a time", "bucket recovery", "design fix pass".'
Install
npx skillscat add gaia-research/gaia-skill-tree/design-iteration Install via the SkillsCat registry.
/design-iteration
A one-fix-at-a-time, approval-gated design fix recovery skill. Given a checklist of
fixes (a handover doc, CHECKLIST.md, or inline list), applies each fix individually,
presents a diff, and waits for an explicit APPROVE / REJECT / NO CHANGES decision
before committing or moving on. Never batches. Never self-merges.
When to invoke
/design-iteration— start or resume a fix pass on the current branch- "go through the checklist one by one"
- "fix these one at a time, show me each before committing"
- "bucket recovery" / "design fix pass" with a list of items
Invocation
/design-iteration [path/to/checklist-or-handover.md]If no path is given, look for the active handover in:
- An explicit path in the conversation context
founder/reports/design-review-<today>/HANDOVER*.md- Ask the user to specify
Operating contract
The one rule that governs everything
One fix at a time. After each fix, STOP and present it for a decision.
- APPROVE → commit that fix (one commit, one fix), push, move to next
- REJECT →
git restoretouched files, move to next - NO CHANGES → fix was already present or unnecessary; touch nothing, note it, move to next
Never batch. Never "do them all and summarize." The checkpoint exists because these fixes
touch files that may have been rewritten by a migration, and a wrong port can silently
regress a shipped fix.
Loop for each fix
- Verify it is still missing. Re-run the check from the handover (grep, line read).
If already present → NO CHANGES; report and skip. git show <ref-sha>(if provided) to see original intent. Do not blind-apply.- Port the intent onto the current file(s) by hand. Do NOT paste stale patches wholesale
when target files were rewritten since the source SHA. - Read the edited file(s) back. Confirm:
- No duplicated or merged lines
- No new hardcoded hex (use design tokens; fallback to
var(--token, fallback)only) - No banned patterns (gradient text, dead enum reads, client-side branch derivation if
the project has an emitted-branch architecture)
- STOP. Present to the user:
- Fix ID + description
- Files changed
git diffoutput (or key hunks if very large)- One-line rationale: why this matches the intent without introducing regressions
- Ask explicitly: APPROVE / REJECT / NO CHANGES?
- On decision:
- APPROVE →
git add <only those files>→ commit with messagefix(design): <fix-id> — <one-line summary>→git push origin <branch>→
report SHA → next fix - REJECT →
git restore <those files>→ next fix - NO CHANGES → touch nothing → next fix
- APPROVE →
- Never proceed to the next fix before a decision on the current one.
After all fixes
Open one PR from the current branch to the target base branch. PR body must list:
- Each fix + its outcome (approved / rejected / no-change)
- Any Bucket-2 / "do not re-apply" items that were deliberately skipped, and why
Then stop — the human merges.
Branch + scope rules
- Always work on the branch specified in the handover or by the user. Never create a
new branch mid-pass without asking. - Respect CI branch-scope (e.g.
design/branches may only touchdocs/+*.md).
When a fix crosses scope, surface the conflict and ask: split across branches, or add[skip-scope-check]to the commit message per the user's call. - Never push to
maindirectly.
Presenting the diff
For each fix, show:
--- Fix N: <title> ---
Files: <list>
---
<git diff or key hunks>
---
Why this is safe: <one sentence>
APPROVE / REJECT / NO CHANGES?If the diff is very large (e.g. 48-file sweep), show the full file list + one
representative sample diff, then ask for approval before running the bulk operation.
Token discipline
- Verify before editing (one read + grep). Edit. Verify after (read-back). That's the
full cycle — do not re-read files already confirmed. - For bulk deletions (e.g. removing a dev tag from N files), use a single shell command
rather than N individual edits, then confirm count = 0 with a follow-up grep.
Reference implementation
This skill was extracted from the 2026-07-20 Bucket-1 recovery session
(design/ygg2-bucket1-recovery → dev/yggdrasil-ii-staging, PR #1241).
Handover doc: founder/reports/design-review-2026-07-20/HANDOVER-bucket1-recovery.md.
INSIGHTS source-of-truth: founder/reports/design-review-2026-07-20/INSIGHTS.md.