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.
- package/.claude/agents/workflow-collab-planner.md +1 -1
- package/.claude/agents/workflow-executor.md +1 -1
- package/.claude/agents/workflow-plan-checker.md +1 -1
- package/.claude/agents/workflow-planner.md +1 -1
- package/.claude/commands/learn-decompose.md +176 -176
- package/.claude/commands/learn-follow.md +167 -167
- package/.claude/commands/learn-retro.md +1 -1
- package/.claude/commands/maestro-coordinate.md +1 -3
- package/.claude/commands/manage-harvest.md +131 -131
- package/.claude/commands/manage-issue.md +2 -2
- package/.claude/commands/spec-add.md +67 -56
- package/.claude/commands/spec-load.md +66 -64
- package/.claude/commands/spec-setup.md +5 -9
- package/.codex/skills/learn-decompose/SKILL.md +119 -0
- package/.codex/skills/learn-follow/SKILL.md +83 -0
- package/.codex/skills/learn-investigate/SKILL.md +83 -0
- package/.codex/skills/learn-retro/SKILL.md +83 -0
- package/.codex/skills/learn-second-opinion/SKILL.md +86 -0
- package/.codex/skills/maestro/SKILL.md +151 -279
- package/.codex/skills/maestro-analyze/SKILL.md +59 -71
- package/.codex/skills/maestro-brainstorm/SKILL.md +452 -463
- package/.codex/skills/maestro-chain/SKILL.md +95 -110
- package/.codex/skills/maestro-coordinate/SKILL.md +68 -234
- package/.codex/skills/maestro-execute/SKILL.md +435 -446
- package/.codex/skills/maestro-fork/SKILL.md +68 -0
- package/.codex/skills/maestro-init/SKILL.md +171 -167
- package/.codex/skills/maestro-learn/SKILL.md +80 -0
- package/.codex/skills/maestro-link-coordinate/SKILL.md +224 -220
- package/.codex/skills/maestro-merge/SKILL.md +62 -0
- package/.codex/skills/maestro-milestone-audit/SKILL.md +108 -103
- package/.codex/skills/maestro-milestone-complete/SKILL.md +155 -149
- package/.codex/skills/maestro-milestone-release/SKILL.md +70 -0
- package/.codex/skills/maestro-overlay/SKILL.md +188 -185
- package/.codex/skills/maestro-plan/SKILL.md +58 -69
- package/.codex/skills/maestro-quick/SKILL.md +26 -23
- package/.codex/skills/maestro-roadmap/SKILL.md +65 -73
- package/.codex/skills/maestro-spec-generate/SKILL.md +66 -74
- package/.codex/skills/maestro-ui-design/SKILL.md +34 -31
- package/.codex/skills/maestro-verify/SKILL.md +556 -566
- package/.codex/skills/manage-codebase-rebuild/SKILL.md +397 -405
- package/.codex/skills/manage-codebase-refresh/SKILL.md +93 -82
- package/.codex/skills/manage-harvest/SKILL.md +82 -0
- package/.codex/skills/manage-issue/SKILL.md +80 -65
- package/.codex/skills/manage-issue-discover/SKILL.md +491 -503
- package/.codex/skills/manage-learn/SKILL.md +190 -186
- package/.codex/skills/manage-memory/SKILL.md +95 -72
- package/.codex/skills/manage-memory-capture/SKILL.md +99 -86
- package/.codex/skills/manage-status/SKILL.md +102 -89
- package/.codex/skills/quality-business-test/SKILL.md +228 -223
- package/.codex/skills/quality-debug/SKILL.md +54 -66
- package/.codex/skills/quality-integration-test/SKILL.md +532 -544
- package/.codex/skills/quality-refactor/SKILL.md +197 -191
- package/.codex/skills/quality-retrospective/SKILL.md +512 -505
- package/.codex/skills/quality-review/SKILL.md +93 -105
- package/.codex/skills/quality-sync/SKILL.md +101 -89
- package/.codex/skills/quality-test/SKILL.md +202 -198
- package/.codex/skills/quality-test-gen/SKILL.md +93 -104
- package/.codex/skills/spec-add/SKILL.md +58 -39
- package/.codex/skills/spec-load/SKILL.md +45 -40
- package/.codex/skills/spec-map/SKILL.md +180 -182
- package/.codex/skills/spec-setup/SKILL.md +94 -76
- package/.codex/skills/team-coordinate/SKILL.md +346 -357
- package/.codex/skills/team-executor/SKILL.md +70 -112
- package/.codex/skills/team-lifecycle-v4/SKILL.md +311 -299
- package/.codex/skills/team-quality-assurance/SKILL.md +234 -227
- package/.codex/skills/team-review/SKILL.md +232 -225
- package/.codex/skills/team-tech-debt/SKILL.md +78 -100
- package/.codex/skills/team-testing/SKILL.md +242 -235
- package/.codex/skills/wiki-connect/SKILL.md +75 -0
- package/.codex/skills/wiki-digest/SKILL.md +87 -0
- package/README.md +7 -4
- package/README.zh-CN.md +7 -4
- package/dashboard/dist-server/dashboard/src/server/routes/specs.d.ts +1 -1
- package/dashboard/dist-server/dashboard/src/server/routes/specs.js +75 -30
- package/dashboard/dist-server/dashboard/src/server/routes/specs.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/state/event-bus.d.ts +5 -0
- package/dashboard/dist-server/dashboard/src/server/state/event-bus.js +5 -0
- package/dashboard/dist-server/dashboard/src/server/state/event-bus.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/shared/constants.js +5 -0
- package/dashboard/dist-server/dashboard/src/shared/constants.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/shared/team-types.d.ts +21 -0
- package/dashboard/dist-server/dashboard/src/shared/team-types.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/shared/types.d.ts +3 -2
- package/dashboard/dist-server/dashboard/src/shared/ws-protocol.d.ts +1 -1
- package/dashboard/dist-server/dashboard/src/shared/ws-protocol.js.map +1 -1
- package/dashboard/dist-server/src/hooks/constants.d.ts +2 -0
- package/dashboard/dist-server/src/hooks/constants.js +2 -0
- package/dashboard/dist-server/src/hooks/constants.js.map +1 -1
- package/dist/src/commands/collab.js +4 -4
- package/dist/src/commands/collab.js.map +1 -1
- package/dist/src/commands/hooks.d.ts.map +1 -1
- package/dist/src/commands/hooks.js +66 -1
- package/dist/src/commands/hooks.js.map +1 -1
- package/dist/src/commands/spec.d.ts.map +1 -1
- package/dist/src/commands/spec.js +7 -2
- package/dist/src/commands/spec.js.map +1 -1
- package/dist/src/hooks/constants.d.ts +2 -0
- package/dist/src/hooks/constants.d.ts.map +1 -1
- package/dist/src/hooks/constants.js +2 -0
- package/dist/src/hooks/constants.js.map +1 -1
- package/dist/src/hooks/guards/index.d.ts +1 -0
- package/dist/src/hooks/guards/index.d.ts.map +1 -1
- package/dist/src/hooks/guards/index.js +1 -0
- package/dist/src/hooks/guards/index.js.map +1 -1
- package/dist/src/hooks/guards/spec-validator.d.ts +25 -0
- package/dist/src/hooks/guards/spec-validator.d.ts.map +1 -0
- package/dist/src/hooks/guards/spec-validator.js +66 -0
- package/dist/src/hooks/guards/spec-validator.js.map +1 -0
- package/dist/src/hooks/keyword-spec-injector.d.ts +21 -0
- package/dist/src/hooks/keyword-spec-injector.d.ts.map +1 -0
- package/dist/src/hooks/keyword-spec-injector.js +96 -0
- package/dist/src/hooks/keyword-spec-injector.js.map +1 -0
- package/dist/src/hooks/plugins/spec-injection-plugin.d.ts +2 -1
- package/dist/src/hooks/plugins/spec-injection-plugin.d.ts.map +1 -1
- package/dist/src/hooks/plugins/spec-injection-plugin.js +21 -12
- package/dist/src/hooks/plugins/spec-injection-plugin.js.map +1 -1
- package/dist/src/hooks/spec-bridge.d.ts +40 -0
- package/dist/src/hooks/spec-bridge.d.ts.map +1 -0
- package/dist/src/hooks/spec-bridge.js +97 -0
- package/dist/src/hooks/spec-bridge.js.map +1 -0
- package/dist/src/hooks/spec-injector.d.ts.map +1 -1
- package/dist/src/hooks/spec-injector.js +18 -12
- package/dist/src/hooks/spec-injector.js.map +1 -1
- package/dist/src/team/phase-orchestrator.d.ts +52 -0
- package/dist/src/team/phase-orchestrator.d.ts.map +1 -0
- package/dist/src/team/phase-orchestrator.js +165 -0
- package/dist/src/team/phase-orchestrator.js.map +1 -0
- package/dist/src/team/phase-types.d.ts +51 -0
- package/dist/src/team/phase-types.d.ts.map +1 -0
- package/dist/src/team/phase-types.js +41 -0
- package/dist/src/team/phase-types.js.map +1 -0
- package/dist/src/tools/index.d.ts.map +1 -1
- package/dist/src/tools/index.js +6 -0
- package/dist/src/tools/index.js.map +1 -1
- package/dist/src/tools/spec-entry-parser.d.ts +56 -0
- package/dist/src/tools/spec-entry-parser.d.ts.map +1 -0
- package/dist/src/tools/spec-entry-parser.js +196 -0
- package/dist/src/tools/spec-entry-parser.js.map +1 -0
- package/dist/src/tools/spec-init.d.ts.map +1 -1
- package/dist/src/tools/spec-init.js +66 -92
- package/dist/src/tools/spec-init.js.map +1 -1
- package/dist/src/tools/spec-keyword-index.d.ts +30 -0
- package/dist/src/tools/spec-keyword-index.d.ts.map +1 -0
- package/dist/src/tools/spec-keyword-index.js +101 -0
- package/dist/src/tools/spec-keyword-index.js.map +1 -0
- package/dist/src/tools/spec-loader.d.ts +3 -3
- package/dist/src/tools/spec-loader.d.ts.map +1 -1
- package/dist/src/tools/spec-loader.js +49 -23
- package/dist/src/tools/spec-loader.js.map +1 -1
- package/dist/src/tools/team-agents.d.ts +27 -0
- package/dist/src/tools/team-agents.d.ts.map +1 -0
- package/dist/src/tools/team-agents.js +362 -0
- package/dist/src/tools/team-agents.js.map +1 -0
- package/dist/src/tools/team-mailbox.d.ts +40 -0
- package/dist/src/tools/team-mailbox.d.ts.map +1 -0
- package/dist/src/tools/team-mailbox.js +384 -0
- package/dist/src/tools/team-mailbox.js.map +1 -0
- package/dist/src/tools/team-msg.d.ts +17 -8
- package/dist/src/tools/team-msg.d.ts.map +1 -1
- package/dist/src/tools/team-msg.js +110 -13
- package/dist/src/tools/team-msg.js.map +1 -1
- package/dist/src/tools/team-tasks-mcp.d.ts +27 -0
- package/dist/src/tools/team-tasks-mcp.d.ts.map +1 -0
- package/dist/src/tools/team-tasks-mcp.js +408 -0
- package/dist/src/tools/team-tasks-mcp.js.map +1 -0
- package/package.json +2 -1
- package/workflows/analyze.md +816 -816
- package/workflows/brainstorm.md +471 -471
- package/workflows/codebase-rebuild.md +332 -332
- package/workflows/codebase-refresh.md +240 -240
- package/workflows/execute.md +1 -1
- package/workflows/harvest.md +420 -420
- package/workflows/integration-test.md +343 -343
- package/workflows/issue-discover.md +414 -414
- package/workflows/map.md +111 -111
- package/workflows/milestone-complete.md +176 -176
- package/workflows/plan.md +1 -1
- package/workflows/quick.md +497 -497
- package/workflows/refactor.md +300 -300
- package/workflows/roadmap.md +335 -335
- package/workflows/spec-generate.md +640 -640
- package/workflows/specs-add.md +46 -81
- package/workflows/specs-load.md +15 -17
- 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
|
|
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
|
|
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>]
|
|
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: "<
|
|
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
|
|
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>
|