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
@@ -1,167 +1,167 @@
1
- ---
2
- name: learn-follow
3
- description: Guided follow-along reading of code or wiki entries, extracting patterns and building understanding
4
- argument-hint: "<path|wiki-id|topic> [--depth shallow|deep] [--save-wiki]"
5
- allowed-tools:
6
- - Read
7
- - Write
8
- - Bash
9
- - Glob
10
- - Grep
11
- - Agent
12
- - AskUserQuestion
13
- ---
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 `lessons.jsonl` and optionally become wiki note entries for the knowledge graph.
18
- </purpose>
19
-
20
- <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/learning/follow-{slug}-{YYYY-MM-DD}.md` — Reading notes with understanding map
35
- - `.workflow/learning/lessons.jsonl` — Appended pattern/technique insights
36
- - `.workflow/learning/learning-index.json` — Updated index
37
- - If `--save-wiki`: new wiki note entry
38
-
39
- **Storage read:**
40
- - Target source file or wiki entry
41
- - `maestro wiki backlinks <id>` / `maestro wiki forward <id>` — Relationship context
42
- - `.workflow/specs/coding-conventions.md` — Convention reference for pattern matching
43
- - `.workflow/learning/lessons.jsonl` — Prior insights for dedup and cross-reference
44
- </context>
45
-
46
- <execution>
47
-
48
- ### Stage 1: Resolve Target
49
- - If argument looks like a file path (contains `/` or `\`, or matches a glob): verify file exists via Read
50
- - If argument matches wiki ID pattern (`<type>-<slug>`): fetch via `maestro wiki get <id>` (offline mode)
51
- - 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.
52
- - If target cannot be resolved, AskUserQuestion with suggestions.
53
-
54
- ### Stage 2: Load Context Web
55
- For the resolved target, build a 1-hop context neighborhood:
56
-
57
- **If wiki entry:**
58
- - `maestro wiki forward <id>` — What this entry references
59
- - `maestro wiki backlinks <id>` — What references this entry
60
- - Read the body of top 3 related entries for context
61
-
62
- **If code file:**
63
- - Parse imports/requires to identify dependency files
64
- - Grep for exports used by other files (reverse dependencies)
65
- - Read the first 50 lines of top 3 dependent files for context
66
-
67
- **If directory:**
68
- - List files, identify entry points (index.ts, main.ts, cli.ts)
69
- - Build reading order: entry point → core modules → utilities → tests
70
-
71
- ### Stage 3: Build Reading Order
72
- - For a single file: split into logical sections (function boundaries, class boundaries, export groups)
73
- - For a wiki entry: split by markdown headings
74
- - For a directory: order files by dependency (entry points first, leaf modules last)
75
- - For `--depth shallow`: limit to top-level structure (function signatures, section headers)
76
- - For `--depth deep`: include every function body, every branch
77
-
78
- ### Stage 4: Guided Reading with Forcing Questions
79
- Walk through each section in reading order. For each section, apply 4 forcing questions:
80
-
81
- 1. **"What pattern is being used here?"** — Identify design patterns, idioms, conventions. Compare against `coding-conventions.md`.
82
- 2. **"Why this approach instead of alternatives?"** — What trade-offs were made? What was the simpler approach not chosen?
83
- 3. **"What assumption does this depend on?"** — What must be true for this code/content to be correct? External state? Input shape? Ordering?
84
- 4. **"What would break if this changed?"** — Fragility analysis. What downstream effects would a change have?
85
-
86
- Record answers as structured annotations per section.
87
-
88
- ### Stage 5: Extract Patterns
89
- From the forcing question answers, extract:
90
- - **Design patterns**: named patterns with code anchors (file:line)
91
- - **Naming conventions**: how things are named and why
92
- - **Error handling approach**: how errors flow through this code/content
93
- - **Data flow**: how data enters, transforms, and exits
94
- - **Assumptions**: explicit and implicit assumptions identified
95
-
96
- Cross-reference each pattern against existing `coding-conventions.md` entries:
97
- - Already documented → note as "confirmed convention"
98
- - Not documented → flag as "undocumented pattern" (candidate for `spec-add`)
99
-
100
- ### Stage 6: Produce Understanding Map
101
- Build a structured summary document:
102
-
103
- ```markdown
104
- # Follow-Along: {target name}
105
-
106
- ## Key Concepts
107
- - {concept}: {one-line explanation}
108
-
109
- ## Patterns Identified
110
- | Pattern | Location | Convention Status |
111
- |---------|----------|-------------------|
112
- | {name} | {file:line} | documented / undocumented |
113
-
114
- ## Assumptions
115
- - {assumption}: {what depends on it}
116
-
117
- ## Open Questions
118
- - {question}: {why it matters}
119
-
120
- ## Connections
121
- - Links to: {forward link entries}
122
- - Referenced by: {backlink entries}
123
- - Related lessons: {matching lessons.jsonl entries}
124
- ```
125
-
126
- ### Stage 7: Persist
127
- 1. Write `.workflow/learning/follow-{slug}-{date}.md` with the understanding map
128
- 2. Append each new pattern/technique as an insight to `lessons.jsonl`:
129
- - `source: "follow"`, `category: "pattern"` or `"technique"`
130
- - Tags: `["follow", "{target-slug}"]`
131
- - Stable INS-id from `hash("follow" + target + pattern_name)`
132
- 3. Update `learning-index.json`
133
- 4. If `--save-wiki`: run `maestro wiki create --type note --slug follow-{slug} --title "Follow-Along: {target}" --body-file .workflow/learning/follow-{slug}-{date}.md`
134
- 5. Display summary with key findings and next steps
135
-
136
- **Next-step routing:**
137
- - Deep dive into a discovered pattern → `/learn-decompose <path>`
138
- - Add undocumented pattern to specs → `/spec-add pattern <description>`
139
- - Get second opinion on a finding → `/learn-second-opinion <file>`
140
- - Browse related wiki entries → `/wiki-digest <topic>`
141
- </execution>
142
-
143
- <error_codes>
144
- | Code | Severity | Condition | Recovery |
145
- |------|----------|-----------|----------|
146
- | E001 | error | Target not resolvable (file not found, wiki ID not found, search returned 0) | Check path/ID, or rephrase topic for search |
147
- | E002 | error | `.workflow/` not initialized | Run `/maestro-init` first |
148
- | W001 | warning | Wiki graph unavailable (no .workflow/ wiki entries) — skipping context web | Proceed with code-only context (imports/exports) |
149
- | W002 | warning | coding-conventions.md not found — skipping convention comparison | Patterns flagged as "unknown convention status" |
150
- | W003 | warning | Target is very large (>1000 lines) — auto-switching to shallow depth | Use --depth deep to override |
151
- </error_codes>
152
-
153
- <success_criteria>
154
- - [ ] Target resolved to concrete content (file, wiki entry, or search result)
155
- - [ ] Context web loaded (forward/backlinks for wiki, imports/exports for code)
156
- - [ ] Reading order established (sections/files ordered logically)
157
- - [ ] All 4 forcing questions applied per section
158
- - [ ] Patterns extracted with file:line anchors
159
- - [ ] Convention comparison performed against coding-conventions.md
160
- - [ ] Understanding map produced with: concepts, patterns, assumptions, questions, connections
161
- - [ ] `follow-{slug}-{date}.md` written
162
- - [ ] `lessons.jsonl` appended with discovered patterns (stable INS-ids)
163
- - [ ] `learning-index.json` updated
164
- - [ ] If --save-wiki: wiki note entry created
165
- - [ ] No files modified outside `.workflow/learning/` (and optionally wiki)
166
- - [ ] Summary displayed with next-step routing
167
- </success_criteria>
1
+ ---
2
+ name: learn-follow
3
+ description: Guided follow-along reading of code or wiki entries, extracting patterns and building understanding
4
+ argument-hint: "<path|wiki-id|topic> [--depth shallow|deep] [--save-wiki]"
5
+ allowed-tools:
6
+ - Read
7
+ - Write
8
+ - Bash
9
+ - Glob
10
+ - Grep
11
+ - Agent
12
+ - AskUserQuestion
13
+ ---
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 `lessons.jsonl` and optionally become wiki note entries for the knowledge graph.
18
+ </purpose>
19
+
20
+ <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/learning/follow-{slug}-{YYYY-MM-DD}.md` — Reading notes with understanding map
35
+ - `.workflow/learning/lessons.jsonl` — Appended pattern/technique insights
36
+ - `.workflow/learning/learning-index.json` — Updated index
37
+ - If `--save-wiki`: new wiki note entry
38
+
39
+ **Storage read:**
40
+ - Target source file or wiki entry
41
+ - `maestro wiki backlinks <id>` / `maestro wiki forward <id>` — Relationship context
42
+ - `.workflow/specs/coding-conventions.md` — Convention reference for pattern matching
43
+ - `.workflow/learning/lessons.jsonl` — Prior insights for dedup and cross-reference
44
+ </context>
45
+
46
+ <execution>
47
+
48
+ ### Stage 1: Resolve Target
49
+ - If argument looks like a file path (contains `/` or `\`, or matches a glob): verify file exists via Read
50
+ - If argument matches wiki ID pattern (`<type>-<slug>`): fetch via `maestro wiki get <id>` (offline mode)
51
+ - 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.
52
+ - If target cannot be resolved, AskUserQuestion with suggestions.
53
+
54
+ ### Stage 2: Load Context Web
55
+ For the resolved target, build a 1-hop context neighborhood:
56
+
57
+ **If wiki entry:**
58
+ - `maestro wiki forward <id>` — What this entry references
59
+ - `maestro wiki backlinks <id>` — What references this entry
60
+ - Read the body of top 3 related entries for context
61
+
62
+ **If code file:**
63
+ - Parse imports/requires to identify dependency files
64
+ - Grep for exports used by other files (reverse dependencies)
65
+ - Read the first 50 lines of top 3 dependent files for context
66
+
67
+ **If directory:**
68
+ - List files, identify entry points (index.ts, main.ts, cli.ts)
69
+ - Build reading order: entry point → core modules → utilities → tests
70
+
71
+ ### Stage 3: Build Reading Order
72
+ - For a single file: split into logical sections (function boundaries, class boundaries, export groups)
73
+ - For a wiki entry: split by markdown headings
74
+ - For a directory: order files by dependency (entry points first, leaf modules last)
75
+ - For `--depth shallow`: limit to top-level structure (function signatures, section headers)
76
+ - For `--depth deep`: include every function body, every branch
77
+
78
+ ### Stage 4: Guided Reading with Forcing Questions
79
+ Walk through each section in reading order. For each section, apply 4 forcing questions:
80
+
81
+ 1. **"What pattern is being used here?"** — Identify design patterns, idioms, conventions. Compare against `coding-conventions.md`.
82
+ 2. **"Why this approach instead of alternatives?"** — What trade-offs were made? What was the simpler approach not chosen?
83
+ 3. **"What assumption does this depend on?"** — What must be true for this code/content to be correct? External state? Input shape? Ordering?
84
+ 4. **"What would break if this changed?"** — Fragility analysis. What downstream effects would a change have?
85
+
86
+ Record answers as structured annotations per section.
87
+
88
+ ### Stage 5: Extract Patterns
89
+ From the forcing question answers, extract:
90
+ - **Design patterns**: named patterns with code anchors (file:line)
91
+ - **Naming conventions**: how things are named and why
92
+ - **Error handling approach**: how errors flow through this code/content
93
+ - **Data flow**: how data enters, transforms, and exits
94
+ - **Assumptions**: explicit and implicit assumptions identified
95
+
96
+ Cross-reference each pattern against existing `coding-conventions.md` entries:
97
+ - Already documented → note as "confirmed convention"
98
+ - Not documented → flag as "undocumented pattern" (candidate for `spec-add`)
99
+
100
+ ### Stage 6: Produce Understanding Map
101
+ Build a structured summary document:
102
+
103
+ ```markdown
104
+ # Follow-Along: {target name}
105
+
106
+ ## Key Concepts
107
+ - {concept}: {one-line explanation}
108
+
109
+ ## Patterns Identified
110
+ | Pattern | Location | Convention Status |
111
+ |---------|----------|-------------------|
112
+ | {name} | {file:line} | documented / undocumented |
113
+
114
+ ## Assumptions
115
+ - {assumption}: {what depends on it}
116
+
117
+ ## Open Questions
118
+ - {question}: {why it matters}
119
+
120
+ ## Connections
121
+ - Links to: {forward link entries}
122
+ - Referenced by: {backlink entries}
123
+ - Related lessons: {matching lessons.jsonl entries}
124
+ ```
125
+
126
+ ### Stage 7: Persist
127
+ 1. Write `.workflow/learning/follow-{slug}-{date}.md` with the understanding map
128
+ 2. Append each new pattern/technique as an insight to `lessons.jsonl`:
129
+ - `source: "follow"`, `category: "pattern"` or `"technique"`
130
+ - Tags: `["follow", "{target-slug}"]`
131
+ - Stable INS-id from `hash("follow" + target + pattern_name)`
132
+ 3. Update `learning-index.json`
133
+ 4. If `--save-wiki`: run `maestro wiki create --type note --slug follow-{slug} --title "Follow-Along: {target}" --body-file .workflow/learning/follow-{slug}-{date}.md`
134
+ 5. Display summary with key findings and next steps
135
+
136
+ **Next-step routing:**
137
+ - Deep dive into a discovered pattern → `/learn-decompose <path>`
138
+ - Add undocumented pattern to specs → `/spec-add coding <description>`
139
+ - Get second opinion on a finding → `/learn-second-opinion <file>`
140
+ - Browse related wiki entries → `/wiki-digest <topic>`
141
+ </execution>
142
+
143
+ <error_codes>
144
+ | Code | Severity | Condition | Recovery |
145
+ |------|----------|-----------|----------|
146
+ | E001 | error | Target not resolvable (file not found, wiki ID not found, search returned 0) | Check path/ID, or rephrase topic for search |
147
+ | E002 | error | `.workflow/` not initialized | Run `/maestro-init` first |
148
+ | W001 | warning | Wiki graph unavailable (no .workflow/ wiki entries) — skipping context web | Proceed with code-only context (imports/exports) |
149
+ | W002 | warning | coding-conventions.md not found — skipping convention comparison | Patterns flagged as "unknown convention status" |
150
+ | W003 | warning | Target is very large (>1000 lines) — auto-switching to shallow depth | Use --depth deep to override |
151
+ </error_codes>
152
+
153
+ <success_criteria>
154
+ - [ ] Target resolved to concrete content (file, wiki entry, or search result)
155
+ - [ ] Context web loaded (forward/backlinks for wiki, imports/exports for code)
156
+ - [ ] Reading order established (sections/files ordered logically)
157
+ - [ ] All 4 forcing questions applied per section
158
+ - [ ] Patterns extracted with file:line anchors
159
+ - [ ] Convention comparison performed against coding-conventions.md
160
+ - [ ] Understanding map produced with: concepts, patterns, assumptions, questions, connections
161
+ - [ ] `follow-{slug}-{date}.md` written
162
+ - [ ] `lessons.jsonl` appended with discovered patterns (stable INS-ids)
163
+ - [ ] `learning-index.json` updated
164
+ - [ ] If --save-wiki: wiki note entry created
165
+ - [ ] No files modified outside `.workflow/learning/` (and optionally wiki)
166
+ - [ ] Summary displayed with next-step routing
167
+ </success_criteria>
@@ -145,7 +145,7 @@ git log --oneline --all --grep="decision\|chose\|decided\|architecture" -20
145
145
  ```
146
146
 
147
147
  Also read:
148
- - `.workflow/specs/architecture-constraints.md` — grep for `### [decision]` blocks
148
+ - `.workflow/specs/architecture-constraints.md` — grep for `<spec-entry category="arch"` blocks
149
149
  - `.workflow/phases/*/context.md` — scan for "Locked:", "Deferred:" sections
150
150
  - `.workflow/learning/lessons.jsonl` — filter `category == "decision"`
151
151
 
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: maestro-coordinate
3
3
  description: CLI-based coordinator - analyze intent → select command chain → execute sequentially via maestro delegate with auto-confirm
4
- argument-hint: "\"intent text\" [-y] [-c] [--dry-run] [--chain <name>] [--tool <tool>]"
4
+ argument-hint: "\"intent text\" [-y] [-c] [--dry-run] [--chain <name>]"
5
5
  allowed-tools:
6
6
  - Read
7
7
  - Write
@@ -36,7 +36,6 @@ $ARGUMENTS — user intent text, or special keywords (`continue`/`next`/`status`
36
36
  - `-c` / `--continue` — Resume previous session
37
37
  - `--dry-run` — Show planned chain without executing
38
38
  - `--chain <name>` — Force a specific chain
39
- - `--tool <tool>` — CLI tool override (default: claude)
40
39
  </context>
41
40
 
42
41
  <execution>
@@ -50,7 +49,6 @@ Follow '~/.maestro/workflows/maestro-coordinate.md' completely.
50
49
  | E002 | error | Clarity too low after 2 rounds | Ask to rephrase |
51
50
  | E003 | error | Step failed + abort | Suggest resume with -c |
52
51
  | E004 | error | Resume session not found | Show available sessions |
53
- | E005 | error | CLI tool unavailable | Try fallback tool |
54
52
  </error_codes>
55
53
 
56
54
  <success_criteria>
@@ -1,131 +1,131 @@
1
- ---
2
- name: manage-harvest
3
- description: Extract knowledge from workflow artifacts and route to wiki / spec / issue stores
4
- argument-hint: "[<session-id|path>] [--to wiki|spec|issue|auto] [--source <type>] [--recent N] [--dry-run] [-y]"
5
- allowed-tools:
6
- - Read
7
- - Write
8
- - Edit
9
- - Bash
10
- - Glob
11
- - Grep
12
- - Agent
13
- - AskUserQuestion
14
- ---
15
- <purpose>
16
- Extract knowledge fragments from workflow artifacts (analysis results, brainstorm outputs, debug sessions, lite-plan/fix results, scratchpad notes, completed sessions) and route them into the project's three knowledge stores: wiki entries, spec conventions, and trackable issues.
17
-
18
- Complements `quality-retrospective` (which is phase-scoped) by harvesting from **any** workflow artifact. Prevents knowledge loss from completed analysis and planning sessions that would otherwise only exist as stale files.
19
-
20
- **Closed-loop**: harvest extracts → wiki/spec/issue stores → downstream commands consume (wiki-digest, spec-load, maestro-plan --gaps).
21
- </purpose>
22
-
23
- <required_reading>
24
- @~/.maestro/workflows/harvest.md
25
- </required_reading>
26
-
27
- <deferred_reading>
28
- - @~/.maestro/workflows/issue.md (issues.jsonl schema for issue routing — read when creating issues in Stage 6c)
29
- - @~/.maestro/workflows/specs-add.md (spec entry format — read when routing to spec in Stage 6b)
30
- </deferred_reading>
31
-
32
- <context>
33
- Arguments: $ARGUMENTS
34
-
35
- **Modes (auto-detected):**
36
- - No arguments → `scan` mode: discover all harvestable artifacts, interactive selection
37
- - `<session-id>` (e.g., `ANL-auth-20260410`, `WFS-xxx`) → `session` mode: harvest specific session
38
- - `<path>` (e.g., `.workflow/.analysis/ANL-auth-20260410/`) → `path` mode: harvest from explicit directory
39
-
40
- **Flags:**
41
- - `--to <target>` — Force routing: `wiki`, `spec`, `issue`, `auto` (default: `auto`)
42
- - `--source <type>` — Filter source type: `analysis`, `brainstorm`, `debug`, `lite-plan`, `lite-fix`, `scratchpad`, `session`, `learning`, `all` (default: `all`)
43
- - `--recent N` — Only artifacts updated within last N days (default: 30)
44
- - `--dry-run` — Preview extraction and routing without writing
45
- - `-y` / `--yes` — Skip confirmation prompts
46
- - `--min-confidence N` — Minimum extraction confidence 0.0-1.0 (default: 0.5)
47
-
48
- **Source registry (scan paths):**
49
- | Source Type | Scan Path | Key Files |
50
- |-------------|-----------|-----------|
51
- | `analysis` | `.workflow/.analysis/ANL-*/` | `conclusions.json`, `*.md` |
52
- | `brainstorm` | `.workflow/scratch/brainstorm-*/` | `guidance-specification.md` |
53
- | `lite-plan` | `.workflow/.lite-plan/*/` | `plan.json`, `plan-overview.md` |
54
- | `lite-fix` | `.workflow/.lite-fix/*/` | `fix-plan.json` |
55
- | `debug` | `.workflow/.debug/*/` | `debug-log.md`, `hypothesis-*.md` |
56
- | `scratchpad` | `.workflow/.scratchpad/` | `*.md`, `*.json` |
57
- | `session` | `.workflow/active/WFS-*/` | `workflow-session.json` |
58
- | `learning` | `.workflow/learning/` | `lessons.jsonl`, `digest-*.md` |
59
-
60
- **Storage written:**
61
- - `.workflow/harvest/harvest-log.jsonl` — provenance log (prevents duplicate harvesting)
62
- - `.workflow/harvest/harvest-report-{date}.md` — per-run report
63
- - Wiki entries via `maestro wiki create`
64
- - Spec entries via `Skill({ skill: "spec-add" })`
65
- - Issue entries appended to `.workflow/issues/issues.jsonl`
66
-
67
- **Storage read (never modified):**
68
- - All artifact source files (read-only until routing stage)
69
- - `.workflow/harvest/harvest-log.jsonl` (dedup check)
70
- </context>
71
-
72
- <execution>
73
- Follow '~/.maestro/workflows/harvest.md' Stages 1–8 in order. Key invariants:
74
-
75
- 1. **Read-only until Stage 6** — Stages 1–5 must not write anything. All extraction and classification happens in-memory.
76
- 2. **Dedup before write** — Stage 7 (dedup_check) runs BEFORE each write in Stage 6. Check harvest-log.jsonl, wiki search, issues.jsonl, and learnings.md for existing matches.
77
- 3. **Stable fragment IDs** — `HRV-{8 hex}` from `hash(source_id + content_hash)` so re-runs on same artifacts do not create duplicates.
78
- 4. **Reuse existing routing infrastructure**:
79
- - Wiki: `maestro wiki create --type <type> --slug harvest-<source_type>-<short_id>`
80
- - Spec: `Skill({ skill: "spec-add", args: "<type> <content>" })`
81
- - Issue: append to `issues.jsonl` matching canonical schema from `workflows/issue.md`
82
- 5. **Never modify source artifacts** — harvest is purely extractive. Source files remain untouched.
83
- 6. **Confidence filtering** — fragments below `--min-confidence` are logged but not routed.
84
- 7. **Provenance tracking** — every routed item logged to `harvest-log.jsonl` with fragment_id, source reference, and target reference.
85
-
86
- **Fragment extraction uses source-specific parsing** (see harvest.md Stage 3b for per-source patterns). The agent should read each artifact file and identify discrete knowledge items: findings, decisions, patterns, bugs, risks, tasks, lessons, recommendations.
87
-
88
- **Classification uses category-to-target mapping** (see harvest.md Stage 4). Override with `--to` flag if user wants all items in one store.
89
-
90
- **Next-step routing on completion:**
91
- - Review wiki entries → `maestro wiki list --type note`
92
- - Connect wiki graph → `/wiki-connect --fix`
93
- - Triage issues → `/manage-issue list --source harvest`
94
- - View specs → `/spec-load --category general`
95
- - Full retrospective → `/quality-retrospective`
96
- </execution>
97
-
98
- <error_codes>
99
- | Code | Severity | Condition | Recovery |
100
- |------|----------|-----------|----------|
101
- | E001 | error | `.workflow/` not initialized | Run `/maestro-init` first |
102
- | E002 | error | Invalid `--to` target (must be: wiki, spec, issue, auto) | Display valid options |
103
- | E003 | error | Invalid `--source` type | Display valid source types from registry |
104
- | E004 | error | Session ID not found in any source path | Show available sessions with `--source all` |
105
- | E005 | error | Path does not exist or contains no parseable artifacts | Verify path and file structure |
106
- | W001 | warning | No harvestable artifacts found within `--recent` window | Widen time window or check `.workflow/` contents |
107
- | W002 | warning | `maestro wiki create` failed — wiki entries saved to `.workflow/harvest/wiki-pending-*.md` | Apply pending entries manually or retry |
108
- | W003 | warning | Some fragments below confidence threshold — logged but not routed | Lower `--min-confidence` to include |
109
- | W004 | warning | Duplicate fragments skipped | Review harvest-log.jsonl for prior routing |
110
- | W005 | warning | `.workflow/issues/` directory missing | Auto-create directory and empty issues.jsonl |
111
- </error_codes>
112
-
113
- <success_criteria>
114
- - [ ] Mode correctly resolved (scan / session / path)
115
- - [ ] Source artifacts discovered and listed with metadata
116
- - [ ] User selected artifact(s) to harvest (or auto-selected via session/path mode)
117
- - [ ] All files in selected artifacts loaded and parsed
118
- - [ ] Knowledge fragments extracted with category, confidence, tags
119
- - [ ] Fragments filtered by `--min-confidence`
120
- - [ ] Routing classification applied (auto or forced by `--to`)
121
- - [ ] Dedup check passed against harvest-log.jsonl and existing stores
122
- - [ ] If `--dry-run`: preview displayed, no files written
123
- - [ ] If not dry-run: all routed items written to target stores
124
- - [ ] Wiki entries created via `maestro wiki create` (or fallback to pending files)
125
- - [ ] Spec entries added via `spec-add` mechanism
126
- - [ ] Issue entries appended to `issues.jsonl` with canonical schema
127
- - [ ] `harvest-log.jsonl` updated with provenance for each routed item
128
- - [ ] `harvest-report-{date}.md` written with full summary
129
- - [ ] No source artifacts modified
130
- - [ ] Summary displayed with counts and next-step routing
131
- </success_criteria>
1
+ ---
2
+ name: manage-harvest
3
+ description: Extract knowledge from workflow artifacts and route to wiki / spec / issue stores
4
+ argument-hint: "[<session-id|path>] [--to wiki|spec|issue|auto] [--source <type>] [--recent N] [--dry-run] [-y]"
5
+ allowed-tools:
6
+ - Read
7
+ - Write
8
+ - Edit
9
+ - Bash
10
+ - Glob
11
+ - Grep
12
+ - Agent
13
+ - AskUserQuestion
14
+ ---
15
+ <purpose>
16
+ Extract knowledge fragments from workflow artifacts (analysis results, brainstorm outputs, debug sessions, lite-plan/fix results, scratchpad notes, completed sessions) and route them into the project's three knowledge stores: wiki entries, spec conventions, and trackable issues.
17
+
18
+ Complements `quality-retrospective` (which is phase-scoped) by harvesting from **any** workflow artifact. Prevents knowledge loss from completed analysis and planning sessions that would otherwise only exist as stale files.
19
+
20
+ **Closed-loop**: harvest extracts → wiki/spec/issue stores → downstream commands consume (wiki-digest, spec-load, maestro-plan --gaps).
21
+ </purpose>
22
+
23
+ <required_reading>
24
+ @~/.maestro/workflows/harvest.md
25
+ </required_reading>
26
+
27
+ <deferred_reading>
28
+ - @~/.maestro/workflows/issue.md (issues.jsonl schema for issue routing — read when creating issues in Stage 6c)
29
+ - @~/.maestro/workflows/specs-add.md (spec entry format — read when routing to spec in Stage 6b)
30
+ </deferred_reading>
31
+
32
+ <context>
33
+ Arguments: $ARGUMENTS
34
+
35
+ **Modes (auto-detected):**
36
+ - No arguments → `scan` mode: discover all harvestable artifacts, interactive selection
37
+ - `<session-id>` (e.g., `ANL-auth-20260410`, `WFS-xxx`) → `session` mode: harvest specific session
38
+ - `<path>` (e.g., `.workflow/.analysis/ANL-auth-20260410/`) → `path` mode: harvest from explicit directory
39
+
40
+ **Flags:**
41
+ - `--to <target>` — Force routing: `wiki`, `spec`, `issue`, `auto` (default: `auto`)
42
+ - `--source <type>` — Filter source type: `analysis`, `brainstorm`, `debug`, `lite-plan`, `lite-fix`, `scratchpad`, `session`, `learning`, `all` (default: `all`)
43
+ - `--recent N` — Only artifacts updated within last N days (default: 30)
44
+ - `--dry-run` — Preview extraction and routing without writing
45
+ - `-y` / `--yes` — Skip confirmation prompts
46
+ - `--min-confidence N` — Minimum extraction confidence 0.0-1.0 (default: 0.5)
47
+
48
+ **Source registry (scan paths):**
49
+ | Source Type | Scan Path | Key Files |
50
+ |-------------|-----------|-----------|
51
+ | `analysis` | `.workflow/.analysis/ANL-*/` | `conclusions.json`, `*.md` |
52
+ | `brainstorm` | `.workflow/scratch/brainstorm-*/` | `guidance-specification.md` |
53
+ | `lite-plan` | `.workflow/.lite-plan/*/` | `plan.json`, `plan-overview.md` |
54
+ | `lite-fix` | `.workflow/.lite-fix/*/` | `fix-plan.json` |
55
+ | `debug` | `.workflow/.debug/*/` | `debug-log.md`, `hypothesis-*.md` |
56
+ | `scratchpad` | `.workflow/.scratchpad/` | `*.md`, `*.json` |
57
+ | `session` | `.workflow/active/WFS-*/` | `workflow-session.json` |
58
+ | `learning` | `.workflow/learning/` | `lessons.jsonl`, `digest-*.md` |
59
+
60
+ **Storage written:**
61
+ - `.workflow/harvest/harvest-log.jsonl` — provenance log (prevents duplicate harvesting)
62
+ - `.workflow/harvest/harvest-report-{date}.md` — per-run report
63
+ - Wiki entries via `maestro wiki create`
64
+ - Spec entries via `Skill({ skill: "spec-add" })`
65
+ - Issue entries appended to `.workflow/issues/issues.jsonl`
66
+
67
+ **Storage read (never modified):**
68
+ - All artifact source files (read-only until routing stage)
69
+ - `.workflow/harvest/harvest-log.jsonl` (dedup check)
70
+ </context>
71
+
72
+ <execution>
73
+ Follow '~/.maestro/workflows/harvest.md' Stages 1–8 in order. Key invariants:
74
+
75
+ 1. **Read-only until Stage 6** — Stages 1–5 must not write anything. All extraction and classification happens in-memory.
76
+ 2. **Dedup before write** — Stage 7 (dedup_check) runs BEFORE each write in Stage 6. Check harvest-log.jsonl, wiki search, issues.jsonl, and learnings.md for existing matches.
77
+ 3. **Stable fragment IDs** — `HRV-{8 hex}` from `hash(source_id + content_hash)` so re-runs on same artifacts do not create duplicates.
78
+ 4. **Reuse existing routing infrastructure**:
79
+ - Wiki: `maestro wiki create --type <type> --slug harvest-<source_type>-<short_id>`
80
+ - Spec: `Skill({ skill: "spec-add", args: "<category> <content>" })`
81
+ - Issue: append to `issues.jsonl` matching canonical schema from `workflows/issue.md`
82
+ 5. **Never modify source artifacts** — harvest is purely extractive. Source files remain untouched.
83
+ 6. **Confidence filtering** — fragments below `--min-confidence` are logged but not routed.
84
+ 7. **Provenance tracking** — every routed item logged to `harvest-log.jsonl` with fragment_id, source reference, and target reference.
85
+
86
+ **Fragment extraction uses source-specific parsing** (see harvest.md Stage 3b for per-source patterns). The agent should read each artifact file and identify discrete knowledge items: findings, decisions, patterns, bugs, risks, tasks, lessons, recommendations.
87
+
88
+ **Classification uses category-to-target mapping** (see harvest.md Stage 4). Override with `--to` flag if user wants all items in one store.
89
+
90
+ **Next-step routing on completion:**
91
+ - Review wiki entries → `maestro wiki list --type note`
92
+ - Connect wiki graph → `/wiki-connect --fix`
93
+ - Triage issues → `/manage-issue list --source harvest`
94
+ - View specs → `/spec-load --category learning`
95
+ - Full retrospective → `/quality-retrospective`
96
+ </execution>
97
+
98
+ <error_codes>
99
+ | Code | Severity | Condition | Recovery |
100
+ |------|----------|-----------|----------|
101
+ | E001 | error | `.workflow/` not initialized | Run `/maestro-init` first |
102
+ | E002 | error | Invalid `--to` target (must be: wiki, spec, issue, auto) | Display valid options |
103
+ | E003 | error | Invalid `--source` type | Display valid source types from registry |
104
+ | E004 | error | Session ID not found in any source path | Show available sessions with `--source all` |
105
+ | E005 | error | Path does not exist or contains no parseable artifacts | Verify path and file structure |
106
+ | W001 | warning | No harvestable artifacts found within `--recent` window | Widen time window or check `.workflow/` contents |
107
+ | W002 | warning | `maestro wiki create` failed — wiki entries saved to `.workflow/harvest/wiki-pending-*.md` | Apply pending entries manually or retry |
108
+ | W003 | warning | Some fragments below confidence threshold — logged but not routed | Lower `--min-confidence` to include |
109
+ | W004 | warning | Duplicate fragments skipped | Review harvest-log.jsonl for prior routing |
110
+ | W005 | warning | `.workflow/issues/` directory missing | Auto-create directory and empty issues.jsonl |
111
+ </error_codes>
112
+
113
+ <success_criteria>
114
+ - [ ] Mode correctly resolved (scan / session / path)
115
+ - [ ] Source artifacts discovered and listed with metadata
116
+ - [ ] User selected artifact(s) to harvest (or auto-selected via session/path mode)
117
+ - [ ] All files in selected artifacts loaded and parsed
118
+ - [ ] Knowledge fragments extracted with category, confidence, tags
119
+ - [ ] Fragments filtered by `--min-confidence`
120
+ - [ ] Routing classification applied (auto or forced by `--to`)
121
+ - [ ] Dedup check passed against harvest-log.jsonl and existing stores
122
+ - [ ] If `--dry-run`: preview displayed, no files written
123
+ - [ ] If not dry-run: all routed items written to target stores
124
+ - [ ] Wiki entries created via `maestro wiki create` (or fallback to pending files)
125
+ - [ ] Spec entries added via `spec-add` mechanism
126
+ - [ ] Issue entries appended to `issues.jsonl` with canonical schema
127
+ - [ ] `harvest-log.jsonl` updated with provenance for each routed item
128
+ - [ ] `harvest-report-{date}.md` written with full summary
129
+ - [ ] No source artifacts modified
130
+ - [ ] Summary displayed with counts and next-step routing
131
+ </success_criteria>