retroactive-spec-update
Skill2 starsChanged 5 days agoMITView on GitHub
Sync an EXISTING spec to the as-is code (code = evidence, git = scope) — only "what does the code already do that the spec omits", never "what could be added". Use when a spec has drifted from the code and must catch up; reach for it instead of hand-patching the spec. NOT for authoring a new spec (use spec_authoring) or amending a locked spec by intent (use spec-amendment-discipline).
In this repository78 other files it gives its agents.
- AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- adversary-test-planSkill
- api-and-interface-designSkill
- architecture-coherence-reviewSkill
- cavemanSkill
- consistency-checkSkill
- cross-spec-consistency-checkSkill
- deprecation-and-migrationSkill
- documentation-and-adrsSkill
- frontend-design-ttySkill
- frontend-ui-engineeringSkill
- get-api-docsSkill
- impl-plan-reviewSkill
- improve-codebase-architectureSkill
- knowledge-captureSkill
- knowledge-processorSkill
- pre-build-spec-auditSkill
- retroactive-spec-updateSkill
- scopingSkill
- sectional-deep-reviewSkill
- session-diagnosisSkill
- shipping-and-launchSkill
- show-open-tasksSkill
- source-spec-reduceSkill
- spec-authoringSkill
- task-creationSkill
- task-status-updateSkill
- transparency-headerSkill
- ux-authoringSkill
- youtube-subtitlesSkill
- adversary-test-planSkill
- api-and-interface-designSkill
- architecture-coherence-reviewSkill
- bedrock-drillSkill
- bootSkill
- cavemanSkill
- close-retroSkill
- code-review-boardSkill
- consistency-checkSkill
- convergence-loopSkill
- councilSkill
- cross-spec-consistency-checkSkill
- deprecation-and-migrationSkill
- documentation-and-adrsSkill
- frameSkill
- frontend-design-ttySkill
- frontend-ui-engineeringSkill
- get-api-docsSkill
- impl-plan-reviewSkill
- improve-codebase-architectureSkill
- knowledge-captureSkill
- knowledge-processorSkill
- pre-build-spec-auditSkill
- python-code-quality-enforcementSkill
- return-summarySkill
- risk-followup-routingSkill
- root-cause-fixSkill
- scopingSkill
- sectional-deep-reviewSkill
- The first 60 shown.
The file
We split this skill into the rules it gives an agent
12 rules. About 0 are common, 7 are distinctive, and 5 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈7
Distinctive · estimate
This author's own choices. Worth a look.
5
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 18
Read and follow framework/work-principle.md before taking up work.
- Very specific: line 124
Read the spec header for Board-Reviews / Last Update / spec_version.
- Distinctive: line 177
Phase 1 is scope, not content: No spec edits in phase 1.
- Very specific: line 183
When dispatching Phase 2 to brief-architect (mode=retro_spec_update), and before walking the spec inline on the skip path: read and follow …
- Distinctive: line 222
No new features, no feature suggestions.
- Distinctive: line 223
No interview — the code is evidence.
- Very specific: line 225
No board review — that is spec_board.
- Very specific: line 236
All sections of target_specs were compared with the source code.
- Distinctive: line 268
NOT: treat git diffs as a substitute for code reading.
- Distinctive: line 269
INSTEAD: read the whole function / component.
- Distinctive: line 273
NOT: ask "what's missing as a feature?".
- Distinctive: line 294
NOT: treat the scope doc as a committed artifact.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Read and follow framework/work-principle.md before taking up work.
Resolve this reference against the framework root; retain the consumer CWD.
Skill: retroactive-spec-update
Guiding principle (keep in mind before every run)
The spec defines the product. Incidents are fixed in the spec, not in the code.
This skill exists because in practice it often runs the other way round: code evolves, specs lag behind. That is technical debt which this skill pays off. Every run is a reversal of that order — the spec reclaims what is hers by describing the code that already exists.
What this skill does NOT do: invent new features, suggest features, ask "what else could be there". The skill operates strictly retroactively — the source of truth is the existing source code, not the reviewer's imagination.
Guiding question per section: "What does the code do that
the spec does not fully describe?" — NOT "What is missing from
the product?". Write the answer at contract level; cases a test
already pins stay in the test (framework/spec-engineering.md
§Convention: spec carriers).
When to call
- Pre-launch sweep: bring the spec corpus to as-is code state before public release.
- Post-incident: the bug fix changed behaviour; the spec must reflect it.
- Feature drift: a feature shipped without a spec update (technical debt).
- Periodic catch-up: N weeks / months without a spec sync; code is ahead.
Do not call for
- Writing new specs →
spec_authoring(interview-based). - New sections for new features in existing specs →
spec_authoring(because an interview is needed to clarify user intent, even on section additions). - Read-only cross-spec verification →
spec_amendment_verification(post-amendment). - Spec-quality review →
spec_board(rebuild-readiness check).
Input
Buddy identifies and passes:
target_specs: list of spec files that potentially have drift.- Optional
last_sync_ref: git ref of the last confirmed spec-sync commit. When present, it forms the scope entry. Otherwise: Buddy searches the git log for the last "sync all specs" or similar commit, or falls back to "all commits in N weeks". - Optional
scope_hints: additional source-file patterns that are relevant (when the spec doesn't reference code explicitly).
Default dispatch path (per spec 306 §14.5)
Phase 1 (git scope) and Phases 3-5 (DIM check, cross-spec verify,
commit-bookkeeping) are Buddy-direct. Phase 2 (spec walkthrough)
is dispatched to brief-architect in mode=retro_spec_update —
the architect reads each relevant source file completely in fresh
context, classifies findings (MATCH / SPEC-GAP / SPEC-DRIFT /
CODE-BUG), and returns proposed prose + DIM-map per section
inline. Buddy integrates the architect's findings into the spec
file (architect has no Write target per spec 306 §14.4), bumps
spec_version, and continues to Phase 4.
The architect dispatch is the default. The skip path
(--skip retroactive-spec-update --reason "buddy-context-already-loaded")
exists for the rare case where Buddy just finished writing the code
in scope and the read-cost has already been paid; in that case
Buddy executes Phase 2 inline. The default-architect choice
preserves fresh-context discipline on the typical retro run, which
is code-read-heavy by construction.
CODE-BUG escalations from the architect's findings list trigger the phase 4b ledger flow (Buddy-direct, user-decision-required). The architect identifies CODE-BUG candidates per the four-classification model; Buddy owns the user-decision loop.
Phase 1 — GIT SCOPE (structural, the entry door)
Goal: identify the relevant source files. Commits are hints, not ground truth.
Steps:
- Find the last sync point:
- Read the spec header for
Board-Reviews/Last Update/spec_version. - Or git log grep:
git log --grep="sync all specs\|spec sync" --oneline -5. - Or passed in by the user.
- Read the spec header for
- List commits since the last sync:
Filter roughly for behaviour-relevant commits (feat, fix, refactor with behaviour impact). Infra / docs / release commits are irrelevant.git log <last_sync>..HEAD --oneline - Aggregate relevant source files from two sources:
- From git log: which files were changed in the relevant
commits?
git log <last_sync>..HEAD --name-only --format="". - From spec self-declaration: grep the spec for
file-path patterns, component names, class names. The
spec often mentions
CallProvider,VideoGrid,AudioVideoSettings, etc. — those are the entry points.
- From git log: which files were changed in the relevant
commits?
- Cross-reference: files that appear in both lists are high-confidence. Files that appear in only one list are coverage warnings (either code was changed but the spec ignores the area, or the spec describes something that has no current code).
Phase 1 output (working doc
docs/spec/_update-notes/{spec}-scope.md or inline in Buddy's
context):
# {spec_file} — Retroactive Update Scope
**Last sync:** <commit hash + date>
**Commits since:** <count>
**Source files in scope:**
- src/path/to/fileA.ts
- src/path/to/fileB.tsx
- ...
**Commits as hints (not as the diff basis):**
- <hash> <subject>
- ...
**Spec-declared references:**
- Consumed: <list from header>
- Components mentioned: <from grep>Phase 1 is scope, not content. No spec edits in phase 1.
Phase 2 — SPEC WALKTHROUGH (code-driven, architect-dispatched)
When dispatching Phase 2 to brief-architect (mode=retro_spec_update), and before walking the spec inline on the
skip path: read and follow skills/retroactive_spec_update/walkthrough.md (the dispatch and per-section walkthrough
2a–2e: section scope, complete code reading, code description, the four findings MATCH / SPEC-GAP / SPEC-DRIFT /
CODE-BUG, the update along the 5 primitives; Phase 2b leftover check of unassigned source files).
Phase 3 — DIM map per section (self-check)
Once the Phase 2 / 2b findings are integrated into the spec, before the DIM self-check, and whenever Phase 2 produced
a CODE-BUG finding: read and follow skills/retroactive_spec_update/verify-and-commit.md (Phase 3 DIM map per
changed section; Phase 4 cross-spec verify via spec_amendment_verification; Phase 4b Code Gap Ledger, NORMATIVE;
Phase 5 commit; the post-pass checklist, NON-NEGOTIABLE).
Contract
INPUT
- Required:
target_specs— list of affected spec files. - Required: access to the project's source code.
- Required: git log accessible (for phase 1).
- Required:
framework/spec-engineering.md(5 primitives). - Optional:
last_sync_ref, or the skill finds it itself. - Optional:
scope_hintsfor additional source patterns.
OUTPUT
DELIVERS:
- Updated spec files (with
spec_versionbumps). - Scope working doc (can be committed or gitignored — project-specific).
- DIM map per changed section.
spec_amendment_verificationresult.- Commits with conventional messages.
context/history.mdentry.
DOES NOT DELIVER:
- No new features, no feature suggestions.
- No interview — the code is evidence; the user is not in the loop except on a CODE-BUG escalation.
- No board review — that is
spec_board; can be requested afterwards.
ENABLES:
- Pre-launch sweep: as-is sync of every relevant spec.
- Post-incident update: the spec matches the new behaviour-fix.
spec_boardinput: updated specs are review-ready.
DONE
- All sections of
target_specswere compared with the source code. - The 5 primitives were applied per update.
- The 5 dimensions were self-checked via the DIM map (no
Missing). spec_amendment_verificationPASS or escalated issues.spec_versionbumps, commits, history entry.
FAIL
- Retry: cross-spec verify
ISSUES_FOUND→ fix → re-verify. - Escalate:
- CODE-BUG found, user decision needed.
- Phase 2b unassigned source file, classification unclear.
- Spec and code contradict each other and intent is unclear.
- Abort: not foreseen.
Boundary
- No interview authoring →
spec_authoring(for NEW specs or new sections that need an interview). - No read-only verify →
spec_amendment_verification. - No quality review →
spec_board(rebuild-readiness). - No code review →
code_review_board.
Anti-patterns
- NOT treat git diffs as a substitute for code reading. INSTEAD: read the whole function / component. Because: diffs show delta, not context. The context contains the edge cases the spec has to describe.
- NOT ask "what's missing as a feature?". INSTEAD: "what does the code do that the spec doesn't describe?". Because: the first one is design review and leads to feature creep; the second is fidelity review and leads to accurate specs.
- NOT silently document bugs as intended behaviour. INSTEAD on suspicious code passages, escalate as CODE-BUG. Because: the guiding principle demands that the spec documents intent, not implementation accidents.
- NOT skip phase 2b (leftover check). INSTEAD actively triage unassigned source files. Because: "there's still something in the code" is often the real find of a retroactive run — a whole functionality the spec never mentioned.
- NOT walk multiple specs in parallel. INSTEAD one after the other, with a full walkthrough. Because: context switching between specs leads to shallow walkthroughs — the deep comparison needs dedicated focus.
- NOT treat the scope doc as a committed artifact. INSTEAD working doc (gitignored or ephemeral). Because: the scope doc is a process note, not spec output. Specs are the only committable artifact of the skill.
Relation to other skills
spec_authoring (NEW specs or new sections, interview-based)
↓
retroactive_spec_update ← YOU ARE HERE (existing specs, code-as-evidence catch-up)
↓
spec_amendment_verification (phase 4, cross-spec consistency)
↓
spec_board (rebuild-readiness quality review)The retroactive_spec_update skill is explicitly retroactive
— it compensates technical debt between code and spec. The name
says what it is and rules out the feature-creep route.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

