update-docs
Updates CLAUDE.md based on recent project changes. Use when user says "update docs", "add to CLAUDE.md", "document this", or runs /update-docs command.
When & Why to Use This Skill
The update-docs skill is a specialized utility designed to maintain the accuracy of project documentation, specifically CLAUDE.md, by synchronizing it with recent code changes and git history. By automating the analysis of diffs and logs, it ensures that the AI agent's long-term memory and project context remain up-to-date, significantly improving the relevance and correctness of AI-assisted development.
Use Cases
- Syncing project architecture and module descriptions in CLAUDE.md after a major code refactoring or directory reorganization.
- Automatically updating technical documentation for new configuration files, environment variables, or CLI commands detected in git history.
- Maintaining a consistent 'source of truth' for AI agents by resolving documentation conflicts between local development branches and the master branch.
- Onboarding new developers or AI agents to a project by ensuring the project-specific guidelines and build instructions reflect the latest codebase state.
| name | update-docs |
|---|---|
| description | Updates CLAUDE.md based on recent project changes. Use when user says "update docs", "add to CLAUDE.md", "document this", or runs /update-docs command. |
Update CLAUDE.md
Maintains project documentation by analyzing git history and syncing CLAUDE.md with code changes.
Quick Start
git log -1 --format="%H" -- CLAUDE.md→ find baselinegit diff <hash>..HEAD --name-only→ list changed files- Read CLAUDE.md → identify sections → map changes → propose → apply → check master
Workflow
Phase 1: Discover Changes
# Find last CLAUDE.md commit
git log -1 --format="%H" -- CLAUDE.md
# Get all changes since then
git diff <last-claude-commit>..HEAD --name-only
git log <last-claude-commit>..HEAD --oneline
If CLAUDE.md not in git (new file or untracked):
Ask user: "CLAUDE.md isn't tracked in git. How long since it was last updated?"
Options:
- "1 week" →
git log --since="1 week ago" --oneline --name-only - "1 month" →
git log --since="1 month ago" --oneline --name-only - "Specific date" →
git log --since="YYYY-MM-DD" --oneline --name-only
Phase 2: Analyze CLAUDE.md Structure
Read the actual CLAUDE.md first. Extract:
- All
##and###section headings - What each section documents (modules, commands, config, etc.)
- File/directory patterns mentioned in each section
Build a dynamic mapping: changed file → relevant section(s)
Example discovery:
Sections found:
- "## Configuration" mentions: config.py, .env, environment variables
- "## Middleware System" mentions: middlewares.py, filters.py
- "## Project Structure" lists: all module files
→ If middlewares.py changed, update "Middleware System" + "Project Structure"
Phase 3: Propose Updates
For each affected area:
- Existing sections needing updates - list specific changes
- New sections to add - describe what they'd cover
Present to engineer:
Changes detected since last CLAUDE.md update (<commit>):
**Files changed:**
• path/to/file.py - <brief description of change>
• path/to/new_module.py - NEW FILE
**Sections to UPDATE:**
• [Section Name] - reason
└─ files: x.py, y.py
**Potential NEW sections:**
• [Proposed Title] - would document X
└─ files: new_module.py
Which changes should I document?
Wait for engineer confirmation before proceeding.
Phase 4: Apply Updates
After engineer approval:
- Read affected sections from current CLAUDE.md
- Apply changes matching existing style
- Add new sections in appropriate locations
Phase 5: Resolve Master Conflicts (AFTER applying updates)
git diff master -- CLAUDE.md
IMPORTANT: Run AFTER applying updates to catch:
- Sections modified in master that we also modified
- New sections added in master we might overwrite
If master differs:
git show master:CLAUDE.md→ fetch master version- Identify conflicting sections
- Merge: keep additions from both, prefer more complete version
- Show engineer the diff before finalizing
Conflict strategy:
- Only in master → keep it
- Only in current → keep it
- Both modified → merge carefully, ask if unclear
Quality Checks
Before finalizing:
- All identified changes documented
- No merge conflicts with master
- Matches existing formatting style
- Cross-references still valid
References
- CLAUDE.md Memory Management (md) - official docs on CLAUDE.md structure and best practices
- All Claude Code Docs - LLM-friendly documentation index