maestro-flow 0.3.46 → 0.3.47

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 (241) hide show
  1. package/.claude/agents/ui-design-agent.md +1 -0
  2. package/.claude/agents/workflow-executor.md +3 -0
  3. package/.claude/commands/learn-decompose.md +91 -146
  4. package/.claude/commands/learn-follow.md +102 -137
  5. package/.claude/commands/learn-investigate.md +102 -167
  6. package/.claude/commands/learn-retro.md +100 -243
  7. package/.claude/commands/learn-second-opinion.md +95 -135
  8. package/.claude/commands/maestro-amend.md +95 -232
  9. package/.claude/commands/maestro-analyze.md +1 -6
  10. package/.claude/commands/maestro-collab.md +104 -265
  11. package/.claude/commands/maestro-composer.md +113 -293
  12. package/.claude/commands/maestro-execute.md +10 -17
  13. package/.claude/commands/maestro-impeccable.md +89 -0
  14. package/.claude/commands/maestro-plan.md +1 -6
  15. package/.claude/commands/maestro-player.md +111 -340
  16. package/.claude/commands/maestro-quick.md +9 -0
  17. package/.claude/commands/maestro-ralph-execute.md +167 -210
  18. package/.claude/commands/maestro-ralph.md +245 -426
  19. package/.claude/commands/maestro-ui-codify.md +13 -0
  20. package/.claude/commands/maestro-ui-craft.md +364 -0
  21. package/.claude/commands/maestro-ui-design.md +12 -1
  22. package/.claude/commands/maestro-verify.md +12 -13
  23. package/.claude/commands/maestro.md +142 -72
  24. package/.claude/commands/manage-knowhow-capture.md +45 -170
  25. package/.claude/commands/quality-auto-test.md +9 -0
  26. package/.claude/commands/quality-debug.md +11 -25
  27. package/.claude/commands/quality-refactor.md +9 -0
  28. package/.claude/commands/quality-review.md +5 -14
  29. package/.claude/commands/spec-add.md +1 -1
  30. package/.claude/commands/spec-load.md +3 -2
  31. package/.claude/skills/maestro-impeccable/SKILL.md +169 -0
  32. package/.codex/skills/learn-decompose/SKILL.md +1 -1
  33. package/.codex/skills/learn-investigate/SKILL.md +2 -1
  34. package/.codex/skills/maestro/SKILL.md +278 -313
  35. package/.codex/skills/maestro-analyze/SKILL.md +126 -417
  36. package/.codex/skills/maestro-brainstorm/SKILL.md +129 -451
  37. package/.codex/skills/maestro-collab/SKILL.md +134 -547
  38. package/.codex/skills/maestro-execute/SKILL.md +3 -1
  39. package/.codex/skills/maestro-impeccable/SKILL.md +112 -0
  40. package/.codex/skills/maestro-plan/SKILL.md +88 -437
  41. package/.codex/skills/maestro-player/SKILL.md +191 -333
  42. package/.codex/skills/maestro-quick/SKILL.md +2 -0
  43. package/.codex/skills/maestro-ralph/SKILL.md +307 -710
  44. package/.codex/skills/maestro-roadmap/SKILL.md +201 -518
  45. package/.codex/skills/maestro-ui-codify/SKILL.md +1 -0
  46. package/.codex/skills/maestro-ui-craft/SKILL.md +341 -0
  47. package/.codex/skills/maestro-ui-design/SKILL.md +10 -0
  48. package/.codex/skills/maestro-verify/SKILL.md +116 -409
  49. package/.codex/skills/quality-auto-test/SKILL.md +145 -443
  50. package/.codex/skills/quality-refactor/SKILL.md +1 -1
  51. package/.codex/skills/quality-test/SKILL.md +229 -517
  52. package/.codex/skills/spec-add/SKILL.md +1 -1
  53. package/README.md +4 -1
  54. package/README.zh-CN.md +3 -1
  55. package/dashboard/dist-server/dashboard/src/server/agents/codex-cli-adapter.js +3 -0
  56. package/dashboard/dist-server/dashboard/src/server/agents/codex-cli-adapter.js.map +1 -1
  57. package/dashboard/dist-server/dashboard/src/server/routes/install.js +110 -1
  58. package/dashboard/dist-server/dashboard/src/server/routes/install.js.map +1 -1
  59. package/dashboard/dist-server/dashboard/src/server/routes/settings.js +56 -0
  60. package/dashboard/dist-server/dashboard/src/server/routes/settings.js.map +1 -1
  61. package/dashboard/dist-server/dashboard/src/server/routes/wiki.js +2 -0
  62. package/dashboard/dist-server/dashboard/src/server/routes/wiki.js.map +1 -1
  63. package/dashboard/dist-server/dashboard/src/server/wiki/spec-entry-parser.js +2 -2
  64. package/dashboard/dist-server/dashboard/src/server/wiki/spec-entry-parser.js.map +1 -1
  65. package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.js +2 -0
  66. package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.js.map +1 -1
  67. package/dashboard/dist-server/dashboard/src/server/wiki/wiki-types.d.ts +3 -1
  68. package/dashboard/dist-server/dashboard/src/shared/constants.d.ts +2 -0
  69. package/dashboard/dist-server/dashboard/src/shared/constants.js +2 -0
  70. package/dashboard/dist-server/dashboard/src/shared/constants.js.map +1 -1
  71. package/dist/src/agents/cli-agent-runner.d.ts.map +1 -1
  72. package/dist/src/agents/cli-agent-runner.js +1 -3
  73. package/dist/src/agents/cli-agent-runner.js.map +1 -1
  74. package/dist/src/agents/cli-history-store.d.ts +5 -0
  75. package/dist/src/agents/cli-history-store.d.ts.map +1 -1
  76. package/dist/src/agents/cli-history-store.js +65 -13
  77. package/dist/src/agents/cli-history-store.js.map +1 -1
  78. package/dist/src/cli.js +13 -0
  79. package/dist/src/cli.js.map +1 -1
  80. package/dist/src/commands/command-help.d.ts +3 -0
  81. package/dist/src/commands/command-help.d.ts.map +1 -0
  82. package/dist/src/commands/command-help.js +60 -0
  83. package/dist/src/commands/command-help.js.map +1 -0
  84. package/dist/src/commands/config.d.ts.map +1 -1
  85. package/dist/src/commands/config.js +17 -0
  86. package/dist/src/commands/config.js.map +1 -1
  87. package/dist/src/commands/delegate.d.ts.map +1 -1
  88. package/dist/src/commands/delegate.js +12 -2
  89. package/dist/src/commands/delegate.js.map +1 -1
  90. package/dist/src/commands/impeccable.d.ts +10 -0
  91. package/dist/src/commands/impeccable.d.ts.map +1 -0
  92. package/dist/src/commands/impeccable.js +181 -0
  93. package/dist/src/commands/impeccable.js.map +1 -0
  94. package/dist/src/commands/spec.js +1 -1
  95. package/dist/src/commands/spec.js.map +1 -1
  96. package/dist/src/commands/wiki.d.ts.map +1 -1
  97. package/dist/src/commands/wiki.js +5 -1
  98. package/dist/src/commands/wiki.js.map +1 -1
  99. package/dist/src/config/cli-tools-config.d.ts.map +1 -1
  100. package/dist/src/config/cli-tools-config.js +10 -7
  101. package/dist/src/config/cli-tools-config.js.map +1 -1
  102. package/dist/src/core/addon-registry.d.ts +31 -0
  103. package/dist/src/core/addon-registry.d.ts.map +1 -0
  104. package/dist/src/core/addon-registry.js +28 -0
  105. package/dist/src/core/addon-registry.js.map +1 -0
  106. package/dist/src/hooks/plugins/spec-injection-plugin.js +2 -0
  107. package/dist/src/hooks/plugins/spec-injection-plugin.js.map +1 -1
  108. package/dist/src/hooks/spec-injector.js +2 -2
  109. package/dist/src/hooks/spec-injector.js.map +1 -1
  110. package/dist/src/index.d.ts +2 -0
  111. package/dist/src/index.d.ts.map +1 -1
  112. package/dist/src/index.js +1 -0
  113. package/dist/src/index.js.map +1 -1
  114. package/dist/src/tools/impeccable/critique-storage.d.ts +28 -0
  115. package/dist/src/tools/impeccable/critique-storage.d.ts.map +1 -0
  116. package/dist/src/tools/impeccable/critique-storage.js +120 -0
  117. package/dist/src/tools/impeccable/critique-storage.js.map +1 -0
  118. package/dist/src/tools/impeccable/design-parser.d.ts +90 -0
  119. package/dist/src/tools/impeccable/design-parser.d.ts.map +1 -0
  120. package/dist/src/tools/impeccable/design-parser.js +696 -0
  121. package/dist/src/tools/impeccable/design-parser.js.map +1 -0
  122. package/dist/src/tools/impeccable/detect-csp.d.ts +6 -0
  123. package/dist/src/tools/impeccable/detect-csp.d.ts.map +1 -0
  124. package/dist/src/tools/impeccable/detect-csp.js +130 -0
  125. package/dist/src/tools/impeccable/detect-csp.js.map +1 -0
  126. package/dist/src/tools/impeccable/is-generated.d.ts +4 -0
  127. package/dist/src/tools/impeccable/is-generated.d.ts.map +1 -0
  128. package/dist/src/tools/impeccable/is-generated.js +56 -0
  129. package/dist/src/tools/impeccable/is-generated.js.map +1 -0
  130. package/dist/src/tools/impeccable/live/accept.d.ts +50 -0
  131. package/dist/src/tools/impeccable/live/accept.d.ts.map +1 -0
  132. package/dist/src/tools/impeccable/live/accept.js +556 -0
  133. package/dist/src/tools/impeccable/live/accept.js.map +1 -0
  134. package/dist/src/tools/impeccable/live/bootstrap.d.ts +2 -0
  135. package/dist/src/tools/impeccable/live/bootstrap.d.ts.map +1 -0
  136. package/dist/src/tools/impeccable/live/bootstrap.js +244 -0
  137. package/dist/src/tools/impeccable/live/bootstrap.js.map +1 -0
  138. package/dist/src/tools/impeccable/live/complete.d.ts +7 -0
  139. package/dist/src/tools/impeccable/live/complete.d.ts.map +1 -0
  140. package/dist/src/tools/impeccable/live/complete.js +67 -0
  141. package/dist/src/tools/impeccable/live/complete.js.map +1 -0
  142. package/dist/src/tools/impeccable/live/completion.d.ts +24 -0
  143. package/dist/src/tools/impeccable/live/completion.d.ts.map +1 -0
  144. package/dist/src/tools/impeccable/live/completion.js +26 -0
  145. package/dist/src/tools/impeccable/live/completion.js.map +1 -0
  146. package/dist/src/tools/impeccable/live/inject.d.ts +41 -0
  147. package/dist/src/tools/impeccable/live/inject.d.ts.map +1 -0
  148. package/dist/src/tools/impeccable/live/inject.js +394 -0
  149. package/dist/src/tools/impeccable/live/inject.js.map +1 -0
  150. package/dist/src/tools/impeccable/live/poll.d.ts +24 -0
  151. package/dist/src/tools/impeccable/live/poll.d.ts.map +1 -0
  152. package/dist/src/tools/impeccable/live/poll.js +180 -0
  153. package/dist/src/tools/impeccable/live/poll.js.map +1 -0
  154. package/dist/src/tools/impeccable/live/resume.d.ts +5 -0
  155. package/dist/src/tools/impeccable/live/resume.d.ts.map +1 -0
  156. package/dist/src/tools/impeccable/live/resume.js +30 -0
  157. package/dist/src/tools/impeccable/live/resume.js.map +1 -0
  158. package/dist/src/tools/impeccable/live/server.d.ts +6 -0
  159. package/dist/src/tools/impeccable/live/server.d.ts.map +1 -0
  160. package/dist/src/tools/impeccable/live/server.js +867 -0
  161. package/dist/src/tools/impeccable/live/server.js.map +1 -0
  162. package/dist/src/tools/impeccable/live/session-store.d.ts +72 -0
  163. package/dist/src/tools/impeccable/live/session-store.d.ts.map +1 -0
  164. package/dist/src/tools/impeccable/live/session-store.js +281 -0
  165. package/dist/src/tools/impeccable/live/session-store.js.map +1 -0
  166. package/dist/src/tools/impeccable/live/static/live-browser-session.js +123 -0
  167. package/dist/src/tools/impeccable/live/static/live-browser.js +4860 -0
  168. package/dist/src/tools/impeccable/live/static/modern-screenshot.umd.js +14 -0
  169. package/dist/src/tools/impeccable/live/status.d.ts +2 -0
  170. package/dist/src/tools/impeccable/live/status.d.ts.map +1 -0
  171. package/dist/src/tools/impeccable/live/status.js +52 -0
  172. package/dist/src/tools/impeccable/live/status.js.map +1 -0
  173. package/dist/src/tools/impeccable/live/wrap.d.ts +33 -0
  174. package/dist/src/tools/impeccable/live/wrap.d.ts.map +1 -0
  175. package/dist/src/tools/impeccable/live/wrap.js +572 -0
  176. package/dist/src/tools/impeccable/live/wrap.js.map +1 -0
  177. package/dist/src/tools/impeccable/load-context.d.ts +13 -0
  178. package/dist/src/tools/impeccable/load-context.d.ts.map +1 -0
  179. package/dist/src/tools/impeccable/load-context.js +79 -0
  180. package/dist/src/tools/impeccable/load-context.js.map +1 -0
  181. package/dist/src/tools/impeccable/paths.d.ts +34 -0
  182. package/dist/src/tools/impeccable/paths.d.ts.map +1 -0
  183. package/dist/src/tools/impeccable/paths.js +102 -0
  184. package/dist/src/tools/impeccable/paths.js.map +1 -0
  185. package/dist/src/tools/spec-entry-parser.d.ts +1 -1
  186. package/dist/src/tools/spec-entry-parser.d.ts.map +1 -1
  187. package/dist/src/tools/spec-entry-parser.js +1 -1
  188. package/dist/src/tools/spec-entry-parser.js.map +1 -1
  189. package/dist/src/tools/spec-init.d.ts.map +1 -1
  190. package/dist/src/tools/spec-init.js +26 -1
  191. package/dist/src/tools/spec-init.js.map +1 -1
  192. package/dist/src/tools/spec-loader.d.ts +1 -1
  193. package/dist/src/tools/spec-loader.d.ts.map +1 -1
  194. package/dist/src/tools/spec-loader.js +2 -0
  195. package/dist/src/tools/spec-loader.js.map +1 -1
  196. package/package.json +2 -2
  197. package/workflows/claude-instructions.md +17 -5
  198. package/workflows/cli-tools-usage.md +10 -3
  199. package/workflows/delegate-usage.md +3 -2
  200. package/workflows/impeccable/adapt.md +190 -0
  201. package/workflows/impeccable/animate.md +175 -0
  202. package/workflows/impeccable/audit.md +133 -0
  203. package/workflows/impeccable/bolder.md +113 -0
  204. package/workflows/impeccable/brand.md +118 -0
  205. package/workflows/impeccable/clarify.md +174 -0
  206. package/workflows/impeccable/codex.md +105 -0
  207. package/workflows/impeccable/cognitive-load.md +106 -0
  208. package/workflows/impeccable/color-and-contrast.md +105 -0
  209. package/workflows/impeccable/colorize.md +154 -0
  210. package/workflows/impeccable/craft.md +123 -0
  211. package/workflows/impeccable/critique.md +261 -0
  212. package/workflows/impeccable/delight.md +302 -0
  213. package/workflows/impeccable/distill.md +111 -0
  214. package/workflows/impeccable/document.md +439 -0
  215. package/workflows/impeccable/extract.md +69 -0
  216. package/workflows/impeccable/harden.md +347 -0
  217. package/workflows/impeccable/heuristics-scoring.md +234 -0
  218. package/workflows/impeccable/interaction-design.md +195 -0
  219. package/workflows/impeccable/layout.md +141 -0
  220. package/workflows/impeccable/live.md +622 -0
  221. package/workflows/impeccable/motion-design.md +109 -0
  222. package/workflows/impeccable/onboard.md +234 -0
  223. package/workflows/impeccable/optimize.md +258 -0
  224. package/workflows/impeccable/overdrive.md +130 -0
  225. package/workflows/impeccable/personas.md +179 -0
  226. package/workflows/impeccable/polish.md +242 -0
  227. package/workflows/impeccable/product.md +62 -0
  228. package/workflows/impeccable/quieter.md +99 -0
  229. package/workflows/impeccable/responsive-design.md +114 -0
  230. package/workflows/impeccable/shape.md +165 -0
  231. package/workflows/impeccable/spatial-design.md +100 -0
  232. package/workflows/impeccable/teach.md +168 -0
  233. package/workflows/impeccable/typeset.md +124 -0
  234. package/workflows/impeccable/typography.md +159 -0
  235. package/workflows/impeccable/ux-writing.md +107 -0
  236. package/workflows/impeccable.md +164 -0
  237. package/workflows/maestro.md +7 -3
  238. package/workflows/skill-authoring.md +265 -0
  239. package/workflows/specs-add.md +3 -2
  240. package/workflows/specs-load.md +2 -1
  241. package/workflows/specs-setup.md +21 -1
