Best for
- Use when the user says docs are stale, asks to sync docs with recent code changes, update a specific doc file, or update a whole category (core/data/infrastructure/development) after a refactor or schema change.
mgiovani/cc-arsenal/skills/docs-update/SKILL.md
Refresh existing docs (architecture, onboarding, data-model, deployment, security, contributing) so they match the current codebase, verifying every claim against real code instead of guessing. Use when the user says docs are stale, asks to sync docs with recent code changes, update a specific doc file, or update a whole category (core/data/infrastructure/development) after a refactor or schema change. Not for creating docs that don't exist yet (use docs-init) or scoring/auditing doc health with
Decision brief
Synchronize documentation with the current codebase state: one file, a category, or everything in docs/.
Compatibility matrix
| Platform | Status | Evidence | What to check |
|---|---|---|---|
| Codex | Not declared | No explicit evidence | Portability before use |
| Claude Code | Not declared | No explicit evidence | Portability before use |
| Cursor | Not declared | No explicit evidence | Portability before use |
| Gemini CLI | Not declared | No explicit evidence | Portability before use |
Installation
The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.
npx skills add https://github.com/mgiovani/cc-arsenal --skill "skills/docs-update"Inspect the Agent Skill "docs-update" from https://github.com/mgiovani/cc-arsenal/blob/410f2649860bb1892ee8c66721f57462eeefcf13/skills/docs-update/SKILL.md at commit 410f2649860bb1892ee8c66721f57462eeefcf13. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.
Workflow
Parse the invocation argument: - No argument or all: update every doc that exists in docs/ - (e.g. architecture): resolve via the mapping below, update only that file - category: (core, data, infrastructure, development): update every doc in that category
Parse the invocation argument: - No argument or all: update every doc that exists in docs/ - (e.g. architecture): resolve via the mapping below, update only that file - category: (core, data, infrastructure, development): update every doc in that category
For each doc resolved in Phase 1 (using its actual path, not a fixed one), compare its last commit against source changes since:
Single document: read it fully, then grep the codebase for each claim it makes (component names, counts, file paths, tech stack). No subagent needed, one Explore pass funnels into one file write either way.
Preserve manually added sections and any content that doesn't match the template structure: only touch parts backed by verified facts from Phase 3
Permission review
The documentation asks the agent to create, modify, or delete local files.
`<doc-name>` (e.g. `architecture`): resolve via the mapping below, update only that fileThe documentation asks the agent to run terminal commands or scripts.
git log --since="$(git log -1 --format=%ai -- <resolved-doc-path> 2>/dev/null || echo '30 days ago')" --oneline --name-only -- . ':!docs' | head -30The documentation asks the agent to read local files, directories, or repositories.
*Single document**: read it fully, then grep the codebase for each claim it makes (component names, counts, file paths, tech stack). No subagent needed, one Explore pass funnels into one file write either way.Evidence record
| Signal | Value | Evidence type | Meaning |
|---|---|---|---|
| Quality score | 84/100 | Computed | Documentation, specificity, maintenance, and trust rules |
| Repository stars | 6 | Source | Repository attention, not individual Skill quality |
| Compatibility | 0 platforms | Source | Declared in the catalog source record |
| Usage guide | automated source guide | Editorial | Generated or reviewed according to the visible evidence level |
Pinned source
Synchronize documentation with the current codebase state: one file, a category, or everything in docs/.
Every statement written must trace back to a file read or grepped this run:
find/grep, never estimate ("5 services" means 5 files were counted this run)Parse the invocation argument:
all: update every doc that exists in docs/<doc-name> (e.g. architecture): resolve via the mapping below, update only that filecategory:<name> (core, data, infrastructure, development): update every doc in that category| Argument | File Path | Category |
|---|---|---|
architecture | docs/architecture.md | core |
onboarding | docs/onboarding.md | core |
data-model | docs/data-model.md | data |
deployment | docs/deployment.md | infrastructure |
security | docs/security.md | infrastructure |
contributing | docs/contributing.md | development |
Existence check: stop before doing anything else if the target is missing. This skill only updates docs that already exist; it never creates one.
all or category:<name>: silently exclude any mapped path that isn't on disk (e.g. find docs/*.md and intersect with the category's paths); the run proceeds with whatever remains<doc-name>: resolve the path, then check it with test -f <resolved-doc-path> (or Read). If it does not exist, STOP the entire skill run right here: do not read further, do not run Phase 2-5, do not Write or Edit that path under any pretext (not as a "special case," not with a caveat about verified content). Tell the user the doc doesn't exist yet and point them to docs-init, which owns creation and the canonical templates. This is the final action for that run.For a multi-doc run that passes the existence check, track progress with TodoWrite: one todo per document, marked in_progress while it's being worked and completed once written.
For each doc resolved in Phase 1 (using its actual path, not a fixed one), compare its last commit against source changes since:
git log --since="$(git log -1 --format=%ai -- <resolved-doc-path> 2>/dev/null || echo '30 days ago')" --oneline --name-only -- . ':!docs' | head -30
A doc whose last update predates relevant source changes is a candidate for this run. If git history is unavailable (no .git, doc untracked, first commit), fall back to the commands in references/change-detection.md and note in the final report that freshness couldn't be determined from git.
Single document: read it fully, then grep the codebase for each claim it makes (component names, counts, file paths, tech stack). No subagent needed, one Explore pass funnels into one file write either way.
Multiple documents (all or category mode): spawn one subagent per document so verification runs concurrently, see references/update-strategies.md for the per-document-type checklist and prompt pattern. If no Task/subagent tool is available, run the same read-verify-write pass for each document sequentially instead.
../docs-init/assets/templates/ relative to this skill's own directory (works when both skills are installed side by side, e.g. via the cc-arsenal plugin or npx skills add). If docs-init isn't installed alongside this skill, fetch the same templates from the cc-arsenal repo instead of inventing structuregrep -oE '\{\{[A-Z_]+\}\}' <template-file> to see the tokens that specific template actually uses: each template has its own set (architecture.md alone uses over a dozen), never assume a fixed listList documents updated (with what changed and numbers pulled from Phase 3, e.g. "3 services found" not "several services"), skipped (already fresh), and not found (excluded from an all/category run because the file doesn't exist, mention docs-init, don't create it). This skill never reports a "created" doc; creation is docs-init's job.
Documentation Update Complete
Updated (2 docs):
docs/architecture.md (added AuthService, NotificationService — found via grep of src/services/)
docs/data-model.md (schema changed, ER diagram regenerated from 6 models)
Up to Date (1 doc):
docs/onboarding.md (no source changes since last update)
Skipped — could not verify (1 doc):
docs/security.md (claims about SSO could not be confirmed in code, left as-is, flagged for manual review)
Architecture Documentation Updated
File: docs/architecture.md
Changes:
Added 2 new services (AuthService, NotificationService) — src/services/auth.py, src/services/notify.py
Updated architecture diagram to include the new message queue integration
Preserved custom "Deployment Notes" section (not touched)
Verified:
5 services total (find src/services -name '*.py' | wc -l)
3 databases: PostgreSQL, Redis, MongoDB (grep of config/database.yml)
docs/security.md doesn't exist yet — nothing to update.
This skill only refreshes existing docs. Run docs-init to create
docs/security.md from the canonical template first, then re-run
docs-update security to keep it in sync going forward.
No file was written and no other phase ran.
git log, not assumptionAlternatives
ruvnet/ruflo
Agent skill for workflow-automation - invoke with $agent-workflow-automation
daymade/claude-code-skills
Use it for deployment and documentation tasks; the detail page covers purpose, installation, and practical steps.
mgiovani/cc-arsenal
Read-only audit of documentation against the current codebase, flags stale docs, missing sections, broken links, and hallucinated claims (wrong file references, wrong counts, diagram entities that don't exist in code). Use for "check the docs", "audit documentation", "are the docs stale", "find hallucinations in docs", "docs health check", "does this doc still match the code", or before onboarding/release. Reports only, never edits files, for actually fixing or regenerating docs use docs-update
mgiovani/cc-arsenal
Bootstraps a documentation structure (architecture, onboarding, data-model, deployment, security, contributing, and a first ADR) for a project that has little or no docs/ directory, exploring the codebase and populating templates only with content evidenced in the code. Use when the user wants to set up docs, bootstrap documentation, initialize project docs, scaffold a docs/ folder, or create docs from scratch for a new or undocumented project. Not for refreshing or syncing docs that already exi