docs-sync-checker
Skill448 starsChanged 4 days agoMITView on GitHub
Detect documentation drift against filesystem state.
1 other project uses a version of this, 1 of them edited.
Adopted by
Most recently taken up by
- notque/claude-code-toolkitedited, first seen Oct 8, 2026
Other versions1 project uses a version of this.
Word for word · 0
None found.
Edited · 1
- notque/claude-code-toolkit★ 44860% same
Wrote their own version · 0
None found.
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 repository64 other files it gives its agents.
- AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- assessmentSkill
- dataSkill
- business-opsSkill
- code-qualitySkill
- comment-qualitySkill
- condenseSkill
- joy-checkSkill
- content-engineSkill
- contentSkill
- headlinesSkill
- image-genSkill
- image-to-videoSkill
- series-plannerSkill
- topic-brainstormerSkill
- video-editingSkill
- writingSkill
- domainSkill
- cli-designSkill
- frontendSkill
- frontend-slidesSkill
- jev-designSkill
- webgl-card-effectsSkill
- game-asset-generatorSkill
- game-devSkill
- game-trailerSkill
- motion-pipelineSkill
- browser-jev-automationSkill
- cve-source-checkSkill
- deploySkill
- endpoint-validatorSkill
- headless-cron-creatorSkill
- kubernetesSkill
- githubSkill
- accountsSkill
- auto-dreamSkill
- building-with-jevSkill
- codexSkill
- doSkill
- dSkill
- grill-jevSkill
- toolkitSkill
- workflow-helpSkill
- debuggingSkill
- plant-seedSkill
- processSkill
- pr-workflowSkill
- quickSkill
- testingSkill
- with-anti-rationalizationSkill
- workflowSkill
- worktree-agentSkill
- programmingSkill
- architecture-deepeningSkill
- codebase-analyzerSkill
- markdown-converterSkill
- news-collectionSkill
- researchSkill
- roastSkill
- The first 60 shown.
The file
Show its rules and text
We split this skill into the rules it gives an agent
18 rules. About 0 are common, 11 are distinctive, and 7 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈11
Distinctive · estimate
This author's own choices. Worth a look.
7
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 67
Every docs/*.md file (outside archive/ and images/) carries frontmatter with summary and read_when — the on-demand load triggers for docs, …
- Distinctive: line 85
Gate: All tools discovered, all YAML valid, counts >0 for each type, docs catalog check exits 0.
- Distinctive: line 115
All 5 documentation files found and parsed (warn if any missing)
- Distinctive: line 116
No parse errors on table/list structures
- Distinctive: line 119
Gate: All documentation files parsed without errors.
- Distinctive: line 145
Gate: All issues categorized with severity.
- Distinctive: line 174
Every issue in the report must have a concrete suggested fix.
- Distinctive: line 195
Remove any helper scripts and debug outputs created during execution.
- Very specific: line 230
Check file has opening --- on line 1 and closing --- after YAML block
- Distinctive: line 231
Verify no tab characters in YAML (spaces only)
- Very specific: line 238
Verify --repo-root path is correct
- Very specific: line 239
Check that docs/skills.md, agents/README.md, commands/README.md exist
- Distinctive: line 240
If file is legitimately missing, create a placeholder with the expected table/list header
- Distinctive: line 246
Verify the repo root path points to the correct repository
- Very specific: line 248
Check that skill directories contain SKILL.md (not just other files)
- Very specific: line 249
Run with --debug flag for verbose discovery output
- Very specific: line 254
Check table has header row, separator row (|---|---|), and data rows
- Distinctive: line 255
Verify all rows have the same number of pipe-delimited columns
≈ “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
Documentation Sync Checker Skill
Deterministic 4-phase drift detector that compares the filesystem against README entries. Each phase (Scan, Cross-Reference, Detect, Report) has a gate that must pass before proceeding. The skill produces a sync score (percentage of tools properly documented) and actionable fix suggestions for every detected issue.
This skill checks documentation presence and absence only -- it does not judge description quality, generate documentation content, resolve merge conflicts, validate cross-references, or track when drift occurred. Suggested fixes use YAML descriptions verbatim; content generation and quality assessment require different skills.
Optional flags: --auto-fix (experimental, requires explicit opt-in), --strict (exit code 1 on issues), --format json (machine-readable output for CI/CD).
Instructions
Phase 1: SCAN
Goal: Discover all skills, agents, and commands in the repository filesystem. All discovery (file existence checks, YAML parsing, markdown extraction) must be deterministic -- no AI judgment on content quality.
Step 1: Run the scan script
python3 skills/meta/docs-sync-checker/scripts/scan_tools.py --repo-root $HOME/vexjoy-agentStep 2: Validate discovery results
For each tool type, verify:
Skills (skills/**/SKILL.md):
- File has opening
---and closing---YAML delimiters - YAML contains non-empty
nameanddescriptionfields namefield matches directory name (e.g.,skills/code-quality/code-quality/hasname: code-quality)
Agents (agents/*.md):
- File has valid YAML frontmatter with
namefield - Filename (without .md) matches YAML
namevalue
Commands (commands/**/*.md):
- File exists as markdown in commands/ directory
- Namespaced commands in subdirectories (e.g.,
commands/code/cleanup.md) are detected
Step 3: Validate the docs routing catalog
Every docs/*.md file (outside archive/ and images/) carries frontmatter with summary and read_when — the on-demand load triggers for docs, matching what skills/INDEX.json gives skills.
python3 scripts/docs-catalog.py --checkExit 1 means a doc is missing frontmatter; add summary and read_when to that file. python3 scripts/docs-catalog.py (no flags) prints the catalog table; --json emits it machine-readable.
Step 4: Count and verify
## Scan Results
Skills found: [N]
Agents found: [N]
Commands found: [N]
YAML errors: [N] (must be 0 to proceed)Gate: All tools discovered, all YAML valid, counts >0 for each type, docs catalog check exits 0. Proceed only after the gate passes.
Phase 2: CROSS-REFERENCE
Goal: Extract documented tools from README files and compare with discovered tools. Each tool type has a primary documentation file: skills belong in docs/skills.md, agents in agents/README.md, commands in commands/README.md.
Step 1: Run the documentation parser
python3 skills/meta/docs-sync-checker/scripts/parse_docs.py --repo-root $HOME/vexjoy-agent --scan-results /tmp/scan_results.jsonStep 2: Parse each documentation file
These are the five documentation files to check -- no others:
| File | Format | What to Extract |
docs/skills.md | Markdown table | Name, Description, Command, Hook columns |
agents/README.md | Table or list | Name, Description fields |
commands/README.md | Markdown list | /command-name - Description items |
README.md | Inline references | Pattern-match skill: X, /command, agent-name |
docs/REFERENCE.md | Section headers | ### tool-name headers with descriptions |
Step 3: Build documented-tools registry
For each documentation file, collect the set of tool names found. This creates a mapping of {file -> [tool_names]} that Phase 3 will compare against the filesystem scan.
Step 4: Verify parse completeness
- All 5 documentation files found and parsed (warn if any missing)
- No parse errors on table/list structures
- Tool names extracted from each file
Gate: All documentation files parsed without errors. Proceed only after the gate passes.
Phase 3: DETECT
Goal: Compare discovered tools with documented tools to identify drift. This is a point-in-time snapshot -- it cannot tell you when drift occurred, only that it exists now.
Step 1: Compute set differences
For each tool type and its primary documentation file:
missing = filesystem_tools - documented_tools(tools that exist but are not documented)stale = documented_tools - filesystem_tools(documented tools that no longer exist -- users waste time trying to invoke non-existent tools, so always flag these)
Step 2: Categorize and assign severity
Severity reflects user impact: missing entries mean tools are undiscoverable and stale entries waste time.
| Category | Condition | Severity |
| Missing Entry | Tool in filesystem, not in primary README | HIGH |
| Stale Entry | Tool in README, not in filesystem | MEDIUM |
| Incomplete Entry | Documentation missing required fields | LOW |
Step 3: Record issue details
For each issue, capture: tool type, tool name, tool path, affected documentation file(s), severity, and suggested fix action.
Gate: All issues categorized with severity. Proceed only after the gate passes.
Phase 4: REPORT
Goal: Generate human-readable report with actionable fix suggestions. Report facts concisely -- show data, not self-congratulatory descriptions. Target 100% sync score; even one missing entry erodes trust in all documentation.
Step 1: Run the report generator
python3 skills/meta/docs-sync-checker/scripts/generate_report.py --issues /tmp/issues.json --output /tmp/sync-report.mdStep 2: Verify report structure
Report must include these sections:
- Summary -- Total tools, issue counts by severity, sync score
sync_score = (total_tools - total_issues) / total_tools * 100 - HIGH Priority: Missing Entries -- For each missing tool, provide the exact markdown row/item to add to the appropriate README file
- MEDIUM Priority: Stale Entries -- For each stale tool, identify the file and line to remove
- Files Checked -- List each documentation file with count of tools parsed from it
Step 3: Validate actionability
Every issue in the report must have a concrete suggested fix. No issue should say "review manually" without specifying what to review and where. The fix should enable a single-commit resolution -- tool files and documentation entries should be added/removed together.
Step 4: Report format for missing entries
For each missing skill, generate a suggested table row:
| skill-name | Description from YAML | `skill: skill-name` | - |For each missing agent, generate a suggested table row:
| agent-name | Description from YAML |For each missing command, generate a suggested list item:
- `/command-name` - Description from command fileStep 5: Cleanup
Remove any helper scripts and debug outputs created during execution.
Gate: Report generated with actionable suggestions for every issue.
Examples
Example 1: New Skill Missing from README
User created skills/my-new-skill/SKILL.md but forgot to update docs/skills.md.
Actions:
- SCAN discovers
my-new-skillin filesystem - CROSS-REFERENCE parses docs/skills.md, does not find
my-new-skill - DETECT flags as HIGH severity missing entry
- REPORT suggests exact table row to add to docs/skills.md
Example 2: Removed Agent Still Documented
User deleted agents/old-agent.md but agents/README.md still lists it.
Actions:
- SCAN does not find
old-agentin filesystem - CROSS-REFERENCE finds
old-agentin agents/README.md - DETECT flags as MEDIUM severity stale entry
- REPORT suggests removing the row from agents/README.md
Example 3: Batch Changes After Refactor
User created 3 new skills and deleted 2 old ones in a refactoring PR. Actions:
- SCAN discovers 3 new skills in filesystem, does not find 2 removed skills
- CROSS-REFERENCE finds 2 stale entries and 3 absent entries in docs/skills.md
- DETECT flags 3 HIGH (missing) + 2 MEDIUM (stale) issues
- REPORT provides exact table rows to add and identifies rows to remove
Error Handling
Error: "YAML Parse Error"
Cause: Invalid frontmatter -- missing --- delimiters, tabs instead of spaces, or missing required fields
Solution:
- Check file has opening
---on line 1 and closing---after YAML block - Verify no tab characters in YAML (spaces only)
- Confirm required fields present:
name,description - Validate manually:
head -20 {file_path}and check syntax
Error: "Documentation File Not Found"
Cause: Expected README file does not exist at expected path Solution:
- Verify --repo-root path is correct
- Check that docs/skills.md, agents/README.md, commands/README.md exist
- If file is legitimately missing, create a placeholder with the expected table/list header
- Re-run scan after creating placeholder
Error: "No Tools Discovered"
Cause: Wrong --repo-root path, empty directories, or no SKILL.md files Solution:
- Verify the repo root path points to the correct repository
- Confirm skills/, agents/, commands/ directories exist and are not empty
- Check that skill directories contain SKILL.md (not just other files)
- Run with --debug flag for verbose discovery output
Error: "Markdown Parse Error"
Cause: Table missing separator row, mismatched column counts, or malformed list items Solution:
- Check table has header row, separator row (
|---|---|), and data rows - Verify all rows have the same number of pipe-delimited columns
- For lists, verify consistent format:
- /command - Description - See
references/markdown-formats.mdfor complete format specifications
Deep References
Load when the task requires detailed guidance beyond the phases above.
| Signal | Reference |
| Documentation file matrix, required fields | references/documentation-structure.md |
| Expected table/list formats per README | references/markdown-formats.md |
| Sync score formula, severity rules, deprecation | references/sync-rules.md |
| Before/after examples for doc updates | references/examples.md |
| CI/CD setup, pre-commit hooks, auto-fix mode | references/integration-guide.md |
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.