@@ -41,6 +41,7 @@ STEP 1: Identify Task Pattern
41
41
 
42
42
  STEP 2: Load Context
43
43
  → Read input data specified in task prompt
44
+ → Load existing UI conventions: `maestro spec load --category ui` (if available, respect established design tokens and component patterns)
44
45
  → Validate BASE_PATH and output directory structure
45
46
 
46
47
  STEP 3: Execute Pattern-Specific Generation
@@ -58,6 +58,9 @@ You implement a single task from the execution plan. Each task is executed atomi
58
58
  - Quality rules (enforcement criteria)
59
59
  - All specs with `readMode: required` and `category: execution`
60
60
  - **Must comply**: All generated code must follow loaded spec constraints
61
+ - **UI specs (conditional)** -- If task involves frontend/UI work (focus_paths in `src/components/`, `src/pages/`, `src/styles/`, `src/ui/`, or description contains UI keywords), also load via `maestro spec load --category ui`:
62
+ - Design tokens, component conventions, visual system constraints
63
+ - PRODUCT.md/DESIGN.md references
61
64
  - Prior task summaries from `.summaries/` (for context on dependencies)
62
65
  - `context.md` -- Phase context with Locked/Free/Deferred decisions (read to understand constraints before implementing)
63
66
  - `analysis.md` -- Phase analysis with 6-dimension scores (reference for quality expectations)
