maestro-flow 0.3.10 → 0.3.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (184) hide show
  1. package/.claude/agents/workflow-collab-planner.md +1 -1
  2. package/.claude/agents/workflow-executor.md +1 -1
  3. package/.claude/agents/workflow-plan-checker.md +1 -1
  4. package/.claude/agents/workflow-planner.md +1 -1
  5. package/.claude/commands/learn-decompose.md +176 -176
  6. package/.claude/commands/learn-follow.md +167 -167
  7. package/.claude/commands/learn-retro.md +1 -1
  8. package/.claude/commands/maestro-coordinate.md +1 -3
  9. package/.claude/commands/manage-harvest.md +131 -131
  10. package/.claude/commands/manage-issue.md +2 -2
  11. package/.claude/commands/spec-add.md +67 -56
  12. package/.claude/commands/spec-load.md +66 -64
  13. package/.claude/commands/spec-setup.md +5 -9
  14. package/.codex/skills/learn-decompose/SKILL.md +119 -0
  15. package/.codex/skills/learn-follow/SKILL.md +83 -0
  16. package/.codex/skills/learn-investigate/SKILL.md +83 -0
  17. package/.codex/skills/learn-retro/SKILL.md +83 -0
  18. package/.codex/skills/learn-second-opinion/SKILL.md +86 -0
  19. package/.codex/skills/maestro/SKILL.md +151 -279
  20. package/.codex/skills/maestro-analyze/SKILL.md +59 -71
  21. package/.codex/skills/maestro-brainstorm/SKILL.md +452 -463
  22. package/.codex/skills/maestro-chain/SKILL.md +95 -110
  23. package/.codex/skills/maestro-coordinate/SKILL.md +68 -234
  24. package/.codex/skills/maestro-execute/SKILL.md +435 -446
  25. package/.codex/skills/maestro-fork/SKILL.md +68 -0
  26. package/.codex/skills/maestro-init/SKILL.md +171 -167
  27. package/.codex/skills/maestro-learn/SKILL.md +80 -0
  28. package/.codex/skills/maestro-link-coordinate/SKILL.md +224 -220
  29. package/.codex/skills/maestro-merge/SKILL.md +62 -0
  30. package/.codex/skills/maestro-milestone-audit/SKILL.md +108 -103
  31. package/.codex/skills/maestro-milestone-complete/SKILL.md +155 -149
  32. package/.codex/skills/maestro-milestone-release/SKILL.md +70 -0
  33. package/.codex/skills/maestro-overlay/SKILL.md +188 -185
  34. package/.codex/skills/maestro-plan/SKILL.md +58 -69
  35. package/.codex/skills/maestro-quick/SKILL.md +26 -23
  36. package/.codex/skills/maestro-roadmap/SKILL.md +65 -73
  37. package/.codex/skills/maestro-spec-generate/SKILL.md +66 -74
  38. package/.codex/skills/maestro-ui-design/SKILL.md +34 -31
  39. package/.codex/skills/maestro-verify/SKILL.md +556 -566
  40. package/.codex/skills/manage-codebase-rebuild/SKILL.md +397 -405
  41. package/.codex/skills/manage-codebase-refresh/SKILL.md +93 -82
  42. package/.codex/skills/manage-harvest/SKILL.md +82 -0
  43. package/.codex/skills/manage-issue/SKILL.md +80 -65
  44. package/.codex/skills/manage-issue-discover/SKILL.md +491 -503
  45. package/.codex/skills/manage-learn/SKILL.md +190 -186
  46. package/.codex/skills/manage-memory/SKILL.md +95 -72
  47. package/.codex/skills/manage-memory-capture/SKILL.md +99 -86
  48. package/.codex/skills/manage-status/SKILL.md +102 -89
  49. package/.codex/skills/quality-business-test/SKILL.md +228 -223
  50. package/.codex/skills/quality-debug/SKILL.md +54 -66
  51. package/.codex/skills/quality-integration-test/SKILL.md +532 -544
  52. package/.codex/skills/quality-refactor/SKILL.md +197 -191
  53. package/.codex/skills/quality-retrospective/SKILL.md +512 -505
  54. package/.codex/skills/quality-review/SKILL.md +93 -105
  55. package/.codex/skills/quality-sync/SKILL.md +101 -89
  56. package/.codex/skills/quality-test/SKILL.md +202 -198
  57. package/.codex/skills/quality-test-gen/SKILL.md +93 -104
  58. package/.codex/skills/spec-add/SKILL.md +58 -39
  59. package/.codex/skills/spec-load/SKILL.md +45 -40
  60. package/.codex/skills/spec-map/SKILL.md +180 -182
  61. package/.codex/skills/spec-setup/SKILL.md +94 -76
  62. package/.codex/skills/team-coordinate/SKILL.md +346 -357
  63. package/.codex/skills/team-executor/SKILL.md +70 -112
  64. package/.codex/skills/team-lifecycle-v4/SKILL.md +311 -299
  65. package/.codex/skills/team-quality-assurance/SKILL.md +234 -227
  66. package/.codex/skills/team-review/SKILL.md +232 -225
  67. package/.codex/skills/team-tech-debt/SKILL.md +78 -100
  68. package/.codex/skills/team-testing/SKILL.md +242 -235
  69. package/.codex/skills/wiki-connect/SKILL.md +75 -0
  70. package/.codex/skills/wiki-digest/SKILL.md +87 -0
  71. package/README.md +7 -4
  72. package/README.zh-CN.md +7 -4
  73. package/dashboard/dist-server/dashboard/src/server/routes/specs.d.ts +1 -1
  74. package/dashboard/dist-server/dashboard/src/server/routes/specs.js +75 -30
  75. package/dashboard/dist-server/dashboard/src/server/routes/specs.js.map +1 -1
  76. package/dashboard/dist-server/dashboard/src/server/state/event-bus.d.ts +5 -0
  77. package/dashboard/dist-server/dashboard/src/server/state/event-bus.js +5 -0
  78. package/dashboard/dist-server/dashboard/src/server/state/event-bus.js.map +1 -1
  79. package/dashboard/dist-server/dashboard/src/shared/constants.js +5 -0
  80. package/dashboard/dist-server/dashboard/src/shared/constants.js.map +1 -1
  81. package/dashboard/dist-server/dashboard/src/shared/team-types.d.ts +21 -0
  82. package/dashboard/dist-server/dashboard/src/shared/team-types.js.map +1 -1
  83. package/dashboard/dist-server/dashboard/src/shared/types.d.ts +3 -2
  84. package/dashboard/dist-server/dashboard/src/shared/ws-protocol.d.ts +1 -1
  85. package/dashboard/dist-server/dashboard/src/shared/ws-protocol.js.map +1 -1
  86. package/dashboard/dist-server/src/hooks/constants.d.ts +2 -0
  87. package/dashboard/dist-server/src/hooks/constants.js +2 -0
  88. package/dashboard/dist-server/src/hooks/constants.js.map +1 -1
  89. package/dist/src/commands/collab.js +4 -4
  90. package/dist/src/commands/collab.js.map +1 -1
  91. package/dist/src/commands/hooks.d.ts.map +1 -1
  92. package/dist/src/commands/hooks.js +66 -1
  93. package/dist/src/commands/hooks.js.map +1 -1
  94. package/dist/src/commands/spec.d.ts.map +1 -1
  95. package/dist/src/commands/spec.js +7 -2
  96. package/dist/src/commands/spec.js.map +1 -1
  97. package/dist/src/hooks/constants.d.ts +2 -0
  98. package/dist/src/hooks/constants.d.ts.map +1 -1
  99. package/dist/src/hooks/constants.js +2 -0
  100. package/dist/src/hooks/constants.js.map +1 -1
  101. package/dist/src/hooks/guards/index.d.ts +1 -0
  102. package/dist/src/hooks/guards/index.d.ts.map +1 -1
  103. package/dist/src/hooks/guards/index.js +1 -0
  104. package/dist/src/hooks/guards/index.js.map +1 -1
  105. package/dist/src/hooks/guards/spec-validator.d.ts +25 -0
  106. package/dist/src/hooks/guards/spec-validator.d.ts.map +1 -0
  107. package/dist/src/hooks/guards/spec-validator.js +66 -0
  108. package/dist/src/hooks/guards/spec-validator.js.map +1 -0
  109. package/dist/src/hooks/keyword-spec-injector.d.ts +21 -0
  110. package/dist/src/hooks/keyword-spec-injector.d.ts.map +1 -0
  111. package/dist/src/hooks/keyword-spec-injector.js +96 -0
  112. package/dist/src/hooks/keyword-spec-injector.js.map +1 -0
  113. package/dist/src/hooks/plugins/spec-injection-plugin.d.ts +2 -1
  114. package/dist/src/hooks/plugins/spec-injection-plugin.d.ts.map +1 -1
  115. package/dist/src/hooks/plugins/spec-injection-plugin.js +21 -12
  116. package/dist/src/hooks/plugins/spec-injection-plugin.js.map +1 -1
  117. package/dist/src/hooks/spec-bridge.d.ts +40 -0
  118. package/dist/src/hooks/spec-bridge.d.ts.map +1 -0
  119. package/dist/src/hooks/spec-bridge.js +97 -0
  120. package/dist/src/hooks/spec-bridge.js.map +1 -0
  121. package/dist/src/hooks/spec-injector.d.ts.map +1 -1
  122. package/dist/src/hooks/spec-injector.js +18 -12
  123. package/dist/src/hooks/spec-injector.js.map +1 -1
  124. package/dist/src/team/phase-orchestrator.d.ts +52 -0
  125. package/dist/src/team/phase-orchestrator.d.ts.map +1 -0
  126. package/dist/src/team/phase-orchestrator.js +165 -0
  127. package/dist/src/team/phase-orchestrator.js.map +1 -0
  128. package/dist/src/team/phase-types.d.ts +51 -0
  129. package/dist/src/team/phase-types.d.ts.map +1 -0
  130. package/dist/src/team/phase-types.js +41 -0
  131. package/dist/src/team/phase-types.js.map +1 -0
  132. package/dist/src/tools/index.d.ts.map +1 -1
  133. package/dist/src/tools/index.js +6 -0
  134. package/dist/src/tools/index.js.map +1 -1
  135. package/dist/src/tools/spec-entry-parser.d.ts +56 -0
  136. package/dist/src/tools/spec-entry-parser.d.ts.map +1 -0
  137. package/dist/src/tools/spec-entry-parser.js +196 -0
  138. package/dist/src/tools/spec-entry-parser.js.map +1 -0
  139. package/dist/src/tools/spec-init.d.ts.map +1 -1
  140. package/dist/src/tools/spec-init.js +66 -92
  141. package/dist/src/tools/spec-init.js.map +1 -1
  142. package/dist/src/tools/spec-keyword-index.d.ts +30 -0
  143. package/dist/src/tools/spec-keyword-index.d.ts.map +1 -0
  144. package/dist/src/tools/spec-keyword-index.js +101 -0
  145. package/dist/src/tools/spec-keyword-index.js.map +1 -0
  146. package/dist/src/tools/spec-loader.d.ts +3 -3
  147. package/dist/src/tools/spec-loader.d.ts.map +1 -1
  148. package/dist/src/tools/spec-loader.js +49 -23
  149. package/dist/src/tools/spec-loader.js.map +1 -1
  150. package/dist/src/tools/team-agents.d.ts +27 -0
  151. package/dist/src/tools/team-agents.d.ts.map +1 -0
  152. package/dist/src/tools/team-agents.js +362 -0
  153. package/dist/src/tools/team-agents.js.map +1 -0
  154. package/dist/src/tools/team-mailbox.d.ts +40 -0
  155. package/dist/src/tools/team-mailbox.d.ts.map +1 -0
  156. package/dist/src/tools/team-mailbox.js +384 -0
  157. package/dist/src/tools/team-mailbox.js.map +1 -0
  158. package/dist/src/tools/team-msg.d.ts +17 -8
  159. package/dist/src/tools/team-msg.d.ts.map +1 -1
  160. package/dist/src/tools/team-msg.js +110 -13
  161. package/dist/src/tools/team-msg.js.map +1 -1
  162. package/dist/src/tools/team-tasks-mcp.d.ts +27 -0
  163. package/dist/src/tools/team-tasks-mcp.d.ts.map +1 -0
  164. package/dist/src/tools/team-tasks-mcp.js +408 -0
  165. package/dist/src/tools/team-tasks-mcp.js.map +1 -0
  166. package/package.json +2 -1
  167. package/workflows/analyze.md +816 -816
  168. package/workflows/brainstorm.md +471 -471
  169. package/workflows/codebase-rebuild.md +332 -332
  170. package/workflows/codebase-refresh.md +240 -240
  171. package/workflows/execute.md +1 -1
  172. package/workflows/harvest.md +420 -420
  173. package/workflows/integration-test.md +343 -343
  174. package/workflows/issue-discover.md +414 -414
  175. package/workflows/map.md +111 -111
  176. package/workflows/milestone-complete.md +176 -176
  177. package/workflows/plan.md +1 -1
  178. package/workflows/quick.md +497 -497
  179. package/workflows/refactor.md +300 -300
  180. package/workflows/roadmap.md +335 -335
  181. package/workflows/spec-generate.md +640 -640
  182. package/workflows/specs-add.md +46 -81
  183. package/workflows/specs-load.md +15 -17
  184. package/workflows/specs-setup.md +40 -161
