7# /compound
8
9Coordinate multiple subagents working in parallel to document a recently solved problem.
10
11## Purpose
12
13Captures problem solutions while context is fresh, creating structured documentation in docs/solutions/ with YAML frontmatter for searchability and future reference. Uses parallel subagents for maximum efficiency.
14
15**Why "compound"?** Each documented solution compounds your team's knowledge. The first time you solve a problem takes research. Document it, and the next occurrence takes minutes. Knowledge compounds.
16
17## Usage
18
19```bash
20/ce:compound # Document the most recent fix
21/ce:compound [brief context] # Provide additional context hint
22```
23
24## Support Files
25
26These files are the durable contract for the workflow. Read them on-demand at the step that needs them — do not bulk-load at skill start.
27
28- references/schema.yaml — canonical frontmatter fields and enum values (read when validating YAML)
29- references/yaml-schema.md — category mapping from problem_type to directory (read when classifying)
30- assets/resolution-template.md — section structure for new docs (read when assembling)
31
32When spawning subagents, pass the relevant file contents into the task prompt so they have the contract without needing cross-skill paths.
33
34## Execution Strategy
35
36**Always run full mode by default.** Proceed directly to Phase 1 unless the user explicitly requests compact-safe mode (e.g., /ce:compound --compact or "use compact mode").
37
38Compact-safe mode exists as a lightweight alternative — see the **Compact-Safe Mode** section below. It's there if the user wants it, not something to push.
39
40---
41
42### Full Mode
43
44<critical_requirement>
45**Only ONE file gets written - the final documentation.**
46
47Phase 1 subagents return TEXT DATA to the orchestrator. They must NOT use Write, Edit, or create any files. Only the orchestrator (Phase 2) writes the final documentation file.
48</critical_requirement>
49
50### Phase 0.5: Auto Memory Scan
51
52Before launching Phase 1 subagents, check the auto memory directory for notes relevant to the problem being documented.
53
541. Read MEMORY.md from the auto memory directory (the path is known from the system prompt context)
552. If the directory or MEMORY.md does not exist, is empty, or is unreadable, skip this step and proceed to Phase 1 unchanged
563. Scan the entries for anything related to the problem being documented -- use semantic judgment, not keyword matching
574. If relevant entries are found, prepare a labeled excerpt block:
58
59```
60## Supplementary notes from auto memory
61Treat as additional context, not primary evidence. Conversation history
62and codebase findings take priority over these notes.
63
64[relevant entries here]
65```
66
675. Pass this block as additional context to the Context Analyzer and Solution Extractor task prompts in Phase 1. If any memory notes end up in the final documentation (e.g., as part of the investigation steps or root cause analysis), tag them with "(auto memory [claude])" so their origin is clear to future readers.
68
69If no relevant entries are found, proceed to Phase 1 without passing memory context.
70
71### Phase 1: Parallel Research
72
73<parallel_tasks>
74
75Launch these subagents IN PARALLEL. Each returns text data to the orchestrator.
76
77#### 1. **Context Analyzer**
78 - Extracts conversation history
79 - Identifies problem type, component, symptoms
80 - Incorporates auto memory excerpts (if provided by the orchestrator) as supplementary evidence when identifying problem type, component, and symptoms
81 - Reads references/schema.yaml for enum validation
82 - Reads references/yaml-schema.md for category mapping into docs/solutions/
83 - Suggests a filename using the pattern [sanitized-problem-slug]-[date].md
84 - Returns: YAML frontmatter skeleton (must include category: field mapped from problem_type), category directory path, and suggested filename
85 - Does not invent enum values, categories, or frontmatter fields from memory; reads the schema and mapping files above
86
87#### 2. **Solution Extractor**
88 - Analyzes all investigation steps
89 - Identifies root cause
90 - Extracts working solution with code examples
91 - Incorporates auto memory excerpts (if provided by the orchestrator) as supplementary evidence -- conversation history and the verified fix take priority; if memory notes contradict the conversation, note the contradiction as cautionary context
92 - Develops prevention strategies and best practices guidance
93 - Generates test cases if applicable
94 - Returns: Solution content block including prevention section
95
96 **Expected output sections (follow this structure):**
97
98 - **Problem**: 1-2 sentence description of the issue
99 - **Symptoms**: Observable symptoms (error messages, behavior)
100 - **What Didn't Work**: Failed investigation attempts and why they failed
101 - **Solution**: The actual fix with code examples (before/after when applicable)
102 - **Why This Works**: Root cause explanation and why the solution addresses it
103 - **Prevention**: Strategies to avoid recurrence, best practices, and test cases. Include concrete code examples where applicable (e.g., gem configurations, test assertions, linting rules)
104
105#### 3. **Related Docs Finder**
106 - Searches docs/solutions/ for related documentation
107 - Identifies cross-references and links
108 - Finds related GitHub issues
109 - Flags any related learning or pattern docs that may now be stale, contradicted, or overly broad
110 - **Assesses overlap** with the new doc being created across five dimensions: problem statement, root cause, solution approach, referenced files, and prevention rules. Score as:
111 - **High**: 4-5 dimensions match — essentially the same problem solved again
112 - **Moderate**: 2-3 dimensions match — same area but different angle or solution
113 - **Low**: 0-1 dimensions match — related but distinct
114 - Returns: Links, relationships, refresh candidates, and overlap assessment (score + which dimensions matched)
115
116 **Search strategy (grep-first filtering for efficiency):**
117
118 1. Extract keywords from the problem context: module names, technical terms, error messages, component types
119 2. If the problem category is clear, narrow search to the matching docs/solutions/<category>/ directory
120 3. Use the native content-search tool (e.g., Grep in Claude Code) to pre-filter candidate files BEFORE reading any content. Run multiple searches in parallel, case-insensitive, targeting frontmatter fields. These are template patterns -- substitute actual keywords:
121 - title:.*<keyword>
122 - tags:.*(<keyword1>|<keyword2>)
123 - module:.*<module name>
124 - component:.*<component>
125 4. If search returns >25 candidates, re-run with more specific patterns. If <3, broaden to full content search
126 5. Read only frontmatter (first 30 lines) of candidate files to score relevance
127 6. Fully read only strong/moderate matches
128 7. Return distilled links and relationships, not raw file contents
129
130 **GitHub issue search:**
131
132 Prefer the gh CLI for searching related issues: gh issue list --search "<keywords>" --state all --limit 5. If gh is not installed, fall back to the GitHub MCP tools (e.g., unblocked data_retrieval) if available. If neither is available, skip GitHub issue search and note it was skipped in the output.
133
134</parallel_tasks>
135
136### Phase 2: Assembly & Write
137
138<sequential_tasks>
139
140**WAIT for all Phase 1 subagents to complete before proceeding.**
141
142The orchestrating agent (main conversation) performs these steps:
143
1441. Collect all text results from Phase 1 subagents
1452. **Check the overlap assessment** from the Related Docs Finder before deciding what to write:
146
147 | Overlap | Action |
148 |---------|--------|
149 | **High** — existing doc covers the same problem, root cause, and solution | **Update the existing doc** with fresher context (new code examples, updated references, additional prevention tips) rather than creating a duplicate. The existing doc's path and structure stay the same. |
150 | **Moderate** — same problem area but different angle, root cause, or solution | **Create the new doc** normally. Flag the overlap for Phase 2.5 to recommend consolidation review. |
151 | **Low or none** | **Create the new doc** normally. |
152
153 The reason to update rather than create: two docs describing the same problem and solution will inevitably drift apart. The newer context is fresher and more trustworthy, so fold it into the existing doc rather than creating a second one that immediately needs consolidation.
154
155 When updating an existing doc, preserve its file path and frontmatter structure. Update the solution, code examples, prevention tips, and any stale references. Add a last_updated: YYYY-MM-DD field to the frontmatter. Do not change the title unless the problem framing has materially shifted.
156
1573. Assemble complete markdown file from the collected pieces, reading assets/resolution-template.md for the section structure of new docs
1584. Validate YAML frontmatter against references/schema.yaml
1595. Create directory if needed: mkdir -p docs/solutions/[category]/
1606. Write the file: either the updated existing doc or the new docs/solutions/[category]/[filename].md
161
162When creating a new doc, preserve the section order from assets/resolution-template.md unless the user explicitly asks for a different structure.
163
164</sequential_tasks>
165
166### Phase 2.5: Selective Refresh Check
167
168After writing the new learning, decide whether this new solution is evidence that older docs should be refreshed.
169
170ce:compound-refresh is **not** a default follow-up. Use it selectively when the new learning suggests an older learning or pattern doc may now be inaccurate.
171
172It makes sense to invoke ce:compound-refresh when one or more of these are true:
173
1741. A related learning or pattern doc recommends an approach that the new fix now contradicts
1752. The new fix clearly supersedes an older documented solution
1763. The current work involved a refactor, migration, rename, or dependency upgrade that likely invalidated references in older docs
1774. A pattern doc now looks overly broad, outdated, or no longer supported by the refreshed reality
1785. The Related Docs Finder surfaced high-confidence refresh candidates in the same problem space
1796. The Related Docs Finder reported **moderate overlap** with an existing doc — there may be consolidation opportunities that benefit from a focused review
180
181It does **not** make sense to invoke ce:compound-refresh when:
182
1831. No related docs were found
1842. Related docs still appear consistent with the new learning
1853. The overlap is superficial and does not change prior guidance
1864. Refresh would require a broad historical review with weak evidence
187
188Use these rules:
189
190- If there is **one obvious stale candidate**, invoke ce:compound-refresh with a narrow scope hint after the new learning is written
191- If there are **multiple candidates in the same area**, ask the user whether to run a targeted refresh for that module, category, or pattern set
192- If context is already tight or you are in compact-safe mode, do not expand into a broad refresh automatically; instead recommend ce:compound-refresh as the next step with a scope hint
193
194When invoking or recommending ce:compound-refresh, be explicit about the argument to pass. Prefer the narrowest useful scope:
195
196- **Specific file** when one learning or pattern doc is the likely stale artifact
197- **Module or component name** when several related docs may need review
198- **Category name** when the drift is concentrated in one solutions area
199- **Pattern filename or pattern topic** when the stale guidance lives in docs/solutions/patterns/
200
201Examples:
202
203- /ce:compound-refresh plugin-versioning-requirements
204- /ce:compound-refresh payments
205- /ce:compound-refresh performance-issues
206- /ce:compound-refresh critical-patterns
207
208A single scope hint may still expand to multiple related docs when the change is cross-cutting within one domain, category, or pattern area.
209
210Do not invoke ce:compound-refresh without an argument unless the user explicitly wants a broad sweep.
211
212Always capture the new learning first. Refresh is a targeted maintenance follow-up, not a prerequisite for documentation.
213
214### Phase 3: Optional Enhancement
215
216**WAIT for Phase 2 to complete before proceeding.**
217
218<parallel_tasks>
219
220Based on problem type, optionally invoke specialized agents to review the documentation:
221
222- **performance_issue** → performance-oracle
223- **security_issue** → security-sentinel
224- **database_issue** → data-integrity-guardian
225- **test_failure** → cora-test-reviewer
226- Any code-heavy issue → kieran-rails-reviewer + code-simplicity-reviewer
227
228</parallel_tasks>
229
230---
231
232### Compact-Safe Mode
233
234<critical_requirement>
235**Single-pass alternative for context-constrained sessions.**
236
237When context budget is tight, this mode skips parallel subagents entirely. The orchestrator performs all work in a single pass, producing a minimal but complete solution document.
238</critical_requirement>
239
240The orchestrator (main conversation) performs ALL of the following in one sequential pass:
241
2421. **Extract from conversation**: Identify the problem, root cause, and solution from conversation history. Also read MEMORY.md from the auto memory directory if it exists -- use any relevant notes as supplementary context alongside conversation history. Tag any memory-sourced content incorporated into the final doc with "(auto memory [claude])"
2432. **Classify**: Read references/schema.yaml and references/yaml-schema.md, then determine category and filename from them
2443. **Write minimal doc**: Create docs/solutions/[category]/[filename].md using assets/resolution-template.md as the base structure, with:
245 - YAML frontmatter (title, category, date, tags)
246 - Problem description (1-2 sentences)
247 - Root cause (1-2 sentences)
248 - Solution with key code snippets
249 - One prevention tip
2504. **Skip specialized agent reviews** (Phase 3) to conserve context
251
252**Compact-safe output:**
253```
254✓ Documentation complete (compact-safe mode)
255
256File created:
257- docs/solutions/[category]/[filename].md
258
259Note: This was created in compact-safe mode. For richer documentation
260(cross-references, detailed prevention strategies, specialized reviews),
261re-run /compound in a fresh session.
262```
263
264**No subagents are launched. No parallel tasks. One file written.**
265
266In compact-safe mode, the overlap check is skipped (no Related Docs Finder subagent). This means compact-safe mode may create a doc that overlaps with an existing one. That is acceptable — ce:compound-refresh will catch it later. Only suggest ce:compound-refresh if there is an obvious narrow refresh target. Do not broaden into a large refresh sweep from a compact-safe session.
267
268---
269
270## What It Captures
271
272- **Problem symptom**: Exact error messages, observable behavior
273- **Investigation steps tried**: What didn't work and why
274- **Root cause analysis**: Technical explanation
275- **Working solution**: Step-by-step fix with code examples
276- **Prevention strategies**: How to avoid in future
277- **Cross-references**: Links to related issues and docs
278
279## Preconditions
280
281<preconditions enforcement="advisory">
282 <check condition="problem_solved">
283 Problem has been solved (not in-progress)
284 </check>
285 <check condition="solution_verified">
286 Solution has been verified working
287 </check>
288 <check condition="non_trivial">
289 Non-trivial problem (not simple typo or obvious error)
290 </check>
291</preconditions>
292
293## What It Creates
294
295**Organized documentation:**
296
297- File: docs/solutions/[category]/[filename].md
298
299**Categories auto-detected from problem:**
300
301- build-errors/
302- test-failures/
303- runtime-errors/
304- performance-issues/
305- database-issues/
306- security-issues/
307- ui-bugs/
308- integration-issues/
309- logic-errors/
310
311## Common Mistakes to Avoid
312
313| ❌ Wrong | ✅ Correct |
314|----------|-----------|
315| Subagents write files like context-analysis.md, solution-draft.md | Subagents return text data; orchestrator writes one final file |
316| Research and assembly run in parallel | Research completes → then assembly runs |
317| Multiple files created during workflow | One file written or updated: docs/solutions/[category]/[filename].md |
318| Creating a new doc when an existing doc covers the same problem | Check overlap assessment; update the existing doc when overlap is high |
319
320## Success Output
321
322```
323✓ Documentation complete
324
325Auto memory: 2 relevant entries used as supplementary evidence
326
327Subagent Results:
328 ✓ Context Analyzer: Identified performance_issue in brief_system, category: performance-issues/
329 ✓ Solution Extractor: 3 code fixes, prevention strategies
330 ✓ Related Docs Finder: 2 related issues
331
332Specialized Agent Reviews (Auto-Triggered):
333 ✓ performance-oracle: Validated query optimization approach
334 ✓ kieran-rails-reviewer: Code examples meet Rails standards
335 ✓ code-simplicity-reviewer: Solution is appropriately minimal
336 ✓ every-style-editor: Documentation style verified
337
338File created:
339- docs/solutions/performance-issues/n-plus-one-brief-generation.md
340
341This documentation will be searchable for future reference when similar
342issues occur in the Email Processing or Brief System modules.
343
344What's next?
3451. Continue workflow (recommended)
3462. Link related documentation
3473. Update other references
3484. View documentation
3495. Other
350```
351
352**Alternate output (when updating an existing doc due to high overlap):**
353
354```
355✓ Documentation updated (existing doc refreshed with current context)
356
357Overlap detected: docs/solutions/performance-issues/n-plus-one-queries.md
358 Matched dimensions: problem statement, root cause, solution, referenced files
359 Action: Updated existing doc with fresher code examples and prevention tips
360
361File updated:
362- docs/solutions/performance-issues/n-plus-one-queries.md (added last_updated: 2026-03-24)
363```
364
365## The Compounding Philosophy
366
367This creates a compounding knowledge system:
368
3691. First time you solve "N+1 query in brief generation" → Research (30 min)
3702. Document the solution → docs/solutions/performance-issues/n-plus-one-briefs.md (5 min)
3713. Next time similar issue occurs → Quick lookup (2 min)
3724. Knowledge compounds → Team gets smarter
373
374The feedback loop:
375
376```
377Build → Test → Find Issue → Research → Improve → Document → Validate → Deploy
378 ↑ ↓
379 └──────────────────────────────────────────────────────────────────────┘
380```
381
382**Each unit of engineering work should make subsequent units of work easier—not harder.**
383
384## Auto-Invoke
385
386<auto_invoke> <trigger_phrases> - "that worked" - "it's fixed" - "working now" - "problem solved" </trigger_phrases>
387
388<manual_override> Use /ce:compound [context] to document immediately without waiting for auto-detection. </manual_override> </auto_invoke>
389
390## Output
391
392Writes the final learning directly into docs/solutions/.
393
394## Applicable Specialized Agents
395
396Based on problem type, these agents can enhance documentation:
397
398### Code Quality & Review
399- **kieran-rails-reviewer**: Reviews code examples for Rails best practices
400- **code-simplicity-reviewer**: Ensures solution code is minimal and clear
401- **pattern-recognition-specialist**: Identifies anti-patterns or repeating issues
402
403### Specific Domain Experts
404- **performance-oracle**: Analyzes performance_issue category solutions
405- **security-sentinel**: Reviews security_issue solutions for vulnerabilities
406- **cora-test-reviewer**: Creates test cases for prevention strategies
407- **data-integrity-guardian**: Reviews database_issue migrations and queries
408
409### Enhancement & Documentation
410- **best-practices-researcher**: Enriches solution with industry best practices
411- **every-style-editor**: Reviews documentation style and clarity
412- **framework-docs-researcher**: Links to Rails/gem documentation references
413
414### When to Invoke
415- **Auto-triggered** (optional): Agents can run post-documentation for enhancement
416- **Manual trigger**: User can invoke agents after /ce:compound completes for deeper review
417
418## Related Commands
419
420- /research [topic] - Deep investigation (searches docs/solutions/ for patterns)
421- /ce:plan - Planning workflow (references documented solutions)
422