
Doc Updates
Scan documentation for stale versions, wrong plugin counts, and inventory stats against the real repo before shipping doc previews.
Overview
Doc Updates is an agent skill most often used in Build (also Ship) that validates documentation claims against plugin.json and repo counts before preview.
Install
npx skills add https://github.com/athola/claude-night-market --skill doc-updatesWhat is this skill?
- Phase 5.5 accuracy module runs before documentation preview
- Three scan types: version numbers, plugin counts, skill/command/agent counts per plugin
- Cross-checks claims against plugin.json via jq and directory listings
- Emits warning tables with claimed vs actual values and suggested actions
- Detects patterns like v1.2.3, table version cells, and "N plugins" prose
- 3 scan types: versions, plugin counts, skill/command counts
- Runs as Phase 5.5 before preview
Adoption & trust: 1 installs on skills.sh; 304 GitHub stars; 3/3 security scanners passed (skills.sh audits); trending (+100% hot-view momentum).
What problem does it solve?
Your docs advertise wrong plugin versions, inflated plugin counts, or outdated skill and command totals compared to the repo.
Who is it for?
Maintainers of Claude plugin monorepos who regenerate or hand-edit API inventory and README tables.
Skip if: Greenfield projects with no documentation claims to verify or teams that want full auto-rewrite of prose.
When should I use this skill?
Documentation preview or release prep when claims about versions, plugin totals, or API inventory must match the codebase.
What do I get? / Deliverables
You get a structured accuracy report with file-level claimed-vs-actual rows so you can fix docs before preview or release.
- Markdown warning tables (file, claimed, actual, action)
- Validated counts for plugins, skills, commands, and agents
Recommended Skills
Journey fit
Spans multiple journey phases - primary shelf plus alternate fits below.
Documentation accuracy work belongs on the build/docs shelf where README and API docs are authored and maintained. Phase 5.5 accuracy scanning runs immediately before preview, targeting docs files and plugin.json ground truth.
Where it fits
Run Phase 5.5 scans after editing docs/api-overview.md version tables.
Confirm marketing copy that states how many plugins ship in the marketplace.
Gate a release candidate when README plugin list must match directories.
Catch stale sanctum or abstract versions before public doc publish.
How it compares
Targeted doc-vs-repo checker in a release pipeline, not a general spell-check or OpenAPI linter.
Common Questions / FAQ
Who is doc-updates for?
Solo and indie builders maintaining plugin marketplaces or multi-plugin Claude repos who need docs to match plugin.json and directory counts.
When should I use doc-updates?
During Build docs passes before preview, and in Ship review when release notes or API tables must match the current plugin tree.
Is doc-updates safe to install?
It suggests read-only listing and jq on local files; review the Security Audits panel on this page before granting shell and filesystem access.
SKILL.md
READMESKILL.md - Doc Updates
# Accuracy Scanning Module Validate documentation claims against actual codebase state. Runs as Phase 5.5 before preview to catch stale version numbers, outdated counts, and broken references. ## Scan Types ### 1. Version Number Validation Compares version references in documentation against `plugin.json` files. **Patterns to detect:** - `v1.2.3`, `version: 1.2.3` - `Plugin Name (v1.2.3)`, `Plugin Name v1.2.3` - Table cells with version numbers **Validation:** ```bash # Extract actual versions for plugin in plugins/*/.claude-plugin/plugin.json; do jq -r '.name + " " + .version' "$plugin" done # Sample output: # abstract 1.0.5 # sanctum 1.0.6 # scry 1.1.0 ``` **Warning format:** ```markdown | File | Claimed | Actual | Action | |------|---------|--------|--------| | docs/api-overview.md | abstract v2.1.0 | 1.0.5 | Update version | | README.md | sanctum v3.0.0 | 1.0.6 | Update version | ``` ### 2. Plugin Count Validation Verifies claims like "13 plugins" against actual directory count. **Patterns to detect:** - "N plugins", "contains N plugins" - Table rows claiming to list all plugins **Validation:** ```bash # Count plugin directories with valid plugin.json ls -d plugins/*/.claude-plugin/plugin.json 2>/dev/null | wc -l ``` ### 3. Skill/Command Count Validation Verifies per-plugin statistics. **Patterns to detect:** - "X skills", "Y commands", "Z agents" - API inventory tables **Validation:** ```bash # Count skills for a plugin ls -d plugins/sanctum/skills/*/SKILL.md 2>/dev/null | wc -l # Count commands ls plugins/sanctum/commands/*.md 2>/dev/null | wc -l # Count agents ls plugins/sanctum/agents/*.md 2>/dev/null | wc -l ``` ### 4. File/Path Reference Validation Verifies that referenced paths exist. **Patterns to detect:** - Backtick paths: `` `plugins/sanctum/skills/doc-updates/SKILL.md` `` - Relative paths in links: `[link](./modules/foo.md)` - Configuration examples with paths **Validation:** ```bash # Check if path exists test -e "$path" && echo "EXISTS" || echo "MISSING" ``` ## Scan Algorithm ```python def scan_for_accuracy(file_path: str, content: str) -> list[AccuracyWarning]: warnings = [] # Load current plugin versions actual_versions = load_plugin_versions() # Find version references version_pattern = r'(\w+)[\s\(]v?(\d+\.\d+\.\d+)' for match in re.finditer(version_pattern, content): plugin_name = match.group(1).lower() claimed_version = match.group(2) if plugin_name in actual_versions: actual = actual_versions[plugin_name] if claimed_version != actual: warnings.append({ 'type': 'version_mismatch', 'plugin': plugin_name, 'claimed': claimed_version, 'actual': actual, 'line': get_line_number(content, match.start()) }) # Find count claims count_pattern = r'(\d+)\s+(plugins?|skills?|commands?|agents?)' for match in re.finditer(count_pattern, content, re.IGNORECASE): claimed_count = int(match.group(1)) item_type = match.group(2).lower().rstrip('s') actual_count = count_items(item_type) if abs(claimed_count - actual_count) > 0: warnings.append({ 'type': 'count_mismatch', 'item_type': item_type, 'claimed': claimed_count, 'actual': actual_count, 'line': get_line_number(content, match.start()) }) return warnings ``` ## Quick Validation Commands For manual verification during doc updates: ```bash # All plugin versions for p in plugins/*/.claude-plugin/plugin.json; do jq -r '"\(.name): \(.version)"' "$p" done | sort # Total counts echo "Plugins: $(ls -d plugins/*/.claude-plugin/plugin.json | wc -l)" echo "Skills: $(find plugins/*/skills -name 'SKILL.md' | wc -l)" echo "Commands: $(find plugins/*/commands -maxdepth 1 -name '*.md' | wc -l)" ec