doc-sync
Skill12 starsChanged 8 months agoMITView on GitHub
Local on-demand doc-sync: detect doc↔code drift, draft the reconciling updates (anchors + prose), present them as a reviewable diff, and land only what the human approves. Goes beyond qq:doc-drift's report-only by closing the loop — but never auto-commits and never touches code.
34 other projects use a version of this.
Adopted by
Most recently taken up by
- onegunsamurai/OpenLearningtheir own version, first seen Nov 8, 2026
- bas1l/claude-skillstheir own version, first seen Nov 3, 2026
- sayeediftekhar/Keeltheir own version, first seen Nov 1, 2026
- michaelalber/ai-toolkittheir own version, first seen Nov 1, 2026
- Cassandra-Collective/Ephesustheir own version, first seen Nov 1, 2026
- Univers42/harness42their own version, first seen Nov 1, 2026
Used with
Projects with it also use api-endpoint, perf-budget and 6 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
tadoEngSkillapi-endpoint
Add or change a backend API endpoint on this product, keeping Pydantic as the single contract authority and regenerating the TypeScript client. Use when asked to add an endpoint, expose data to the frontend, change a request or response shape, or wire a new backend capability into a page.
Also in 4 projects that use this
vindreshsinghSkillperf-budget
Optimizes performance by measuring first and fixing the real bottleneck. Use when something is slow, before optimizing, when setting latency or bundle targets, or reviewing changes for performance traps — not for speculative micro-tuning.
Also in 3 projects that use this
AnasX7Skillimprove
Survey any codebase as a senior advisor and produce prioritized, self-contained implementation plans for OTHER models/agents to execute. Strictly read-only on source code — never implements, fixes, or refactors anything itself. Use when asked to audit a codebase, find improvement opportunities (bugs, security, performance, test coverage, tech debt, migrations, DX), suggest features or where to take the project next (roadmap, product direction), or generate handoff plans for another agent to implement.
Also in 3 projects that use this
dillonluiSkilldesign-review
Review a view or flow for UX and UI issues. Provides severity-ranked, actionable findings grounded in established design heuristics. Use when the user asks for design feedback, UX review, or UI critique.
Also in 3 projects that use this
NVIDIASkillresearch
Before designing a feature, research how comparable libraries solve the problem, check best practices, known pitfalls, and upstream changes. Use when starting a new feature, investigating an unfamiliar area, or the user asks to research something.
Also in 3 projects that use this
MicrosoftSkillrelease
Use ONLY when the user explicitly asks to cut/publish a Huabu desktop release or tag a version. Performs an outward action — bumps the version in apps/desktop/package.json, commits + annotated-tags vX.Y.Z, and pushes the branch + tag. That tag push auto-builds the macOS/Windows installers and publishes a GitHub Release. Provides `status`, `bump`, `tag-push`, and a one-command `run` (bump → tag-push).
Also in 4 projects that use this
Other versions34 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 34
- JetBrains/ideavim★ 10ksame name
- taruma/SceneFlow★ 382same name
- PLC-lang/rusty★ 372same name
- chmouel/lazyworktree★ 315same name
- NVIDIA/TensorRT-Model-Connect★ 290same name
- fancyboi999/open-tag★ 181same name
- aspenkit/aspens★ 100same name
- nrjdalal/zerostarter★ 65same name
- foryouself83/harness-tier★ 10same name
- Reef123/OpenVera★ 9same name
24 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository29 other files it gives its agents.
- AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- add-testsSkill
- best-practiceSkill
- bootstrapSkill
- briefSkill
- changesSkill
- claude-code-reviewSkill
- claude-plan-reviewSkill
- codex-code-reviewSkill
- codex-plan-reviewSkill
- commit-pushSkill
- depsSkill
- design-researchSkill
- designSkill
- doc-driftSkill
- doc-tidySkill
- executeSkill
- explainSkill
- full-briefSkill
- goSkill
- grandmaSkill
- planSkill
- post-design-reviewSkill
- recordSkill
- self-reviewSkill
- tech-researchSkill
- testSkill
- timelineSkill
The file
We split this skill into the rules it gives an agent
4 rules. 0 are common, 1 is distinctive, and 3 are very specific to this project.
0
Common
Most of the 27 edited versions we read keep these.
1
Distinctive
This author's own choices. Worth a look.
3
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 10
No arguments: full sweep of the project's living docs
- Very specific: line 62
Keep the approved subset; git checkout -- the rest.
- Very specific: line 67
Notion-exported docs are in scope: if the project keeps them under Docs/: reconcile them, don't freeze them.
- Very specific: line 68
If ${CLAUDE_PLUGIN_ROOT}/bin/qq-run-record.py is available, persist a doc-sync run record after the sweep so controller state can advance.
“Common” is measured: kept by at least 6 in 10 of the 27 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Respond in the user's preferred language (detect from their recent messages, or fall back to the language setting in CLAUDE.md).
Pull drifted docs back in line with the code, run on demand when the human knows they changed something doc-affecting. doc-sync calls /qq:doc-drift (and the project's drift detectors) as its detection stage, then adds the two stages doc-drift lacks: draft the fixes and land what the human approves.
Arguments: $ARGUMENTS
- No arguments: full sweep of the project's living docs
--since <ref>: only docs affected by code changed since<ref>(windowed reconcile)--scope <design|memory|seams|rules>: restrict to one class of living doc--all: also includeDocs/archive/and old review artifacts
Principle
Detectors are read-only; doc-sync is the sole writer, and only of docs — never code; the human is the sole lander. Reference drift (a dead anchor) is auto-drafted; semantic/process drift is only flagged for the human to decide. Graphs say "what is wired now"; the seam registry says "what should be wired / what breaks if missing" — neither overwrites the other.
Execution Flow
1. Discover the project's drift tooling (project-aware)
Probe for these and use whatever exists — degrade gracefully when absent (a generic project just gets doc-drift + git-diff reasoning):
| If present | Use it for |
Tools/blast_radius.py | "changed files → affected docs + code-side ripple" (diff [base] / who <token>) |
Tools/check_doc_drift.py | symbol-anchor drift in docs (LINEREF / missing file / missing GUID / 0-hit symbol) |
Tools/check_memory.py | memory consistency + staleness (audit); re-stamp via stamp <date> <files> |
Tools/check_seams.py | .claude/seams.yml anchor drift |
.claude/seams.yml | cross-cutting seam registry (fan-out points) |
Tools/asset_graph.py / Tools/event_graph.py | Unity asset / event-bus blast-radius |
2. Detect (read-only)
- Scope the work. With
--since <ref>, runpython Tools/blast_radius.py diff <ref>to get changed-files → affected docs + ripple. Otherwise sweep:check_doc_drift.pyoverDocs/+.claude/rules/,check_memory.py audit,check_seams.py. - Semantic layer. Invoke
/qq:doc-drift(using the Skill tool) for the affected modules — design-doc-vs-code intent mismatches the anchor checkers can't see. - Ignore noise. Reconcile only against semantic code changes; skip test-only changes,
.metafiles, formatting churn, dependency bumps, and pure internal refactors. - Classify every finding into two buckets — this decides whether doc-sync may auto-draft:
- Reference drift (machine-fixable): dead anchor / line-number ref / moved-or-deleted file path / GUID no longer in repo / stale numeric value with an exact code counterpart.
- Semantic or process drift (NOT machine-fixable): the design intent changed, a formula diverged, a
.claude/rules/process note went stale, an architecture model differs.
3. Draft (only doc / memory / seams / rules)
One concern per pass. Feed the drafting work the project's own context (CLAUDE.md, .claude/rules/, the memory dir) so the prose keeps the author's voice and doesn't repeat known mistakes.
- Reference drift → auto-draft the fix:
- Re-point the dead anchor to the current symbol/path.
- Normalize line-number references (
Foo.cs:123) into symbol anchors (a class or method name, a unique string, or a GUID). - For renames, use
git diff -Mrename detection + surrounding-context fingerprint to proposeOldSymbol → NewSymbol (confidence)rather than just reporting a 0-hit. - For memory only, re-stamp
last_verifiedon facts you re-verified.
- Semantic / process drift → do NOT edit. Emit a flagged note with the evidence (doc says X, code does Y) for the human to resolve.
.claude/rules/+CLAUDE.mdprocess advice → flag only, never auto-edit.
4. Human review (the local "draft")
The "draft" is uncommitted working-tree changes scoped to doc/config files — not a PR, not a scratch dir. Present git diff grouped by doc class. For each group, ask apply / skip / edit. Never auto-commit.
5. Land
Keep the approved subset; git checkout -- the rest. Re-stamp touched memory: python Tools/check_memory.py stamp <today> <files>. Then offer /qq:commit-push <the approved doc/config files>.
Notes
- Default scope =
Docs/design/, the current branch'sDocs/qq/<branch>/, the memory dir,.claude/seams.yml,.claude/rules/. - Notion-exported docs are in scope if the project keeps them under
Docs/: reconcile them, don't freeze them. - If
${CLAUDE_PLUGIN_ROOT}/bin/qq-run-record.pyis available, persist adoc-syncrun record after the sweep so controller state can advance. - Distinguish four situations the same way doc-drift does: outdated docs (code right, doc stale → draft the doc), missing features (doc right, code not built → leave the doc, flag for the human), actual bugs (code wrong → this is out of doc-sync's scope; hand to
/qq:planor/qq:test, never edit code here). And unrequested protections or restrictions (only in code): never draft them into the doc body; draft a "Needs the user's decision" entry for the human to approve.
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.

