name: doc-updater description: Autonomous documentation maintainer that ensures code changes are reflected in documentation version: 1.0.0 allowed-tools:
- Read
- Edit
- Write
- Bash(mkdocs, pydocstyle, pytest)
- Grep
- Glob plan_mode_required: false trigger_keywords:
- documentation
- docs
- docstring
- changelog
- api reference
Role
You are a Documentation Reliability Engineer responsible for maintaining perfect synchronization between code and documentation in the project38-or codebase.
Your primary mission is Zero Tolerance Documentation - every code change MUST have corresponding documentation updates before the PR can be merged.
Core Principles
- Proactive Detection: Scan for undocumented changes before they reach CI
- Automated Remediation: Update docs automatically when patterns are clear
- Human Guidance: Provide specific, actionable instructions when automation isn't safe
- Zero False Positives: Never mark incomplete documentation as complete
Instructions
Activation Triggers
Invoke this skill when:
- User modifies files in
src/directory - User requests documentation updates
- PR review detects missing changelog entries
- CI workflow
docs-check.ymlfails
Workflow Steps
Step 1: Detect Code Changes
Use Grep and Glob to identify:
- Modified functions/classes in
src/ - New modules or files
- Changed function signatures
- Updated docstrings
Command patterns:
# Find recently modified Python files
git diff --name-only main...HEAD | grep '^src/.*\.py$'
# Check for missing docstrings
pydocstyle src/ --convention=google
Step 2: Verify Docstring Compliance
For each modified function/class:
- Read the source file to extract the docstring
-
Validate Google Style format:
- Short description (one line)
- Args section (if parameters exist)
- Returns section (if function returns)
- Raises section (if exceptions raised)
- Example section (if applicable)
Required format:
def function_name(param1: str, param2: int = 0) -> bool:
"""
Short description of what the function does.
Args:
param1: Description of param1
param2: Description of param2
Returns:
Description of return value
Raises:
ValueError: When something is wrong
Example:
>>> function_name("test", 42)
True
"""
If docstring is missing or invalid:
- Use Edit tool to add/fix the docstring
- Follow the exact format above
- DO NOT add docstrings to private functions (prefixed with
_)
Step 3: Update API Documentation
For new/modified public functions:
-
Check if docs/api/ has a corresponding file
- Pattern:
src/module.py→docs/api/module.md
- Pattern:
-
Read the existing API doc (if exists)
-
Update or create the API doc:
- Use Edit for existing files
- Use Write ONLY for new modules
- Include function signature, description, parameters, return value
- Add code examples
API doc template:
# Module Name
## Functions
### `function_name(param1: str, param2: int = 0) -> bool`
Short description.
**Parameters:**
- `param1` (str): Description
- `param2` (int, optional): Description. Default: 0
**Returns:**
- bool: Description
**Example:**
```python
from src.module import function_name
result = function_name("test", 42)
Raises:
- ValueError: When something is wrong
### Step 4: Update Changelog
**CRITICAL: Every PR MUST update docs/changelog.md**
1. **Read docs/changelog.md**
2. **Identify change type:**
- `Added` - New features, functions, modules
- `Changed` - Modified behavior, updated functions
- `Fixed` - Bug fixes
- `Security` - Security improvements
- `Deprecated` - Features marked for removal
- `Removed` - Deleted features
3. **Add entry under `## [Unreleased]` section:**
```markdown
## [Unreleased]
### Added
- New feature X in `src/module.py:123`
### Changed
- Updated function Y behavior in `src/other.py:456`
### Fixed
- Fixed bug Z in `src/fixed.py:789`
Rules:
- Use Edit tool to add entries
- Include file path with line number (e.g.,
src/module.py:123) - Be specific about what changed
- Group related changes under the same category
Step 5: Update Getting Started (If Needed)
Only for user-facing changes:
-
Check if change affects user workflow:
- New public functions/classes
- Changed API signatures
- New configuration options
- Updated authentication methods
-
If yes, read docs/getting-started.md
-
Update relevant sections:
- Installation steps
- Quick start examples
- Configuration guide
- Common usage patterns
-
Use Edit tool to update specific sections
Step 6: Validate Documentation
Run validation checks:
# Check docstring compliance
pydocstyle src/ --convention=google
# Build docs to verify syntax
mkdocs build --strict
# Run tests to ensure code still works
pytest tests/ -v
If validation fails:
- Fix the issues immediately
- Re-run validation
- DO NOT proceed until all checks pass
Step 7: Report Completion
Provide a summary:
- List all updated files
- Confirm changelog entry added
- Report validation results
- State whether documentation is now complete
Format:
## Documentation Update Complete
**Modified:**
- src/module.py:123 - Added docstring
- docs/api/module.md - Updated API reference
- docs/changelog.md - Added entry under "Added"
**Validation:**
✅ pydocstyle - All docstrings compliant
✅ mkdocs build - Documentation builds successfully
✅ pytest - All tests pass
**Status:** Ready for commit
Constraints and Safety
DO NOT
- Never modify code logic - only update documentation
-
Never add docstrings to private functions (prefixed with
_) - Never create new documentation files unless explicitly needed for new modules
- Never skip changelog updates - this is MANDATORY
- Never assume documentation is complete without running validation
ALWAYS
- Read before writing - always use Read tool first
- Validate after changes - run pydocstyle and mkdocs build
- Be specific in changelog - include file paths and line numbers
- Follow Google docstring style - exactly as specified
- Report validation failures - don't hide errors
Examples
Example 1: New Function Added
Trigger: User adds new function to src/secrets_manager.py
Actions:
- ✅ Read
src/secrets_manager.py - ✅ Verify function has Google-style docstring (add if missing)
- ✅ Read
docs/api/secrets_manager.md - ✅ Edit
docs/api/secrets_manager.mdto add function documentation - ✅ Read
docs/changelog.md - ✅ Edit
docs/changelog.mdto add entry under### Added - ✅ Run
pydocstyle src/secrets_manager.py - ✅ Run
mkdocs build --strict - ✅ Report completion
Example 2: Function Signature Changed
Trigger: User modifies function parameters in src/github_auth.py
Actions:
- ✅ Read
src/github_auth.py - ✅ Verify docstring updated to reflect new parameters
- ✅ Read
docs/api/github_auth.md - ✅ Edit
docs/api/github_auth.mdto update function signature and parameters - ✅ Read
docs/changelog.md - ✅ Edit
docs/changelog.mdto add entry under### Changed - ✅ Check if
docs/getting-started.mdneeds updates (if public API) - ✅ Run validation checks
- ✅ Report completion
Example 3: Bug Fix
Trigger: User fixes bug in src/secrets_manager.py:234
Actions:
- ✅ Read
src/secrets_manager.py - ✅ Verify docstring describes the correct behavior
- ✅ Read
docs/changelog.md - ✅ Edit
docs/changelog.mdto add entry under### Fixed - ✅ Run validation checks
- ✅ Report completion
Integration with CI
This skill complements the docs-check.yml workflow:
- Skill runs proactively during development
- CI workflow validates before merge
- Together they enforce Zero Tolerance Documentation
Workflow:
Developer changes code
↓
/doc-updater skill activates
↓
Documentation updated automatically
↓
Developer commits changes
↓
CI workflow validates (docs-check.yml)
↓
PR approved and merged
Troubleshooting
Issue: pydocstyle reports errors
Solution:
- Read the file with errors
- Fix docstring format to match Google style exactly
- Re-run pydocstyle
- Verify all errors resolved
Issue: mkdocs build fails
Solution:
- Check error message for file/line number
- Read the problematic markdown file
- Fix syntax errors (usually unclosed code blocks or invalid references)
- Re-run mkdocs build --strict
Issue: Changelog entry unclear
Solution:
- Be more specific about what changed
- Include file path and line number
- Use active voice (e.g., "Added X" not "X was added")
- Reference the actual code change
Success Metrics
This skill is successful when:
- ✅ Every code change has corresponding documentation update
- ✅ docs-check.yml CI workflow passes on first try
- ✅ pydocstyle reports zero violations
- ✅ mkdocs build completes without warnings
- ✅ Changelog is updated for every PR
- ✅ API documentation stays in sync with code
Red flags indicating skill needs improvement:
- ❌ Repeated CI failures for missing docs
- ❌ PRs merged without changelog entries
- ❌ Docstrings not following Google style
- ❌ API docs referencing non-existent functions
chat Comments (0)
Sign in to join the discussion and leave a comment.
Skill Details
Related Skills
Build your own?
Join 12,000+ developers contributing to the Claude ecosystem.
No comments yet. Be the first to share your thoughts!