Awesome-omni-skill maintain-dev-docs
Maintain project /docs/: specs, tasks, features, readme. Use for: project setup, feature additions, instruction improvements, or syncing documentation with code.
git clone https://github.com/diegosouzapw/awesome-omni-skill
T=$(mktemp -d) && git clone --depth=1 https://github.com/diegosouzapw/awesome-omni-skill "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/documentation/maintain-dev-docs-majiayu000" ~/.claude/skills/diegosouzapw-awesome-omni-skill-maintain-dev-docs && rm -rf "$T"
skills/documentation/maintain-dev-docs-majiayu000/SKILL.mdDevelopment Documentation Maintainer
Overview
This skill helps maintain comprehensive, evolving development documentation for software projects. It establishes a consistent pattern for capturing ideas, specifications, tasks, and implementation details in a
/docs/ folder that grows with your project. Ensures consistent WIP documentation evolution across brainstorm, specification, tasks, and feature implementation. Assists humans and AI agents track progress being made, tasks prioritization, objectives, instructions, and decisions during an iterative development process.
Use this skill when:
- Starting a new project with initial ideas
- Adding features to an existing project
- Updating technical specifications
- Documentation needs to be created or synchronized with code
- Instructions for project setup, configuration, or implemented features need modified in the README.md
- Adding/updating project tasks in TASKS.md based upon current progress, new feature ideas/improvements, or changes in feature development priorities.
The skill ensures AI coding assistants (Claude Code, GitHub Copilot, Antigravity, ect.) have consistent, up-to-date context about what you're building, architectural decisions made, and what remains to be done.
Documentation Structure
This skill manages five core documentation files in
/docs/:
docs/ ├── BRAINSTORM.md # Initial ideas, evolving as project grows ├── SPECIFICATION.md # Architecture, tech stack, API design, general requirements ├── TASKS.md # Hierarchical task list organized by phases ├── PHASE0.md # Detailed/prioritized implementation specs for Phase 0 ├── PHASE1.md # Detailed/prioritized implementation specs for Phase 1 (created as needed) ├── README.md # User-facing documentation and getting started └── features/ # Optional: individual feature documentation └── feature-name.md
Quick Start Workflows
New Project Initialization
Use this workflow when starting a project from scratch:
- Create documentation structure: Initialize
folder with core files/docs/ - Start with brainstorm: Capture initial ideas in
BRAINSTORM.md- Project purpose and objectives
- Target users
- Success criteria
- Open questions
- Create specification: Transform brainstorm into
SPECIFICATION.md- CRITICAL: Ask about and document database provider, LLM providers, logging, observability
- Define architecture and tech stack
- Outline API and data models
- List general functional/non-functional requirements
- Build task list: Create
with hierarchical structureTASKS.md- Organize by phases (Phase 0, Phase 1, etc.)
- Nest tasks under each phase
- Use checkboxes for tracking
- Detail Phase 0: Create
with implementation specsPHASE0.md- Detailed feature requirements
- Database schemas and migrations
- API endpoints with examples
- LLM integration details (if applicable)
- Logging and observability setup
- Testing/verification requirements
- Create README: Write
for usersREADME.md- Project description
- Implemented feature descriptions & instructions for use
- Getting started instructions
- Prerequisites and installation
- Basic usage examples
Existing Project Adaptation
Use this workflow when a project already has some documentation:
- Assess current documentation: Check which files exist in
/docs/ - Identify gaps: Determine which core files are missing
- Create missing files: Use templates to generate missing documentation
- Adapt to existing structure: If documentation exists in different format:
- Extract relevant content
- Map to standard structure
- Preserve existing information
- Fill in critical information: Ensure architecture decisions are documented
- Database provider
- LLM providers (if applicable)
- Logging solution
- Observability setup
- Integrate workflow: Begin using the documentation system for future changes
Feature Addition
Use this workflow when adding new features to a project:
- Update specification (if needed): Add to
if introducing:SPECIFICATION.md- New external services or APIs
- New technology or framework
- Changes to architecture
- Add tasks: Update
TASKS.md- Add new tasks under appropriate phase
- Mark tasks as completed when done
- Update phase file: Add detailed specs to relevant
PHASE#.md- Feature requirements
- Database changes
- API endpoints
- Frontend components
- LLM integration details
- Logging and testing requirements
- Create feature doc (if complex): For substantial features, create
features/feature-name.md - Update README: If feature is user-facing, update
README.md- Add to features list
- Update usage examples
- Update installation if needed
Phase Transition
Use this workflow when moving from one development phase to another:
- Review current phase: Ensure all tasks in current phase are complete
- Mark tasks complete: Update
TASKS.md- Check off completed tasks
- Move to "Completed Tasks" section if desired
- Update specification: Update phase overview in
SPECIFICATION.md - Create next phase file: Generate
with:PHASE[N+1].md- Phase overview and goals
- Success criteria
- Detailed implementation specifications
- Dependencies and risks
- Plan next phase tasks: Add new phase tasks to
TASKS.md
Documentation Files Overview
BRAINSTORM.md
Purpose: Capture initial ideas and evolving requirements
When to update:
- Starting a new project
- Brainstorming new features
- Pivoting project direction
- Recording open questions
Content includes:
- Initial ideas and inspiration
- Project purpose and objectives
- Target users and use cases
- Success criteria
- Constraints and considerations
- Open questions
This is your "thinking space" where ideas can be messy and evolving. As ideas solidify, they move into SPECIFICATION.md.
SPECIFICATION.md
Purpose: Document architecture, tech stack, and general requirements
When to update:
- After solidifying ideas from brainstorm
- Adding new technology or framework
- Making architectural decisions
- Integrating new external services
- Changing infrastructure
Content includes:
- Architecture & Tech Stack (REQUIRED):
- Database provider
- LLM providers and models (if applicable)
- Backend/frontend frameworks
- Deployment platform
- Logging and observability solutions
- API & Data Models:
- Key endpoints
- Core data structures
- External integrations
- General Requirements:
- High-level functional requirements
- Non-functional requirements (performance, security, scalability)
- Phase Overview:
- Brief description of each implementation phase
Keep this document general. Detailed implementation specs belong in PHASE#.md files.
For full template, see references/templates.md.
TASKS.md
Purpose: Track all project tasks in hierarchical structure
When to update:
- Creating new phase
- Adding new features or tasks
- Completing tasks (check them off immediately)
- Reprioritizing work
- Discovering forgotten tasks
Content includes:
- Hierarchical task structure organized by phases
- Checkboxes for tracking completion
- Nested subtasks under main tasks
- Completed tasks section (optional)
Structure:
### Phase 0: Foundation - [ ] Setup & Infrastructure - [ ] Initialize project structure - [ ] Configure database - [ ] Setup logging & observability - [ ] Core Models - [ ] Define data schemas - [ ] Create migrations
Update this file frequently. Check off tasks as you complete them to maintain accurate progress tracking.
PHASE#.md
Purpose: Detailed implementation specifications for each development phase
When to update:
- Creating a new phase
- Adding features to a phase
- Documenting implementation details
- Updating as implementation progresses
Content includes:
- Phase overview and goals
- Success criteria
- Detailed feature specifications:
- Requirements (functional and non-functional)
- Database changes (schemas, migrations)
- API endpoints (with request/response examples)
- Frontend components
- LLM integration (prompts, models, error handling)
- Logging and observability (what to log, metrics to track)
- Testing requirements
- Security considerations
- Dependencies and risks
- Timeline estimates (optional)
Phase files contain the DETAILED specs. specification.md stays general, PHASE#.md files go deep.
For full template, see references/templates.md.
README.md
Purpose: User-facing documentation and getting started guide
When to update:
- Initial project setup
- Adding user-facing features
- Changing installation process
- Updating usage instructions
- Modifying prerequisites
Content includes:
- Project description
- Feature list
- Prerequisites
- Installation instructions
- Configuration steps
- Usage examples
- Links to detailed documentation
This is what users see first. Keep it clear, concise, and up-to-date with current functionality.
features/feature-name.md (Optional)
Purpose: Detailed documentation for complex individual features
When to create:
- Feature is substantial and complex
- Feature requires extensive documentation
- Feature involves multiple components
- Implementation discussions need dedicated space
Content includes:
- Feature overview
- Requirements and specifications
- Implementation details
- Usage examples
- Edge cases and considerations
Critical Reminders
ALWAYS ASK AND DOCUMENT
When creating or updating
SPECIFICATION.md, these four items are REQUIRED:
- Database provider and rationale (PostgreSQL, MySQL, MongoDB, SQLite, etc.)
- LLM providers and models (OpenAI, Anthropic, local, etc.) - if applicable to the project
- Logging solution (Winston, Serilog, built-in, etc.)
- Observability/monitoring setup (Prometheus, CloudWatch, Sentry, etc.)
If any of these are unclear, ASK the user before proceeding. These architectural decisions are critical and must be documented from the start.
Built-in Reminder Checklist
Before committing code changes, verify:
Architecture Decisions:
- Database provider documented in SPECIFICATION.md
- LLM providers specified (if project uses LLMs)
- Logging solution configured
- Observability/monitoring setup
Documentation Sync:
- SPECIFICATION.md reflects current architecture
- tasks.md checkboxes up to date
- Phase files match current implementation
- README.md user-facing information current
Feature Additions:
- New integrations added to SPECIFICATION.md
- Tasks added to tasks.md
- Relevant PHASE#.md file updated
- Feature-specific docs created if needed
Using the Reminder Script
For a comprehensive checklist, run the reminder script:
ts-node /path/to/project/docs/check-reminders.ts
Or if integrated into your project:
npm run check-docs
The script outputs a formatted checklist covering all critical documentation maintenance items.
Update Workflows
When to Update specification.md
Update specification.md when:
- Adding new technology: New framework, library, or service
- Making architectural changes: Database migration, deployment changes
- Integrating external services: Third-party APIs, payment processors
- Changing infrastructure: Logging, monitoring, hosting platform
- Updating general requirements: New non-functional requirements
Do NOT add detailed implementation specs here. Those belong in PHASE#.md files.
When to Update tasks.md
Update tasks.md when:
- Starting new phase: Add all tasks for the phase
- Completing tasks: Check off tasks immediately upon completion
- Adding features: Add new tasks under appropriate phase
- Discovering forgotten tasks: Add them as soon as identified
- Reprioritizing: Reorganize task order or move between phases
Keep this file current. It's your source of truth for progress tracking.
When to Update PHASE#.md Files
Update phase files when:
- Planning implementation: Before starting to code a feature
- Documenting decisions: As you make implementation choices
- Adding detail: When specs need clarification
- Recording changes: When implementation differs from original plan
- Updating requirements: When feature requirements evolve
Update phase files BEFORE and DURING implementation, not just after.
When to Update README.md
Update README.md when:
- Adding user-facing features: New functionality users will interact with
- Changing setup process: Installation, configuration, or prerequisites
- Updating usage: New commands, APIs, or workflows
- Fixing setup issues: Installation problems or common errors
- Adding dependencies: New required software or services
Keep README.md synchronized with what users actually experience.
Keeping Feedback Loops Short
Best practice: Update documentation incrementally, not in large batches.
Before starting work:
- Update specification.md if introducing new tech
- Add tasks to tasks.md
- Document detailed specs in PHASE#.md
During implementation:
- Update phase files as you make decisions
- Create feature docs for complex features
- Note any deviations from original plan
After completing work:
- Check off tasks in tasks.md
- Update README.md if user-facing
- Verify docs sync with code
Before committing:
- Run through reminder checklist
- Verify all relevant docs updated
- Commit docs with code changes
This workflow ensures documentation never falls far behind code.
Best Practices
Update Before Committing
Always update documentation before committing code. This ensures:
- Documentation and code stay synchronized
- Future you/teammates understand current state
- AI assistants have accurate context
- Changes are documented when fresh in mind
Include documentation updates in the same commit as code changes when possible.
Keep Specification General, Phase Files Detailed
specification.md: High-level architecture and general requirements
- "The API will use REST endpoints"
- "Authentication will use JWT tokens"
- "Database will be PostgreSQL"
PHASE#.md: Detailed implementation specifications
- "POST /api/auth/login endpoint accepts {email, password} and returns {token, user}"
- "JWT tokens expire after 24 hours with refresh token pattern"
- "User table schema: id (UUID), email (unique), password_hash, created_at"
This separation prevents specification.md from becoming overwhelming while ensuring details are captured.
Use Hierarchical Task Structure
Organize tasks with clear hierarchy:
### Phase 0: Foundation - [ ] Observability & Development Verification System - [ ] Log schema - [ ] Local log output and logging service - [ ] Define Schemas - [ ] Initial base types & interfaces - [ ] DTOs - [ ] Standard API requests & responses - [ ] Database model relationships
This makes it clear:
- What definitions and major features are planned
- What has yet to be built and in prioritized order to build foundational & prerequisite features first
- A general history and what's been completed (checkboxes for simple toggles)
Create Feature-Specific Docs for Complex Features
If a feature requires extensive discussion, create
features/feature-name.md:
- Keeps phase files manageable & prioritized
- Provides dedicated space for feature details
- Easier to reference and share
- Better organization for complex projects
Examples of when to create feature docs:
- GraphRAG for semantic search
- Dashboard displaying a script execution summary
- New web component or page
- New API route with multiple endpoints
- Payment processing integration
- Real-time messaging system
- Authentication flows
- Multi-step workflows
Keep Docs in Sync with Code
Documentation that's out of sync is worse than no documentation. It misleads and confuses.
Strategies:
- Update docs in same commit as code
- Use reminder checklist before committing
- Review docs during code review
- Set up git hooks for reminders (optional)
- Make doc updates part of "done" definition
Document Decisions, Not Just Facts
When documenting, include WHY decisions were made:
Just facts:
Database: PostgreSQL
Facts + rationale:
Database: PostgreSQL Rationale: Need strong ACID guarantees for financial transactions, team has PostgreSQL experience, excellent JSON support for flexible schemas
The "why" helps future maintainers understand trade-offs and avoid questioning decisions later.
Start Simple, Grow as Needed
Don't create
features/ folder until you have a feature that needs it. Don't create PHASE3.md until you're ready for Phase 3.
Start with core files:
- brainstorm.md
- specification.md
- tasks.md
- PHASE0.md
- README.md
Add more structure as project complexity demands it.
References
For detailed information, see these reference documents:
-
references/templates.md: Complete templates for all documentation files
- brainstorm.md template
- specification.md template (with required sections)
- tasks.md template (hierarchical structure)
- PHASE#.md template (detailed implementation specs)
- README.md template
- Feature documentation template
-
references/workflow-guide.md: Detailed workflow patterns
- New project workflow (step-by-step)
- Existing project workflow (adaptation)
- Feature addition workflow
- Phase transition workflow
- Documentation update workflow
-
references/phase-management.md: Phase file management
- How to structure phase files
- When to create new phases
- Managing phase transitions
- Phase dependencies
- Examples of well-structured phases
-
references/git-hooks-setup.md: Optional automation
- Pre-commit hook for doc reminders
- Pre-push hook for checklist
- Setup instructions for bash/zsh
- Example hook scripts
- Bypassing hooks when needed
Troubleshooting
Documentation Out of Sync
Problem: Code has been updated but documentation hasn't been updated.
Solution:
- Review recent commits to identify changes
- Update specification.md with any new architecture/tech
- Update relevant PHASE#.md with implementation details
- Check off completed tasks in tasks.md
- Update README.md if user-facing changes
- Consider setting up git hooks to prevent future drift
Conflicting Requirements
Problem: Requirements in specification.md conflict with implementation in PHASE#.md.
Solution:
- Determine which is correct (spec or implementation)
- Update the incorrect document to match reality
- Document why the change was made
- Ensure both documents now align
- Communicate change to team if applicable
Missing Architecture Decisions
Problem: specification.md is missing critical information (database, LLM, logging, observability).
Solution:
- Identify what's missing from the four critical items
- Ask user or check codebase for current choices
- Update specification.md with all four items
- Document rationale for each choice
- Ensure future updates maintain this information
Unclear Which Phase
Problem: Unsure which PHASE#.md file to update for a new feature.
Solution:
- Check tasks.md to see which phase the task belongs to
- If not listed, determine based on dependencies:
- Phase 0: Foundation (database, auth, core models)
- Phase 1: Core features (primary user functionality)
- Phase 2+: Advanced features (enhancements, optimization)
- Add task to appropriate phase in tasks.md
- Update corresponding PHASE#.md file
Lost Context
Problem: Coming back to project after time away, can't remember current state.
Solution:
- Read README.md for project overview
- Check specification.md for architecture decisions
- Review tasks.md to see what's completed vs remaining
- Read current PHASE#.md to understand what you were building
- Check brainstorm.md for original vision and open questions
This is why keeping documentation current is critical.
Documentation Too Large
Problem: A documentation file (especially PHASE#.md) is becoming unwieldy.
Solution:
- For phase files: Consider if features should be split across phases
- For complex features: Move to individual
filesfeatures/feature-name.md - For specification.md: Ensure detailed specs are in phase files, not here
- Use hierarchical structure and clear sections
- Link between documents rather than duplicating content
Remember: specification.md should stay general, PHASE#.md files contain details, complex features get their own files.
Tips for AI Assistants
When using this skill, AI assistants should:
-
Proactively ask about architecture decisions when starting new projects:
- "Which database provider would you like to use such as Sqlite, Supabase, or Convex?"
- "Will this project use LLMs? If so, which provider such as Ollama or OpenRouter?"
- "What logging solution should we set up? For your current stack, I suggest..."
- "How should we handle observability and monitoring during development? For your current stack, I suggest..."
- "What unit test framework should we prepare? For your current stack, I suggest..."
-
Always update documentation when adding features:
- Update tasks.md with new or modified tasks
- Update relevant PHASE#.md with implementation details
- Update specification.md if adding a new technology/package or planned feature
- Update README.md if user-facing instruction changes
-
Check documentation sync before major work:
- Verify specification.md reflects current architecture
- Ensure tasks.md is up to date
- Confirm phase files match implementation
-
Use templates from references/templates.md when creating new documentation files
-
Keep feedback loops short by updating docs incrementally during implementation, not in large batches after
-
Remind users about the checklist before committing code changes
This skill works best when documentation updates are treated as part of feature implementation, not as a separate afterthought.