cyberarian
Cyberarian - Document Lifecycle Management
This skill enforces a structured approach to documentation in Claude Code projects, ensuring consistency, discoverability, and automatic maintenance.
Core Principles
- Structured Organization: All persistent documentation goes in
docs/with semantic categorization - No Temporary Docs in docs/: Ephemeral/scratch documents belong in
/tmpor system temp, never indocs/ - Metadata-Driven: YAML frontmatter enables automation and lifecycle management
- Automatic Maintenance: Indexing and archiving happen automatically, not manually
- Context Efficiency: Bulk operations delegate to subagents to preserve main context
Context-Efficient Operations
The Problem
Document management operations can produce verbose output that pollutes the main agent's context:
- Validation scripts listing many errors across files
- Index generation scanning dozens of documents
- Archive operations listing all files being moved
- Search results returning many matches
The Solution: Subagent Delegation
Delegate to Task subagent for operations that return verbose output. The subagent absorbs the verbose output in its isolated context and returns a concise summary (<50 tokens).
Delegation Rules
Execute directly (simple, low-output):
- Creating a single document from template
- Reading a specific document's metadata
- Checking if
docs/directory exists
Delegate to Task subagent (complex, verbose):
- Running validation across all documents
- Regenerating the index
- Archiving operations (especially dry-run)
- Searching documents by tag/status/category
- Summarizing INDEX.md contents
- Any operation touching multiple files
Delegation Pattern
When verbose output is expected:
1. Recognize the operation will be verbose
2. Delegate to Task subagent with explicit instructions
3. Subagent executes scripts, absorbs output
4. Subagent parses and returns summary <50 tokens
5. Main agent receives only essential summary
Task subagent prompt format:
Execute document operation and return concise summary:
- Run: [command]
- Parse: Extract [specific data needed]
- Return: [emoji] [state] | [metric] | [next action]
- Limit: <50 tokens
Use agents/doc-librarian-subagent.md patterns for response formatting.
Response Formats
Success: ✓ [result] | [metric] | Next: [action]
List: 📋 [N] items: [item1], [item2], ... (+[remainder] more)
Error: ❌ [operation] failed | Reason: [brief] | Fix: [action]
Warning: ⚠️ [concern] | Impact: [brief] | Consider: [action]
Directory Structure
docs/
├── README.md # Human-written guide to the structure
├── INDEX.md # Auto-generated index of all documents
├── ai_docs/ # Reference materials for Claude Code (SDKs, APIs, repo context)
├── specs/ # Feature and migration specifications
├── analysis/ # Investigation outputs (bugs, optimization, cleanup)
├── plans/ # Implementation plans
├── templates/ # Reusable templates
└── archive/ # Historical and completed documents
├── specs/
├── analysis/
└── plans/
Workflows
First-Time Setup
When a project doesn't have a docs/ directory:
-
Initialize the structure:
python scripts/init_docs_structure.pyThis creates all directories, README.md, and initial INDEX.md
-
Inform the user about the structure and conventions
Creating a New Document
When asked to create documentation (specs, analysis, plans, etc.):
-
Determine the category:
- ai_docs: SDKs, API references, repo architecture, coding conventions
- specs: Feature specifications, migration plans, technical designs
- analysis: Bug investigations, performance analysis, code audits
- plans: Implementation plans, rollout strategies, task breakdowns
- templates: Reusable document templates
-
Use the template:
cp assets/doc_template.md docs/<category>/<descriptive-name>.md -
Fill in metadata:
- Set
title,category,status,created,last_updated - Add relevant
tags - Start with
status: draft
- Set
-
Write the content following the document structure
-
Update the index:
python scripts/index_docs.py
File naming convention: Use lowercase with hyphens, descriptive names:
- ✅
oauth2-migration-spec.md - ✅
auth-performance-analysis.md - ❌
spec1.md - ❌
MyDocument.md
Working with Existing Documents
When modifying existing documentation:
-
Update metadata:
- Set
last_updatedto current date - Update
statusif lifecycle changes (draft → active → complete)
- Set
-
Regenerate index if significant changes:
python scripts/index_docs.py
Creating Temporary/Scratch Documents
When creating ephemeral documents (scratchpads, temporary notes, single-use docs):
NEVER create in docs/ - Use system temp instead:
# Create in /tmp for Linux/macOS
/tmp/scratch-notes.md
/tmp/debug-output.txt
# Let the system clean up temporary files
Why: The docs/ directory is for persistent, managed documentation. Temporary files clutter the structure and interfere with indexing and archiving.
Regular Maintenance
When to run:
- After creating/modifying documents: Update index
- Weekly/monthly: Run archiving to clean up completed work
- Before commits: Validate metadata
Maintenance workflow (delegate to Task subagent for context efficiency):
-
Validate metadata → Delegate to subagent:
Task: Run python scripts/validate_doc_metadata.py Return: ✓ [N] valid | [N] issues: [list top 3] | Next: [action] -
Archive old documents → Delegate to subagent:
Task: Run python scripts/archive_docs.py --dry-run Return: 📦 [N] ready for archive: [list top 3] | Next: Run archive Task: Run python scripts/archive_docs.py Return: ✓ Archived [N] docs | Categories: [list] | Index updated -
Update index → Delegate to subagent:
Task: Run python scripts/index_docs.py Return: ✓ Index updated | [N] documents | Categories: [summary]
Why delegate? These operations can scan dozens of files and produce verbose output. Subagent isolation keeps the main context clean for reasoning.
Archiving Documents
Archiving happens automatically based on category-specific rules. See references/archiving-criteria.md for full details.
Quick reference:
specs/: Auto-archive whenstatus: completeAND >90 daysanalysis/: Auto-archive whenstatus: completeAND >60 daysplans/: Auto-archive whenstatus: completeAND >30 daysai_docs/: Manual archiving onlytemplates/: Never auto-archive
To prevent auto-archiving, set in frontmatter:
archivable_after: 2025-12-31
Metadata Requirements
Every document must have YAML frontmatter. See references/metadata-schema.md for complete schema.
Minimal required frontmatter:
---
title: Document Title
category: specs
status: draft
created: 2024-11-16
last_updated: 2024-11-16
tags: []
---
Lifecycle statuses:
draft→ Document being createdactive→ Current and relevantcomplete→ Work done, kept for referencearchived→ Moved to archive
Reference Files
Load these when needed for detailed guidance:
- references/metadata-schema.md: Complete YAML frontmatter specification
- references/archiving-criteria.md: Detailed archiving rules and philosophy
- agents/doc-librarian-subagent.md: Subagent template for context-efficient operations
Scripts Reference
All scripts accept optional path argument (defaults to current directory):
scripts/init_docs_structure.py [path]- Initialize docs structurescripts/index_docs.py [path]- Regenerate INDEX.mdscripts/archive_docs.py [path] [--dry-run]- Archive old documentsscripts/validate_doc_metadata.py [path]- Validate all metadata
Common Patterns
Creating a Specification
# Copy template
cp assets/doc_template.md docs/specs/new-feature-spec.md
# Edit with proper metadata
# category: specs
# status: draft
# tags: [feature-name, relevant-tags]
# Update index
python scripts/index_docs.py
Completing Work
# Update document metadata
# status: draft → active → complete
# last_updated: <current-date>
# After a while, archiving script will auto-archive
python scripts/archive_docs.py
Finding Documents
Delegate searches to subagent for context efficiency:
Task: Summarize docs/INDEX.md
Return: 📊 [N] total docs | Categories: [breakdown] | Recent: [latest doc]
Task: Search docs for tag "performance"
Run: grep -r "tags:.*performance" docs/ --include="*.md" | head -10
Return: 📋 [N] docs match: [path1], [path2], ... | Next: Read [most relevant]
Task: Find all draft documents
Run: grep -r "status: draft" docs/ --include="*.md"
Return: 📋 [N] drafts: [list top 5] | Next: [action]
Direct execution (only for quick checks):
# Check if docs/ exists
ls docs/ 2>/dev/null
Best Practices
- Always use metadata: Don't skip the frontmatter, it enables automation
- Keep status current: Update as work progresses (draft → active → complete)
- Use descriptive names: File names should be clear and searchable
- Update dates: Set
last_updatedwhen making significant changes - Run maintenance regularly: Index and archive periodically
- Temp goes in /tmp: Never create temporary/scratch docs in docs/
- Validate before committing: Run
validate_doc_metadata.pyto catch issues - Delegate bulk operations: Use Task subagents for validation, indexing, archiving, and search to preserve main context
Error Handling
Document has no frontmatter:
- Add frontmatter using
assets/doc_template.mdas reference - Run
validate_doc_metadata.pyto confirm
Document in wrong category:
- Move file to correct category directory
- Update
categoryfield in frontmatter to match - Regenerate index
Archived document still needed:
- Move from
archive/<category>/back to<category>/ - Update
statusfromarchivedtoactive - Remove
archived_dateandarchive_reasonfields - Regenerate index
More from slamb2k/mad-skills
prime
Load project context before implementing features or making architectural decisions. Invoke proactively at the start of significant work on any project. Scans CLAUDE.md, README, specs/, docs/, and source structure to build a context summary. Supports optional domain hints to focus on specific areas of the codebase. Use when you need project conventions, architecture understanding, or domain context before coding.
16distil
Generate multiple unique web design variations for any website or web application. Accepts site specifications from a file (--spec path) or pasted text block. Creates a Vite + React + TypeScript + Tailwind project with Bun and produces N different creative designs accessible at /1, /2, /3, etc. Use when prototyping or exploring design directions for any web interface.
16sync
Sync local repository with origin/main. Use before starting new work, after completing a PR, or when needing latest upstream changes. Safely stashes uncommitted changes, fetches and pulls origin/main, restores stash, and cleans up stale local branches (merged or with deleted remotes). Invoke when switching contexts or preparing for new feature work.
15rig
Idempotently bootstrap any repository with standard development tools, hooks, and workflows. Use when starting work on a new repo, onboarding to an existing project, or ensuring a repo has proper CI/CD setup. Configures: git hooks (lefthook), commit message templates, PR templates, and GitHub Actions for lint/format/type-check/build. Prompts for user confirmation before changes. Triggers: "bootstrap repo", "setup hooks", "configure CI", "rig", "standardize repo".
15build
Context-isolated feature development pipeline. Takes a detailed design/plan as argument and executes the full feature-dev lifecycle (explore, question, architect, implement, review, ship) inside subagents so the primary conversation stays compact. Use when you have a well-defined plan and want autonomous execution with minimal context window consumption.
14ship
Ship changes through the full PR lifecycle. Use after completing feature work to commit, push, create PR, wait for checks, and merge. Handles the entire workflow: syncs with main, creates feature branch if needed, groups commits logically with semantic messages, creates detailed PR, monitors CI, fixes issues, squash merges, and cleans up. Invoke when work is ready to ship.
14