@@ -30,7 +30,7 @@ You are a collaborative planner that works within a pre-allocated task ID range.
30
30
  - Scope area description (what portion of the work to plan)
31
31
  - Shared context: plan-note.md, research docs, phase context
32
32
  - Overall plan.json (if exists, for wave coordination)
33
- - **Project specs** — `maestro spec load --category planning`: architecture constraints, module boundaries. All tasks must respect loaded constraints.
33
+ - **Project specs** — `maestro spec load --category arch`: architecture constraints, module boundaries. All tasks must respect loaded constraints.
34
34
 
35
35
  ## Output
36
36
  - `.task/TASK-{assigned-range}.json` -- Task files within assigned range only, following schema:
@@ -53,7 +53,7 @@ You implement a single task from the execution plan. Each task is executed atomi
53
53
  - `reference.files` -- Existing files to study for patterns
54
54
  - `reference.pattern` -- Pattern to follow
55
55
  - `issue_id` -- Linked issue ID (if from gap-fix planning, include in commit message)
56
- - **Project specs** (MANDATORY) -- Loaded via `maestro spec load --category execution`:
56
+ - **Project specs** (MANDATORY) -- Loaded via `maestro spec load --category coding`:
57
57
  - Coding conventions (formatting, naming, imports, patterns)
