Documentation Maintenance
Automatically updates project documentation after task completion.
Consolidated Plan Location
All plan updates go to root PLAN.md. This is the single source of truth for project planning. Package-level PLAN.md files should be consolidated into the root PLAN.md.
Trigger Conditions
Invoke after:
- Completing any task
- Adding a new feature
- Fixing a bug
- Refactoring code
- Resolving a blocked item
Also invoke explicitly with:
/doc-maintenance- "update documentation"
- "sync docs"
Pre-Merge Cleanup
When owner says "clean up before merge" or similar, run this checklist:
# 1. Sync CLAUDE.md with installed skills (removes stale refs)
skills claudemd sync
# 2. Scan for test artifacts and slop
skills hygiene scan
# 3. If slop found, clean it
skills hygiene clean --confirm
# 4. Validate chain config (if chain files changed)
chain validate
# 5. Update PLAN.md with completed work
# (follow doc-maintenance procedure below)
# 6. Commit and push
git add -A && git commit -m "chore: pre-merge cleanup" && git push
This is the standard cleanup before any PR merge.
Procedure
Step 1: Read Current State
Read these files:
PLAN.md(root, consolidated project plan)README.md(feature documentation)packages/*/PLAN.md(check for package-level plans to consolidate into root)- Recent git commits (what changed)
Step 2: Consolidate Package Plans
If packages/*/PLAN.md files exist, consolidate their content into root PLAN.md:
- Each package gets a section:
## Package: {name} - Move completed items to the Completed section
- Move pending items to the appropriate sprint/backlog section
- Delete the package-level PLAN.md after consolidation
Structure for root PLAN.md:
# Project Plan
## Current Sprint
- Active work items across all packages
## Package: chain
- Package-specific in-progress work
## Package: cli
- Package-specific in-progress work
## Backlog
- Future work items
## Completed
- Timestamped completed items
## Blocked
- Items waiting on dependencies
Step 3: Analyze Changes
Determine what was accomplished:
- Which PLAN.md items are now complete?
- Were new features added?
- Were bugs fixed?
- Did refactoring occur?
- Were new issues discovered?
Step 4: Update PLAN.md
Mark completed items:
## Current Sprint
- [x] Implement user authentication # Was [ ]
- [ ] Add password reset flow
Add discovered work:
## Backlog
- [ ] Discovered: Need rate limiting for auth endpoints
- [ ] Tech debt: Refactor auth middleware
Move completed items with timestamp:
## Completed
- [x] Implement user authentication (2026-01-30)
Update blocked items:
## Blocked
- Password reset: Waiting for email service setup
Step 5: Update README.md (If Features Changed)
When to update README.md:
- New user-facing feature added
- API changed
- New command available
- Installation steps changed
What to update:
- Features list
- Usage examples
- API reference
- Installation instructions
Step 6: Report Changes
Output a summary:
Documentation updated:
PLAN.md:
- Marked complete: "Implement user authentication"
- Added to backlog: "Need rate limiting for auth endpoints"
- Moved to completed: 1 item
- Consolidated from: packages/chain/PLAN.md
README.md:
- Updated features list with authentication
- Added auth usage example
Skill Chaining
With markdown-writer
All documentation updates MUST follow markdown-writer style:
- Short sentences, direct claims
- No em dashes
- Active voice
- Tables for structured data
Implicitly chain markdown-writer when editing any .md file.
After TDD Completion
When TDD workflow completes (GREEN phase):
- Mark the related PLAN.md task as complete
- Add any discovered edge cases to backlog
After Bug Fix
When a bug is fixed:
- Mark bug item as complete in PLAN.md
- Add regression test to PLAN.md if not present
After Refactoring
When refactoring completes:
- Mark refactoring task as complete
- Update any affected API documentation
Terminal Chain
After any documentation update: repo-hygiene (clean stale references)
Update Patterns
Marking Tasks Complete
Before:
- [ ] Implement feature X
After:
- [x] Implement feature X
Adding Discovered Work
When you discover new tasks during implementation:
## Backlog
- [ ] (discovered) New task from implementation
- [ ] (tech debt) Code that needs cleanup
- [ ] (bug) Issue found during testing
Timestamping Completed Items
Add date to completed items:
## Completed
- [x] Task description (2026-01-30)
Feature Documentation
When adding a feature to README.md:
## Features
- **Authentication**: Secure user login with JWT tokens
- **Password Reset**: Email-based password recovery
Rationalizations (Do Not Skip)
| Rationalization | Why It's Wrong | Required Action |
|---|---|---|
| "Too small to document" | Small changes accumulate | Update PLAN.md |
| "I'll remember" | Context is lost between sessions | Write it down |
| "README is fine" | Feature docs get stale | Verify accuracy |
| "Just a bug fix" | Bugs deserve tracking | Mark complete |
| "Package has its own PLAN" | Fragmentation causes confusion | Consolidate to root PLAN.md |
Example Session
Task: Add user authentication
After completion:
/doc-maintenance
Analyzing changes...
Found:
- New auth middleware in src/middleware/auth.ts
- New login endpoint in src/routes/auth.ts
- 5 new test files
- Git commit: "Add JWT authentication"
- packages/chain/PLAN.md exists (needs consolidation)
Updates:
PLAN.md:
Current Sprint:
- [x] Implement user authentication
Backlog:
+ [ ] (discovered) Add refresh token support
+ [ ] (discovered) Rate limit login attempts
Consolidated:
- Merged packages/chain/PLAN.md content
README.md:
Features:
+ Authentication: JWT-based user authentication
Usage:
+ Added auth example code
Notes
- All plan updates go to root
PLAN.md(consolidated) - Package-level PLAN.md files should be consolidated, not maintained separately
- Never removes items from PLAN.md (only marks complete)
- Preserves existing formatting
- Adds timestamps to completed items
- Creates backlog items for discovered work
- Only updates README.md when features change
- Always follows markdown-writer style