maestro-flow 0.5.3 → 0.5.31
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/.agents/skills/learn-follow/SKILL.md +114 -114
- package/.agents/skills/learn-investigate/SKILL.md +138 -139
- package/.agents/skills/learn-second-opinion/SKILL.md +105 -109
- package/.agents/skills/maestro/SKILL.md +2 -10
- package/.agents/skills/maestro-amend/SKILL.md +152 -152
- package/.agents/skills/maestro-analyze/SKILL.md +201 -252
- package/.agents/skills/maestro-blueprint/SKILL.md +175 -190
- package/.agents/skills/maestro-brainstorm/SKILL.md +196 -200
- package/.agents/skills/maestro-collab/SKILL.md +159 -159
- package/.agents/skills/maestro-companion/SKILL.md +517 -517
- package/.agents/skills/maestro-composer/SKILL.md +173 -164
- package/.agents/skills/maestro-execute/SKILL.md +169 -170
- package/.agents/skills/maestro-fork/SKILL.md +97 -96
- package/.agents/skills/maestro-grill/SKILL.md +161 -162
- package/.agents/skills/maestro-guard/SKILL.md +93 -92
- package/.agents/skills/maestro-impeccable/SKILL.md +296 -253
- package/.agents/skills/maestro-init/SKILL.md +117 -118
- package/.agents/skills/maestro-merge/SKILL.md +73 -66
- package/.agents/skills/maestro-milestone-audit/SKILL.md +4 -10
- package/.agents/skills/maestro-milestone-complete/SKILL.md +6 -7
- package/.agents/skills/maestro-milestone-release/SKILL.md +122 -131
- package/.agents/skills/maestro-next/SKILL.md +241 -245
- package/.agents/skills/maestro-overlay/SKILL.md +176 -166
- package/.agents/skills/maestro-plan/SKILL.md +211 -197
- package/.agents/skills/maestro-player/SKILL.md +167 -167
- package/.agents/skills/maestro-quick/SKILL.md +69 -63
- package/.agents/skills/maestro-ralph/SKILL.md +2 -36
- package/.agents/skills/maestro-ralph-beta/SKILL.md +861 -872
- package/.agents/skills/maestro-ralph-execute/SKILL.md +234 -234
- package/.agents/skills/maestro-roadmap/SKILL.md +159 -172
- package/.agents/skills/maestro-swarm-workflow/SKILL.md +229 -250
- package/.agents/skills/maestro-tools-execute/SKILL.md +108 -103
- package/.agents/skills/maestro-tools-register/SKILL.md +148 -143
- package/.agents/skills/maestro-ui-codify/SKILL.md +103 -86
- package/.agents/skills/maestro-universal-workflow/SKILL.md +534 -547
- package/.agents/skills/maestro-update/SKILL.md +109 -106
- package/.agents/skills/manage-codebase-rebuild/SKILL.md +73 -71
- package/.agents/skills/manage-harvest/SKILL.md +83 -81
- package/.agents/skills/manage-issue/SKILL.md +59 -60
- package/.agents/skills/manage-issue-discover/SKILL.md +70 -68
- package/.agents/skills/manage-kg-extractors/SKILL.md +130 -0
- package/.agents/skills/manage-knowhow/SKILL.md +70 -66
- package/.agents/skills/manage-knowhow-capture/SKILL.md +79 -69
- package/.agents/skills/manage-knowledge-audit/SKILL.md +91 -74
- package/.agents/skills/manage-status/SKILL.md +52 -42
- package/.agents/skills/manage-wiki/SKILL.md +69 -58
- package/.agents/skills/odyssey-debug/SKILL.md +445 -459
- package/.agents/skills/odyssey-improve/SKILL.md +477 -491
- package/.agents/skills/odyssey-planex/SKILL.md +576 -587
- package/.agents/skills/odyssey-review-test-fix/SKILL.md +400 -413
- package/.agents/skills/odyssey-ui/SKILL.md +431 -448
- package/.agents/skills/quality-auto-test/SKILL.md +140 -123
- package/.agents/skills/quality-debug/SKILL.md +145 -106
- package/.agents/skills/quality-refactor/SKILL.md +91 -53
- package/.agents/skills/quality-retrospective/SKILL.md +109 -63
- package/.agents/skills/quality-review/SKILL.md +141 -114
- package/.agents/skills/quality-sync/SKILL.md +74 -38
- package/.agents/skills/quality-test/SKILL.md +133 -103
- package/.agents/skills/security-audit/SKILL.md +217 -166
- package/.agents/skills/spec-add/SKILL.md +66 -59
- package/.agents/skills/spec-load/SKILL.md +68 -68
- package/.agents/skills/spec-remove/SKILL.md +42 -42
- package/.agents/skills/spec-setup/SKILL.md +38 -41
- package/.agy/skills/learn-follow/SKILL.md +114 -114
- package/.agy/skills/learn-investigate/SKILL.md +138 -139
- package/.agy/skills/learn-second-opinion/SKILL.md +105 -109
- package/.agy/skills/maestro/SKILL.md +2 -10
- package/.agy/skills/maestro-amend/SKILL.md +152 -152
- package/.agy/skills/maestro-analyze/SKILL.md +201 -252
- package/.agy/skills/maestro-blueprint/SKILL.md +175 -190
- package/.agy/skills/maestro-brainstorm/SKILL.md +196 -200
- package/.agy/skills/maestro-collab/SKILL.md +159 -159
- package/.agy/skills/maestro-companion/SKILL.md +517 -517
- package/.agy/skills/maestro-composer/SKILL.md +173 -164
- package/.agy/skills/maestro-execute/SKILL.md +169 -170
- package/.agy/skills/maestro-fork/SKILL.md +97 -96
- package/.agy/skills/maestro-grill/SKILL.md +161 -162
- package/.agy/skills/maestro-guard/SKILL.md +93 -92
- package/.agy/skills/maestro-impeccable/SKILL.md +296 -253
- package/.agy/skills/maestro-init/SKILL.md +117 -118
- package/.agy/skills/maestro-merge/SKILL.md +73 -66
- package/.agy/skills/maestro-milestone-audit/SKILL.md +4 -10
- package/.agy/skills/maestro-milestone-complete/SKILL.md +6 -7
- package/.agy/skills/maestro-milestone-release/SKILL.md +122 -131
- package/.agy/skills/maestro-next/SKILL.md +241 -245
- package/.agy/skills/maestro-overlay/SKILL.md +176 -166
- package/.agy/skills/maestro-plan/SKILL.md +211 -197
- package/.agy/skills/maestro-player/SKILL.md +167 -167
- package/.agy/skills/maestro-quick/SKILL.md +69 -63
- package/.agy/skills/maestro-ralph/SKILL.md +2 -36
- package/.agy/skills/maestro-ralph-beta/SKILL.md +861 -872
- package/.agy/skills/maestro-ralph-execute/SKILL.md +234 -234
- package/.agy/skills/maestro-roadmap/SKILL.md +159 -172
- package/.agy/skills/maestro-swarm-workflow/SKILL.md +229 -250
- package/.agy/skills/maestro-tools-execute/SKILL.md +108 -103
- package/.agy/skills/maestro-tools-register/SKILL.md +148 -143
- package/.agy/skills/maestro-ui-codify/SKILL.md +103 -86
- package/.agy/skills/maestro-universal-workflow/SKILL.md +534 -547
- package/.agy/skills/maestro-update/SKILL.md +109 -106
- package/.agy/skills/manage-codebase-rebuild/SKILL.md +73 -71
- package/.agy/skills/manage-harvest/SKILL.md +83 -81
- package/.agy/skills/manage-issue/SKILL.md +59 -60
- package/.agy/skills/manage-issue-discover/SKILL.md +70 -68
- package/.agy/skills/manage-kg-extractors/SKILL.md +130 -0
- package/.agy/skills/manage-knowhow/SKILL.md +70 -66
- package/.agy/skills/manage-knowhow-capture/SKILL.md +79 -69
- package/.agy/skills/manage-knowledge-audit/SKILL.md +91 -74
- package/.agy/skills/manage-status/SKILL.md +52 -42
- package/.agy/skills/manage-wiki/SKILL.md +69 -58
- package/.agy/skills/odyssey-debug/SKILL.md +445 -459
- package/.agy/skills/odyssey-improve/SKILL.md +477 -491
- package/.agy/skills/odyssey-planex/SKILL.md +576 -587
- package/.agy/skills/odyssey-review-test-fix/SKILL.md +400 -413
- package/.agy/skills/odyssey-ui/SKILL.md +431 -448
- package/.agy/skills/quality-auto-test/SKILL.md +140 -123
- package/.agy/skills/quality-debug/SKILL.md +145 -106
- package/.agy/skills/quality-refactor/SKILL.md +91 -53
- package/.agy/skills/quality-retrospective/SKILL.md +109 -63
- package/.agy/skills/quality-review/SKILL.md +141 -114
- package/.agy/skills/quality-sync/SKILL.md +74 -38
- package/.agy/skills/quality-test/SKILL.md +133 -103
- package/.agy/skills/security-audit/SKILL.md +217 -166
- package/.agy/skills/spec-add/SKILL.md +66 -59
- package/.agy/skills/spec-load/SKILL.md +68 -68
- package/.agy/skills/spec-remove/SKILL.md +42 -42
- package/.agy/skills/spec-setup/SKILL.md +38 -41
- package/.claude/commands/learn-follow.md +127 -127
- package/.claude/commands/learn-investigate.md +151 -152
- package/.claude/commands/learn-second-opinion.md +118 -122
- package/.claude/commands/maestro-amend.md +164 -164
- package/.claude/commands/maestro-analyze.md +215 -266
- package/.claude/commands/maestro-blueprint.md +189 -204
- package/.claude/commands/maestro-brainstorm.md +209 -213
- package/.claude/commands/maestro-collab.md +172 -172
- package/.claude/commands/maestro-companion.md +531 -531
- package/.claude/commands/maestro-composer.md +188 -179
- package/.claude/commands/maestro-execute.md +183 -184
- package/.claude/commands/maestro-fork.md +111 -110
- package/.claude/commands/maestro-grill.md +175 -176
- package/.claude/commands/maestro-guard.md +103 -102
- package/.claude/commands/maestro-impeccable.md +311 -268
- package/.claude/commands/maestro-init.md +130 -131
- package/.claude/commands/maestro-merge.md +87 -80
- package/.claude/commands/maestro-milestone-audit.md +4 -10
- package/.claude/commands/maestro-milestone-complete.md +6 -7
- package/.claude/commands/maestro-milestone-release.md +136 -145
- package/.claude/commands/maestro-next.md +253 -257
- package/.claude/commands/maestro-overlay.md +188 -178
- package/.claude/commands/maestro-plan.md +225 -211
- package/.claude/commands/maestro-player.md +182 -182
- package/.claude/commands/maestro-quick.md +83 -77
- package/.claude/commands/maestro-ralph-beta.md +875 -886
- package/.claude/commands/maestro-ralph-execute.md +247 -247
- package/.claude/commands/maestro-ralph.md +2 -36
- package/.claude/commands/maestro-roadmap.md +173 -186
- package/.claude/commands/maestro-swarm-workflow.md +243 -264
- package/.claude/commands/maestro-tools-execute.md +122 -117
- package/.claude/commands/maestro-tools-register.md +162 -157
- package/.claude/commands/maestro-ui-codify.md +117 -100
- package/.claude/commands/maestro-universal-workflow.md +548 -561
- package/.claude/commands/maestro-update.md +122 -119
- package/.claude/commands/maestro.md +2 -10
- package/.claude/commands/manage-codebase-rebuild.md +87 -85
- package/.claude/commands/manage-harvest.md +97 -95
- package/.claude/commands/manage-issue-discover.md +83 -81
- package/.claude/commands/manage-issue.md +72 -73
- package/.claude/commands/manage-kg-extractors.md +128 -0
- package/.claude/commands/manage-knowhow-capture.md +92 -82
- package/.claude/commands/manage-knowhow.md +83 -79
- package/.claude/commands/manage-knowledge-audit.md +105 -88
- package/.claude/commands/manage-status.md +62 -52
- package/.claude/commands/manage-wiki.md +82 -71
- package/.claude/commands/odyssey-debug.md +459 -473
- package/.claude/commands/odyssey-improve.md +491 -505
- package/.claude/commands/odyssey-planex.md +590 -601
- package/.claude/commands/odyssey-review-test-fix.md +414 -427
- package/.claude/commands/odyssey-ui.md +445 -462
- package/.claude/commands/quality-auto-test.md +153 -136
- package/.claude/commands/quality-debug.md +159 -120
- package/.claude/commands/quality-refactor.md +105 -67
- package/.claude/commands/quality-retrospective.md +123 -77
- package/.claude/commands/quality-review.md +155 -128
- package/.claude/commands/quality-sync.md +88 -52
- package/.claude/commands/quality-test.md +147 -117
- package/.claude/commands/security-audit.md +230 -179
- package/.claude/commands/spec-add.md +77 -70
- package/.claude/commands/spec-load.md +78 -78
- package/.claude/commands/spec-remove.md +55 -55
- package/.claude/commands/spec-setup.md +49 -52
- package/dist/src/cli.js +1 -1
- package/dist/src/cli.js.map +1 -1
- package/dist/src/commands/kg.d.ts.map +1 -1
- package/dist/src/commands/kg.js +11 -5
- package/dist/src/commands/kg.js.map +1 -1
- package/dist/src/graph/kg/extraction/code/code-extractor.d.ts +2 -0
- package/dist/src/graph/kg/extraction/code/code-extractor.d.ts.map +1 -1
- package/dist/src/graph/kg/extraction/code/code-extractor.js +32 -3
- package/dist/src/graph/kg/extraction/code/code-extractor.js.map +1 -1
- package/dist/src/graph/kg/extraction/code/plugin-engine.d.ts +35 -0
- package/dist/src/graph/kg/extraction/code/plugin-engine.d.ts.map +1 -0
- package/dist/src/graph/kg/extraction/code/plugin-engine.js +573 -0
- package/dist/src/graph/kg/extraction/code/plugin-engine.js.map +1 -0
- package/dist/src/graph/kg/extraction/code/plugin-types.d.ts +95 -0
- package/dist/src/graph/kg/extraction/code/plugin-types.d.ts.map +1 -0
- package/dist/src/graph/kg/extraction/code/plugin-types.js +5 -0
- package/dist/src/graph/kg/extraction/code/plugin-types.js.map +1 -0
- package/dist/src/graph/kg/extraction/orchestrator.d.ts.map +1 -1
- package/dist/src/graph/kg/extraction/orchestrator.js +17 -5
- package/dist/src/graph/kg/extraction/orchestrator.js.map +1 -1
- package/dist/src/graph/kg/schema.sql +16 -11
- package/dist/src/graph/kg/surface/cli.d.ts.map +1 -1
- package/dist/src/graph/kg/surface/cli.js +153 -56
- package/dist/src/graph/kg/surface/cli.js.map +1 -1
- package/dist/src/hooks/workspace.d.ts +4 -2
- package/dist/src/hooks/workspace.d.ts.map +1 -1
- package/dist/src/hooks/workspace.js +6 -2
- package/dist/src/hooks/workspace.js.map +1 -1
- package/package.json +91 -91
- package/workflows/analyze.md +25 -49
- package/workflows/auto-test.md +699 -699
- package/workflows/blueprint.md +403 -431
- package/workflows/brainstorm.md +54 -195
- package/workflows/business-test.md +570 -570
- package/workflows/claude-instructions.md +23 -51
- package/workflows/codex-instructions.md +27 -77
- package/workflows/coding-philosophy.md +69 -69
- package/workflows/command-authoring.md +823 -823
- package/workflows/debug.md +43 -98
- package/workflows/delegate-usage.md +39 -241
- package/workflows/execute.md +4 -53
- package/workflows/grill.md +12 -56
- package/workflows/harvest.md +22 -68
- package/workflows/init.md +148 -148
- package/workflows/instruction-authoring-guide.md +97 -0
- package/workflows/issue-execute.md +110 -110
- package/workflows/issue-gaps-analyze.codex.md +260 -260
- package/workflows/issue-gaps-analyze.md +216 -216
- package/workflows/issue-plan.md +110 -110
- package/workflows/issue.md +338 -346
- package/workflows/knowhow.md +0 -32
- package/workflows/learn.md +277 -277
- package/workflows/maestro-chain-execute.md +20 -20
- package/workflows/refactor.md +22 -44
- package/workflows/retrospective.md +16 -65
- package/workflows/review.md +446 -486
- package/workflows/roadmap.md +35 -132
- package/workflows/skill-authoring.md +265 -265
- package/workflows/spec-generate.md +470 -470
- package/workflows/specs-remove.md +104 -104
- package/workflows/sync.md +11 -41
- package/workflows/test-gen.md +226 -226
- package/workflows/test.md +385 -475
- package/workflows/ui-design.md +391 -391
- package/workflows/ui-style.md +199 -199
- package/workflows/wiki-connect.md +151 -151
- package/workflows/wiki-digest.md +178 -178
- package/workflows/wiki-manage.md +109 -109
- package/workflows/cli-tools-usage.md +0 -252
- package/workflows/delegate-protocol.codex.md +0 -65
package/workflows/knowhow.md
CHANGED
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
# KnowHow Workflow
|
|
2
2
|
|
|
3
|
-
Reusable knowledge capture, retrieval, and management for cross-session recovery and knowledge reuse.
|
|
4
|
-
|
|
5
3
|
## Dual Store Architecture
|
|
6
4
|
|
|
7
5
|
| Store | Path | Format | Index |
|
|
@@ -151,13 +149,6 @@ When and how to use this template.
|
|
|
151
149
|
Additional context.
|
|
152
150
|
```
|
|
153
151
|
|
|
154
|
-
**Field guide:**
|
|
155
|
-
- `lang` — Programming language or config format (required)
|
|
156
|
-
- `Usage` — 1-2 sentences describing when to apply
|
|
157
|
-
- `Parameters` — Placeholder table (optional)
|
|
158
|
-
- `Code` — The actual template, ready to copy
|
|
159
|
-
- `Dependencies` — What's needed before using
|
|
160
|
-
|
|
161
152
|
#### recipe (RCP-{YYYYMMDD}-{slug}.md)
|
|
162
153
|
|
|
163
154
|
Step-by-step operational guide. Sections:
|
|
@@ -196,13 +187,6 @@ What success looks like.
|
|
|
196
187
|
- [[template-xxx]] — Templates used
|
|
197
188
|
```
|
|
198
189
|
|
|
199
|
-
**Field guide:**
|
|
200
|
-
- `Goal` — One sentence, actionable
|
|
201
|
-
- `Prerequisites` — Everything needed before starting
|
|
202
|
-
- `Steps` — Numbered, each step verifiable independently
|
|
203
|
-
- `Expected Outcome` — Measurable result
|
|
204
|
-
- `Common Pitfalls` — Known gotchas from experience
|
|
205
|
-
|
|
206
190
|
#### reference (REF-{YYYYMMDD}-{slug}.md)
|
|
207
191
|
|
|
208
192
|
External documentation digest. Sections:
|
|
@@ -239,13 +223,6 @@ last_verified: {ISO date}
|
|
|
239
223
|
Additional context.
|
|
240
224
|
```
|
|
241
225
|
|
|
242
|
-
**Field guide:**
|
|
243
|
-
- `source` — Original URL or document ID (required)
|
|
244
|
-
- `Key Points` — Distilled essentials, not raw dump
|
|
245
|
-
- `Applicable Scenarios` — "Use this when..."
|
|
246
|
-
- `Quick Examples` — Most-used snippets first
|
|
247
|
-
- `last_verified` — When the source was last checked
|
|
248
|
-
|
|
249
226
|
#### decision (DCS-{YYYYMMDD}-{slug}.md)
|
|
250
227
|
|
|
251
228
|
Architecture Decision Record. Sections:
|
|
@@ -289,13 +266,6 @@ Why this choice over alternatives.
|
|
|
289
266
|
- [[recipe-xxx]] — Implementation recipe
|
|
290
267
|
```
|
|
291
268
|
|
|
292
|
-
**Field guide:**
|
|
293
|
-
- `status` — proposed → accepted → superseded lifecycle
|
|
294
|
-
- `Context` — Enough background for future reader (no assumed knowledge)
|
|
295
|
-
- `Alternatives` — Must list at least 2 rejected options with reasons
|
|
296
|
-
- `Rationale` — The "why" matters more than the "what"
|
|
297
|
-
- `Consequences` — Both positive and negative; be honest about trade-offs
|
|
298
|
-
|
|
299
269
|
#### tip (TIP-{YYYYMMDD}-{slug}.md)
|
|
300
270
|
|
|
301
271
|
Quick note. Minimal structure:
|
|
@@ -392,8 +362,6 @@ store_knowhow { operation: "add", type: "template", title: "...", description: "
|
|
|
392
362
|
|
|
393
363
|
## Part D: Learning Insights Container (specs/learnings.md)
|
|
394
364
|
|
|
395
|
-
A special container file at `.workflow/specs/learnings.md` holds multiple `<spec-entry>` sub-entries for atomic learning insights. This replaces the former `lessons.jsonl` approach.
|
|
396
|
-
|
|
397
365
|
### Container Format
|
|
398
366
|
|
|
399
367
|
```markdown
|
package/workflows/learn.md
CHANGED
|
@@ -1,277 +1,277 @@
|
|
|
1
|
-
# Learn Workflow
|
|
2
|
-
|
|
3
|
-
Atomic insight capture, search, and retrieval. Lightweight gstack-style "eureka moment" log that complements the retrospective workflow: where retrospective extracts insights from completed phases in bulk, `manage-learn` captures one insight at a time during active work.
|
|
4
|
-
|
|
5
|
-
Storage:
|
|
6
|
-
- `.workflow/specs/learnings.md` — append-only container of `<spec-entry>` sub-entries (shared with retrospective output)
|
|
7
|
-
- Auto-indexed by WikiIndexer (no manual index required)
|
|
8
|
-
|
|
9
|
-
**Shared store rationale:** Manual captures (`source: "manual"`), tips (`source: "tip"`), retrospective-distilled insights (`source: "retrospective"`, `lens: <name>` from `quality-retrospective`), and learn-retro insights (`source: "retro-git"` or `source: "retro-decision"` from `learn-retro`) all live in the same store so search and list see the entire knowledge corpus. The `source` field disambiguates origin.
|
|
10
|
-
|
|
11
|
-
This workflow does NOT spawn sub-agents; it may invoke maestro CLI utilities (e.g. `maestro wiki search`, `maestro wiki list`) for list/search subcommands. The core capture flow is a thin file operation: parse → infer → append → confirm.
|
|
12
|
-
|
|
13
|
-
---
|
|
14
|
-
|
|
15
|
-
## Prerequisites
|
|
16
|
-
|
|
17
|
-
- `.workflow/` initialized (`.workflow/state.json` exists). If missing, error E001.
|
|
18
|
-
- The `specs/` directory and `learnings.md` are created on first use; do not require them to exist upfront.
|
|
19
|
-
|
|
20
|
-
---
|
|
21
|
-
|
|
22
|
-
## Argument Shape
|
|
23
|
-
|
|
24
|
-
```
|
|
25
|
-
/manage-learn "<insight text>" → capture, infer category, auto-link phase
|
|
26
|
-
/manage-learn "<insight>" --category pattern --keywords auth,jwt → capture with explicit category and keywords
|
|
27
|
-
/manage-learn list → show recent 20 insights
|
|
28
|
-
/manage-learn list --keywords auth → filtered list
|
|
29
|
-
/manage-learn search <query> → search via maestro wiki search
|
|
30
|
-
/manage-learn show <INS-id> → full insight + linked phase context
|
|
31
|
-
```
|
|
32
|
-
|
|
33
|
-
| Flag | Effect |
|
|
34
|
-
|------|--------|
|
|
35
|
-
| `--category <name>` | One of: pattern, antipattern, decision, tool, gotcha, technique, tip. Default: inferred (tip mode defaults to `tip`). |
|
|
36
|
-
| `--keywords t1,t2` | Comma-separated keywords. Insight mode implicitly adds `manual`, tip mode implicitly adds `tip`. |
|
|
37
|
-
| `--phase <N>` | Override auto-detected phase link. Use `--phase 0` to force "no phase". |
|
|
38
|
-
| `--confidence <level>` | high / medium / low. Default: medium (insight), low (tip). |
|
|
39
|
-
| `--lens <name>` | Filter by retrospective lens: technical, process, quality, decision, git (list/search only). |
|
|
40
|
-
| `--limit <N>` | List mode row limit (default 20). |
|
|
41
|
-
|
|
42
|
-
---
|
|
43
|
-
|
|
44
|
-
## Stage 1: parse_input
|
|
45
|
-
|
|
46
|
-
```
|
|
47
|
-
Verify .workflow/ exists (else E001). Route by first token:
|
|
48
|
-
"list" → list | "search" → search (next token = query) | "show" → show (next token = INS-id)
|
|
49
|
-
"tip" → tip capture (source="tip", category="tip", confidence="low", implicit keyword "tip")
|
|
50
|
-
else → capture mode (full quoted text = insight body)
|
|
51
|
-
Empty args → AskUserQuestion. Invalid --category → E002.
|
|
52
|
-
```
|
|
53
|
-
|
|
54
|
-
---
|
|
55
|
-
|
|
56
|
-
## Stage 2: capture mode
|
|
57
|
-
|
|
58
|
-
### Step 2.1: Bootstrap storage
|
|
59
|
-
|
|
60
|
-
```bash
|
|
61
|
-
SPECS_DIR=".workflow/specs"
|
|
62
|
-
INSIGHTS_FILE="$SPECS_DIR/learnings.md"
|
|
63
|
-
|
|
64
|
-
mkdir -p "$SPECS_DIR"
|
|
65
|
-
|
|
66
|
-
if [ ! -f "$INSIGHTS_FILE" ]; then
|
|
67
|
-
cat > "$INSIGHTS_FILE" << 'EOF'
|
|
68
|
-
---
|
|
69
|
-
title: "Learning Insights"
|
|
70
|
-
type: spec
|
|
71
|
-
roles: [implement]
|
|
72
|
-
tags: [insights, learning]
|
|
73
|
-
created: $(date -u +%Y-%m-%dT%H:%M:%SZ)
|
|
74
|
-
---
|
|
75
|
-
# Learning Insights
|
|
76
|
-
|
|
77
|
-
Atomic insights captured during active work.
|
|
78
|
-
|
|
79
|
-
## Entries
|
|
80
|
-
|
|
81
|
-
EOF
|
|
82
|
-
fi
|
|
83
|
-
```
|
|
84
|
-
|
|
85
|
-
### Step 2.2: Generate ID
|
|
86
|
-
|
|
87
|
-
`INS-{8 lowercase hex chars}` from a stable hash of `(insight_text + timestamp)`. Re-running with the same text produces a different id (timestamp differs), so accidental duplicates are still appended — duplicate detection is the user's job at search time.
|
|
88
|
-
|
|
89
|
-
### Step 2.3: Auto-detect phase link
|
|
90
|
-
|
|
91
|
-
Unless `--phase` is set:
|
|
92
|
-
```
|
|
93
|
-
From .workflow/state.json artifacts, detect current phase:
|
|
94
|
-
1. Find first artifact with type=execute, status=in_progress
|
|
95
|
-
2. Else find first phase without a completed execute artifact
|
|
96
|
-
3. Resolve phase_slug from matching artifact (fallback: "phase-{N}")
|
|
97
|
-
If no state.json → phase=null, phase_slug=null
|
|
98
|
-
```
|
|
99
|
-
|
|
100
|
-
If `--phase 0` is passed, force `phase = null, phase_slug = null` regardless.
|
|
101
|
-
|
|
102
|
-
### Step 2.4: Infer category (if --category not set)
|
|
103
|
-
|
|
104
|
-
Simple keyword heuristics — no LLM call. Match the insight text (lowercased) against keyword sets in priority order:
|
|
105
|
-
|
|
106
|
-
| Category | Keywords (any match wins) |
|
|
107
|
-
|----------|---------------------------|
|
|
108
|
-
| antipattern | "avoid", "don't", "never", "anti-pattern", "antipattern", "bug", "broken", "fails", "wrong" |
|
|
109
|
-
| gotcha | "gotcha", "surprise", "unexpected", "hidden", "easy to miss", "watch out", "footgun" |
|
|
110
|
-
| decision | "decided", "chose", "rationale", "trade-off", "tradeoff", "instead of", "rejected" |
|
|
111
|
-
| tool | "library", "package", "tool", "cli", "framework", "version" |
|
|
112
|
-
| pattern | "pattern", "convention", "always", "should", "use", "prefer", "standardize" |
|
|
113
|
-
| technique | (default fallback) |
|
|
114
|
-
|
|
115
|
-
First match wins. If nothing matches, category = `technique`.
|
|
116
|
-
|
|
117
|
-
### Step 2.5: Build spec-entry
|
|
118
|
-
|
|
119
|
-
```
|
|
120
|
-
entry = <spec-entry
|
|
121
|
-
category="{category}"
|
|
122
|
-
keywords="{category},{parsed --keywords values joined by comma}"
|
|
123
|
-
date="{YYYY-MM-DD}"
|
|
124
|
-
id="INS-{hex}"
|
|
125
|
-
source="manual"
|
|
126
|
-
>
|
|
127
|
-
|
|
128
|
-
### {title: first 80 chars of insight text, truncated on word boundary}
|
|
129
|
-
|
|
130
|
-
{full insight text}
|
|
131
|
-
|
|
132
|
-
- **Phase**: {phase or "none"} ({phase_slug or "—"})
|
|
133
|
-
- **Confidence**: {--confidence value or "medium"}
|
|
134
|
-
- **Tags**: {parsed --keywords values + ["manual"]}
|
|
135
|
-
|
|
136
|
-
</spec-entry>
|
|
137
|
-
```
|
|
138
|
-
|
|
139
|
-
### Step 2.6: Persist
|
|
140
|
-
|
|
141
|
-
Append the `<spec-entry>` block to `.workflow/specs/learnings.md`.
|
|
142
|
-
|
|
143
|
-
WikiIndexer auto-indexes the entry — no manual index update required.
|
|
144
|
-
|
|
145
|
-
### Step 2.7: Confirmation banner
|
|
146
|
-
|
|
147
|
-
Display: ID, category, confidence, tags, phase (+slug if present), title, file path, and hints for `list` / `search` commands.
|
|
148
|
-
|
|
149
|
-
---
|
|
150
|
-
|
|
151
|
-
## Stage 3: list mode
|
|
152
|
-
|
|
153
|
-
### Step 3.1: Read entries
|
|
154
|
-
|
|
155
|
-
Query via `maestro wiki list --type knowhow --role implement --json`. Filter by `--keywords`, `--category`, `--phase`, `--lens` flags. Sort by timestamp descending. Limit to 20 (or `--limit N`).
|
|
156
|
-
|
|
157
|
-
### Step 3.2: Display table
|
|
158
|
-
|
|
159
|
-
```
|
|
160
|
-
=== KNOWHOW INSIGHTS ({shown}/{total}) ===
|
|
161
|
-
|
|
162
|
-
ID Category Phase Conf Tags Title
|
|
163
|
-
────────────── ────────── ────── ───── ─────────────────── ────────────────────────────
|
|
164
|
-
INS-a1b2c3d4 pattern 1 high auth,jwt,security JWT refresh tokens must rota...
|
|
165
|
-
INS-b2c3d4e5 gotcha — med redis Redis MULTI not transactional...
|
|
166
|
-
INS-c3d4e5f6 decision 2 high manual,arch Chose Express over Fastify b...
|
|
167
|
-
...
|
|
168
|
-
|
|
169
|
-
Filters: {active filters or "none"}
|
|
170
|
-
|
|
171
|
-
View: Skill({ skill: "manage-learn", args: "show <INS-id>" })
|
|
172
|
-
Search: Skill({ skill: "manage-learn", args: "search <query>" })
|
|
173
|
-
Capture: Skill({ skill: "manage-learn", args: "<insight text>" })
|
|
174
|
-
```
|
|
175
|
-
|
|
176
|
-
If empty:
|
|
177
|
-
```
|
|
178
|
-
No insights yet.
|
|
179
|
-
Capture your first: Skill({ skill: "manage-learn", args: "\"...\"" })
|
|
180
|
-
```
|
|
181
|
-
|
|
182
|
-
---
|
|
183
|
-
|
|
184
|
-
## Stage 4: search mode
|
|
185
|
-
|
|
186
|
-
### Step 4.1: Validate query
|
|
187
|
-
|
|
188
|
-
Next token after "search". Empty → AskUserQuestion.
|
|
189
|
-
|
|
190
|
-
### Step 4.2: Search via wiki
|
|
191
|
-
|
|
192
|
-
Execute `maestro wiki search "<query>" --type knowhow --json`. Results are ranked by BM25 relevance. Sort by rank desc, then date desc.
|
|
193
|
-
|
|
194
|
-
### Step 4.3: Display results
|
|
195
|
-
|
|
196
|
-
```
|
|
197
|
-
=== SEARCH RESULTS for "{query}" — {count} match{es} ===
|
|
198
|
-
|
|
199
|
-
[{INS-id}] [{category}] phase {phase or "—"} ({source})
|
|
200
|
-
{title}
|
|
201
|
-
Tags: {tags}
|
|
202
|
-
Captured: {captured_at}
|
|
203
|
-
|
|
204
|
-
[{INS-id}] ...
|
|
205
|
-
...
|
|
206
|
-
|
|
207
|
-
View full: Skill({ skill: "manage-learn", args: "show <INS-id>" })
|
|
208
|
-
```
|
|
209
|
-
|
|
210
|
-
If no matches:
|
|
211
|
-
```
|
|
212
|
-
No insights match "{query}".
|
|
213
|
-
List all: Skill({ skill: "manage-learn", args: "list" })
|
|
214
|
-
```
|
|
215
|
-
|
|
216
|
-
---
|
|
217
|
-
|
|
218
|
-
## Stage 5: show mode
|
|
219
|
-
|
|
220
|
-
### Step 5.1: Locate entry
|
|
221
|
-
|
|
222
|
-
Find `<spec-entry>` matching target INS-id in `learnings.md`. Missing arg → E003. Not found → E004.
|
|
223
|
-
|
|
224
|
-
### Step 5.2: Resolve linked phase context (if any)
|
|
225
|
-
|
|
226
|
-
If `entry.phase_slug` set (parsed from entry content): look up phase directory from `state.json` artifacts, read its `index.json` for title/status, check for `retrospective.md`.
|
|
227
|
-
|
|
228
|
-
### Step 5.3: Resolve routed artifact (if any)
|
|
229
|
-
|
|
230
|
-
Map `routed_to` → path: `spec` → `.workflow/specs/{id}`, `issue` → `.workflow/issues/issues.jsonl#{id}`, `knowhow` → `.workflow/knowhow/{id}.md`.
|
|
231
|
-
|
|
232
|
-
### Step 5.4: Display
|
|
233
|
-
|
|
234
|
-
```
|
|
235
|
-
=========================================
|
|
236
|
-
INSIGHT: {entry.id}
|
|
237
|
-
CATEGORY: {entry.category}
|
|
238
|
-
CONFIDENCE: {entry.confidence}
|
|
239
|
-
SOURCE: {entry.source}{IF entry.lens: " (" + entry.lens + " lens)"}
|
|
240
|
-
=========================================
|
|
241
|
-
|
|
242
|
-
CAPTURED: {entry.date}
|
|
243
|
-
PHASE: {entry.phase or "none"}{IF phase_slug: " (" + phase_slug + ")"}
|
|
244
|
-
TAGS: {entry.keywords}
|
|
245
|
-
|
|
246
|
-
TITLE:
|
|
247
|
-
{entry.title}
|
|
248
|
-
|
|
249
|
-
SUMMARY:
|
|
250
|
-
{entry.content}
|
|
251
|
-
|
|
252
|
-
EVIDENCE:
|
|
253
|
-
{parsed from entry content, or "(none — manual capture)"}
|
|
254
|
-
|
|
255
|
-
ROUTED:
|
|
256
|
-
Target: {entry.routed_to or "none"}
|
|
257
|
-
ID: {entry.routed_id or "—"}
|
|
258
|
-
Path: {routed_path or "—"}
|
|
259
|
-
|
|
260
|
-
{IF phase_context:}
|
|
261
|
-
PHASE CONTEXT:
|
|
262
|
-
Title: {phase_context.title}
|
|
263
|
-
Status: {phase_context.status}
|
|
264
|
-
Retrospective: {phase_context.retrospective_exists ? "yes" : "no"}
|
|
265
|
-
=========================================
|
|
266
|
-
```
|
|
267
|
-
|
|
268
|
-
---
|
|
269
|
-
|
|
270
|
-
## Relationship to other workflows
|
|
271
|
-
|
|
272
|
-
| Workflow | Relationship |
|
|
273
|
-
|----------|--------------|
|
|
274
|
-
| `quality-retrospective` | Producer. Appends `<spec-entry>` to the same `specs/learnings.md` with `source: "retrospective"` and a populated `lens` field. |
|
|
275
|
-
| `manage-knowhow-capture` | Sibling. Captures session state for recovery; `learn` captures timeless insights. Both write to `.workflow/knowhow/` with different prefixes. |
|
|
276
|
-
| `phase-transition` | Reader (informally). Phase-transition's free-form `.workflow/specs/learnings.md` is a distinct file with a different audience; do not merge them. |
|
|
277
|
-
| `maestro-plan` | Future consumer. Should query via `maestro wiki search` or `maestro wiki list --type knowhow --role implement` to inform planning decisions. (Out of scope for this command.) |
|
|
1
|
+
# Learn Workflow
|
|
2
|
+
|
|
3
|
+
Atomic insight capture, search, and retrieval. Lightweight gstack-style "eureka moment" log that complements the retrospective workflow: where retrospective extracts insights from completed phases in bulk, `manage-learn` captures one insight at a time during active work.
|
|
4
|
+
|
|
5
|
+
Storage:
|
|
6
|
+
- `.workflow/specs/learnings.md` — append-only container of `<spec-entry>` sub-entries (shared with retrospective output)
|
|
7
|
+
- Auto-indexed by WikiIndexer (no manual index required)
|
|
8
|
+
|
|
9
|
+
**Shared store rationale:** Manual captures (`source: "manual"`), tips (`source: "tip"`), retrospective-distilled insights (`source: "retrospective"`, `lens: <name>` from `quality-retrospective`), and learn-retro insights (`source: "retro-git"` or `source: "retro-decision"` from `learn-retro`) all live in the same store so search and list see the entire knowledge corpus. The `source` field disambiguates origin.
|
|
10
|
+
|
|
11
|
+
This workflow does NOT spawn sub-agents; it may invoke maestro CLI utilities (e.g. `maestro wiki search`, `maestro wiki list`) for list/search subcommands. The core capture flow is a thin file operation: parse → infer → append → confirm.
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## Prerequisites
|
|
16
|
+
|
|
17
|
+
- `.workflow/` initialized (`.workflow/state.json` exists). If missing, error E001.
|
|
18
|
+
- The `specs/` directory and `learnings.md` are created on first use; do not require them to exist upfront.
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## Argument Shape
|
|
23
|
+
|
|
24
|
+
```
|
|
25
|
+
/manage-learn "<insight text>" → capture, infer category, auto-link phase
|
|
26
|
+
/manage-learn "<insight>" --category pattern --keywords auth,jwt → capture with explicit category and keywords
|
|
27
|
+
/manage-learn list → show recent 20 insights
|
|
28
|
+
/manage-learn list --keywords auth → filtered list
|
|
29
|
+
/manage-learn search <query> → search via maestro wiki search
|
|
30
|
+
/manage-learn show <INS-id> → full insight + linked phase context
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
| Flag | Effect |
|
|
34
|
+
|------|--------|
|
|
35
|
+
| `--category <name>` | One of: pattern, antipattern, decision, tool, gotcha, technique, tip. Default: inferred (tip mode defaults to `tip`). |
|
|
36
|
+
| `--keywords t1,t2` | Comma-separated keywords. Insight mode implicitly adds `manual`, tip mode implicitly adds `tip`. |
|
|
37
|
+
| `--phase <N>` | Override auto-detected phase link. Use `--phase 0` to force "no phase". |
|
|
38
|
+
| `--confidence <level>` | high / medium / low. Default: medium (insight), low (tip). |
|
|
39
|
+
| `--lens <name>` | Filter by retrospective lens: technical, process, quality, decision, git (list/search only). |
|
|
40
|
+
| `--limit <N>` | List mode row limit (default 20). |
|
|
41
|
+
|
|
42
|
+
---
|
|
43
|
+
|
|
44
|
+
## Stage 1: parse_input
|
|
45
|
+
|
|
46
|
+
```
|
|
47
|
+
Verify .workflow/ exists (else E001). Route by first token:
|
|
48
|
+
"list" → list | "search" → search (next token = query) | "show" → show (next token = INS-id)
|
|
49
|
+
"tip" → tip capture (source="tip", category="tip", confidence="low", implicit keyword "tip")
|
|
50
|
+
else → capture mode (full quoted text = insight body)
|
|
51
|
+
Empty args → AskUserQuestion. Invalid --category → E002.
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
|
|
56
|
+
## Stage 2: capture mode
|
|
57
|
+
|
|
58
|
+
### Step 2.1: Bootstrap storage
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
SPECS_DIR=".workflow/specs"
|
|
62
|
+
INSIGHTS_FILE="$SPECS_DIR/learnings.md"
|
|
63
|
+
|
|
64
|
+
mkdir -p "$SPECS_DIR"
|
|
65
|
+
|
|
66
|
+
if [ ! -f "$INSIGHTS_FILE" ]; then
|
|
67
|
+
cat > "$INSIGHTS_FILE" << 'EOF'
|
|
68
|
+
---
|
|
69
|
+
title: "Learning Insights"
|
|
70
|
+
type: spec
|
|
71
|
+
roles: [implement]
|
|
72
|
+
tags: [insights, learning]
|
|
73
|
+
created: $(date -u +%Y-%m-%dT%H:%M:%SZ)
|
|
74
|
+
---
|
|
75
|
+
# Learning Insights
|
|
76
|
+
|
|
77
|
+
Atomic insights captured during active work.
|
|
78
|
+
|
|
79
|
+
## Entries
|
|
80
|
+
|
|
81
|
+
EOF
|
|
82
|
+
fi
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
### Step 2.2: Generate ID
|
|
86
|
+
|
|
87
|
+
`INS-{8 lowercase hex chars}` from a stable hash of `(insight_text + timestamp)`. Re-running with the same text produces a different id (timestamp differs), so accidental duplicates are still appended — duplicate detection is the user's job at search time.
|
|
88
|
+
|
|
89
|
+
### Step 2.3: Auto-detect phase link
|
|
90
|
+
|
|
91
|
+
Unless `--phase` is set:
|
|
92
|
+
```
|
|
93
|
+
From .workflow/state.json artifacts, detect current phase:
|
|
94
|
+
1. Find first artifact with type=execute, status=in_progress
|
|
95
|
+
2. Else find first phase without a completed execute artifact
|
|
96
|
+
3. Resolve phase_slug from matching artifact (fallback: "phase-{N}")
|
|
97
|
+
If no state.json → phase=null, phase_slug=null
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
If `--phase 0` is passed, force `phase = null, phase_slug = null` regardless.
|
|
101
|
+
|
|
102
|
+
### Step 2.4: Infer category (if --category not set)
|
|
103
|
+
|
|
104
|
+
Simple keyword heuristics — no LLM call. Match the insight text (lowercased) against keyword sets in priority order:
|
|
105
|
+
|
|
106
|
+
| Category | Keywords (any match wins) |
|
|
107
|
+
|----------|---------------------------|
|
|
108
|
+
| antipattern | "avoid", "don't", "never", "anti-pattern", "antipattern", "bug", "broken", "fails", "wrong" |
|
|
109
|
+
| gotcha | "gotcha", "surprise", "unexpected", "hidden", "easy to miss", "watch out", "footgun" |
|
|
110
|
+
| decision | "decided", "chose", "rationale", "trade-off", "tradeoff", "instead of", "rejected" |
|
|
111
|
+
| tool | "library", "package", "tool", "cli", "framework", "version" |
|
|
112
|
+
| pattern | "pattern", "convention", "always", "should", "use", "prefer", "standardize" |
|
|
113
|
+
| technique | (default fallback) |
|
|
114
|
+
|
|
115
|
+
First match wins. If nothing matches, category = `technique`.
|
|
116
|
+
|
|
117
|
+
### Step 2.5: Build spec-entry
|
|
118
|
+
|
|
119
|
+
```
|
|
120
|
+
entry = <spec-entry
|
|
121
|
+
category="{category}"
|
|
122
|
+
keywords="{category},{parsed --keywords values joined by comma}"
|
|
123
|
+
date="{YYYY-MM-DD}"
|
|
124
|
+
id="INS-{hex}"
|
|
125
|
+
source="manual"
|
|
126
|
+
>
|
|
127
|
+
|
|
128
|
+
### {title: first 80 chars of insight text, truncated on word boundary}
|
|
129
|
+
|
|
130
|
+
{full insight text}
|
|
131
|
+
|
|
132
|
+
- **Phase**: {phase or "none"} ({phase_slug or "—"})
|
|
133
|
+
- **Confidence**: {--confidence value or "medium"}
|
|
134
|
+
- **Tags**: {parsed --keywords values + ["manual"]}
|
|
135
|
+
|
|
136
|
+
</spec-entry>
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
### Step 2.6: Persist
|
|
140
|
+
|
|
141
|
+
Append the `<spec-entry>` block to `.workflow/specs/learnings.md`.
|
|
142
|
+
|
|
143
|
+
WikiIndexer auto-indexes the entry — no manual index update required.
|
|
144
|
+
|
|
145
|
+
### Step 2.7: Confirmation banner
|
|
146
|
+
|
|
147
|
+
Display: ID, category, confidence, tags, phase (+slug if present), title, file path, and hints for `list` / `search` commands.
|
|
148
|
+
|
|
149
|
+
---
|
|
150
|
+
|
|
151
|
+
## Stage 3: list mode
|
|
152
|
+
|
|
153
|
+
### Step 3.1: Read entries
|
|
154
|
+
|
|
155
|
+
Query via `maestro wiki list --type knowhow --role implement --json`. Filter by `--keywords`, `--category`, `--phase`, `--lens` flags. Sort by timestamp descending. Limit to 20 (or `--limit N`).
|
|
156
|
+
|
|
157
|
+
### Step 3.2: Display table
|
|
158
|
+
|
|
159
|
+
```
|
|
160
|
+
=== KNOWHOW INSIGHTS ({shown}/{total}) ===
|
|
161
|
+
|
|
162
|
+
ID Category Phase Conf Tags Title
|
|
163
|
+
────────────── ────────── ────── ───── ─────────────────── ────────────────────────────
|
|
164
|
+
INS-a1b2c3d4 pattern 1 high auth,jwt,security JWT refresh tokens must rota...
|
|
165
|
+
INS-b2c3d4e5 gotcha — med redis Redis MULTI not transactional...
|
|
166
|
+
INS-c3d4e5f6 decision 2 high manual,arch Chose Express over Fastify b...
|
|
167
|
+
...
|
|
168
|
+
|
|
169
|
+
Filters: {active filters or "none"}
|
|
170
|
+
|
|
171
|
+
View: Skill({ skill: "manage-learn", args: "show <INS-id>" })
|
|
172
|
+
Search: Skill({ skill: "manage-learn", args: "search <query>" })
|
|
173
|
+
Capture: Skill({ skill: "manage-learn", args: "<insight text>" })
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
If empty:
|
|
177
|
+
```
|
|
178
|
+
No insights yet.
|
|
179
|
+
Capture your first: Skill({ skill: "manage-learn", args: "\"...\"" })
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
---
|
|
183
|
+
|
|
184
|
+
## Stage 4: search mode
|
|
185
|
+
|
|
186
|
+
### Step 4.1: Validate query
|
|
187
|
+
|
|
188
|
+
Next token after "search". Empty → AskUserQuestion.
|
|
189
|
+
|
|
190
|
+
### Step 4.2: Search via wiki
|
|
191
|
+
|
|
192
|
+
Execute `maestro wiki search "<query>" --type knowhow --json`. Results are ranked by BM25 relevance. Sort by rank desc, then date desc.
|
|
193
|
+
|
|
194
|
+
### Step 4.3: Display results
|
|
195
|
+
|
|
196
|
+
```
|
|
197
|
+
=== SEARCH RESULTS for "{query}" — {count} match{es} ===
|
|
198
|
+
|
|
199
|
+
[{INS-id}] [{category}] phase {phase or "—"} ({source})
|
|
200
|
+
{title}
|
|
201
|
+
Tags: {tags}
|
|
202
|
+
Captured: {captured_at}
|
|
203
|
+
|
|
204
|
+
[{INS-id}] ...
|
|
205
|
+
...
|
|
206
|
+
|
|
207
|
+
View full: Skill({ skill: "manage-learn", args: "show <INS-id>" })
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
If no matches:
|
|
211
|
+
```
|
|
212
|
+
No insights match "{query}".
|
|
213
|
+
List all: Skill({ skill: "manage-learn", args: "list" })
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
---
|
|
217
|
+
|
|
218
|
+
## Stage 5: show mode
|
|
219
|
+
|
|
220
|
+
### Step 5.1: Locate entry
|
|
221
|
+
|
|
222
|
+
Find `<spec-entry>` matching target INS-id in `learnings.md`. Missing arg → E003. Not found → E004.
|
|
223
|
+
|
|
224
|
+
### Step 5.2: Resolve linked phase context (if any)
|
|
225
|
+
|
|
226
|
+
If `entry.phase_slug` set (parsed from entry content): look up phase directory from `state.json` artifacts, read its `index.json` for title/status, check for `retrospective.md`.
|
|
227
|
+
|
|
228
|
+
### Step 5.3: Resolve routed artifact (if any)
|
|
229
|
+
|
|
230
|
+
Map `routed_to` → path: `spec` → `.workflow/specs/{id}`, `issue` → `.workflow/issues/issues.jsonl#{id}`, `knowhow` → `.workflow/knowhow/{id}.md`.
|
|
231
|
+
|
|
232
|
+
### Step 5.4: Display
|
|
233
|
+
|
|
234
|
+
```
|
|
235
|
+
=========================================
|
|
236
|
+
INSIGHT: {entry.id}
|
|
237
|
+
CATEGORY: {entry.category}
|
|
238
|
+
CONFIDENCE: {entry.confidence}
|
|
239
|
+
SOURCE: {entry.source}{IF entry.lens: " (" + entry.lens + " lens)"}
|
|
240
|
+
=========================================
|
|
241
|
+
|
|
242
|
+
CAPTURED: {entry.date}
|
|
243
|
+
PHASE: {entry.phase or "none"}{IF phase_slug: " (" + phase_slug + ")"}
|
|
244
|
+
TAGS: {entry.keywords}
|
|
245
|
+
|
|
246
|
+
TITLE:
|
|
247
|
+
{entry.title}
|
|
248
|
+
|
|
249
|
+
SUMMARY:
|
|
250
|
+
{entry.content}
|
|
251
|
+
|
|
252
|
+
EVIDENCE:
|
|
253
|
+
{parsed from entry content, or "(none — manual capture)"}
|
|
254
|
+
|
|
255
|
+
ROUTED:
|
|
256
|
+
Target: {entry.routed_to or "none"}
|
|
257
|
+
ID: {entry.routed_id or "—"}
|
|
258
|
+
Path: {routed_path or "—"}
|
|
259
|
+
|
|
260
|
+
{IF phase_context:}
|
|
261
|
+
PHASE CONTEXT:
|
|
262
|
+
Title: {phase_context.title}
|
|
263
|
+
Status: {phase_context.status}
|
|
264
|
+
Retrospective: {phase_context.retrospective_exists ? "yes" : "no"}
|
|
265
|
+
=========================================
|
|
266
|
+
```
|
|
267
|
+
|
|
268
|
+
---
|
|
269
|
+
|
|
270
|
+
## Relationship to other workflows
|
|
271
|
+
|
|
272
|
+
| Workflow | Relationship |
|
|
273
|
+
|----------|--------------|
|
|
274
|
+
| `quality-retrospective` | Producer. Appends `<spec-entry>` to the same `specs/learnings.md` with `source: "retrospective"` and a populated `lens` field. |
|
|
275
|
+
| `manage-knowhow-capture` | Sibling. Captures session state for recovery; `learn` captures timeless insights. Both write to `.workflow/knowhow/` with different prefixes. |
|
|
276
|
+
| `phase-transition` | Reader (informally). Phase-transition's free-form `.workflow/specs/learnings.md` is a distinct file with a different audience; do not merge them. |
|
|
277
|
+
| `maestro-plan` | Future consumer. Should query via `maestro wiki search` or `maestro wiki list --type knowhow --role implement` to inform planning decisions. (Out of scope for this command.) |
|
|
@@ -1,20 +1,20 @@
|
|
|
1
|
-
# Workflow: maestro-chain-execute [DEPRECATED]
|
|
2
|
-
|
|
3
|
-
> **DEPRECATED**: This workflow has been replaced by the unified executor `maestro-ralph-execute`.
|
|
4
|
-
> Both maestro and ralph sessions now use `maestro-ralph-execute` for step execution.
|
|
5
|
-
> This file is kept for reference only and will be removed in a future version.
|
|
6
|
-
|
|
7
|
-
## Migration
|
|
8
|
-
|
|
9
|
-
- Caller dispatching from `maestro.md` → use `Skill({ skill: "maestro-ralph-execute" })`
|
|
10
|
-
- Resume from session → `Skill({ skill: "maestro-ralph-execute" })` (auto-discovers latest running session via `.workflow/.maestro/*/status.json`)
|
|
11
|
-
|
|
12
|
-
## References
|
|
13
|
-
|
|
14
|
-
- `~/.maestro/workflows/maestro.md` — coordinator that creates sessions and dispatches to the unified executor
|
|
15
|
-
- `~/.maestro/workflows/maestro-ralph-execute.md` — current canonical executor (handles both maestro static chains and ralph adaptive chains)
|
|
16
|
-
|
|
17
|
-
The unified executor preserves all behaviour previously documented here:
|
|
18
|
-
status.json persistence, TodoWrite dual-tracking, per-step engine selection (`Skill` vs `CLI`),
|
|
19
|
-
context propagation across steps, post-step Gemini analysis for CLI steps,
|
|
20
|
-
and retry/skip/abort on failure.
|
|
1
|
+
# Workflow: maestro-chain-execute [DEPRECATED]
|
|
2
|
+
|
|
3
|
+
> **DEPRECATED**: This workflow has been replaced by the unified executor `maestro-ralph-execute`.
|
|
4
|
+
> Both maestro and ralph sessions now use `maestro-ralph-execute` for step execution.
|
|
5
|
+
> This file is kept for reference only and will be removed in a future version.
|
|
6
|
+
|
|
7
|
+
## Migration
|
|
8
|
+
|
|
9
|
+
- Caller dispatching from `maestro.md` → use `Skill({ skill: "maestro-ralph-execute" })`
|
|
10
|
+
- Resume from session → `Skill({ skill: "maestro-ralph-execute" })` (auto-discovers latest running session via `.workflow/.maestro/*/status.json`)
|
|
11
|
+
|
|
12
|
+
## References
|
|
13
|
+
|
|
14
|
+
- `~/.maestro/workflows/maestro.md` — coordinator that creates sessions and dispatches to the unified executor
|
|
15
|
+
- `~/.maestro/workflows/maestro-ralph-execute.md` — current canonical executor (handles both maestro static chains and ralph adaptive chains)
|
|
16
|
+
|
|
17
|
+
The unified executor preserves all behaviour previously documented here:
|
|
18
|
+
status.json persistence, TodoWrite dual-tracking, per-step engine selection (`Skill` vs `CLI`),
|
|
19
|
+
context propagation across steps, post-step Gemini analysis for CLI steps,
|
|
20
|
+
and retry/skip/abort on failure.
|