maestro-flow 0.3.12 → 0.3.13
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/CLAUDE.md +7 -0
- package/.claude/agents/workflow-analyzer.md +0 -1
- package/.claude/agents/workflow-collab-planner.md +0 -1
- package/.claude/agents/workflow-debugger.md +0 -1
- package/.claude/agents/workflow-integration-checker.md +2 -2
- package/.claude/agents/workflow-nyquist-auditor.md +0 -1
- package/.claude/agents/workflow-phase-researcher.md +2 -2
- package/.claude/agents/workflow-plan-checker.md +1 -1
- package/.claude/agents/workflow-planner.md +1 -2
- package/.claude/agents/workflow-roadmapper.md +1 -1
- package/.claude/agents/workflow-verifier.md +0 -1
- package/.claude/commands/learn-retro.md +2 -2
- package/.claude/commands/learn-second-opinion.md +2 -2
- package/.claude/commands/maestro-analyze.md +10 -2
- package/.claude/commands/maestro-brainstorm.md +1 -1
- package/.claude/commands/maestro-execute.md +21 -4
- package/.claude/commands/maestro-milestone-complete.md +14 -0
- package/.claude/commands/maestro-plan.md +12 -6
- package/.claude/commands/maestro-roadmap.md +1 -1
- package/.claude/commands/maestro-ui-design.md +7 -7
- package/.claude/commands/maestro-update.md +176 -0
- package/.claude/commands/maestro-verify.md +18 -3
- package/.claude/commands/manage-codebase-rebuild.md +0 -1
- package/.claude/commands/manage-harvest.md +1 -1
- package/.claude/commands/manage-learn.md +5 -5
- package/.claude/commands/manage-memory-capture.md +4 -4
- package/.claude/commands/manage-memory.md +1 -1
- package/.claude/commands/manage-wiki.md +62 -0
- package/.claude/commands/quality-business-test.md +2 -2
- package/.claude/commands/quality-debug.md +53 -7
- package/.claude/commands/quality-retrospective.md +5 -5
- package/.claude/commands/quality-review.md +39 -7
- package/.claude/commands/quality-sync.md +1 -1
- package/.claude/commands/quality-test-gen.md +1 -1
- package/.claude/commands/quality-test.md +45 -12
- package/.claude/commands/spec-remove.md +51 -0
- package/.claude/commands/spec-setup.md +1 -3
- package/.claude/commands/wiki-connect.md +9 -5
- package/.claude/commands/wiki-digest.md +6 -3
- package/.codex/skills/maestro/SKILL.md +2 -2
- package/.codex/skills/maestro-analyze/SKILL.md +4 -4
- package/.codex/skills/maestro-brainstorm/SKILL.md +4 -4
- package/.codex/skills/maestro-coordinate/SKILL.md +2 -2
- package/.codex/skills/maestro-execute/SKILL.md +15 -5
- package/.codex/skills/maestro-init/SKILL.md +1 -1
- package/.codex/skills/maestro-milestone-complete/SKILL.md +18 -1
- package/.codex/skills/maestro-plan/SKILL.md +6 -6
- package/.codex/skills/maestro-roadmap/SKILL.md +3 -4
- package/.codex/skills/maestro-spec-generate/SKILL.md +2 -2
- package/.codex/skills/maestro-ui-design/SKILL.md +6 -6
- package/.codex/skills/maestro-verify/SKILL.md +20 -11
- package/.codex/skills/manage-codebase-rebuild/SKILL.md +4 -4
- package/.codex/skills/manage-harvest/SKILL.md +10 -1
- package/.codex/skills/manage-issue-discover/SKILL.md +3 -3
- package/.codex/skills/manage-learn/SKILL.md +3 -2
- package/.codex/skills/manage-memory/SKILL.md +3 -3
- package/.codex/skills/manage-memory-capture/SKILL.md +8 -14
- package/.codex/skills/manage-status/SKILL.md +9 -4
- package/.codex/skills/manage-wiki/SKILL.md +55 -0
- package/.codex/skills/quality-business-test/SKILL.md +8 -6
- package/.codex/skills/quality-debug/SKILL.md +22 -9
- package/.codex/skills/quality-integration-test/SKILL.md +11 -7
- package/.codex/skills/quality-retrospective/SKILL.md +45 -26
- package/.codex/skills/quality-review/SKILL.md +10 -7
- package/.codex/skills/quality-test/SKILL.md +9 -4
- package/.codex/skills/quality-test-gen/SKILL.md +13 -9
- package/.codex/skills/spec-add/SKILL.md +11 -3
- package/.codex/skills/spec-load/SKILL.md +7 -0
- package/.codex/skills/spec-map/SKILL.md +2 -2
- package/.codex/skills/spec-remove/SKILL.md +101 -0
- package/.codex/skills/spec-setup/SKILL.md +4 -8
- package/.codex/skills/wiki-connect/SKILL.md +6 -5
- package/.codex/skills/wiki-digest/SKILL.md +2 -2
- package/dashboard/dist-server/dashboard/src/server/agents/claude-code-adapter.d.ts +9 -0
- package/dashboard/dist-server/dashboard/src/server/agents/claude-code-adapter.js +109 -9
- package/dashboard/dist-server/dashboard/src/server/agents/claude-code-adapter.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/agents/claude-code-adapter.test.js +49 -0
- package/dashboard/dist-server/dashboard/src/server/agents/claude-code-adapter.test.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/routes/index.js +5 -4
- package/dashboard/dist-server/dashboard/src/server/routes/index.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/routes/specs.d.ts +5 -13
- package/dashboard/dist-server/dashboard/src/server/routes/specs.js +97 -155
- package/dashboard/dist-server/dashboard/src/server/routes/specs.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/routes/wiki.d.ts +11 -1
- package/dashboard/dist-server/dashboard/src/server/routes/wiki.integration.test.js +27 -6
- package/dashboard/dist-server/dashboard/src/server/routes/wiki.integration.test.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/routes/wiki.js +25 -7
- package/dashboard/dist-server/dashboard/src/server/routes/wiki.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/wiki/graph-analysis.js +8 -0
- package/dashboard/dist-server/dashboard/src/server/wiki/graph-analysis.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/wiki/search.js +1 -0
- package/dashboard/dist-server/dashboard/src/server/wiki/search.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/wiki/spec-entry-parser.d.ts +29 -0
- package/dashboard/dist-server/dashboard/src/server/wiki/spec-entry-parser.js +148 -0
- package/dashboard/dist-server/dashboard/src/server/wiki/spec-entry-parser.js.map +1 -0
- package/dashboard/dist-server/dashboard/src/server/wiki/stress.test.js +4 -2
- package/dashboard/dist-server/dashboard/src/server/wiki/stress.test.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/wiki/virtual-wiki-adapters.js +8 -2
- package/dashboard/dist-server/dashboard/src/server/wiki/virtual-wiki-adapters.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.d.ts +5 -0
- package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.js +80 -38
- package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.test.js +8 -6
- package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.test.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/wiki/wiki-types.d.ts +40 -5
- package/dashboard/dist-server/dashboard/src/server/wiki/writer-stress.test.js +21 -23
- package/dashboard/dist-server/dashboard/src/server/wiki/writer-stress.test.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/wiki/writer.d.ts +33 -3
- package/dashboard/dist-server/dashboard/src/server/wiki/writer.js +184 -12
- package/dashboard/dist-server/dashboard/src/server/wiki/writer.js.map +1 -1
- package/dashboard/dist-server/src/commands/delegate.js +26 -0
- package/dashboard/dist-server/src/commands/delegate.js.map +1 -1
- package/dashboard/dist-server/src/coordinator/graph-types.d.ts +11 -1
- package/dashboard/dist-server/src/coordinator/graph-walker.js +29 -2
- package/dashboard/dist-server/src/coordinator/graph-walker.js.map +1 -1
- package/dashboard/dist-server/src/coordinator/prompt-assembler.js +3 -2
- package/dashboard/dist-server/src/coordinator/prompt-assembler.js.map +1 -1
- package/dashboard/dist-server/src/hooks/constants.d.ts +29 -60
- package/dashboard/dist-server/src/hooks/constants.js +105 -82
- package/dashboard/dist-server/src/hooks/constants.js.map +1 -1
- package/dashboard/dist-server/src/types/index.d.ts +2 -1
- package/dist/src/commands/delegate.d.ts.map +1 -1
- package/dist/src/commands/delegate.js +26 -0
- package/dist/src/commands/delegate.js.map +1 -1
- package/dist/src/commands/hooks.d.ts +2 -4
- package/dist/src/commands/hooks.d.ts.map +1 -1
- package/dist/src/commands/hooks.js +4 -7
- package/dist/src/commands/hooks.js.map +1 -1
- package/dist/src/commands/install-ui/InstallConfirm.d.ts +2 -3
- package/dist/src/commands/install-ui/InstallConfirm.d.ts.map +1 -1
- package/dist/src/commands/install-ui/InstallConfirm.js +1 -1
- package/dist/src/commands/install-ui/InstallConfirm.js.map +1 -1
- package/dist/src/commands/install-ui/InstallExecution.d.ts.map +1 -1
- package/dist/src/commands/install-ui/InstallExecution.js +1 -2
- package/dist/src/commands/install-ui/InstallExecution.js.map +1 -1
- package/dist/src/commands/install-ui/InstallFlow.d.ts.map +1 -1
- package/dist/src/commands/install-ui/InstallFlow.js +5 -7
- package/dist/src/commands/install-ui/InstallFlow.js.map +1 -1
- package/dist/src/commands/install-ui/StatuslineConfig.d.ts +3 -6
- package/dist/src/commands/install-ui/StatuslineConfig.d.ts.map +1 -1
- package/dist/src/commands/install-ui/StatuslineConfig.js +21 -17
- package/dist/src/commands/install-ui/StatuslineConfig.js.map +1 -1
- package/dist/src/commands/update.d.ts.map +1 -1
- package/dist/src/commands/update.js +95 -0
- package/dist/src/commands/update.js.map +1 -1
- package/dist/src/commands/wiki.d.ts.map +1 -1
- package/dist/src/commands/wiki.js +75 -11
- package/dist/src/commands/wiki.js.map +1 -1
- package/dist/src/coordinator/graph-types.d.ts +11 -1
- package/dist/src/coordinator/graph-types.d.ts.map +1 -1
- package/dist/src/coordinator/graph-walker.d.ts.map +1 -1
- package/dist/src/coordinator/graph-walker.js +29 -2
- package/dist/src/coordinator/graph-walker.js.map +1 -1
- package/dist/src/coordinator/prompt-assembler.d.ts.map +1 -1
- package/dist/src/coordinator/prompt-assembler.js +3 -2
- package/dist/src/coordinator/prompt-assembler.js.map +1 -1
- package/dist/src/hooks/__tests__/statusline-visual-test.d.ts +4 -1
- package/dist/src/hooks/__tests__/statusline-visual-test.d.ts.map +1 -1
- package/dist/src/hooks/__tests__/statusline-visual-test.js +55 -174
- package/dist/src/hooks/__tests__/statusline-visual-test.js.map +1 -1
- package/dist/src/hooks/constants.d.ts +29 -60
- package/dist/src/hooks/constants.d.ts.map +1 -1
- package/dist/src/hooks/constants.js +105 -82
- package/dist/src/hooks/constants.js.map +1 -1
- package/dist/src/hooks/skill-context.d.ts.map +1 -1
- package/dist/src/hooks/skill-context.js +54 -6
- package/dist/src/hooks/skill-context.js.map +1 -1
- package/dist/src/hooks/statusline.d.ts +11 -8
- package/dist/src/hooks/statusline.d.ts.map +1 -1
- package/dist/src/hooks/statusline.js +284 -182
- package/dist/src/hooks/statusline.js.map +1 -1
- package/dist/src/hooks/workspace.d.ts.map +1 -1
- package/dist/src/hooks/workspace.js +2 -1
- package/dist/src/hooks/workspace.js.map +1 -1
- package/dist/src/migrations/_template.d.ts +12 -0
- package/dist/src/migrations/_template.d.ts.map +1 -0
- package/dist/src/migrations/_template.js +55 -0
- package/dist/src/migrations/_template.js.map +1 -0
- package/dist/src/migrations/index.d.ts +14 -0
- package/dist/src/migrations/index.d.ts.map +1 -0
- package/dist/src/migrations/index.js +20 -0
- package/dist/src/migrations/index.js.map +1 -0
- package/dist/src/migrations/run.d.ts +12 -0
- package/dist/src/migrations/run.d.ts.map +1 -0
- package/dist/src/migrations/run.js +119 -0
- package/dist/src/migrations/run.js.map +1 -0
- package/dist/src/migrations/v1-to-v2.d.ts +10 -0
- package/dist/src/migrations/v1-to-v2.d.ts.map +1 -0
- package/dist/src/migrations/v1-to-v2.js +71 -0
- package/dist/src/migrations/v1-to-v2.js.map +1 -0
- package/dist/src/tools/team-activity.d.ts.map +1 -1
- package/dist/src/tools/team-activity.js +22 -0
- package/dist/src/tools/team-activity.js.map +1 -1
- package/dist/src/tools/transition-recorder.d.ts +2 -17
- package/dist/src/tools/transition-recorder.d.ts.map +1 -1
- package/dist/src/tools/transition-recorder.js +6 -3
- package/dist/src/tools/transition-recorder.js.map +1 -1
- package/dist/src/types/index.d.ts +2 -1
- package/dist/src/types/index.d.ts.map +1 -1
- package/dist/src/utils/migration-registry.d.ts +65 -0
- package/dist/src/utils/migration-registry.d.ts.map +1 -0
- package/dist/src/utils/migration-registry.js +117 -0
- package/dist/src/utils/migration-registry.js.map +1 -0
- package/dist/src/utils/state-schema.d.ts +153 -0
- package/dist/src/utils/state-schema.d.ts.map +1 -0
- package/dist/src/utils/state-schema.js +329 -0
- package/dist/src/utils/state-schema.js.map +1 -0
- package/package.json +1 -1
- package/templates/state.json +17 -39
- package/workflows/brainstorm.md +3 -3
- package/workflows/codebase-rebuild.md +2 -12
- package/workflows/debug.md +7 -8
- package/workflows/execute.md +18 -4
- package/workflows/fork.md +37 -86
- package/workflows/init.md +1 -4
- package/workflows/integration-test.md +4 -5
- package/workflows/issue.md +3 -9
- package/workflows/learn.md +20 -19
- package/workflows/maestro.codex.md +8 -1
- package/workflows/maestro.md +12 -3
- package/workflows/memory.md +26 -71
- package/workflows/merge.md +45 -107
- package/workflows/milestone-complete.md +24 -7
- package/workflows/retrospective.md +77 -109
- package/workflows/review.md +5 -12
- package/workflows/specs-remove.md +115 -0
- package/workflows/specs-setup.md +10 -32
- package/workflows/status.md +291 -290
- package/workflows/sync.md +5 -5
- package/workflows/test.md +4 -5
- package/workflows/ui-style.md +3 -4
- package/workflows/verify.md +2 -2
- package/workflows/wiki-connect.md +188 -0
- package/workflows/wiki-digest.md +221 -0
- package/workflows/wiki-manage.md +204 -0
|
@@ -60,7 +60,7 @@ Wave-based multi-role brainstorming using `spawn_agents_on_csv`. Diamond topolog
|
|
|
60
60
|
$maestro-brainstorm "Build real-time collaboration platform"
|
|
61
61
|
$maestro-brainstorm -y "Build real-time collaboration platform"
|
|
62
62
|
$maestro-brainstorm -c 6 "Build real-time collaboration platform --count 5"
|
|
63
|
-
$maestro-brainstorm --continue "brainstorm-collab
|
|
63
|
+
$maestro-brainstorm --continue "20260318-brainstorm-collab"
|
|
64
64
|
```
|
|
65
65
|
|
|
66
66
|
**Flags**:
|
|
@@ -125,7 +125,7 @@ Each wave generates `wave-{N}.csv` with extra `prev_context` column.
|
|
|
125
125
|
### Session Structure
|
|
126
126
|
|
|
127
127
|
```
|
|
128
|
-
.workflow/.csv-wave/brainstorm-{slug}
|
|
128
|
+
.workflow/.csv-wave/{YYYYMMDD}-brainstorm-{slug}/
|
|
129
129
|
+-- tasks.csv
|
|
130
130
|
+-- results.csv
|
|
131
131
|
+-- discoveries.ndjson
|
|
@@ -184,7 +184,7 @@ const topicArg = $ARGUMENTS
|
|
|
184
184
|
|
|
185
185
|
const slug = topicArg.toLowerCase().replace(/[^a-z0-9]+/g, '-').substring(0, 40)
|
|
186
186
|
const dateStr = getUtc8ISOString().substring(0, 10).replace(/-/g, '')
|
|
187
|
-
const sessionId =
|
|
187
|
+
const sessionId = `${dateStr}-brainstorm-${slug}`
|
|
188
188
|
const sessionFolder = `.workflow/.csv-wave/${sessionId}`
|
|
189
189
|
|
|
190
190
|
Bash(`mkdir -p ${sessionFolder}/.brainstorming`)
|
|
@@ -196,7 +196,7 @@ Bash(`mkdir -p ${sessionFolder}/.brainstorming`)
|
|
|
196
196
|
|
|
197
197
|
**Decomposition Rules**:
|
|
198
198
|
|
|
199
|
-
1. **Mode detection**: Number = phase mode (resolve via state.json artifact registry to `.workflow/scratch/{
|
|
199
|
+
1. **Mode detection**: Number = phase mode (resolve via state.json artifact registry to `.workflow/scratch/{YYYYMMDD}-{type}-{slug}/`), text = scratch mode
|
|
200
200
|
2. **Project specs loading**: Read `.workflow/specs/` for architecture-aware analysis context
|
|
201
201
|
3. **Role selection**:
|
|
202
202
|
|
|
@@ -106,7 +106,7 @@ const AUTO_FLAG_MAP = {
|
|
|
106
106
|
|
|
107
107
|
function assembleArgs(step) {
|
|
108
108
|
let a = (step.args || '')
|
|
109
|
-
.replace(/\{phase\}/g, context.
|
|
109
|
+
.replace(/\{phase\}/g, context.phase || '')
|
|
110
110
|
.replace(/\{description\}/g, context.user_intent || '')
|
|
111
111
|
.replace(/\{issue_id\}/g, context.issue_id || '')
|
|
112
112
|
.replace(/\{spec_session_id\}/g, context.spec_session_id || '')
|
|
@@ -145,7 +145,7 @@ Bash({
|
|
|
145
145
|
```javascript
|
|
146
146
|
// Context propagation from output
|
|
147
147
|
const phaseMatch = output.match(/PHASE:\s*(\d+)/m);
|
|
148
|
-
if (phaseMatch) context.
|
|
148
|
+
if (phaseMatch) context.phase = phaseMatch[1]; // derived from output, not stored in state
|
|
149
149
|
const specMatch = output.match(/SPEC-[\w-]+/);
|
|
150
150
|
if (specMatch) context.spec_session_id = specMatch[0];
|
|
151
151
|
const scratchMatch = output.match(/scratch_dir:\s*(.+)/m);
|
|
@@ -60,7 +60,7 @@ $maestro-execute "3"
|
|
|
60
60
|
$maestro-execute -c 4 "3 --auto-commit"
|
|
61
61
|
$maestro-execute -y "3 --method cli"
|
|
62
62
|
$maestro-execute "3 --dir .workflow/scratch/quick-fix"
|
|
63
|
-
$maestro-execute --continue "execute-phase3
|
|
63
|
+
$maestro-execute --continue "20260318-execute-P3-phase3"
|
|
64
64
|
```
|
|
65
65
|
|
|
66
66
|
**Flags**:
|
|
@@ -130,7 +130,7 @@ Each wave generates `wave-{N}.csv` with extra `prev_context` column populated fr
|
|
|
130
130
|
### Session Structure
|
|
131
131
|
|
|
132
132
|
```
|
|
133
|
-
.workflow/.csv-wave/execute-{
|
|
133
|
+
.workflow/.csv-wave/{YYYYMMDD}-execute-P{N}-{slug}/
|
|
134
134
|
+-- tasks.csv
|
|
135
135
|
+-- results.csv
|
|
136
136
|
+-- discoveries.ndjson
|
|
@@ -181,8 +181,8 @@ const phaseArg = $ARGUMENTS
|
|
|
181
181
|
|
|
182
182
|
const dateStr = getUtc8ISOString().substring(0, 10).replace(/-/g, '')
|
|
183
183
|
const sessionId = scratchDir
|
|
184
|
-
?
|
|
185
|
-
:
|
|
184
|
+
? `${dateStr}-execute-scratch`
|
|
185
|
+
: `${dateStr}-execute-P${phaseArg}-${phaseSlug}`
|
|
186
186
|
const sessionFolder = `.workflow/.csv-wave/${sessionId}`
|
|
187
187
|
|
|
188
188
|
Bash(`mkdir -p ${sessionFolder}`)
|
|
@@ -325,9 +325,19 @@ If a task is blocked/failed and other tasks in later waves depend on it:
|
|
|
325
325
|
5. **Extract incremental learnings**:
|
|
326
326
|
- Read all `.summaries/` from PLAN_DIR
|
|
327
327
|
- Extract strategy adjustments, patterns, pitfalls
|
|
328
|
-
-
|
|
328
|
+
- Check existing entries via `maestro spec load --category learning` (dedup)
|
|
329
|
+
- Append to `.workflow/specs/learnings.md` using `<spec-entry>` closed-tag format (category=`learning`, auto-extract keywords, date=today, source=`execute`)
|
|
329
330
|
- Mark artifact `harvested: true` in state.json
|
|
330
331
|
|
|
332
|
+
5b. **Post-task Knowledge Inquiry** (after each task completes):
|
|
333
|
+
- **Execution deviation**: If task summary mentions approach change, dependency swap, or plan deviation:
|
|
334
|
+
→ Ask: "TASK-{NNN} deviated from the plan. Should this decision be recorded as an architecture constraint? (`/spec-add arch`)"
|
|
335
|
+
- **Retry success**: If task required ≥2 retries before completion:
|
|
336
|
+
→ Ask: "TASK-{NNN} succeeded after {N} retries. Should this fix pattern be documented? (`/spec-add debug`)"
|
|
337
|
+
- **Implicit knowledge**: If task summary contains design rationale ("chose X because", "rejected Y due to"):
|
|
338
|
+
→ Ask: "Design decision detected. Should it be recorded as a learning? (`/spec-add learning`)"
|
|
339
|
+
- If user confirms, append `<spec-entry>` to matching category file via `spec-add` mechanism
|
|
340
|
+
|
|
331
341
|
6. **Generate context.md**:
|
|
332
342
|
|
|
333
343
|
```markdown
|
|
@@ -16,7 +16,7 @@ When `--auto`: After config questions, run research without further interaction.
|
|
|
16
16
|
```bash
|
|
17
17
|
$maestro-init ""
|
|
18
18
|
$maestro-init "--auto"
|
|
19
|
-
$maestro-init "--from-brainstorm brainstorm-auth
|
|
19
|
+
$maestro-init "--from-brainstorm 20260318-brainstorm-auth"
|
|
20
20
|
```
|
|
21
21
|
|
|
22
22
|
**Flags**:
|
|
@@ -65,9 +65,24 @@ cp .workflow/roadmap.md .workflow/milestones/{milestone}/roadmap-snapshot.md
|
|
|
65
65
|
- Read `.summaries/` from each execute artifact's plan dir
|
|
66
66
|
- Read `reflection-log.md` if exists
|
|
67
67
|
- Extract patterns, pitfalls, strategy adjustments
|
|
68
|
-
-
|
|
68
|
+
- Check existing entries via `maestro spec load --category learning` (dedup)
|
|
69
|
+
- Append to `.workflow/specs/learnings.md` using `<spec-entry>` closed-tag format (category=`learning`, auto-extract keywords, date=today, source=`milestone-complete`)
|
|
69
70
|
- Avoid duplicates (check existing entries)
|
|
70
71
|
|
|
72
|
+
### Step 3b: Knowledge Promotion Inquiry
|
|
73
|
+
|
|
74
|
+
After learning extraction, scan `learnings.md` for promotion candidates:
|
|
75
|
+
|
|
76
|
+
1. **High-frequency pattern detection**: Scan all `<spec-entry category="learning">` entries for keyword overlap (≥2 entries sharing keywords):
|
|
77
|
+
→ Ask: "Keyword '{keyword}' appears in {N} learning entries. Should this be promoted to a formal coding convention? (`/spec-add coding`)"
|
|
78
|
+
|
|
79
|
+
2. **Convention drift detection**: Compare executed task summaries against `coding-conventions.md` and `architecture-constraints.md`:
|
|
80
|
+
→ Ask: "Were any established conventions bypassed during this milestone? Should conventions be updated?"
|
|
81
|
+
|
|
82
|
+
3. **Wiki island check**: Auto-trigger `wiki-connect --fix` to link newly extracted knowledge.
|
|
83
|
+
|
|
84
|
+
If user confirms, append promoted `<spec-entry>` to target category file, preserving original date and source traceability.
|
|
85
|
+
|
|
71
86
|
### Step 4: Archive Artifact Entries
|
|
72
87
|
|
|
73
88
|
Move artifact entries from `state.json.artifacts[]` to `milestone_history`:
|
|
@@ -130,6 +145,8 @@ Next steps:
|
|
|
130
145
|
$maestro-milestone-release -- Cut release
|
|
131
146
|
$maestro-analyze -- Start next milestone
|
|
132
147
|
$manage-status -- View state
|
|
148
|
+
$manage-wiki health -- Check wiki graph health
|
|
149
|
+
$wiki-digest -- Generate knowledge digest
|
|
133
150
|
```
|
|
134
151
|
|
|
135
152
|
</execution>
|
|
@@ -55,7 +55,7 @@ $maestro-plan -y "3 --auto"
|
|
|
55
55
|
$maestro-plan -c 4 "3 --spec SPEC-001"
|
|
56
56
|
$maestro-plan "3 --gaps"
|
|
57
57
|
$maestro-plan "3 --dir .workflow/scratch/quick-nav-fix"
|
|
58
|
-
$maestro-plan --continue "plan-
|
|
58
|
+
$maestro-plan --continue "20260318-plan-P3-auth"
|
|
59
59
|
```
|
|
60
60
|
|
|
61
61
|
**Flags**:
|
|
@@ -116,7 +116,7 @@ Each wave generates `wave-{N}.csv` with extra `prev_context` column.
|
|
|
116
116
|
### Session Structure
|
|
117
117
|
|
|
118
118
|
```
|
|
119
|
-
.workflow/.csv-wave/plan-{
|
|
119
|
+
.workflow/.csv-wave/{YYYYMMDD}-plan-P{N}-{slug}/
|
|
120
120
|
+-- tasks.csv
|
|
121
121
|
+-- results.csv
|
|
122
122
|
+-- discoveries.ndjson
|
|
@@ -197,9 +197,9 @@ if (dirMatch) {
|
|
|
197
197
|
}
|
|
198
198
|
|
|
199
199
|
const dateStr = getUtc8ISOString().substring(0, 10).replace(/-/g, '')
|
|
200
|
-
const sessionId =
|
|
200
|
+
const sessionId = `${dateStr}-plan-P${phaseArg}-${phaseSlug}`
|
|
201
201
|
const sessionFolder = `.workflow/.csv-wave/${sessionId}`
|
|
202
|
-
const scratchDir = `.workflow/scratch
|
|
202
|
+
const scratchDir = `.workflow/scratch/${dateStr}-plan-P${phaseArg}-${phaseSlug}`
|
|
203
203
|
|
|
204
204
|
Bash(`mkdir -p ${sessionFolder}`)
|
|
205
205
|
Bash(`mkdir -p ${scratchDir}/.task/`)
|
|
@@ -413,8 +413,8 @@ spawn_agents_on_csv({
|
|
|
413
413
|
Tasks: {task_count} tasks in {wave_count} waves
|
|
414
414
|
Check: {checker_status}
|
|
415
415
|
|
|
416
|
-
Plan: {
|
|
417
|
-
Tasks: {
|
|
416
|
+
Plan: {scratch_dir}/plan.json
|
|
417
|
+
Tasks: {scratch_dir}/.task/TASK-*.json
|
|
418
418
|
|
|
419
419
|
Next steps:
|
|
420
420
|
Skill({ skill: "maestro-execute", args: "{phase}" }) -- Execute the plan
|
|
@@ -135,7 +135,7 @@ Each wave generates `wave-{N}.csv` with extra `prev_context` column.
|
|
|
135
135
|
### Session Structure
|
|
136
136
|
|
|
137
137
|
```
|
|
138
|
-
.workflow/.csv-wave/roadmap-{slug}
|
|
138
|
+
.workflow/.csv-wave/{YYYYMMDD}-roadmap-{slug}/
|
|
139
139
|
+-- tasks.csv
|
|
140
140
|
+-- results.csv
|
|
141
141
|
+-- discoveries.ndjson
|
|
@@ -164,7 +164,7 @@ const slug = requirementArg.toLowerCase()
|
|
|
164
164
|
.replace(/[^a-z0-9]+/g, '-')
|
|
165
165
|
.substring(0, 40)
|
|
166
166
|
const dateStr = getUtc8ISOString().substring(0, 10).replace(/-/g, '')
|
|
167
|
-
const sessionId =
|
|
167
|
+
const sessionId = `${dateStr}-roadmap-${slug}`
|
|
168
168
|
const sessionFolder = `.workflow/.csv-wave/${sessionId}`
|
|
169
169
|
|
|
170
170
|
Bash(`mkdir -p ${sessionFolder}`)
|
|
@@ -301,7 +301,6 @@ spawn_agents_on_csv({
|
|
|
301
301
|
- Write `.workflow/roadmap.md` using standard roadmap template structure
|
|
302
302
|
- Ensure `.workflow/scratch/` directory exists (phases are labels, not directories)
|
|
303
303
|
- Update `state.json` milestones array and set `current_milestone`
|
|
304
|
-
- Update `.workflow/state.json` (if exists): set `current_phase: 1`
|
|
305
304
|
|
|
306
305
|
6. Display summary:
|
|
307
306
|
|
|
@@ -372,7 +371,7 @@ echo '{"ts":"<ISO>","worker":"{id}","type":"risk_factor","data":{"name":"OAuth p
|
|
|
372
371
|
- [ ] Wave 2 assembly agent produced roadmap.md
|
|
373
372
|
- [ ] Interactive refinement offered (or skipped with -y)
|
|
374
373
|
- [ ] .workflow/roadmap.md written with phases, milestones, success criteria
|
|
375
|
-
- [ ] state.json updated with milestones
|
|
374
|
+
- [ ] state.json updated with milestones
|
|
376
375
|
- [ ] context.md generated with analysis summary
|
|
377
376
|
- [ ] Completion report displayed with next steps
|
|
378
377
|
</success_criteria>
|
|
@@ -139,7 +139,7 @@ Each wave generates `wave-{N}.csv` with extra `prev_context` column.
|
|
|
139
139
|
### Session Structure
|
|
140
140
|
|
|
141
141
|
```
|
|
142
|
-
.workflow/.csv-wave/spec-generate-{slug}
|
|
142
|
+
.workflow/.csv-wave/{YYYYMMDD}-spec-generate-{slug}/
|
|
143
143
|
+-- tasks.csv
|
|
144
144
|
+-- results.csv
|
|
145
145
|
+-- discoveries.ndjson
|
|
@@ -189,7 +189,7 @@ const slug = topicArg.toLowerCase()
|
|
|
189
189
|
.replace(/[^a-z0-9]+/g, '-')
|
|
190
190
|
.substring(0, 40)
|
|
191
191
|
const dateStr = getUtc8ISOString().substring(0, 10).replace(/-/g, '')
|
|
192
|
-
const sessionId =
|
|
192
|
+
const sessionId = `${dateStr}-spec-generate-${slug}`
|
|
193
193
|
const sessionFolder = `.workflow/.csv-wave/${sessionId}`
|
|
194
194
|
|
|
195
195
|
Bash(`mkdir -p ${sessionFolder}`)
|
|
@@ -37,7 +37,7 @@ $maestro-ui-design "3 --style-skill PKG --stack react"
|
|
|
37
37
|
|
|
38
38
|
When `--yes` or `-y`: Skip interactive selection, auto-pick top-scored variant, skip brief review.
|
|
39
39
|
|
|
40
|
-
**Output**: `{
|
|
40
|
+
**Output**: `{scratch_dir}/design-ref/` with MASTER.md, design-tokens.json, animation-tokens.json, selection.json, prototypes/
|
|
41
41
|
</context>
|
|
42
42
|
|
|
43
43
|
<invariants>
|
|
@@ -54,7 +54,7 @@ When `--yes` or `-y`: Skip interactive selection, auto-pick top-scored variant,
|
|
|
54
54
|
### Step 1: Parse Input and Resolve Target
|
|
55
55
|
|
|
56
56
|
1. Parse flags from `$ARGUMENTS`: `--styles N`, `--stack`, `--targets`, `--persist`, `--full`, `-y`
|
|
57
|
-
2. **Phase mode** (number): resolve via state.json artifact registry to `.workflow/scratch/{
|
|
57
|
+
2. **Phase mode** (number): resolve via state.json artifact registry to `.workflow/scratch/{YYYYMMDD}-{type}-{slug}/`
|
|
58
58
|
3. **Scratch mode** (text): create `.workflow/scratch/ui-design-{slug}-{date}/` with minimal index.json
|
|
59
59
|
4. Create output directories:
|
|
60
60
|
```bash
|
|
@@ -148,10 +148,10 @@ Agent({
|
|
|
148
148
|
Targets: {target_list}
|
|
149
149
|
|
|
150
150
|
Design System:
|
|
151
|
-
MASTER.md: {
|
|
152
|
-
Tokens: {
|
|
153
|
-
Animation: {
|
|
154
|
-
Prototypes: {
|
|
151
|
+
MASTER.md: {scratch_dir}/design-ref/MASTER.md
|
|
152
|
+
Tokens: {scratch_dir}/design-ref/design-tokens.json
|
|
153
|
+
Animation: {scratch_dir}/design-ref/animation-tokens.json
|
|
154
|
+
Prototypes: {scratch_dir}/design-ref/prototypes/
|
|
155
155
|
|
|
156
156
|
Next steps:
|
|
157
157
|
Skill({ skill: "maestro-plan", args: "{phase}" })
|
|
@@ -63,7 +63,7 @@ Wave-based 3-layer Goal-Backward verification using `spawn_agents_on_csv`. Decom
|
|
|
63
63
|
$maestro-verify "3"
|
|
64
64
|
$maestro-verify -c 4 "3 --skip-tests"
|
|
65
65
|
$maestro-verify -y "3 --skip-antipattern"
|
|
66
|
-
$maestro-verify --continue "verify-
|
|
66
|
+
$maestro-verify --continue "20260318-verify-P3-auth"
|
|
67
67
|
```
|
|
68
68
|
|
|
69
69
|
**Flags**:
|
|
@@ -102,7 +102,7 @@ id,title,description,layer,phase_dir,check_type,deps,context_from,wave,status,fi
|
|
|
102
102
|
| `title` | Input | Short check title |
|
|
103
103
|
| `description` | Input | Detailed verification instructions for this check |
|
|
104
104
|
| `layer` | Input | Verification layer: truth/artifact/wiring/antipattern/nyquist |
|
|
105
|
-
| `phase_dir` | Input | Target directory path (e.g., `.workflow/scratch/plan-chat-2026
|
|
105
|
+
| `phase_dir` | Input | Target directory path (e.g., `.workflow/scratch/plan-chat-2026/`) |
|
|
106
106
|
| `check_type` | Input | Specific check type: observable_behavior/exists/substance/import_usage/pattern_scan/test_coverage |
|
|
107
107
|
| `deps` | Input | Semicolon-separated dependency task IDs |
|
|
108
108
|
| `context_from` | Input | Semicolon-separated task IDs whose findings this task needs |
|
|
@@ -132,7 +132,7 @@ Each wave generates `wave-{N}.csv` with extra `prev_context` column.
|
|
|
132
132
|
### Session Structure
|
|
133
133
|
|
|
134
134
|
```
|
|
135
|
-
.workflow/.csv-wave/verify-{
|
|
135
|
+
.workflow/.csv-wave/{YYYYMMDD}-verify-P{N}-{slug}/
|
|
136
136
|
+-- tasks.csv
|
|
137
137
|
+-- results.csv
|
|
138
138
|
+-- discoveries.ndjson
|
|
@@ -179,7 +179,7 @@ const phaseArg = $ARGUMENTS
|
|
|
179
179
|
.trim()
|
|
180
180
|
|
|
181
181
|
const dateStr = getUtc8ISOString().substring(0, 10).replace(/-/g, '')
|
|
182
|
-
const sessionId =
|
|
182
|
+
const sessionId = `${dateStr}-verify-P${phaseArg}-${phaseSlug}`
|
|
183
183
|
const sessionFolder = `.workflow/.csv-wave/${sessionId}`
|
|
184
184
|
|
|
185
185
|
Bash(`mkdir -p ${sessionFolder}`)
|
|
@@ -191,7 +191,7 @@ Bash(`mkdir -p ${sessionFolder}`)
|
|
|
191
191
|
|
|
192
192
|
**Decomposition Rules**:
|
|
193
193
|
|
|
194
|
-
1. **Phase resolution**: Resolve `{phaseArg}` via artifact registry in `state.json` to `.workflow/scratch/{
|
|
194
|
+
1. **Phase resolution**: Resolve `{phaseArg}` via artifact registry in `state.json` to `.workflow/scratch/{YYYYMMDD}-{type}-{slug}/`
|
|
195
195
|
2. **Artifact loading**: Read from phase directory:
|
|
196
196
|
- `index.json` -- success_criteria (ground truth for verification)
|
|
197
197
|
- `plan.json` -- original plan with task_ids
|
|
@@ -445,8 +445,8 @@ Issue Refs: {issue_ids}
|
|
|
445
445
|
- If `verification.json` or `validation.json` exists in phase dir, move to `.history/`
|
|
446
446
|
|
|
447
447
|
12. **Copy output files** to phase directory:
|
|
448
|
-
- `verification.json` -> `{
|
|
449
|
-
- `validation.json` -> `{
|
|
448
|
+
- `verification.json` -> `{artifact_dir}/verification.json`
|
|
449
|
+
- `validation.json` -> `{artifact_dir}/validation.json` (if generated)
|
|
450
450
|
|
|
451
451
|
13. **Update phase index.json** with verification status and timestamps.
|
|
452
452
|
|
|
@@ -475,11 +475,20 @@ Human Verification: {human_items} items
|
|
|
475
475
|
Files:
|
|
476
476
|
{session_folder}/verification.json
|
|
477
477
|
{session_folder}/validation.json (if generated)
|
|
478
|
-
{
|
|
479
|
-
{
|
|
478
|
+
{artifact_dir}/verification.json
|
|
479
|
+
{artifact_dir}/validation.json (if generated)
|
|
480
480
|
```
|
|
481
481
|
|
|
482
|
-
15. **
|
|
482
|
+
15. **Post-verify Knowledge Inquiry** (before next step routing):
|
|
483
|
+
- **Anti-pattern detection**: If anti-pattern scan found blockers:
|
|
484
|
+
→ Ask: "Verification found {N} anti-patterns. Should `quality-rules.md` be updated to enforce these checks? (`/spec-add quality`)"
|
|
485
|
+
- **Constraint violation**: If Goal-Backward check found constraint violations or missing wiring:
|
|
486
|
+
→ Ask: "Verification found architecture constraint violations. Should `architecture-constraints.md` be updated? (`/spec-add arch`)"
|
|
487
|
+
- **Test coverage gaps**: If Nyquist gaps found with recurring pattern:
|
|
488
|
+
→ Ask: "Persistent test coverage gap detected in {module}. Should it be added to `test-conventions.md` as a required test area? (`/spec-add test`)"
|
|
489
|
+
- If user confirms, append `<spec-entry>` to matching category file via `spec-add` mechanism
|
|
490
|
+
|
|
491
|
+
16. **Next step routing**:
|
|
483
492
|
|
|
484
493
|
| Result | Suggestion |
|
|
485
494
|
|--------|------------|
|
|
@@ -528,7 +537,7 @@ echo '{"ts":"<ISO>","worker":"{id}","type":"verification_gap","data":{"gap_id":"
|
|
|
528
537
|
|
|
529
538
|
| Error | Resolution |
|
|
530
539
|
|-------|------------|
|
|
531
|
-
| Phase directory not found | Resolve via state.json artifact registry;
|
|
540
|
+
| Phase directory not found | Resolve via state.json artifact registry; abort if not found |
|
|
532
541
|
| No execution results found | Abort with error: "No completed tasks found -- run execute first" |
|
|
533
542
|
| No summaries found | Warn, proceed with task file analysis only |
|
|
534
543
|
| No success_criteria in index.json | Derive must-haves from phase goal (fallback) |
|
|
@@ -55,7 +55,7 @@ $ARGUMENTS -- optional flags for rebuild control.
|
|
|
55
55
|
$manage-codebase-rebuild ""
|
|
56
56
|
$manage-codebase-rebuild -y "--force"
|
|
57
57
|
$manage-codebase-rebuild -c 5 "--force --skip-commit"
|
|
58
|
-
$manage-codebase-rebuild --continue "rebuild-full
|
|
58
|
+
$manage-codebase-rebuild --continue "20260318-rebuild-full"
|
|
59
59
|
```
|
|
60
60
|
|
|
61
61
|
**Flags**:
|
|
@@ -145,7 +145,7 @@ Single wave generates `wave-1.csv`. No `prev_context` needed (all tasks independ
|
|
|
145
145
|
### Session Structure
|
|
146
146
|
|
|
147
147
|
```
|
|
148
|
-
.workflow/.csv-wave/rebuild-{scope}
|
|
148
|
+
.workflow/.csv-wave/{YYYYMMDD}-rebuild-{scope}/
|
|
149
149
|
+-- tasks.csv
|
|
150
150
|
+-- results.csv
|
|
151
151
|
+-- discoveries.ndjson
|
|
@@ -171,7 +171,7 @@ const forceMode = $ARGUMENTS.includes('--force') || AUTO_YES
|
|
|
171
171
|
const skipCommit = $ARGUMENTS.includes('--skip-commit')
|
|
172
172
|
|
|
173
173
|
const dateStr = getUtc8ISOString().substring(0, 10).replace(/-/g, '')
|
|
174
|
-
const sessionId =
|
|
174
|
+
const sessionId = `${dateStr}-rebuild-full`
|
|
175
175
|
const sessionFolder = `.workflow/.csv-wave/${sessionId}`
|
|
176
176
|
|
|
177
177
|
Bash(`mkdir -p ${sessionFolder}`)
|
|
@@ -204,7 +204,7 @@ Bash(`mkdir -p ${sessionFolder}`)
|
|
|
204
204
|
|
|
205
205
|
4. **Detect source directories**:
|
|
206
206
|
- Check for: `src/`, `lib/`, `app/`, `packages/`
|
|
207
|
-
- Read `project
|
|
207
|
+
- Read `project.md` Tech Stack section if available for context
|
|
208
208
|
- If no source directories found: abort with "No source files in project"
|
|
209
209
|
|
|
210
210
|
5. **Load project specs** (if available):
|
|
@@ -54,8 +54,17 @@ Follow '~/.maestro/workflows/harvest.md' Stages 1–8.
|
|
|
54
54
|
3. **Stable fragment IDs** — `HRV-{8 hex}` from `hash(source_id + content_hash)`
|
|
55
55
|
4. **Never modify source artifacts** — purely extractive
|
|
56
56
|
5. **Confidence filtering** — below threshold logged but not routed
|
|
57
|
+
6. **Spec format enforcement** — all spec routing must use `<spec-entry>` closed-tag format with `category`, `keywords`, `date`, `source="harvest"` attributes
|
|
57
58
|
|
|
58
|
-
**
|
|
59
|
+
**Routing rules:**
|
|
60
|
+
- Universal design patterns → `coding` or `arch` category
|
|
61
|
+
- Component-level pitfalls → `learning` category
|
|
62
|
+
- Quality enforcement rules → `quality` category
|
|
63
|
+
- Wiki: `maestro wiki create --type <type> --slug harvest-<source_type>-<short_id>`
|
|
64
|
+
- Spec: `maestro wiki append spec-<file> --category <category> --body "<content>" --keywords "<kws>"` (unified write path) or `Skill({ skill: "spec-add", args: "<category> <content>" })`
|
|
65
|
+
- Issue: append to `issues.jsonl` matching canonical schema
|
|
66
|
+
|
|
67
|
+
**Next steps:** `/manage-wiki health`, `maestro wiki list --type note`, `/wiki-connect --fix`, `/wiki-digest`, `/manage-issue list --source harvest`
|
|
59
68
|
</execution>
|
|
60
69
|
|
|
61
70
|
<error_codes>
|
|
@@ -60,7 +60,7 @@ Wave-based multi-perspective issue discovery using `spawn_agents_on_csv`. In def
|
|
|
60
60
|
$manage-issue-discover
|
|
61
61
|
$manage-issue-discover -c 8 ""
|
|
62
62
|
$manage-issue-discover -y "by-prompt 'error handling gaps in auth module'"
|
|
63
|
-
$manage-issue-discover --continue "discover-multi
|
|
63
|
+
$manage-issue-discover --continue "20260318-discover-multi"
|
|
64
64
|
```
|
|
65
65
|
|
|
66
66
|
**Flags**:
|
|
@@ -127,7 +127,7 @@ Each wave generates `wave-{N}.csv` with extra `prev_context` column.
|
|
|
127
127
|
### Session Structure
|
|
128
128
|
|
|
129
129
|
```
|
|
130
|
-
.workflow/.csv-wave/discover-{mode}
|
|
130
|
+
.workflow/.csv-wave/{YYYYMMDD}-discover-{mode}/
|
|
131
131
|
+-- tasks.csv
|
|
132
132
|
+-- results.csv
|
|
133
133
|
+-- discoveries.ndjson
|
|
@@ -185,7 +185,7 @@ const mode = isByPrompt ? 'by-prompt' : 'multi'
|
|
|
185
185
|
const dateStr = getUtc8ISOString().substring(0, 10).replace(/-/g, '')
|
|
186
186
|
const timeStr = getUtc8ISOString().substring(11, 19).replace(/:/g, '')
|
|
187
187
|
const sessionId = `DBP-${dateStr}-${timeStr}`
|
|
188
|
-
const csvSessionId =
|
|
188
|
+
const csvSessionId = `${dateStr}-discover-${mode}`
|
|
189
189
|
const sessionFolder = `.workflow/.csv-wave/${csvSessionId}`
|
|
190
190
|
const discoveryDir = `.workflow/issues/discoveries/${sessionId}`
|
|
191
191
|
|
|
@@ -98,7 +98,7 @@ Verify `.workflow/` exists (E001 if not).
|
|
|
98
98
|
| gotcha, surprising, unexpected, watch out | gotcha |
|
|
99
99
|
| technique, approach, method, pattern for | technique |
|
|
100
100
|
|
|
101
|
-
2. **Auto-link phase**: Read `.workflow/state.json` for
|
|
101
|
+
2. **Auto-link phase**: Read `.workflow/state.json` for current phase (derived from artifact registry). Resolve matching directory slug via artifact registry in `state.json` to `.workflow/scratch/{YYYYMMDD}-{type}-{slug}/`. `--phase 0` forces null.
|
|
102
102
|
|
|
103
103
|
3. **Generate stable INS-id**: `INS-{8 lowercase hex}` from `hash(insightText + timestamp)`.
|
|
104
104
|
|
|
@@ -164,6 +164,7 @@ Confidence: medium
|
|
|
164
164
|
Tags: manual, zod, typescript
|
|
165
165
|
|
|
166
166
|
Next: $manage-learn "list" or $manage-learn "search zod"
|
|
167
|
+
Wiki: maestro wiki list --type lesson (lessons auto-indexed in wiki graph)
|
|
167
168
|
```
|
|
168
169
|
</execution>
|
|
169
170
|
|
|
@@ -174,7 +175,7 @@ Next: $manage-learn "list" or $manage-learn "search zod"
|
|
|
174
175
|
| E002 | error | Unknown `--category` value | parse_input |
|
|
175
176
|
| E003 | error | `show` mode requires INS-id argument | show |
|
|
176
177
|
| E004 | error | INS-id not found in lessons.jsonl | show |
|
|
177
|
-
| W001 | warning | Auto-phase detection:
|
|
178
|
+
| W001 | warning | Auto-phase detection: no matching artifact directory found; phase set to null | capture |
|
|
178
179
|
| W002 | warning | `learning-index.json` row count differs from `lessons.jsonl`; offer to rebuild index | list/search |
|
|
179
180
|
</error_codes>
|
|
180
181
|
|
|
@@ -37,7 +37,7 @@ $manage-memory "prune --before 2026-01-01 --type tip --dry-run"
|
|
|
37
37
|
|
|
38
38
|
### Step 1: Resolve Store Paths
|
|
39
39
|
|
|
40
|
-
- **Workflow store**: `.workflow/memory/` (entries: `MEM-*.md`, `TIP-*.md`,
|
|
40
|
+
- **Workflow store**: `.workflow/memory/` (entries: `MEM-*.md`, `TIP-*.md`, indexed in unified `.workflow/wiki-index.json`)
|
|
41
41
|
- **System store**: `~/.claude/projects/{project}/memory/` (files: `MEMORY.md` + topic `.md` files)
|
|
42
42
|
|
|
43
43
|
Derive system path from project root (replace path separators with `--`, prefix drive letter).
|
|
@@ -49,7 +49,7 @@ Default to `list` if no arguments. Parse first token as subcommand.
|
|
|
49
49
|
### Step 3: Execute Subcommand
|
|
50
50
|
|
|
51
51
|
**list**: Show entries from both stores (or filtered by `--store`, `--tag`, `--type`).
|
|
52
|
-
- Workflow:
|
|
52
|
+
- Workflow: use `maestro wiki list --type memory --json` or read `.workflow/wiki-index.json`, display ID, type, date, tags, title
|
|
53
53
|
- System: list `.md` files in system memory directory
|
|
54
54
|
|
|
55
55
|
**search `<query>`**: Full-text grep across both stores. Rank by match count.
|
|
@@ -58,7 +58,7 @@ Default to `list` if no arguments. Parse first token as subcommand.
|
|
|
58
58
|
|
|
59
59
|
**edit `<file>`**: Edit a system memory file. Read current content, apply changes. Warn if MEMORY.md exceeds 200 lines (W003).
|
|
60
60
|
|
|
61
|
-
**delete `<id|file>`**: Require confirmation (or `--confirm` flag). MEMORY.md cannot be deleted (E004). Remove entry file
|
|
61
|
+
**delete `<id|file>`**: Require confirmation (or `--confirm` flag). MEMORY.md cannot be deleted (E004). Remove entry file (WikiIndexer auto-updates `.workflow/wiki-index.json` on next access).
|
|
62
62
|
|
|
63
63
|
**prune**: Requires at least one filter (`--tag`, `--type`, `--before`, `--after`). Workflow store only. `--dry-run` previews without deleting.
|
|
64
64
|
|
|
@@ -54,20 +54,14 @@ If absent or ambiguous, ask user via AskUserQuestion.
|
|
|
54
54
|
2. Generate entry ID: `TIP-{YYYYMMDD}-{NNN}`
|
|
55
55
|
3. Write `.workflow/memory/TIP-{id}.md` with: content, tags, timestamp, context
|
|
56
56
|
|
|
57
|
-
### Step 4:
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
```
|
|
63
|
-
{
|
|
64
|
-
|
|
65
|
-
"type": "compact|tip",
|
|
66
|
-
"date": "{ISO}",
|
|
67
|
-
"title": "{short title}",
|
|
68
|
-
"tags": ["tag1", "tag2"],
|
|
69
|
-
"file": "{filename}"
|
|
70
|
-
}
|
|
57
|
+
### Step 4: Wiki Index Invalidation
|
|
58
|
+
|
|
59
|
+
Memory files are automatically indexed by WikiIndexer. No manual index update needed — the persistent `wiki-index.json` at `.workflow/` root is regenerated on next `maestro wiki` access.
|
|
60
|
+
|
|
61
|
+
For immediate visibility, use:
|
|
62
|
+
```bash
|
|
63
|
+
maestro wiki get memory-{slug} # verify entry exists in wiki
|
|
64
|
+
maestro wiki list --type memory # list all memory entries
|
|
71
65
|
```
|
|
72
66
|
|
|
73
67
|
### Step 5: Confirm
|
|
@@ -19,8 +19,9 @@ $manage-status
|
|
|
19
19
|
Reads from:
|
|
20
20
|
- `.workflow/state.json` — project-level state machine
|
|
21
21
|
- `.workflow/roadmap.md` — milestone and phase structure
|
|
22
|
-
- `.workflow/scratch/*/index.json` — per-phase metadata and progress (resolved via state.json artifact registry
|
|
23
|
-
- `.workflow/scratch/*/.task/TASK-*.json` — individual task statuses (
|
|
22
|
+
- `.workflow/scratch/*/index.json` — per-phase metadata and progress (resolved via state.json artifact registry)
|
|
23
|
+
- `.workflow/scratch/*/.task/TASK-*.json` — individual task statuses (resolved via state.json artifact registry)
|
|
24
|
+
- `.workflow/wiki-index.json` — unified wiki graph index (entry counts, health)
|
|
24
25
|
</context>
|
|
25
26
|
|
|
26
27
|
<execution>
|
|
@@ -38,8 +39,8 @@ test -f .workflow/state.json || exit 1 # E002: state missing
|
|
|
38
39
|
Read all state sources:
|
|
39
40
|
- `.workflow/state.json` -- project-level state machine
|
|
40
41
|
- `.workflow/roadmap.md` -- milestone and phase structure
|
|
41
|
-
- `.workflow/scratch/*/index.json` -- per-phase metadata and progress (resolved via state.json artifact registry
|
|
42
|
-
- `.workflow/scratch/*/.task/TASK-*.json` -- individual task statuses (
|
|
42
|
+
- `.workflow/scratch/*/index.json` -- per-phase metadata and progress (resolved via state.json artifact registry)
|
|
43
|
+
- `.workflow/scratch/*/.task/TASK-*.json` -- individual task statuses (resolved via state.json artifact registry)
|
|
43
44
|
|
|
44
45
|
### Step 3: Calculate Progress
|
|
45
46
|
|
|
@@ -67,6 +68,10 @@ Phase {N}: {title}
|
|
|
67
68
|
In-progress: {list}
|
|
68
69
|
Blocked: {list}
|
|
69
70
|
|
|
71
|
+
--- Knowledge Graph ---
|
|
72
|
+
Wiki entries: {total} (spec: {N}, memory: {N}, note: {N}, lesson: {N}, issue: {N})
|
|
73
|
+
Health: {score}/100 | Orphans: {N}
|
|
74
|
+
|
|
70
75
|
--- Next Steps ---
|
|
71
76
|
Based on current state: {suggestion with Skill() reference}
|
|
72
77
|
```
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: manage-wiki
|
|
3
|
+
description: Wiki knowledge graph management — health dashboard, orphan cleanup, entry search, and graph statistics
|
|
4
|
+
argument-hint: "[health|search|cleanup|stats] [options]"
|
|
5
|
+
allowed-tools: Read, Write, Edit, Bash, Glob, Grep, AskUserQuestion
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
<purpose>
|
|
9
|
+
Unified wiki graph management. Health monitoring, interactive search, orphan cleanup, and graph statistics. Day-to-day operations to keep the knowledge graph healthy.
|
|
10
|
+
|
|
11
|
+
Complements `wiki-connect` (link discovery) and `wiki-digest` (synthesis) with operational tooling.
|
|
12
|
+
</purpose>
|
|
13
|
+
|
|
14
|
+
<required_reading>
|
|
15
|
+
@~/.maestro/workflows/wiki-manage.md
|
|
16
|
+
</required_reading>
|
|
17
|
+
|
|
18
|
+
<context>
|
|
19
|
+
$ARGUMENTS — subcommand and optional flags.
|
|
20
|
+
|
|
21
|
+
**Subcommands:**
|
|
22
|
+
| Subcommand | Description |
|
|
23
|
+
|-----------|-------------|
|
|
24
|
+
| `health` | Health dashboard — score, broken links, orphans, hubs (default) |
|
|
25
|
+
| `search <query>` | Interactive BM25 search with follow-up actions |
|
|
26
|
+
| `cleanup` | Find and resolve orphans, broken links, stale entries |
|
|
27
|
+
| `stats` | Graph statistics — type distribution, tag frequency, growth |
|
|
28
|
+
|
|
29
|
+
**Flags:**
|
|
30
|
+
- `--type <type>` — Filter: spec, memory, note, lesson, issue
|
|
31
|
+
- `--fix` — Auto-fix issues during cleanup
|
|
32
|
+
- `--json` — JSON output
|
|
33
|
+
</context>
|
|
34
|
+
|
|
35
|
+
<execution>
|
|
36
|
+
Follow '~/.maestro/workflows/wiki-manage.md' completely.
|
|
37
|
+
</execution>
|
|
38
|
+
|
|
39
|
+
<error_codes>
|
|
40
|
+
| Code | Severity | Description |
|
|
41
|
+
|------|----------|-------------|
|
|
42
|
+
| E001 | fatal | `.workflow/` not initialized |
|
|
43
|
+
| E002 | fatal | No wiki entries found |
|
|
44
|
+
| E003 | error | Invalid subcommand |
|
|
45
|
+
| W001 | warning | Health score below 50 |
|
|
46
|
+
| W002 | warning | Cleanup had partial failures |
|
|
47
|
+
</error_codes>
|
|
48
|
+
|
|
49
|
+
<success_criteria>
|
|
50
|
+
- [ ] Subcommand parsed (health/search/cleanup/stats)
|
|
51
|
+
- [ ] Wiki data loaded via `maestro wiki` CLI
|
|
52
|
+
- [ ] Results displayed in formatted output
|
|
53
|
+
- [ ] If cleanup --fix: issues resolved and delta reported
|
|
54
|
+
- [ ] Next-step suggestions provided
|
|
55
|
+
</success_criteria>
|