58
58
  - Quality rules (enforcement criteria)
59
59
  - All specs with `readMode: required` and `category: execution`
@@ -41,7 +41,7 @@ You validate the quality of execution plans before they proceed to implementatio
41
41
  ## Input
42
42
  - `plan.json` and `.task/TASK-*.json` files
43
43
  - Requirements source (spec, roadmap, phase context)
44
- - **Project specs** — `maestro spec load --category planning`: verify tasks comply with architecture constraints and module boundaries
44
+ - **Project specs** — `maestro spec load --category arch`: verify tasks comply with architecture constraints and module boundaries
45
45
 
46
46
  ## Output Location
47
47
  `.workflow/phases/{NN}-{slug}/plan-check.md`
@@ -38,7 +38,7 @@ When invoked with `quick` flag:
38
38
  - `.workflow/phases/{NN}-{slug}/context.md` -- Phase context and decisions
39
39
  - `.workflow/phases/{NN}-{slug}/research.md` -- Phase research (if available)
40
40
  - Spec references and doc-index
41
- - **Project specs** (MANDATORY) -- Loaded via `maestro spec load --category planning`:
41
+ - **Project specs** (MANDATORY) -- Loaded via `maestro spec load --category arch`:
42
42
  - Architecture constraints (module structure, layer boundaries, dependency rules)