@@ -12,160 +12,105 @@ allowed-tools:
12
12
  - AskUserQuestion
13
13
  ---
14
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.
15
+ Systematic pattern extraction: analyze module across 4 dimensions using parallel agents, catalog findings with code anchors, persist to specs/wiki. Produces reusable pattern catalog.
18
16
  </purpose>
19
17
 
20
18
  <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/knowhow/KNW-decompose-{slug}-{YYYY-MM-DD}.md` — Pattern decomposition report
35
- - `.workflow/specs/learnings.md` — One `<spec-entry>` per discovered pattern (source: "decompose")
36
- - If `--save-spec`: entries appended to `.workflow/specs/coding-conventions.md`
37
- - If `--save-wiki`: new wiki note entries
38
-
39
- **Storage read:**
40
- - Source files at target path
41
- - `.workflow/specs/coding-conventions.md` — Existing documented patterns (for dedup)
42
- - `.workflow/specs/learnings.md` — Previously identified patterns (for dedup)
19
+ $ARGUMENTS — target path/module and optional flags.
20
+
21
+ **Target resolution**: file path → that file; directory → all source files; module name → Glob `src/**/{module}*`.
22
+
23
+ **Flags**:
24
+ - `--patterns <list>`: Comma-separated pattern names to look for (default: detect all)
25
+ - `--save-spec`: `Skill("spec-add")` for each new pattern
26
+ - `--save-wiki`: create wiki note per dimension group
27
+
28
+ **Storage read**: target files + `coding-conventions.md` + `specs/learnings.md` (dedup)
29
+ **Storage write**: `.workflow/knowhow/KNW-decompose-{slug}-{date}.md` + append `specs/learnings.md`
43
30
  </context>
44
31
 
45
- <execution>
46
-
47
- ### Stage 1: Resolve Target
48
- - If argument is a file: verify exists, use as single-file target
49
- - If argument is a directory: list all `.ts`, `.tsx`, `.js`, `.jsx` files (exclude `node_modules`, `dist`, `.test.`)
50
- - If argument is a module name: Glob `src/**/{module}*` to find matching directory
51
- - If target unresolvable, AskUserQuestion with suggestions
52
-
53
- ### Stage 2: Load Existing Patterns
54
- - Read `.workflow/specs/coding-conventions.md` — extract documented patterns
55
- - Search `specs/learnings.md` for `<spec-entry>` blocks with `roles="implement"` — previously discovered
56
- - Build dedup set: pattern names already known
57
-
58
- ### Stage 3: Parallel Agent Analysis (4 dimensions)
59
- Spawn 4 Agents in a single message, each analyzing the target from one dimension:
60
-
61
- **Agent 1 — Structural Patterns:**
62
- - Class hierarchy and composition relationships
63
- - Module boundaries and encapsulation
64
- - Dependency injection / inversion of control
65
- - Builder, Factory, Singleton patterns
66
- - Export structure (barrel files, re-exports)
67
-
68
- **Agent 2 — Behavioral Patterns:**
69
- - Event flow (EventEmitter, pub/sub, callbacks)
70
- - Middleware chains and interceptors
71
- - Observer/subscriber patterns
72
- - Command/strategy patterns
73
- - State machines
74
-
75
- **Agent 3 Data Patterns:**
76
- - Repository / data access patterns
77
- - DTO / transformation pipelines
78
- - Caching strategies (memoization, LRU, TTL)
79
- - Serialization / deserialization
80
- - Schema validation approaches
81
-
82
- **Agent 4 — Error Patterns:**
83
- - Error boundary and propagation
84
- - Retry / backoff / circuit breaker
85
- - Fallback chains
86
- - Validation and guard clauses
87
- - Logging and observability patterns
88
-
89
- Each agent returns findings as structured list:
90
- ```json
91
- [{
92
- "name": "pattern name",
93
- "dimension": "structural|behavioral|data|error",
94
- "confidence": "high|medium|low",
95
- "anchors": ["file:line", "file:line"],
96
- "description": "what it does",
97
- "rationale": "why this approach",
98
- "tradeoffs": "what was given up"
99
- }]
100
- ```
101
-
102
- If `--patterns` specified, instruct agents to focus only on named patterns.
103
-
104
- ### Stage 4: Cross-Reference & Dedup
105
- - Match agent findings against existing pattern set from Stage 2
106
- - Mark each finding: `documented` (already in specs), `known` (in knowhow), or `new`
107
- - Flag contradictions: finding conflicts with documented convention
108
- - Merge duplicate findings across agents (same pattern found by multiple dimensions)
109
-
110
- ### Stage 5: Produce Pattern Catalog
111
- Build the decomposition report grouped by dimension:
112
-
113
- ```markdown
114
- # Pattern Decomposition: {target}
115
-
116
- ## Summary
117
- - Patterns found: N (M new, K documented, J known)
118
- - Dimensions analyzed: structural, behavioral, data, error
119
- - Contradictions: N
120
-
121
- ## Structural Patterns
122
- | Pattern | Confidence | Location | Status |
123
- |---------|-----------|----------|--------|
124
- | {name} | high | {file:line} | new / documented / known |
125
-
126
- ### {Pattern Name}
127
- **Description:** ...
128
- **Code example:** (inline snippet from anchor)
129
- **Trade-offs:** ...
130
-
131
- ## Behavioral Patterns
132
- ...
133
- ```
134
-
135
- ### Stage 6: Persist
136
- 1. Write `.workflow/knowhow/KNW-decompose-{slug}-{date}.md`
137
- 2. Append each **new** pattern as a `<spec-entry>` block to `specs/learnings.md` via `maestro spec add learning --body "<content>" --keywords "decompose,pattern,{dimension},{target-slug}"`:
138
- - Stable INS-id from `hash("decompose" + target + pattern_name)`
139
- 4. If `--save-spec`: for each new pattern, invoke `Skill({ skill: "spec-add", args: "pattern {description}" })`
140
- 5. If `--save-wiki`: create wiki note per dimension group via `maestro wiki create --type note --slug decompose-{dimension}-{slug}`
141
- 6. Display summary with counts and next steps
142
-
143
- **Next-step routing:**
144
- - Follow-along on a specific pattern → `/learn-follow <anchor-file>`
145
- - Get second opinion on findings → `/learn-second-opinion <target>`
146
- - Add all new patterns to specs → `/spec-add coding ...` per pattern
147
- </execution>
32
+ <state_machine>
33
+
34
+ <states>
35
+ S_RESOLVE — 解析 target 为具体文件列表 PERSIST:
36
+ S_DEDUP — 加载已有 patterns 用于去重 PERSIST:
37
+ S_ANALYZE — 4 维度并行 Agent 分析 PERSIST:
38
+ S_CROSSREF — 交叉引用、去重、标记状态 PERSIST:
39
+ S_CATALOG — 生成 pattern catalog 报告 PERSIST: outputs
40
+ S_PERSIST — 写文件 + 可选 spec-add/wiki create PERSIST: knowhow files
41
+ </states>
42
+
43
+ <transitions>
44
+
45
+ S_RESOLVE:
46
+ S_DEDUP WHEN: file list resolved
47
+ → S_RESOLVE WHEN: unresolvable DO: AskUserQuestion
48
+
49
+ S_DEDUP:
50
+ → S_ANALYZE DO: read coding-conventions.md + specs/learnings.md build known pattern set
51
+
52
+ S_ANALYZE:
53
+ S_CROSSREF DO: A_PARALLEL_DIMENSION_ANALYSIS
54
+
55
+ S_CROSSREF:
56
+ S_CATALOG DO: A_CROSSREF_DEDUP
57
+
58
+ S_CATALOG:
59
+ → S_PERSIST DO: write KNW-decompose report (grouped by dimension: pattern table + details)
60
+
61
+ S_PERSIST:
62
+ END DO: append specs/learnings.md [+ spec-add if --save-spec] [+ wiki note if --save-wiki]
63
+
64
+ </transitions>
65
+
66
+ <actions>
67
+
68
+ ### A_PARALLEL_DIMENSION_ANALYSIS
69
+
70
+ Spawn 4 Agents in single message:
71
+
72
+ | Agent | Dimension | Looks for |
73
+ |-------|-----------|-----------|
74
+ | 1 | Structural | Class hierarchy, composition, DI/IoC, Factory/Builder/Singleton, barrel exports |
75
+ | 2 | Behavioral | Event flow, middleware chains, observer/pub-sub, command/strategy, state machines |
76
+ | 3 | Data | Repository/DAO, DTO pipelines, caching (memo/LRU/TTL), serialization, schema validation |
77
+ | 4 | Error | Error boundaries, retry/backoff/circuit-breaker, fallback chains, guard clauses, logging |
78
+
79
+ If `--patterns` specified: agents focus only on named patterns.
80
+
81
+ Each agent returns: `[{ name, dimension, confidence (high/medium/low), anchors [file:line], description, rationale, tradeoffs }]`
82
+
83
+ ### A_CROSSREF_DEDUP
84
+
85
+ For each finding, match against known pattern set:
86
+ | Status | Condition |
87
+ |--------|-----------|
88
+ | documented | Already in coding-conventions.md |
89
+ | known | In specs/learnings.md |
90
+ | new | Not seen before |
91
+
92
+ Flag contradictions (finding conflicts with documented convention). Merge duplicates across agents (same pattern found by multiple dimensions).
93
+
94
+ </actions>
95
+
96
+ </state_machine>
148
97
 
149
98
  <error_codes>
150
- | Code | Severity | Condition | Recovery |
151
- |------|----------|-----------|----------|
152
- | E001 | error | Target path not found | Check path exists, or use a module name |
153
- | E002 | error | No source files found in target directory | Check target has .ts/.js files, exclude filters may be too aggressive |
154
- | W001 | warning | One or more dimension agents failed — partial results | Proceed with available dimensions, retry failed ones |
155
- | W002 | warning | coding-conventions.md not found — skipping dedup against specs | All patterns marked as "new" |
156
- | W003 | warning | Large target (>50 files) — analysis may be slow | Consider narrowing scope with --patterns filter |
99
+ | Code | Condition | Recovery |
100
+ |------|-----------|----------|
101
+ | E002 | No source files in target | Check target has .ts/.js files |
102
+ | W001 | One+ dimension agent failed | Proceed with available dimensions |
103
+ | W003 | Large target (>50 files) | Consider --patterns filter |
157
104
  </error_codes>
158
105
 
159
106
  <success_criteria>
160
- - [ ] Target resolved to concrete file list
161
- - [ ] Existing patterns loaded for dedup
162
- - [ ] All 4 dimension agents spawned in parallel
163
- - [ ] Each finding has: name, dimension, confidence, anchors, description, tradeoffs
164
- - [ ] Cross-reference performed (documented / known / new status assigned)
165
- - [ ] Pattern catalog written to `KNW-decompose-{slug}-{date}.md`
166
- - [ ] New patterns appended to `specs/learnings.md` as `<spec-entry>` blocks with stable INS-ids
167
- - [ ] If --save-spec: spec entries created for new patterns
168
- - [ ] If --save-wiki: wiki notes created per dimension group
169
- - [ ] No files modified outside `.workflow/knowhow/` (and optionally specs/wiki)
170
- - [ ] Summary displayed with pattern counts and next-step routing
107
+ - [ ] 4 dimension agents spawned in parallel, findings with anchors
108
+ - [ ] Cross-reference: documented/known/new status assigned
109
+ - [ ] Pattern catalog written + specs/learnings.md appended
171
110
  </success_criteria>
111
+
112
+ <next_step_routing>
113
+ - Follow-along → `/learn-follow <anchor-file>`
114
+ - Second opinion → `/learn-second-opinion <target>`
115
+ - Add to specs → `/spec-add coding ...`
116
+ </next_step_routing>
@@ -12,151 +12,116 @@ allowed-tools:
12
12
  - AskUserQuestion
13
13
  ---
14
14
  <purpose>
15
- Guided reading experience for code files, wiki entries, or topics. Instead of just reading code, this command walks through content section by section using forcing questions (inspired by gstack `/office-hours` brainstorming) to extract patterns, identify assumptions, and build a structured understanding map.
16
-
17
- Outputs reading notes with extracted patterns, open questions, and connection points. Insights persist to `specs/learnings.md` as `<spec-entry>` blocks and optionally become wiki note entries for the knowledge graph.
15
+ Guided reading: walk through content section-by-section using forcing questions to extract patterns, identify assumptions, and build an understanding map. Findings persist to `specs/learnings.md` as `<spec-entry>` blocks.
18
16
  </purpose>
19
17
 
20
18
  <context>
21
- Arguments: $ARGUMENTS
22
-
23
- **Target resolution (auto-detected from first argument):**
24
- - File path (e.g., `src/commands/wiki.ts`) → Read source file
25
- - Wiki ID (e.g., `spec-auth`, `phase-planning`) → Fetch via `maestro wiki get`
26
- - Topic string (e.g., `"authentication flow"`) Search via `maestro wiki search`, use top result
27
-
28
- **Flags:**
29
- - `--depth shallow` — Quick pass: key patterns and structure only (default)
30
- - `--depth deep` — Thorough: every function, every branch, every assumption
31
- - `--save-wiki` Create a wiki note entry with the reading notes via `maestro wiki create --type note`
32
-
33
- **Storage written:**
34
- - `.workflow/knowhow/KNW-follow-{slug}-{YYYY-MM-DD}.md` — Reading notes with understanding map
35
- - `.workflow/knowhow/specs/learnings.md` — Appended pattern/technique `<spec-entry>` blocks
36
- - If `--save-wiki`: new wiki note entry
37
-
38
- **Storage read:**
39
- - Target source file or wiki entry
40
- - `maestro wiki backlinks <id>` / `maestro wiki forward <id>` — Relationship context
41
- - `.workflow/specs/coding-conventions.md` — Convention reference for pattern matching
42
- - `.workflow/knowhow/specs/learnings.md` — Prior insights for dedup and cross-reference
19
+ $ARGUMENTS — target and optional flags.
20
+
21
+ **Target resolution** (auto-detected):
22
+ | Input | Resolution |
23
+ |-------|-----------|
24
+ | File path (contains `/` or `\`) | Read source file |
25
+ | Wiki ID (`<type>-<slug>`) | `maestro wiki get <id>` |
26
+ | Topic string | `maestro wiki search "<topic>"` → top result; fallback: Grep src/ |
27
+
28
+ **Flags**:
29
+ - `--depth shallow` (default): key patterns and structure only
30
+ - `--depth deep`: every function, every branch, every assumption
31
+ - `--save-wiki`: create wiki note entry with reading notes
32
+
33
+ **Storage read**: target file + wiki forward/backlinks + `coding-conventions.md` + `specs/learnings.md` (dedup)
34
+ **Storage write**: `.workflow/knowhow/KNW-follow-{slug}-{date}.md` + append `specs/learnings.md`
43
35
  </context>
44
36
 
45
- <execution>
46
-
47
- ### Stage 1: Resolve Target
48
- - If argument looks like a file path (contains `/` or `\`, or matches a glob): verify file exists via Read
49
- - If argument matches wiki ID pattern (`<type>-<slug>`): fetch via `maestro wiki get <id>` (offline mode)
50
- - Otherwise: treat as topic string, run `maestro wiki search "<topic>"`, take the top result. If no result, fall back to Grep across `src/` for the topic.
51
- - If target cannot be resolved, AskUserQuestion with suggestions.
52
-
53
- ### Stage 2: Load Context Web
54
- For the resolved target, build a 1-hop context neighborhood:
55
-
56
- **If wiki entry:**
57
- - `maestro wiki forward <id>` — What this entry references
58
- - `maestro wiki backlinks <id>` — What references this entry
59
- - Read the body of top 3 related entries for context
60
-
61
- **If code file:**
62
- - Parse imports/requires to identify dependency files
63
- - Grep for exports used by other files (reverse dependencies)
64
- - Read the first 50 lines of top 3 dependent files for context
65
-
66
- **If directory:**
67
- - List files, identify entry points (index.ts, main.ts, cli.ts)
68
- - Build reading order: entry point → core modules → utilities → tests
69
-
70
- ### Stage 3: Build Reading Order
71
- - For a single file: split into logical sections (function boundaries, class boundaries, export groups)
72
- - For a wiki entry: split by markdown headings
73
- - For a directory: order files by dependency (entry points first, leaf modules last)
74
- - For `--depth shallow`: limit to top-level structure (function signatures, section headers)
75
- - For `--depth deep`: include every function body, every branch
76
-
77
- ### Stage 4: Guided Reading with Forcing Questions
78
- Walk through each section in reading order. For each section, apply 4 forcing questions:
79
-
80
- 1. **"What pattern is being used here?"** — Identify design patterns, idioms, conventions. Compare against `coding-conventions.md`.
81
- 2. **"Why this approach instead of alternatives?"** — What trade-offs were made? What was the simpler approach not chosen?
82
- 3. **"What assumption does this depend on?"** — What must be true for this code/content to be correct? External state? Input shape? Ordering?
83
- 4. **"What would break if this changed?"** — Fragility analysis. What downstream effects would a change have?
84
-
85
- Record answers as structured annotations per section.
86
-
87
- ### Stage 5: Extract Patterns
88
- From the forcing question answers, extract:
89
- - **Design patterns**: named patterns with code anchors (file:line)
90
- - **Naming conventions**: how things are named and why
91
- - **Error handling approach**: how errors flow through this code/content
92
- - **Data flow**: how data enters, transforms, and exits
93
- - **Assumptions**: explicit and implicit assumptions identified
94
-
95
- Cross-reference each pattern against existing `coding-conventions.md` entries:
96
- - Already documented → note as "confirmed convention"
97
- - Not documented → flag as "undocumented pattern" (candidate for `spec-add`)
98
-
99
- ### Stage 6: Produce Understanding Map
100
- Build a structured summary document:
101
-
102
- ```markdown
103
- # Follow-Along: {target name}
104
-
105
- ## Key Concepts
106
- - {concept}: {one-line explanation}
107
-
108
- ## Patterns Identified
109
- | Pattern | Location | Convention Status |
110
- |---------|----------|-------------------|
111
- | {name} | {file:line} | documented / undocumented |
112
-
113
- ## Assumptions
114
- - {assumption}: {what depends on it}
115
-
116
- ## Open Questions
117
- - {question}: {why it matters}
118
-
119
- ## Connections
120
- - Links to: {forward link entries}
121
- - Referenced by: {backlink entries}
122
- - Related insights: {matching specs/learnings.md entries}
123
- ```
124
-
125
- ### Stage 7: Persist
126
- 1. Write `.workflow/knowhow/KNW-follow-{slug}-{date}.md` with the understanding map
127
- 2. Append each new pattern/technique as a `<spec-entry>` block to `specs/learnings.md` via `maestro spec add learning --body "<content>" --keywords "follow,{target-slug}"`:
128
- - Stable INS-id from `hash("follow" + target + pattern_name)`
129
- 3. If `--save-wiki`: run `maestro wiki create --type note --slug follow-{slug} --title "Follow-Along: {target}" --body-file .workflow/knowhow/KNW-follow-{slug}-{date}.md`
130
- 5. Display summary with key findings and next steps
131
-
132
- **Next-step routing:**
133
- - Deep dive into a discovered pattern → `/learn-decompose <path>`
134
- - Add undocumented pattern to specs → `/spec-add coding <description>`
135
- - Get second opinion on a finding → `/learn-second-opinion <file>`
136
- - Browse related wiki entries → `/wiki-digest <topic>`
137
- </execution>
37
+ <state_machine>
38
+
39
+ <states>
40
+ S_RESOLVE — 解析 target (file/wiki/topic) PERSIST:
41
+ S_CONTEXT — 构建 1-hop 上下文邻域 PERSIST:
42
+ S_ORDER — 确定阅读顺序 PERSIST:
43
+ S_READ — 逐节应用 forcing questions PERSIST:
44
+ S_EXTRACT — 提取 patterns、cross-ref conventions PERSIST: —
45
+ S_PERSIST — understanding map + spec-entry 块 PERSIST: knowhow files
46
+ </states>
47
+
48
+ <transitions>
49
+
50
+ S_RESOLVE:
51
+ S_CONTEXT WHEN: target resolved
52
+ → S_RESOLVE WHEN: unresolvable DO: AskUserQuestion with suggestions
53
+
54
+ S_CONTEXT:
55
+ S_ORDER DO: A_BUILD_CONTEXT_WEB
56
+
57
+ S_ORDER:
58
+ S_READ DO: A_BUILD_READING_ORDER
59
+
60
+ S_READ:
61
+ → S_EXTRACT DO: A_GUIDED_READ (apply 4 forcing questions per section)
62
+
63
+ S_EXTRACT:
64
+ S_PERSIST DO: A_EXTRACT_PATTERNS
65
+
66
+ S_PERSIST:
67
+ → END DO: write KNW-follow + append specs/learnings.md [+ wiki note if --save-wiki]
68
+
69
+ </transitions>
70
+
71
+ <actions>
72
+
73
+ ### A_BUILD_CONTEXT_WEB
74
+
75
+ | Target type | Context |
76
+ |-------------|---------|
77
+ | Wiki entry | `maestro wiki forward <id>` + `maestro wiki backlinks <id>` → read top 3 related |
78
+ | Code file | Parse imports → dependency files; grep exports → reverse deps; read top 3 dependents (50 lines) |
79
+ | Directory | List files, identify entry points → build reading order: entry → core → utils → tests |
80
+
81
+ ### A_BUILD_READING_ORDER
82
+
83
+ - Single file: split by function/class/export boundaries
84
+ - Wiki entry: split by markdown headings
85
+ - Directory: order by dependency (entry points first, leaf last)
86
+ - `--depth shallow`: top-level structure only; `--depth deep`: every body and branch
87
+
88
+ ### A_GUIDED_READ
89
+
90
+ For each section, apply 4 forcing questions:
91
+
92
+ | # | Question | Extracts |
93
+ |---|----------|----------|
94
+ | 1 | "What pattern is being used here?" | Design patterns, idioms, conventions |
95
+ | 2 | "Why this approach instead of alternatives?" | Trade-offs, rejected options |
96
+ | 3 | "What assumption does this depend on?" | Implicit contracts, input shape, ordering |
97
+ | 4 | "What would break if this changed?" | Fragility, downstream effects |
98
+
99
+ ### A_EXTRACT_PATTERNS
100
+
101
+ Extract: design patterns (with file:line anchors), naming conventions, error handling approach, data flow, assumptions.
102
+ Cross-ref against `coding-conventions.md`: documented → "confirmed convention", undocumented → "candidate for spec-add".
103
+
104
+ Write understanding map: Key Concepts, Patterns (table: name/location/convention status), Assumptions, Open Questions, Connections.
105
+
106
+ </actions>
107
+
108
+ </state_machine>
138
109
 
139
110
  <error_codes>
140
- | Code | Severity | Condition | Recovery |
141
- |------|----------|-----------|----------|
142
- | E001 | error | Target not resolvable (file not found, wiki ID not found, search returned 0) | Check path/ID, or rephrase topic for search |
143
- | E002 | error | `.workflow/` not initialized | Run `/maestro-init` first |
144
- | W001 | warning | Wiki graph unavailable (no .workflow/ wiki entries) — skipping context web | Proceed with code-only context (imports/exports) |
145
- | W002 | warning | coding-conventions.md not found — skipping convention comparison | Patterns flagged as "unknown convention status" |
146
- | W003 | warning | Target is very large (>1000 lines) — auto-switching to shallow depth | Use --depth deep to override |
111
+ | Code | Condition | Recovery |
112
+ |------|-----------|----------|
113
+ | W002 | coding-conventions.md not found | All patterns marked "unknown status" |
114
+ | W003 | Target > 1000 lines | Auto-switch to shallow; use --depth deep to override |
147
115
  </error_codes>
148
116
 
149
117
  <success_criteria>
150
- - [ ] Target resolved to concrete content (file, wiki entry, or search result)
151
- - [ ] Context web loaded (forward/backlinks for wiki, imports/exports for code)
152
- - [ ] Reading order established (sections/files ordered logically)
153
- - [ ] All 4 forcing questions applied per section
154
- - [ ] Patterns extracted with file:line anchors
155
- - [ ] Convention comparison performed against coding-conventions.md
156
- - [ ] Understanding map produced with: concepts, patterns, assumptions, questions, connections
157
- - [ ] `KNW-follow-{slug}-{date}.md` written
158
- - [ ] `specs/learnings.md` appended with discovered patterns as `<spec-entry>` blocks (stable INS-ids)
159
- - [ ] If --save-wiki: wiki note entry created
160
- - [ ] No files modified outside `.workflow/knowhow/` (and optionally wiki)
161
- - [ ] Summary displayed with next-step routing
118
+ - [ ] 4 forcing questions applied per section
119
+ - [ ] Patterns extracted with file:line anchors and convention cross-ref
120
+ - [ ] Understanding map + spec-entry blocks written
162
121
  </success_criteria>
122
+
123
+ <next_step_routing>
124
+ - Deep pattern dive → `/learn-decompose <path>`
125
+ - Add to specs → `/spec-add coding <description>`
126
+ - Second opinion → `/learn-second-opinion <file>`
127
+ </next_step_routing>