agentleFS
tykisgodtykisgod/quick-question/skills/doc-drift/SKILL.md

doc-drift

Skill12 starsChanged 8 months agoMITView on GitHub

Compare design documents against actual code/config, find inconsistencies, and output a prioritized attention list.

5 other projects use a version of this.

Adopted by

Most recently taken up by

The file

We split this skill into the rules it gives an agent

7 rules. About 0 are common, 3 are distinctive, and 4 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈3

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 4

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    No arguments: scan all modules

    line 10
  2. Very specific:

    Look for design docs in Docs/, Documentation/, or any directory referenced in CLAUDE.md

    line 20
  3. Very specific:

    Look for code modules under Assets/Scripts/, Assets/Plugins/, src/, or the project's main code directories

    line 21
  4. Very specific:

    If the user specified --module, only scan that module.

    line 24
  5. Distinctive:

    After all subagents return, consolidate into:

    line 54
  6. Distinctive:

    After the drift analysis completes, recommend the next step:

    line 74
  7. Very specific:

    No code was changed → run qq-execute-checkpoint.py pipeline-advance --project .

    line 97

≈ “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.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Run qq scripts as ${CLAUDE_PLUGIN_ROOT}/bin/<name>: they are not on PATH, so a bare qq-run-record.py exits 127.

Respond in the user's preferred language (detect from their recent messages, or fall back to the language setting in CLAUDE.md).

Arguments: $ARGUMENTS

  • No arguments: scan all modules
  • --module <name>: only check the specified module

With --auto, first make sure a pipeline tracks this run, so the handoff at the end can advance it: qq-execute-checkpoint.py pipeline-start --project . --type feature --current-skill "/qq:doc-drift" --branch "$(git branch --show-current)" --if-not-running. It starts one only when none is running here (you were invoked on your own) and leaves a running one alone.

Execution Flow

1. Determine Scope

Discover the project's documentation and code structure:

  • Look for design docs in Docs/, Documentation/, or any directory referenced in CLAUDE.md
  • Look for code modules under Assets/Scripts/, Assets/Plugins/, src/, or the project's main code directories
  • Group related docs and code into module pairs (e.g., "Player" docs ↔ Player code directory)

If the user specified --module, only scan that module. Otherwise, group all discovered modules and dispatch parallel subagents (subagent_type: "general-purpose", model: "opus") — one per group (max 5 groups).

2. Each Subagent's Task

Each subagent prompt must include:

  1. The doc paths and code paths for its assigned modules
  2. The following review instructions:
You are a document-code consistency auditor. Read all rules, states, enums, and numeric parameters defined in the design documents, then search for corresponding implementations in the code and verify each one.

Focus on:
- Features defined in docs but not implemented in code (entire subsystems or individual features)
- Features implemented in code but not mentioned in docs
- Protections or added restrictions found only in code (a protection is exempt from a rule everything else follows; an added restriction exists to stop or tax a player choice the other rules allow (not how a new thing works, not a gate that prevents a crash or a stuck state)): report them as "Unrequested", not as outdated docs
- Numeric parameter mismatches (doc value vs code value, with exact numbers)
- Enum value / state name mismatches
- Formula inconsistencies (the complete doc formula vs the complete code calculation)
- Architectural model deviations (doc uses model A, code uses model B)

For each inconsistency output:
- Location: doc path vs code path (with line numbers)
- What's inconsistent: what the doc says vs what the code does
- Severity: P0 (missing feature / bug / core formula error / Unrequested), P1 (value deviation / naming mismatch / architecture difference), P2 (outdated doc but no functional impact)

End with a summary table.

3. Aggregate Output

After all subagents return, consolidate into:

## Global Summary
| Module | P0 | P1 | P2 |

## P0 List (by category)
### A. Missing Subsystems (doc has full design, code has nothing)
### B. Functional Bugs
### C. Critical Formula/Value Deviations
### D. Architecture Model Mismatches
### E. Status Effects Not Wired Up
### F. Unrequested Protections / Restrictions (the user's decision)

## Overall Assessment
Distinguish "not yet built" from "built wrong", and highlight items needing immediate attention.

Handoff

After the drift analysis completes, recommend the next step:

  • No critical drift found → "Docs and code are in sync. Want to run /qq:commit-push to ship it?"
  • Outdated docs found → "Found N docs that need updating to match the code. Want me to update them, then /qq:commit-push?"
  • Unrequested protections or restrictions found → ask the user about each by name; put unanswered ones on the design doc's "Needs the user's decision" list (shared/user-decisions.md); never write them into the doc body
  • Actual bugs found (code doesn't match design intent) → "Found N discrepancies that look like bugs. Want me to fix the code and re-run /qq:test?"

--auto mode: skip asking:

  • Outdated docs → auto-update docs
  • Actual bugs → fix code
  • Unrequested protections or restrictions → "Needs the user's decision" list only; never update the doc body or change the code for them

Record the result

Last, after any doc updates and code fixes, record the check so /qq:go and /qq:commit-push see it. Under hardening they keep routing back to /qq:doc-drift until there is a record of the engine code as it is now. Only a full scan counts: with --module, skip this step and write no record, because one module checked says nothing about the rest of the project.

${CLAUDE_PLUGIN_ROOT}/bin/qq-run-record.py record --project . --stage doc_drift --command qq:doc-drift --status checked --capture-engine-changes --summary "<P0/P1/P2 counts>"

--capture-engine-changes stores the commit and the engine files as they are now. Any engine-file change after that (edited, committed or deleted) makes the record stale; doc edits do not, and neither does committing exactly what was checked. Use --status failed instead when actual bugs are left unfixed (the user declined the fix).

--auto mode: then hand off:

  • No code was changed → run qq-execute-checkpoint.py pipeline-advance --project . --completed-skill "/qq:doc-drift" --next-skill "/qq:commit-push", then invoke /qq:commit-push
  • Code was fixed → run qq-execute-checkpoint.py pipeline-advance --project . --completed-skill "/qq:doc-drift" --next-skill "/qq:test", then invoke /qq:test --auto

Notes

  • Design docs represent the vision, code represents reality — many "missing" items may be normal for phased development, don't mark everything as P0
  • Distinguish four situations: outdated docs (code is correct, docs need updating), missing features (docs are correct, code not yet built), actual bugs (code behavior is clearly wrong), unrequested protections or restrictions (only in code; the user's decision)

Download now (ZIP)

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
What did you use it for? e.g. Reviewing pull requests in a Rails app

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.