43
43
  - Coding conventions (naming, imports, patterns)
44
44
  - All specs with `readMode: required` and `category: planning`
@@ -1,176 +1,176 @@
1
- ---
2
- name: learn-decompose
3
- description: Decompose code into cataloged design patterns, saving findings to specs and wiki
4
- argument-hint: "<path|module> [--patterns <list>] [--save-spec] [--save-wiki]"
5
- allowed-tools:
6
- - Read
7
- - Write
8
- - Bash
9
- - Glob
10
- - Grep
11
- - Agent
12
- - AskUserQuestion
13
- ---
14
- <purpose>
15
- Systematic pattern extraction from code. Analyzes a module or directory across 4 dimensions (structural, behavioral, data, error) using parallel agents, then catalogs findings with code anchors. Discovered patterns can be persisted to specs (via `spec-add`) and wiki (via `maestro wiki create`).
16
-
17
- Unlike `learn-follow` which reads code with forcing questions, this command is purpose-built for pattern identification and cataloging. It produces a reusable pattern catalog that feeds into the spec system.
18
- </purpose>
19
-
20
- <context>
21
- Arguments: $ARGUMENTS
22
-
23
- **Target resolution:**
24
- - File path → analyze that file
25
- - Directory path → analyze all source files in it
26
- - Module name → Glob for matching directory under `src/`
27
-
28
- **Flags:**
29
- - `--patterns <list>` — Comma-separated pattern names to look for (e.g., "observer,factory,middleware"). If omitted, detect all.
30
- - `--save-spec` — Invoke `Skill({ skill: "spec-add" })` for each newly discovered pattern
31
- - `--save-wiki` — Create wiki note entries per pattern group via `maestro wiki create --type note`
32
-
33
- **Storage written:**
34
- - `.workflow/learning/decompose-{slug}-{YYYY-MM-DD}.md` — Pattern decomposition report
35
- - `.workflow/learning/lessons.jsonl` — One insight per discovered pattern (source: "decompose")
36
- - `.workflow/learning/learning-index.json` — Updated index
37
- - If `--save-spec`: entries appended to `.workflow/specs/coding-conventions.md`
38
- - If `--save-wiki`: new wiki note entries
39
-
40
- **Storage read:**
41
- - Source files at target path
42
- - `.workflow/specs/coding-conventions.md` — Existing documented patterns (for dedup)
43
- - `.workflow/learning/lessons.jsonl` — Previously identified patterns (for dedup)
44
- </context>
45
-
46
- <execution>
47
-
48
- ### Stage 1: Resolve Target
49
- - If argument is a file: verify exists, use as single-file target
50
- - If argument is a directory: list all `.ts`, `.tsx`, `.js`, `.jsx` files (exclude `node_modules`, `dist`, `.test.`)
51
- - If argument is a module name: Glob `src/**/{module}*` to find matching directory
52
- - If target unresolvable, AskUserQuestion with suggestions
53
-
54
- ### Stage 2: Load Existing Patterns
55
- - Read `.workflow/specs/coding-conventions.md` — extract documented patterns
56
- - Search `lessons.jsonl` for entries with `category: "pattern"` — previously discovered
57
- - Build dedup set: pattern names already known
58
-
59
- ### Stage 3: Parallel Agent Analysis (4 dimensions)
60
- Spawn 4 Agents in a single message, each analyzing the target from one dimension:
61
-
62
- **Agent 1 — Structural Patterns:**
63
- - Class hierarchy and composition relationships
64
- - Module boundaries and encapsulation
65
- - Dependency injection / inversion of control
66
- - Builder, Factory, Singleton patterns
67
- - Export structure (barrel files, re-exports)
68
-
69
- **Agent 2 — Behavioral Patterns:**
70
- - Event flow (EventEmitter, pub/sub, callbacks)
71
- - Middleware chains and interceptors
72
- - Observer/subscriber patterns
73
- - Command/strategy patterns
74
- - State machines
75
-
76
- **Agent 3 — Data Patterns:**
77
- - Repository / data access patterns
78
- - DTO / transformation pipelines
79
- - Caching strategies (memoization, LRU, TTL)
80
- - Serialization / deserialization
81
- - Schema validation approaches
82
-
83
- **Agent 4 — Error Patterns:**
84
- - Error boundary and propagation
85
- - Retry / backoff / circuit breaker
86
- - Fallback chains
87
- - Validation and guard clauses
88
- - Logging and observability patterns
89
-
90
- Each agent returns findings as structured list:
91
- ```json
92
- [{
93
- "name": "pattern name",
94
- "dimension": "structural|behavioral|data|error",
95
- "confidence": "high|medium|low",
96
- "anchors": ["file:line", "file:line"],
97
- "description": "what it does",
98
- "rationale": "why this approach",
99
- "tradeoffs": "what was given up"
100
- }]
101
- ```
102
-
103
- If `--patterns` specified, instruct agents to focus only on named patterns.
104
-
105
- ### Stage 4: Cross-Reference & Dedup
106
- - Match agent findings against existing pattern set from Stage 2
107
- - Mark each finding: `documented` (already in specs), `known` (in lessons), or `new`
108
- - Flag contradictions: finding conflicts with documented convention
109
- - Merge duplicate findings across agents (same pattern found by multiple dimensions)
110
-
111
- ### Stage 5: Produce Pattern Catalog
112
- Build the decomposition report grouped by dimension:
113
-
114
- ```markdown
115
- # Pattern Decomposition: {target}
116
-
117
- ## Summary
118
- - Patterns found: N (M new, K documented, J known)
119
- - Dimensions analyzed: structural, behavioral, data, error
120
- - Contradictions: N
121
-
122
- ## Structural Patterns
123
- | Pattern | Confidence | Location | Status |
124
- |---------|-----------|----------|--------|
125
- | {name} | high | {file:line} | new / documented / known |
126
-
127
- ### {Pattern Name}
128
- **Description:** ...
129
- **Code example:** (inline snippet from anchor)
130
- **Trade-offs:** ...
131
-
132
- ## Behavioral Patterns
133
- ...
134
- ```
135
-
136
- ### Stage 6: Persist
137
- 1. Write `.workflow/learning/decompose-{slug}-{date}.md`
138
- 2. Append each **new** pattern to `lessons.jsonl`:
139
- - `source: "decompose"`, `category: "pattern"`, `confidence: <level>`
140
- - Tags: `["decompose", "{dimension}", "{target-slug}"]`
141
- - Stable INS-id from `hash("decompose" + target + pattern_name)`
142
- 3. Update `learning-index.json`
143
- 4. If `--save-spec`: for each new pattern, invoke `Skill({ skill: "spec-add", args: "pattern {description}" })`
144
- 5. If `--save-wiki`: create wiki note per dimension group via `maestro wiki create --type note --slug decompose-{dimension}-{slug}`
145
- 6. Display summary with counts and next steps
146
-
147
- **Next-step routing:**
148
- - Follow-along on a specific pattern → `/learn-follow <anchor-file>`
149
- - Get second opinion on findings → `/learn-second-opinion <target>`
150
- - Add all new patterns to specs → `/spec-add pattern ...` per pattern
151
- </execution>
152
-
153
- <error_codes>
154
- | Code | Severity | Condition | Recovery |
155
- |------|----------|-----------|----------|
156
- | E001 | error | Target path not found | Check path exists, or use a module name |
157
- | E002 | error | No source files found in target directory | Check target has .ts/.js files, exclude filters may be too aggressive |
158
- | W001 | warning | One or more dimension agents failed — partial results | Proceed with available dimensions, retry failed ones |
159
- | W002 | warning | coding-conventions.md not found — skipping dedup against specs | All patterns marked as "new" |
160
- | W003 | warning | Large target (>50 files) — analysis may be slow | Consider narrowing scope with --patterns filter |
161
- </error_codes>
162
-
163
- <success_criteria>
164
- - [ ] Target resolved to concrete file list
165
- - [ ] Existing patterns loaded for dedup
166
- - [ ] All 4 dimension agents spawned in parallel
167
- - [ ] Each finding has: name, dimension, confidence, anchors, description, tradeoffs
168
- - [ ] Cross-reference performed (documented / known / new status assigned)
169
- - [ ] Pattern catalog written to `decompose-{slug}-{date}.md`
170
- - [ ] New patterns appended to `lessons.jsonl` with stable INS-ids
171
- - [ ] `learning-index.json` updated
172
- - [ ] If --save-spec: spec entries created for new patterns
173
- - [ ] If --save-wiki: wiki notes created per dimension group
174
- - [ ] No files modified outside `.workflow/learning/` (and optionally specs/wiki)
175
- - [ ] Summary displayed with pattern counts and next-step routing
176
- </success_criteria>
1
+ ---
2
+ name: learn-decompose
3
+ description: Decompose code into cataloged design patterns, saving findings to specs and wiki
4
+ argument-hint: "<path|module> [--patterns <list>] [--save-spec] [--save-wiki]"
5
+ allowed-tools:
6
+ - Read
7
+ - Write
8
+ - Bash
9
+ - Glob
10
+ - Grep
11
+ - Agent
12
+ - AskUserQuestion
13
+ ---
14
+ <purpose>
15
+ Systematic pattern extraction from code. Analyzes a module or directory across 4 dimensions (structural, behavioral, data, error) using parallel agents, then catalogs findings with code anchors. Discovered patterns can be persisted to specs (via `spec-add`) and wiki (via `maestro wiki create`).
16
+
17
+ Unlike `learn-follow` which reads code with forcing questions, this command is purpose-built for pattern identification and cataloging. It produces a reusable pattern catalog that feeds into the spec system.
18
+ </purpose>
19
+
20
+ <context>
21
+ Arguments: $ARGUMENTS
22
+
23
+ **Target resolution:**
24
+ - File path → analyze that file
25
+ - Directory path → analyze all source files in it
26
+ - Module name → Glob for matching directory under `src/`
27
+
28
+ **Flags:**
29
+ - `--patterns <list>` — Comma-separated pattern names to look for (e.g., "observer,factory,middleware"). If omitted, detect all.
30
+ - `--save-spec` — Invoke `Skill({ skill: "spec-add" })` for each newly discovered pattern
31
+ - `--save-wiki` — Create wiki note entries per pattern group via `maestro wiki create --type note`
32
+
33
+ **Storage written:**
34
+ - `.workflow/learning/decompose-{slug}-{YYYY-MM-DD}.md` — Pattern decomposition report
35
+ - `.workflow/learning/lessons.jsonl` — One insight per discovered pattern (source: "decompose")
36
+ - `.workflow/learning/learning-index.json` — Updated index
37
+ - If `--save-spec`: entries appended to `.workflow/specs/coding-conventions.md`
38
+ - If `--save-wiki`: new wiki note entries
39
+
40
+ **Storage read:**
41
+ - Source files at target path
42
+ - `.workflow/specs/coding-conventions.md` — Existing documented patterns (for dedup)
43
+ - `.workflow/learning/lessons.jsonl` — Previously identified patterns (for dedup)
44
+ </context>
45
+
46
+ <execution>
47
+
48
+ ### Stage 1: Resolve Target
49
+ - If argument is a file: verify exists, use as single-file target
50
+ - If argument is a directory: list all `.ts`, `.tsx`, `.js`, `.jsx` files (exclude `node_modules`, `dist`, `.test.`)
51
+ - If argument is a module name: Glob `src/**/{module}*` to find matching directory
52
+ - If target unresolvable, AskUserQuestion with suggestions
53
+
54
+ ### Stage 2: Load Existing Patterns
55
+ - Read `.workflow/specs/coding-conventions.md` — extract documented patterns
56
+ - Search `lessons.jsonl` for entries with `category: "pattern"` — previously discovered
57
+ - Build dedup set: pattern names already known
58
+
59
+ ### Stage 3: Parallel Agent Analysis (4 dimensions)
60
+ Spawn 4 Agents in a single message, each analyzing the target from one dimension:
61
+
62
+ **Agent 1 — Structural Patterns:**
63
+ - Class hierarchy and composition relationships
64
+ - Module boundaries and encapsulation
65
+ - Dependency injection / inversion of control
66
+ - Builder, Factory, Singleton patterns
67
+ - Export structure (barrel files, re-exports)
68
+
69
+ **Agent 2 — Behavioral Patterns:**
70
+ - Event flow (EventEmitter, pub/sub, callbacks)
71
+ - Middleware chains and interceptors
72
+ - Observer/subscriber patterns
73
+ - Command/strategy patterns
74
+ - State machines
75
+
76
+ **Agent 3 — Data Patterns:**
77
+ - Repository / data access patterns
78
+ - DTO / transformation pipelines
79
+ - Caching strategies (memoization, LRU, TTL)
80
+ - Serialization / deserialization
81
+ - Schema validation approaches
82
+
83
+ **Agent 4 — Error Patterns:**
84
+ - Error boundary and propagation
85
+ - Retry / backoff / circuit breaker
86
+ - Fallback chains
87
+ - Validation and guard clauses
88
+ - Logging and observability patterns
89
+
90
+ Each agent returns findings as structured list:
91
+ ```json
92
+ [{
93
+ "name": "pattern name",
94
+ "dimension": "structural|behavioral|data|error",
95
+ "confidence": "high|medium|low",
96
+ "anchors": ["file:line", "file:line"],
97
+ "description": "what it does",
98
+ "rationale": "why this approach",
99
+ "tradeoffs": "what was given up"
100
+ }]
101
+ ```
102
+
103
+ If `--patterns` specified, instruct agents to focus only on named patterns.
104
+
105
+ ### Stage 4: Cross-Reference & Dedup
106
+ - Match agent findings against existing pattern set from Stage 2
107
+ - Mark each finding: `documented` (already in specs), `known` (in lessons), or `new`
108
+ - Flag contradictions: finding conflicts with documented convention
109
+ - Merge duplicate findings across agents (same pattern found by multiple dimensions)
110
+
111
+ ### Stage 5: Produce Pattern Catalog
112
+ Build the decomposition report grouped by dimension:
113
+
114
+ ```markdown
115
+ # Pattern Decomposition: {target}
116
+
117
+ ## Summary
118
+ - Patterns found: N (M new, K documented, J known)
119
+ - Dimensions analyzed: structural, behavioral, data, error
120
+ - Contradictions: N
121
+
122
+ ## Structural Patterns
123
+ | Pattern | Confidence | Location | Status |
124
+ |---------|-----------|----------|--------|
125
+ | {name} | high | {file:line} | new / documented / known |
126
+
127
+ ### {Pattern Name}
128
+ **Description:** ...
129
+ **Code example:** (inline snippet from anchor)
130
+ **Trade-offs:** ...
131
+
132
+ ## Behavioral Patterns
133
+ ...
134
+ ```
135
+
136
+ ### Stage 6: Persist
137
+ 1. Write `.workflow/learning/decompose-{slug}-{date}.md`
138
+ 2. Append each **new** pattern to `lessons.jsonl`:
139
+ - `source: "decompose"`, `category: "pattern"`, `confidence: <level>`
140
+ - Tags: `["decompose", "{dimension}", "{target-slug}"]`
141
+ - Stable INS-id from `hash("decompose" + target + pattern_name)`
142
+ 3. Update `learning-index.json`
143
+ 4. If `--save-spec`: for each new pattern, invoke `Skill({ skill: "spec-add", args: "pattern {description}" })`
144
+ 5. If `--save-wiki`: create wiki note per dimension group via `maestro wiki create --type note --slug decompose-{dimension}-{slug}`
145
+ 6. Display summary with counts and next steps
146
+
147
+ **Next-step routing:**
148
+ - Follow-along on a specific pattern → `/learn-follow <anchor-file>`
149
+ - Get second opinion on findings → `/learn-second-opinion <target>`
150
+ - Add all new patterns to specs → `/spec-add coding ...` per pattern
151
+ </execution>
152
+
153
+ <error_codes>
154
+ | Code | Severity | Condition | Recovery |
155
+ |------|----------|-----------|----------|
156
+ | E001 | error | Target path not found | Check path exists, or use a module name |
157
+ | E002 | error | No source files found in target directory | Check target has .ts/.js files, exclude filters may be too aggressive |
158
+ | W001 | warning | One or more dimension agents failed — partial results | Proceed with available dimensions, retry failed ones |
159
+ | W002 | warning | coding-conventions.md not found — skipping dedup against specs | All patterns marked as "new" |
160
+ | W003 | warning | Large target (>50 files) — analysis may be slow | Consider narrowing scope with --patterns filter |
161
+ </error_codes>
162
+
163
+ <success_criteria>
164
+ - [ ] Target resolved to concrete file list
165
+ - [ ] Existing patterns loaded for dedup
166
+ - [ ] All 4 dimension agents spawned in parallel
167
+ - [ ] Each finding has: name, dimension, confidence, anchors, description, tradeoffs
168
+ - [ ] Cross-reference performed (documented / known / new status assigned)
169
+ - [ ] Pattern catalog written to `decompose-{slug}-{date}.md`
170
+ - [ ] New patterns appended to `lessons.jsonl` with stable INS-ids
171
+ - [ ] `learning-index.json` updated
172
+ - [ ] If --save-spec: spec entries created for new patterns
173
+ - [ ] If --save-wiki: wiki notes created per dimension group
174
+ - [ ] No files modified outside `.workflow/learning/` (and optionally specs/wiki)
175
+ - [ ] Summary displayed with pattern counts and next-step routing
176
+ </success_criteria>