The new names better reflect the compounding engineering philosophy: each documented solution compounds your team's knowledge. - /codify → /compound (old command shows deprecation notice) - codify-docs → compound-docs skill - Updated all docs, philosophy sections, and references 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
511 lines
14 KiB
Markdown
511 lines
14 KiB
Markdown
---
|
|
name: compound-docs
|
|
description: Capture solved problems as categorized documentation with YAML frontmatter for fast lookup
|
|
allowed-tools:
|
|
- Read # Parse conversation context
|
|
- Write # Create resolution docs
|
|
- Bash # Create directories
|
|
- Grep # Search existing docs
|
|
preconditions:
|
|
- Problem has been solved (not in-progress)
|
|
- Solution has been verified working
|
|
---
|
|
|
|
# compound-docs Skill
|
|
|
|
**Purpose:** Automatically document solved problems to build searchable institutional knowledge with category-based organization (enum-validated problem types).
|
|
|
|
## Overview
|
|
|
|
This skill captures problem solutions immediately after confirmation, creating structured documentation that serves as a searchable knowledge base for future sessions.
|
|
|
|
**Organization:** Single-file architecture - each problem documented as one markdown file in its symptom category directory (e.g., `docs/solutions/performance-issues/n-plus-one-briefs.md`). Files use YAML frontmatter for metadata and searchability.
|
|
|
|
---
|
|
|
|
<critical_sequence name="documentation-capture" enforce_order="strict">
|
|
|
|
## 7-Step Process
|
|
|
|
<step number="1" required="true">
|
|
### Step 1: Detect Confirmation
|
|
|
|
**Auto-invoke after phrases:**
|
|
|
|
- "that worked"
|
|
- "it's fixed"
|
|
- "working now"
|
|
- "problem solved"
|
|
- "that did it"
|
|
|
|
**OR manual:** `/doc-fix` command
|
|
|
|
**Non-trivial problems only:**
|
|
|
|
- Multiple investigation attempts needed
|
|
- Tricky debugging that took time
|
|
- Non-obvious solution
|
|
- Future sessions would benefit
|
|
|
|
**Skip documentation for:**
|
|
|
|
- Simple typos
|
|
- Obvious syntax errors
|
|
- Trivial fixes immediately corrected
|
|
</step>
|
|
|
|
<step number="2" required="true" depends_on="1">
|
|
### Step 2: Gather Context
|
|
|
|
Extract from conversation history:
|
|
|
|
**Required information:**
|
|
|
|
- **Module name**: Which CORA module had the problem
|
|
- **Symptom**: Observable error/behavior (exact error messages)
|
|
- **Investigation attempts**: What didn't work and why
|
|
- **Root cause**: Technical explanation of actual problem
|
|
- **Solution**: What fixed it (code/config changes)
|
|
- **Prevention**: How to avoid in future
|
|
|
|
**Environment details:**
|
|
|
|
- Rails version
|
|
- Stage (0-6 or post-implementation)
|
|
- OS version
|
|
- File/line references
|
|
|
|
**BLOCKING REQUIREMENT:** If critical context is missing (module name, exact error, stage, or resolution steps), ask user and WAIT for response before proceeding to Step 3:
|
|
|
|
```
|
|
I need a few details to document this properly:
|
|
|
|
1. Which module had this issue? [ModuleName]
|
|
2. What was the exact error message or symptom?
|
|
3. What stage were you in? (0-6 or post-implementation)
|
|
|
|
[Continue after user provides details]
|
|
```
|
|
</step>
|
|
|
|
<step number="3" required="false" depends_on="2">
|
|
### Step 3: Check Existing Docs
|
|
|
|
Search docs/solutions/ for similar issues:
|
|
|
|
```bash
|
|
# Search by error message keywords
|
|
grep -r "exact error phrase" docs/solutions/
|
|
|
|
# Search by symptom category
|
|
ls docs/solutions/[category]/
|
|
```
|
|
|
|
**IF similar issue found:**
|
|
|
|
THEN present decision options:
|
|
|
|
```
|
|
Found similar issue: docs/solutions/[path]
|
|
|
|
What's next?
|
|
1. Create new doc with cross-reference (recommended)
|
|
2. Update existing doc (only if same root cause)
|
|
3. Other
|
|
|
|
Choose (1-3): _
|
|
```
|
|
|
|
WAIT for user response, then execute chosen action.
|
|
|
|
**ELSE** (no similar issue found):
|
|
|
|
Proceed directly to Step 4 (no user interaction needed).
|
|
</step>
|
|
|
|
<step number="4" required="true" depends_on="2">
|
|
### Step 4: Generate Filename
|
|
|
|
Format: `[sanitized-symptom]-[module]-[YYYYMMDD].md`
|
|
|
|
**Sanitization rules:**
|
|
|
|
- Lowercase
|
|
- Replace spaces with hyphens
|
|
- Remove special characters except hyphens
|
|
- Truncate to reasonable length (< 80 chars)
|
|
|
|
**Examples:**
|
|
|
|
- `missing-include-BriefSystem-20251110.md`
|
|
- `parameter-not-saving-state-EmailProcessing-20251110.md`
|
|
- `webview-crash-on-resize-Assistant-20251110.md`
|
|
</step>
|
|
|
|
<step number="5" required="true" depends_on="4" blocking="true">
|
|
### Step 5: Validate YAML Schema
|
|
|
|
**CRITICAL:** All docs require validated YAML frontmatter with enum validation.
|
|
|
|
<validation_gate name="yaml-schema" blocking="true">
|
|
|
|
**Validate against schema:**
|
|
Load `schema.yaml` and classify the problem against the enum values defined in `references/yaml-schema.md`. Ensure all required fields are present and match allowed values exactly.
|
|
|
|
**BLOCK if validation fails:**
|
|
|
|
```
|
|
❌ YAML validation failed
|
|
|
|
Errors:
|
|
- problem_type: must be one of schema enums, got "compilation_error"
|
|
- severity: must be one of [critical, moderate, minor], got "high"
|
|
- symptoms: must be array with 1-5 items, got string
|
|
|
|
Please provide corrected values.
|
|
```
|
|
|
|
**GATE ENFORCEMENT:** Do NOT proceed to Step 6 (Create Documentation) until YAML frontmatter passes all validation rules defined in `schema.yaml`.
|
|
|
|
</validation_gate>
|
|
</step>
|
|
|
|
<step number="6" required="true" depends_on="5">
|
|
### Step 6: Create Documentation
|
|
|
|
**Determine category from problem_type:** Use the category mapping defined in `references/yaml-schema.md` (lines 49-61).
|
|
|
|
**Create documentation file:**
|
|
|
|
```bash
|
|
PROBLEM_TYPE="[from validated YAML]"
|
|
CATEGORY="[mapped from problem_type]"
|
|
FILENAME="[generated-filename].md"
|
|
DOC_PATH="docs/solutions/${CATEGORY}/${FILENAME}"
|
|
|
|
# Create directory if needed
|
|
mkdir -p "docs/solutions/${CATEGORY}"
|
|
|
|
# Write documentation using template from assets/resolution-template.md
|
|
# (Content populated with Step 2 context and validated YAML frontmatter)
|
|
```
|
|
|
|
**Result:**
|
|
- Single file in category directory
|
|
- Enum validation ensures consistent categorization
|
|
|
|
**Create documentation:** Populate the structure from `assets/resolution-template.md` with context gathered in Step 2 and validated YAML frontmatter from Step 5.
|
|
</step>
|
|
|
|
<step number="7" required="false" depends_on="6">
|
|
### Step 7: Cross-Reference & Critical Pattern Detection
|
|
|
|
If similar issues found in Step 3:
|
|
|
|
**Update existing doc:**
|
|
|
|
```bash
|
|
# Add Related Issues link to similar doc
|
|
echo "- See also: [$FILENAME]($REAL_FILE)" >> [similar-doc.md]
|
|
```
|
|
|
|
**Update new doc:**
|
|
Already includes cross-reference from Step 6.
|
|
|
|
**Update patterns if applicable:**
|
|
|
|
If this represents a common pattern (3+ similar issues):
|
|
|
|
```bash
|
|
# Add to docs/solutions/patterns/common-solutions.md
|
|
cat >> docs/solutions/patterns/common-solutions.md << 'EOF'
|
|
|
|
## [Pattern Name]
|
|
|
|
**Common symptom:** [Description]
|
|
**Root cause:** [Technical explanation]
|
|
**Solution pattern:** [General approach]
|
|
|
|
**Examples:**
|
|
- [Link to doc 1]
|
|
- [Link to doc 2]
|
|
- [Link to doc 3]
|
|
EOF
|
|
```
|
|
|
|
**Critical Pattern Detection (Optional Proactive Suggestion):**
|
|
|
|
If this issue has automatic indicators suggesting it might be critical:
|
|
- Severity: `critical` in YAML
|
|
- Affects multiple modules OR foundational stage (Stage 2 or 3)
|
|
- Non-obvious solution
|
|
|
|
Then in the decision menu (Step 8), add a note:
|
|
```
|
|
💡 This might be worth adding to Required Reading (Option 2)
|
|
```
|
|
|
|
But **NEVER auto-promote**. User decides via decision menu (Option 2).
|
|
|
|
**Template for critical pattern addition:**
|
|
|
|
When user selects Option 2 (Add to Required Reading), use the template from `assets/critical-pattern-template.md` to structure the pattern entry. Number it sequentially based on existing patterns in `docs/solutions/patterns/cora-critical-patterns.md`.
|
|
</step>
|
|
|
|
</critical_sequence>
|
|
|
|
---
|
|
|
|
<decision_gate name="post-documentation" wait_for_user="true">
|
|
|
|
## Decision Menu After Capture
|
|
|
|
After successful documentation, present options and WAIT for user response:
|
|
|
|
```
|
|
✓ Solution documented
|
|
|
|
File created:
|
|
- docs/solutions/[category]/[filename].md
|
|
|
|
What's next?
|
|
1. Continue workflow (recommended)
|
|
2. Add to Required Reading - Promote to critical patterns (cora-critical-patterns.md)
|
|
3. Link related issues - Connect to similar problems
|
|
4. Add to existing skill - Add to a learning skill (e.g., hotwire-native)
|
|
5. Create new skill - Extract into new learning skill
|
|
6. View documentation - See what was captured
|
|
7. Other
|
|
```
|
|
|
|
**Handle responses:**
|
|
|
|
**Option 1: Continue workflow**
|
|
|
|
- Return to calling skill/workflow
|
|
- Documentation is complete
|
|
|
|
**Option 2: Add to Required Reading** ⭐ PRIMARY PATH FOR CRITICAL PATTERNS
|
|
|
|
User selects this when:
|
|
- System made this mistake multiple times across different modules
|
|
- Solution is non-obvious but must be followed every time
|
|
- Foundational requirement (Rails, Rails API, threading, etc.)
|
|
|
|
Action:
|
|
1. Extract pattern from the documentation
|
|
2. Format as ❌ WRONG vs ✅ CORRECT with code examples
|
|
3. Add to `docs/solutions/patterns/cora-critical-patterns.md`
|
|
4. Add cross-reference back to this doc
|
|
5. Confirm: "✓ Added to Required Reading. All subagents will see this pattern before code generation."
|
|
|
|
**Option 3: Link related issues**
|
|
|
|
- Prompt: "Which doc to link? (provide filename or describe)"
|
|
- Search docs/solutions/ for the doc
|
|
- Add cross-reference to both docs
|
|
- Confirm: "✓ Cross-reference added"
|
|
|
|
**Option 4: Add to existing skill**
|
|
|
|
User selects this when the documented solution relates to an existing learning skill:
|
|
|
|
Action:
|
|
1. Prompt: "Which skill? (hotwire-native, etc.)"
|
|
2. Determine which reference file to update (resources.md, patterns.md, or examples.md)
|
|
3. Add link and brief description to appropriate section
|
|
4. Confirm: "✓ Added to [skill-name] skill in [file]"
|
|
|
|
Example: For Hotwire Native Tailwind variants solution:
|
|
- Add to `hotwire-native/references/resources.md` under "CORA-Specific Resources"
|
|
- Add to `hotwire-native/references/examples.md` with link to solution doc
|
|
|
|
**Option 5: Create new skill**
|
|
|
|
User selects this when the solution represents the start of a new learning domain:
|
|
|
|
Action:
|
|
1. Prompt: "What should the new skill be called? (e.g., stripe-billing, email-processing)"
|
|
2. Run `python3 .claude/skills/skill-creator/scripts/init_skill.py [skill-name]`
|
|
3. Create initial reference files with this solution as first example
|
|
4. Confirm: "✓ Created new [skill-name] skill with this solution as first example"
|
|
|
|
**Option 6: View documentation**
|
|
|
|
- Display the created documentation
|
|
- Present decision menu again
|
|
|
|
**Option 7: Other**
|
|
|
|
- Ask what they'd like to do
|
|
|
|
</decision_gate>
|
|
|
|
---
|
|
|
|
<integration_protocol>
|
|
|
|
## Integration Points
|
|
|
|
**Invoked by:**
|
|
- /compound command (primary interface)
|
|
- Manual invocation in conversation after solution confirmed
|
|
- Can be triggered by detecting confirmation phrases like "that worked", "it's fixed", etc.
|
|
|
|
**Invokes:**
|
|
- None (terminal skill - does not delegate to other skills)
|
|
|
|
**Handoff expectations:**
|
|
All context needed for documentation should be present in conversation history before invocation.
|
|
|
|
</integration_protocol>
|
|
|
|
---
|
|
|
|
<success_criteria>
|
|
|
|
## Success Criteria
|
|
|
|
Documentation is successful when ALL of the following are true:
|
|
|
|
- ✅ YAML frontmatter validated (all required fields, correct formats)
|
|
- ✅ File created in docs/solutions/[category]/[filename].md
|
|
- ✅ Enum values match schema.yaml exactly
|
|
- ✅ Code examples included in solution section
|
|
- ✅ Cross-references added if related issues found
|
|
- ✅ User presented with decision menu and action confirmed
|
|
|
|
</success_criteria>
|
|
|
|
---
|
|
|
|
## Error Handling
|
|
|
|
**Missing context:**
|
|
|
|
- Ask user for missing details
|
|
- Don't proceed until critical info provided
|
|
|
|
**YAML validation failure:**
|
|
|
|
- Show specific errors
|
|
- Present retry with corrected values
|
|
- BLOCK until valid
|
|
|
|
**Similar issue ambiguity:**
|
|
|
|
- Present multiple matches
|
|
- Let user choose: new doc, update existing, or link as duplicate
|
|
|
|
**Module not in CORA-MODULES.md:**
|
|
|
|
- Warn but don't block
|
|
- Proceed with documentation
|
|
- Suggest: "Add [Module] to CORA-MODULES.md if not there"
|
|
|
|
---
|
|
|
|
## Execution Guidelines
|
|
|
|
**MUST do:**
|
|
- Validate YAML frontmatter (BLOCK if invalid per Step 5 validation gate)
|
|
- Extract exact error messages from conversation
|
|
- Include code examples in solution section
|
|
- Create directories before writing files (`mkdir -p`)
|
|
- Ask user and WAIT if critical context missing
|
|
|
|
**MUST NOT do:**
|
|
- Skip YAML validation (validation gate is blocking)
|
|
- Use vague descriptions (not searchable)
|
|
- Omit code examples or cross-references
|
|
|
|
---
|
|
|
|
## Quality Guidelines
|
|
|
|
**Good documentation has:**
|
|
|
|
- ✅ Exact error messages (copy-paste from output)
|
|
- ✅ Specific file:line references
|
|
- ✅ Observable symptoms (what you saw, not interpretations)
|
|
- ✅ Failed attempts documented (helps avoid wrong paths)
|
|
- ✅ Technical explanation (not just "what" but "why")
|
|
- ✅ Code examples (before/after if applicable)
|
|
- ✅ Prevention guidance (how to catch early)
|
|
- ✅ Cross-references (related issues)
|
|
|
|
**Avoid:**
|
|
|
|
- ❌ Vague descriptions ("something was wrong")
|
|
- ❌ Missing technical details ("fixed the code")
|
|
- ❌ No context (which version? which file?)
|
|
- ❌ Just code dumps (explain why it works)
|
|
- ❌ No prevention guidance
|
|
- ❌ No cross-references
|
|
|
|
---
|
|
|
|
## Example Scenario
|
|
|
|
**User:** "That worked! The N+1 query is fixed."
|
|
|
|
**Skill activates:**
|
|
|
|
1. **Detect confirmation:** "That worked!" triggers auto-invoke
|
|
2. **Gather context:**
|
|
- Module: Brief System
|
|
- Symptom: Brief generation taking >5 seconds, N+1 query when loading email threads
|
|
- Failed attempts: Added pagination (didn't help), checked background job performance
|
|
- Solution: Added eager loading with `includes(:emails)` on Brief model
|
|
- Root cause: Missing eager loading causing separate database query per email thread
|
|
3. **Check existing:** No similar issue found
|
|
4. **Generate filename:** `n-plus-one-brief-generation-BriefSystem-20251110.md`
|
|
5. **Validate YAML:**
|
|
```yaml
|
|
module: Brief System
|
|
date: 2025-11-10
|
|
problem_type: performance_issue
|
|
component: rails_model
|
|
symptoms:
|
|
- "N+1 query when loading email threads"
|
|
- "Brief generation taking >5 seconds"
|
|
root_cause: missing_include
|
|
severity: high
|
|
tags: [n-plus-one, eager-loading, performance]
|
|
```
|
|
✅ Valid
|
|
6. **Create documentation:**
|
|
- `docs/solutions/performance-issues/n-plus-one-brief-generation-BriefSystem-20251110.md`
|
|
7. **Cross-reference:** None needed (no similar issues)
|
|
|
|
**Output:**
|
|
|
|
```
|
|
✓ Solution documented
|
|
|
|
File created:
|
|
- docs/solutions/performance-issues/n-plus-one-brief-generation-BriefSystem-20251110.md
|
|
|
|
What's next?
|
|
1. Continue workflow (recommended)
|
|
2. Add to Required Reading - Promote to critical patterns (cora-critical-patterns.md)
|
|
3. Link related issues - Connect to similar problems
|
|
4. Add to existing skill - Add to a learning skill (e.g., hotwire-native)
|
|
5. Create new skill - Extract into new learning skill
|
|
6. View documentation - See what was captured
|
|
7. Other
|
|
```
|
|
|
|
---
|
|
|
|
## Future Enhancements
|
|
|
|
**Not in Phase 7 scope, but potential:**
|
|
|
|
- Search by date range
|
|
- Filter by severity
|
|
- Tag-based search interface
|
|
- Metrics (most common issues, resolution time)
|
|
- Export to shareable format (community knowledge sharing)
|
|
- Import community solutions
|