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
|
@@ -49,7 +49,7 @@ Arguments: $ARGUMENTS
|
|
|
49
49
|
|
|
50
50
|
**Storage:**
|
|
51
51
|
- `.workflow/learning/lessons.jsonl` — append-only JSONL row per insight (shared with `quality-retrospective` output)
|
|
52
|
-
- `.workflow/learning/learning-index.json` — searchable index
|
|
52
|
+
- `.workflow/learning/learning-index.json` — searchable index
|
|
53
53
|
|
|
54
54
|
**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.
|
|
55
55
|
</context>
|
|
@@ -58,8 +58,8 @@ Arguments: $ARGUMENTS
|
|
|
58
58
|
Follow `~/.maestro/workflows/learn.md` Stages 1–5 in order. Key invariants:
|
|
59
59
|
|
|
60
60
|
1. **No agent or CLI calls** — this is a pure file operation: parse → infer → append → confirm. Category inference is keyword-based, not LLM-based.
|
|
61
|
-
2. **Auto-link phase** — read `.workflow/state.json` for `current_phase` and
|
|
62
|
-
3. **
|
|
61
|
+
2. **Auto-link phase** — read `.workflow/state.json` for `current_phase` and derive phase context from artifact registry (`state.json.artifacts[]`). `--phase 0` forces no link.
|
|
62
|
+
3. **Index schema** — `learning-index.json` entries[] with id, type, timestamp, file, summary, tags, plus learn-specific fields: lens, category, confidence, routed_to, routed_id.
|
|
63
63
|
4. **Stable INS ids** — `INS-{8 lowercase hex}` from `hash(insight_text + category + phase)`. Deterministic: same content in same context always produces the same ID.
|
|
64
64
|
5. **Append-only lessons.jsonl** — never rewrite existing rows; duplicate detection is the user's job at search time.
|
|
65
65
|
6. **Bootstrap on demand** — create `.workflow/learning/`, `lessons.jsonl`, `learning-index.json` on first use; do not require them to exist upfront.
|
|
@@ -73,7 +73,7 @@ Follow `~/.maestro/workflows/learn.md` Stages 1–5 in order. Key invariants:
|
|
|
73
73
|
| E002 | error | Unknown `--category` value (allowed: pattern, antipattern, decision, tool, gotcha, technique, tip) | parse_input |
|
|
74
74
|
| E003 | error | `show` mode requires an INS-id argument | show |
|
|
75
75
|
| E004 | error | Insight id not found in lessons.jsonl | show |
|
|
76
|
-
| W001 | warning | Auto-phase detection found a current_phase but no matching
|
|
76
|
+
| W001 | warning | Auto-phase detection found a current_phase but no matching artifact in registry; phase set to null | capture |
|
|
77
77
|
| W002 | warning | learning-index.json out of sync with lessons.jsonl (different row count); offer to rebuild | list/search |
|
|
78
78
|
</error_codes>
|
|
79
79
|
|
|
@@ -81,7 +81,7 @@ Follow `~/.maestro/workflows/learn.md` Stages 1–5 in order. Key invariants:
|
|
|
81
81
|
- [ ] Mode correctly routed (capture / list / search / show)
|
|
82
82
|
- [ ] Capture: `lessons.jsonl` row appended with valid JSON and all required fields
|
|
83
83
|
- [ ] Capture: `learning-index.json` updated with matching entry
|
|
84
|
-
- [ ] Capture: phase auto-link resolves correctly when `state.json` has `current_phase`
|
|
84
|
+
- [ ] Capture: phase auto-link resolves correctly via artifact registry when `state.json` has `current_phase`
|
|
85
85
|
- [ ] Capture: category inference produces a sensible default when `--category` absent
|
|
86
86
|
- [ ] List: filters apply, output sorted newest-first, default limit 20
|
|
87
87
|
- [ ] Search: results ranked by title (3) > tags (2) > summary (1) match
|
|
@@ -12,7 +12,7 @@ allowed-tools:
|
|
|
12
12
|
- AskUserQuestion
|
|
13
13
|
---
|
|
14
14
|
<purpose>
|
|
15
|
-
Capture session working memory into `.workflow/memory/` for cross-session recovery. Compact mode only: full session compression for recovery.
|
|
15
|
+
Capture session working memory into `.workflow/memory/` for cross-session recovery. Compact mode only: full session compression for recovery. Entries are created via `maestro wiki create --type memory` and automatically indexed in `.workflow/wiki-index.json`. Invoked when saving session state before context loss.
|
|
16
16
|
|
|
17
17
|
**Note:** Quick tips/notes have been moved to `manage-learn tip <text>`. Use that command for atomic knowledge capture.
|
|
18
18
|
</purpose>
|
|
@@ -29,8 +29,8 @@ Arguments: $ARGUMENTS
|
|
|
29
29
|
- No arguments — Defaults to compact mode
|
|
30
30
|
|
|
31
31
|
**Storage:**
|
|
32
|
-
- `.workflow/memory/` — Memory entries directory
|
|
33
|
-
- `.workflow/
|
|
32
|
+
- `.workflow/memory/` — Memory entries directory (via `maestro wiki create --type memory`)
|
|
33
|
+
- `.workflow/wiki-index.json` — Unified wiki index (auto-updated on create)
|
|
34
34
|
</context>
|
|
35
35
|
|
|
36
36
|
<execution>
|
|
@@ -49,7 +49,7 @@ Follow '~/.maestro/workflows/memory.md' Part B (Memory Capture) completely.
|
|
|
49
49
|
<success_criteria>
|
|
50
50
|
- [ ] Compact mode executed
|
|
51
51
|
- [ ] Entry markdown file written to `.workflow/memory/`
|
|
52
|
-
- [ ] `
|
|
52
|
+
- [ ] `wiki-index.json` auto-updated via wiki create
|
|
53
53
|
- [ ] All session fields populated (objective, files, decisions, plan)
|
|
54
54
|
- [ ] Execution plan preserved VERBATIM (not summarized)
|
|
55
55
|
- [ ] All file paths are ABSOLUTE
|
|
@@ -30,7 +30,7 @@ Arguments: $ARGUMENTS
|
|
|
30
30
|
|
|
31
31
|
| Store | Path | Format | Index |
|
|
32
32
|
|-------|------|--------|-------|
|
|
33
|
-
| `workflow` | `.workflow/memory/` | `MEM-*.md`, `TIP-*.md` (legacy only — new tips go to `manage-learn tip`) |
|
|
33
|
+
| `workflow` | `.workflow/memory/` | `MEM-*.md`, `TIP-*.md` (legacy only — new tips go to `manage-learn tip`) | `.workflow/wiki-index.json` (unified) |
|
|
34
34
|
| `system` | `~/.claude/projects/{project}/memory/` | `MEMORY.md` + topic `.md` files | None (flat files) |
|
|
35
35
|
|
|
36
36
|
**System memory path detection:**
|
|
@@ -0,0 +1,62 @@
|
|
|
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:
|
|
6
|
+
- Read
|
|
7
|
+
- Write
|
|
8
|
+
- Edit
|
|
9
|
+
- Bash
|
|
10
|
+
- Glob
|
|
11
|
+
- Grep
|
|
12
|
+
- AskUserQuestion
|
|
13
|
+
---
|
|
14
|
+
<purpose>
|
|
15
|
+
Unified wiki graph management command. Provides interactive access to wiki health monitoring, entry search, orphan cleanup, and graph statistics — the day-to-day operations that keep the knowledge graph healthy.
|
|
16
|
+
|
|
17
|
+
Complements `/wiki-connect` (link discovery) and `/wiki-digest` (synthesis) with operational tooling.
|
|
18
|
+
</purpose>
|
|
19
|
+
|
|
20
|
+
<required_reading>
|
|
21
|
+
@~/.maestro/workflows/wiki-manage.md
|
|
22
|
+
</required_reading>
|
|
23
|
+
|
|
24
|
+
<context>
|
|
25
|
+
$ARGUMENTS — subcommand and optional flags.
|
|
26
|
+
|
|
27
|
+
**Subcommands:**
|
|
28
|
+
| Subcommand | Description |
|
|
29
|
+
|-----------|-------------|
|
|
30
|
+
| `health` | Health dashboard — score, broken links, orphans, hubs (default) |
|
|
31
|
+
| `search <query>` | Interactive BM25 search with follow-up actions |
|
|
32
|
+
| `cleanup` | Find and resolve orphans, broken links, stale entries |
|
|
33
|
+
| `stats` | Graph statistics — type distribution, tag frequency, growth trends |
|
|
34
|
+
| No args | Same as `health` |
|
|
35
|
+
|
|
36
|
+
**Flags:**
|
|
37
|
+
- `--type <type>` — Filter by wiki type: spec, memory, note, lesson, issue
|
|
38
|
+
- `--fix` — Auto-fix issues found during cleanup (remove broken links, suggest connections)
|
|
39
|
+
- `--json` — Output in JSON format
|
|
40
|
+
</context>
|
|
41
|
+
|
|
42
|
+
<execution>
|
|
43
|
+
Follow '~/.maestro/workflows/wiki-manage.md' completely.
|
|
44
|
+
</execution>
|
|
45
|
+
|
|
46
|
+
<error_codes>
|
|
47
|
+
| Code | Severity | Description | Stage |
|
|
48
|
+
|------|----------|-------------|-------|
|
|
49
|
+
| E001 | fatal | `.workflow/` not initialized — run `/maestro-init` first | validate |
|
|
50
|
+
| E002 | fatal | No wiki entries found — create content first | load |
|
|
51
|
+
| E003 | error | Invalid subcommand | parse_input |
|
|
52
|
+
| W001 | warning | Health score below 50 — graph needs attention | health |
|
|
53
|
+
| W002 | warning | Orphan cleanup had partial failures | cleanup |
|
|
54
|
+
</error_codes>
|
|
55
|
+
|
|
56
|
+
<success_criteria>
|
|
57
|
+
- [ ] Subcommand parsed (health/search/cleanup/stats)
|
|
58
|
+
- [ ] Wiki data loaded via `maestro wiki` CLI
|
|
59
|
+
- [ ] Results displayed in formatted output
|
|
60
|
+
- [ ] If cleanup --fix: issues resolved and delta reported
|
|
61
|
+
- [ ] Next-step suggestions provided
|
|
62
|
+
</success_criteria>
|
|
@@ -60,7 +60,7 @@ Context files:
|
|
|
60
60
|
- `.workflow/.spec/SPEC-xxx/requirements/NFR-*.md` -- Non-functional requirements
|
|
61
61
|
- `.workflow/.spec/SPEC-xxx/architecture/_index.md` -- API endpoints, data model, state machines
|
|
62
62
|
- `.workflow/.spec/SPEC-xxx/epics/EPIC-*.md` -- User stories for E2E scenarios
|
|
63
|
-
- Phase artifacts (resolve via `state.json.artifacts[]` → `.workflow/scratch/` paths
|
|
63
|
+
- Phase artifacts (resolve via `state.json.artifacts[]` → `.workflow/scratch/` paths):
|
|
64
64
|
- plan.json -- Task overview (degraded mode)
|
|
65
65
|
- verification.json -- Cross-reference for must_haves
|
|
66
66
|
- .tests/business/ -- Previous business test artifacts
|
|
@@ -81,7 +81,7 @@ Follow '~/.maestro/workflows/business-test.md' completely.
|
|
|
81
81
|
| Code | Severity | Condition | Recovery |
|
|
82
82
|
|------|----------|-----------|----------|
|
|
83
83
|
| E001 | error | Phase number required | Prompt user for phase number |
|
|
84
|
-
| E002 | error | Phase artifacts not found | Verify phase has artifacts in state.json
|
|
84
|
+
| E002 | error | Phase artifacts not found | Verify phase has artifacts in state.json |
|
|
85
85
|
| E003 | error | No spec package AND no success_criteria (can't extract scenarios) | Run maestro-spec-generate or maestro-plan first |
|
|
86
86
|
| E004 | error | L1 critical failures block L2/L3 progression | Fix blockers first via quality-debug |
|
|
87
87
|
| W001 | warning | Degraded mode (no spec package, using success_criteria) | Consider running maestro-spec-generate for full coverage |
|
|
@@ -39,23 +39,69 @@ User's issue: $ARGUMENTS
|
|
|
39
39
|
- `--from-uat <phase>` -- Read gaps from phase's uat.md as pre-filled symptoms
|
|
40
40
|
- `--parallel` -- Spawn parallel debug agents (one per gap cluster)
|
|
41
41
|
|
|
42
|
-
**
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
42
|
+
**All context via state.json.artifacts[]:**
|
|
43
|
+
|
|
44
|
+
```
|
|
45
|
+
related = artifacts.filter(a =>
|
|
46
|
+
a.phase === target_phase && a.milestone === current_milestone
|
|
47
|
+
).sort_by(completed_at asc)
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
Each artifact's type determines its outputs at `.workflow/{a.path}/`:
|
|
51
|
+
- **execute** → .summaries/, .task/ (source of code changes)
|
|
52
|
+
- **review** → review.json (findings guide hypothesis formation)
|
|
53
|
+
- **debug** → understanding.md, evidence.ndjson (prior investigations, avoid re-investigation)
|
|
54
|
+
- **test** → uat.md (--from-uat gap source), .tests/
|
|
55
|
+
|
|
56
|
+
Extract conclusions from related artifacts that may affect this debug session — review findings guide investigation direction, prior debug avoids redundant work.
|
|
57
|
+
|
|
58
|
+
**Output**: `DEBUG_DIR = .workflow/scratch/{YYYYMMDD}-debug-P{N}-{slug}/` (P{N} = phase number when phase-scoped; omit for standalone)
|
|
47
59
|
</context>
|
|
48
60
|
|
|
49
61
|
<execution>
|
|
50
62
|
Follow '~/.maestro/workflows/debug.md' completely.
|
|
51
63
|
|
|
64
|
+
**Output writes to DEBUG_DIR** (`scratch/{YYYYMMDD}-debug-P{N}-{slug}/`):
|
|
65
|
+
- understanding.md, evidence.ndjson, diagnosis-summary.json
|
|
66
|
+
|
|
67
|
+
**Register artifact on completion (phase-scoped only):**
|
|
68
|
+
```
|
|
69
|
+
Append to state.json.artifacts[]:
|
|
70
|
+
{
|
|
71
|
+
id: nextArtifactId(artifacts, "debug"), // DBG-001
|
|
72
|
+
type: "debug",
|
|
73
|
+
milestone: current_milestone,
|
|
74
|
+
phase: target_phase,
|
|
75
|
+
scope: "phase",
|
|
76
|
+
path: "scratch/{YYYYMMDD}-debug-P{N}-{slug}", // or {YYYYMMDD}-debug-{slug} for standalone
|
|
77
|
+
status: all_diagnosed ? "completed" : "failed",
|
|
78
|
+
depends_on: triggering_review_id || exec_art.id,
|
|
79
|
+
harvested: false,
|
|
80
|
+
created_at: start_time,
|
|
81
|
+
completed_at: now()
|
|
82
|
+
}
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
### Post-debug Knowledge Inquiry
|
|
86
|
+
|
|
87
|
+
After root cause is confirmed, evaluate inquiry triggers:
|
|
88
|
+
|
|
89
|
+
1. **Recurring pattern**: If root cause matches a recurring pattern (similar to prior debug sessions):
|
|
90
|
+
→ Ask: "This root cause pattern has appeared before. Should it be documented in `debug-notes.md` to prevent recurrence? (`/spec-add debug`)"
|
|
91
|
+
|
|
92
|
+
2. **Non-obvious fix**: If fix involved a non-obvious approach or workaround:
|
|
93
|
+
→ Ask: "This fix used a non-obvious strategy. Should it be recorded as a learning? (`/spec-add learning`)"
|
|
94
|
+
|
|
95
|
+
3. **Architectural gap**: If root cause traces to architectural boundary violation or missing constraint:
|
|
96
|
+
→ Ask: "Root cause points to an architectural gap. Should `architecture-constraints.md` be updated? (`/spec-add arch`)"
|
|
97
|
+
|
|
98
|
+
If user confirms, invoke `Skill({ skill: "spec-add", args: "<category> <content>" })`.
|
|
99
|
+
|
|
52
100
|
**Next-step routing on completion:**
|
|
53
101
|
- Root cause found, fix needed → `/maestro-plan {phase} --gaps`
|
|
54
102
|
- Root cause found (from UAT), auto-fix → `/quality-test {phase} --auto-fix`
|
|
55
103
|
- Inconclusive, need more info → `/quality-debug {issue} -c` (resume session)
|
|
56
104
|
- Standalone fix already applied → `/maestro-verify {phase}`
|
|
57
|
-
|
|
58
|
-
Note: Debug output (.debug/) is auto-loaded by maestro-plan --gaps.
|
|
59
105
|
</execution>
|
|
60
106
|
|
|
61
107
|
<error_codes>
|
|
@@ -43,17 +43,17 @@ Arguments: $ARGUMENTS
|
|
|
43
43
|
- `--auto-yes` — accept all routing recommendations without prompting
|
|
44
44
|
|
|
45
45
|
**Storage written:**
|
|
46
|
-
- Retrospective output (resolve via `state.json.artifacts[]` → `.workflow/scratch/` path
|
|
46
|
+
- Retrospective output (resolve via `state.json.artifacts[]` → `.workflow/scratch/` path):
|
|
47
47
|
- retrospective.md — human-readable record
|
|
48
48
|
- retrospective.json — structured record
|
|
49
|
-
- `.workflow/specs/
|
|
49
|
+
- `.workflow/specs/{category-file}.md` — `<spec-entry>` entries appended to matching category files (one per spec-routed insight)
|
|
50
50
|
- `.workflow/issues/issues.jsonl` — appended issue rows (`source: "retrospective"`)
|
|
51
51
|
- `.workflow/learning/lessons.jsonl` — tips routed via `manage-learn tip` (formerly manage-memory-capture)
|
|
52
52
|
- `.workflow/learning/lessons.jsonl` — append-only insight log
|
|
53
53
|
- `.workflow/learning/learning-index.json` — searchable index
|
|
54
54
|
|
|
55
55
|
**Storage read (never modified):**
|
|
56
|
-
- Phase artifacts (resolve via `state.json.artifacts[]` → scratch paths
|
|
56
|
+
- Phase artifacts (resolve via `state.json.artifacts[]` → scratch paths):
|
|
57
57
|
- index.json, plan.json, verification.json, review.json, uat.md
|
|
58
58
|
- .task/TASK-*.json, .summaries/TASK-*-summary.md
|
|
59
59
|
- `.workflow/issues/issues.jsonl`, `.workflow/issues/issue-history.jsonl`
|
|
@@ -69,7 +69,7 @@ Follow `~/.maestro/workflows/retrospective.md` Stages 1–8 in order. Key invari
|
|
|
69
69
|
4. **Reuse `manage-learn tip` for note routing** — do not duplicate the learning pipeline; invoke via `Skill({ skill: "manage-learn", args: "tip ..." })`.
|
|
70
70
|
5. **Backward-compat with phase-transition** — append a one-line summary per insight to `.workflow/specs/learnings.md` if and only if that file already exists. Never create it.
|
|
71
71
|
6. **Stable insight IDs** — `INS-{8 hex}` from `hash(phase_num + lens + title)` so re-runs do not duplicate.
|
|
72
|
-
7. **Archive before overwrite** — if existing `retrospective.{md,json}` are being replaced, move them to `{
|
|
72
|
+
7. **Archive before overwrite** — if existing `retrospective.{md,json}` are being replaced, move them to `{artifact_dir}/.history/` with a timestamp suffix first.
|
|
73
73
|
</execution>
|
|
74
74
|
|
|
75
75
|
<error_codes>
|
|
@@ -94,7 +94,7 @@ Follow `~/.maestro/workflows/retrospective.md` Stages 1–8 in order. Key invari
|
|
|
94
94
|
- [ ] `retrospective.md` written and human-readable (tweetable, metrics table, per-lens findings, insights, routing table)
|
|
95
95
|
- [ ] Each insight has a stable `INS-{8hex}` id
|
|
96
96
|
- [ ] If routing enabled (default): every recommendation either created an artifact or was explicitly skipped by user
|
|
97
|
-
- [ ] Spec
|
|
97
|
+
- [ ] Spec entries (if any) appended as `<spec-entry>` to matching `.workflow/specs/{category-file}.md`
|
|
98
98
|
- [ ] Issue rows (if any) match canonical issues.jsonl schema (status "open", full issue_history, all required fields)
|
|
99
99
|
- [ ] Note tips (if any) created via `Skill({ skill: "manage-learn", args: "tip ..." })`
|
|
100
100
|
- [ ] `lessons.jsonl` appended with one row per insight regardless of routing target
|
|
@@ -53,17 +53,49 @@ Phase: $ARGUMENTS (required — phase number or slug)
|
|
|
53
53
|
- `--dimensions <list>` — Comma-separated subset of dimensions to review (overrides level defaults)
|
|
54
54
|
- `--skip-specs` — Skip loading project specs as review context
|
|
55
55
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
56
|
+
**All context via state.json.artifacts[]:**
|
|
57
|
+
|
|
58
|
+
```
|
|
59
|
+
related = artifacts.filter(a =>
|
|
60
|
+
a.phase === target_phase && a.milestone === current_milestone
|
|
61
|
+
).sort_by(completed_at asc)
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
Each artifact's type determines its outputs at `.workflow/{a.path}/`:
|
|
65
|
+
- **execute** → .summaries/, .task/, verification.json, plan.json (source of files to review)
|
|
66
|
+
- **review** → review.json (prior verdict, findings — for delta comparison)
|
|
67
|
+
- **debug** → understanding.md, evidence.ndjson (confirmed root causes)
|
|
68
|
+
- **test** → uat.md, .tests/ (user-observable gaps)
|
|
69
|
+
|
|
70
|
+
Extract conclusions from related artifacts that may affect this review. Pass as prior quality context to reviewer agents — avoid redundant work, focus on gaps and regressions.
|
|
71
|
+
|
|
72
|
+
**Output**: `REVIEW_DIR = .workflow/scratch/{YYYYMMDD}-review-P{N}-{slug}/` (P{N} = phase number, enables directory-level identification as state.json fallback)
|
|
62
73
|
</context>
|
|
63
74
|
|
|
64
75
|
<execution>
|
|
65
76
|
Follow '~/.maestro/workflows/review.md' completely.
|
|
66
77
|
|
|
78
|
+
**Output writes to REVIEW_DIR** (not EXEC_DIR):
|
|
79
|
+
- `REVIEW_DIR/review.json` — findings, severity distribution, verdict
|
|
80
|
+
|
|
81
|
+
**Register artifact on completion:**
|
|
82
|
+
```
|
|
83
|
+
Append to state.json.artifacts[]:
|
|
84
|
+
{
|
|
85
|
+
id: nextArtifactId(artifacts, "review"), // REV-001
|
|
86
|
+
type: "review",
|
|
87
|
+
milestone: current_milestone,
|
|
88
|
+
phase: target_phase,
|
|
89
|
+
scope: "phase",
|
|
90
|
+
path: "scratch/{YYYYMMDD}-review-P{N}-{slug}", // relative to .workflow/
|
|
91
|
+
status: "completed",
|
|
92
|
+
depends_on: exec_art.id, // or prior debug/review if re-review
|
|
93
|
+
harvested: false,
|
|
94
|
+
created_at: start_time,
|
|
95
|
+
completed_at: now()
|
|
96
|
+
}
|
|
97
|
+
```
|
|
98
|
+
|
|
67
99
|
**Report format on completion:**
|
|
68
100
|
|
|
69
101
|
```
|
|
@@ -87,7 +119,7 @@ Verdict: {PASS | WARN | BLOCK}
|
|
|
87
119
|
Issues Created: {issue_count}
|
|
88
120
|
|
|
89
121
|
Files:
|
|
90
|
-
{
|
|
122
|
+
{REVIEW_DIR}/review.json
|
|
91
123
|
|
|
92
124
|
Next steps:
|
|
93
125
|
{verdict_based_routing}
|
|
@@ -47,5 +47,5 @@ Follow '~/.maestro/workflows/sync.md' completely.
|
|
|
47
47
|
- [ ] Codebase docs refreshed for all affected components
|
|
48
48
|
- [ ] doc-index.json reflects current file state
|
|
49
49
|
- [ ] Changes tracked and logged
|
|
50
|
-
- [ ] project
|
|
50
|
+
- [ ] project.md Tech Stack section refreshed if dependency manifests changed
|
|
51
51
|
</success_criteria>
|
|
@@ -36,7 +36,7 @@ Phase: $ARGUMENTS (required -- phase number)
|
|
|
36
36
|
- `--layer <unit|e2e|all>` -- Generate only specific test layer (default: all)
|
|
37
37
|
|
|
38
38
|
Context files:
|
|
39
|
-
- Phase artifacts (resolve via `state.json.artifacts[]` → scratch paths
|
|
39
|
+
- Phase artifacts (resolve via `state.json.artifacts[]` → scratch paths):
|
|
40
40
|
- verification.json -- Nyquist gaps (MISSING/PARTIAL)
|
|
41
41
|
- validation.json -- requirement-to-test mapping
|
|
42
42
|
- .tests/coverage-report.json -- UAT coverage gaps
|
|
@@ -36,23 +36,56 @@ Phase or task: $ARGUMENTS (optional)
|
|
|
36
36
|
- `--smoke` -- Run cold-start smoke tests before UAT (basic sanity: app starts, routes respond, no crash)
|
|
37
37
|
- `--auto-fix` -- After diagnosis, auto-trigger gap-fix loop instead of asking user
|
|
38
38
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
39
|
+
**All context via state.json.artifacts[]:**
|
|
40
|
+
|
|
41
|
+
```
|
|
42
|
+
related = artifacts.filter(a =>
|
|
43
|
+
a.phase === target_phase && a.milestone === current_milestone
|
|
44
|
+
).sort_by(completed_at asc)
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
Each artifact's type determines its outputs at `.workflow/{a.path}/`:
|
|
48
|
+
- **execute** → .summaries/, .task/, verification.json, plan.json (test target source)
|
|
49
|
+
- **verify** → verification.json (must_haves, gaps)
|
|
50
|
+
- **review** → review.json (findings become additional test scenarios)
|
|
51
|
+
- **debug** → understanding.md (confirmed root causes become regression tests)
|
|
52
|
+
- **test** → uat.md (existing session, resumable)
|
|
53
|
+
|
|
54
|
+
Extract conclusions from related artifacts that may affect this test session — review findings generate additional scenarios, debug root causes generate regression tests.
|
|
55
|
+
|
|
56
|
+
**Output**: `TEST_DIR = .workflow/scratch/{YYYYMMDD}-test-P{N}-{slug}/` (P{N} = phase number, enables directory-level identification as state.json fallback)
|
|
47
57
|
</context>
|
|
48
58
|
|
|
49
59
|
<execution>
|
|
50
60
|
Follow '~/.maestro/workflows/test.md' completely.
|
|
51
61
|
|
|
52
|
-
**
|
|
53
|
-
-
|
|
54
|
-
|
|
55
|
-
|
|
62
|
+
**Output writes to TEST_DIR** (`scratch/{YYYYMMDD}-test-P{N}-{slug}/`):
|
|
63
|
+
- uat.md, test-plan.json, .tests/test-results.json, .tests/coverage-report.json
|
|
64
|
+
|
|
65
|
+
**Review findings integration** (from related review artifacts):
|
|
66
|
+
- Extract critical/high findings as additional test scenarios, marked `source: "review_finding"`
|
|
67
|
+
- When review verdict is "BLOCK" and review-finding tests fail, auto-enter gap-fix loop
|
|
68
|
+
|
|
69
|
+
**Debug root cause integration** (from related debug artifacts):
|
|
70
|
+
- Generate regression test scenarios from confirmed root causes, marked `source: "debug_root_cause"`
|
|
71
|
+
|
|
72
|
+
**Register artifact on completion:**
|
|
73
|
+
```
|
|
74
|
+
Append to state.json.artifacts[]:
|
|
75
|
+
{
|
|
76
|
+
id: nextArtifactId(artifacts, "test"), // TST-001
|
|
77
|
+
type: "test",
|
|
78
|
+
milestone: current_milestone,
|
|
79
|
+
phase: target_phase,
|
|
80
|
+
scope: "phase",
|
|
81
|
+
path: "scratch/{YYYYMMDD}-test-P{N}-{slug}",
|
|
82
|
+
status: issues == 0 ? "completed" : "failed",
|
|
83
|
+
depends_on: exec_art.id,
|
|
84
|
+
harvested: false,
|
|
85
|
+
created_at: start_time,
|
|
86
|
+
completed_at: now()
|
|
87
|
+
}
|
|
88
|
+
```
|
|
56
89
|
|
|
57
90
|
**Next-step routing on completion:**
|
|
58
91
|
- All tests pass → `/maestro-phase-transition {phase}`
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: spec-remove
|
|
3
|
+
description: Remove a spec entry from a specs file by entry ID
|
|
4
|
+
argument-hint: "<entry-id>"
|
|
5
|
+
allowed-tools:
|
|
6
|
+
- Read
|
|
7
|
+
- Write
|
|
8
|
+
- Edit
|
|
9
|
+
- Bash
|
|
10
|
+
- Glob
|
|
11
|
+
- Grep
|
|
12
|
+
- AskUserQuestion
|
|
13
|
+
---
|
|
14
|
+
<purpose>
|
|
15
|
+
Remove a `<spec-entry>` from a specs file. Symmetric with `/spec-add`.
|
|
16
|
+
Uses `maestro wiki remove-entry` for atomic removal with index auto-update.
|
|
17
|
+
</purpose>
|
|
18
|
+
|
|
19
|
+
<required_reading>
|
|
20
|
+
@~/.maestro/workflows/specs-remove.md
|
|
21
|
+
</required_reading>
|
|
22
|
+
|
|
23
|
+
<context>
|
|
24
|
+
$ARGUMENTS -- expects `<entry-id>` (e.g., `spec-learnings-003`, `spec-coding-conventions-001`)
|
|
25
|
+
|
|
26
|
+
**Entry ID format**: `spec-{file-stem}-{NNN}` — the sub-node ID assigned by WikiIndexer when indexing `<spec-entry>` blocks.
|
|
27
|
+
|
|
28
|
+
**Discovery**: Use `maestro wiki list --type spec --json` or `/spec-load --keyword <term>` to find entry IDs.
|
|
29
|
+
</context>
|
|
30
|
+
|
|
31
|
+
<execution>
|
|
32
|
+
Follow '~/.maestro/workflows/specs-remove.md' completely.
|
|
33
|
+
</execution>
|
|
34
|
+
|
|
35
|
+
<error_codes>
|
|
36
|
+
| Code | Severity | Description | Stage |
|
|
37
|
+
|------|----------|-------------|-------|
|
|
38
|
+
| E001 | fatal | Entry ID is required -- usage: `/spec-remove <entry-id>` | parse_input |
|
|
39
|
+
| E002 | fatal | `.workflow/specs/` not initialized -- run `/spec-setup` first | validate |
|
|
40
|
+
| E003 | fatal | Entry ID not found in wiki index | lookup |
|
|
41
|
+
| E004 | fatal | Entry is not a spec sub-node (wrong type) | validate |
|
|
42
|
+
</error_codes>
|
|
43
|
+
|
|
44
|
+
<success_criteria>
|
|
45
|
+
- [ ] Entry ID parsed and validated
|
|
46
|
+
- [ ] Entry found in wiki index (type=spec, is sub-node)
|
|
47
|
+
- [ ] User confirmed removal (unless -y flag)
|
|
48
|
+
- [ ] Entry removed from container file via `maestro wiki remove-entry`
|
|
49
|
+
- [ ] Wiki index auto-updated
|
|
50
|
+
- [ ] Confirmation displayed with removed entry details
|
|
51
|
+
</success_criteria>
|
|
@@ -12,7 +12,7 @@ allowed-tools:
|
|
|
12
12
|
<purpose>
|
|
13
13
|
Initialize the project-level specs directory by scanning the codebase for conventions, patterns, and tech stack.
|
|
14
14
|
Core files (coding, arch, learning) are always created. Optional files (quality, debug, test, review) are created only when relevant signals are detected.
|
|
15
|
-
All output lands in `.workflow/specs
|
|
15
|
+
All output lands in `.workflow/specs/`.
|
|
16
16
|
</purpose>
|
|
17
17
|
|
|
18
18
|
<required_reading>
|
|
@@ -20,7 +20,6 @@ All output lands in `.workflow/specs/` and `.workflow/project-tech.json`.
|
|
|
20
20
|
</required_reading>
|
|
21
21
|
|
|
22
22
|
<deferred_reading>
|
|
23
|
-
- [project-tech.json](~/.maestro/templates/project-tech.json) — read when generating project-tech configuration
|
|
24
23
|
</deferred_reading>
|
|
25
24
|
|
|
26
25
|
<context>
|
|
@@ -47,7 +46,6 @@ Follow '~/.maestro/workflows/specs-setup.md' completely.
|
|
|
47
46
|
- [ ] `.workflow/specs/` directory created
|
|
48
47
|
- [ ] Core files always created: `coding-conventions.md`, `architecture-constraints.md`, `learnings.md`
|
|
49
48
|
- [ ] Optional files created when detected: `quality-rules.md` (linter/CI), `test-conventions.md` (test framework), `debug-notes.md` (on demand), `review-standards.md` (on demand)
|
|
50
|
-
- [ ] `project-tech.json` written with detected tech stack
|
|
51
49
|
- [ ] Report displayed with summary and next steps
|
|
52
50
|
</success_criteria>
|
|
53
51
|
</output>
|
|
@@ -11,6 +11,10 @@ allowed-tools:
|
|
|
11
11
|
- Agent
|
|
12
12
|
- AskUserQuestion
|
|
13
13
|
---
|
|
14
|
+
<required_reading>
|
|
15
|
+
@~/.maestro/workflows/wiki-connect.md
|
|
16
|
+
</required_reading>
|
|
17
|
+
|
|
14
18
|
<purpose>
|
|
15
19
|
Knowledge graph link discovery and health improvement. Analyzes the wiki index to find orphaned entries, missing connections, and transitive link gaps, then suggests or auto-applies new `related` links to improve graph connectivity.
|
|
16
20
|
|
|
@@ -21,7 +25,7 @@ Leverages maestro's unique wiki graph infrastructure (BM25 search, backlinks, he
|
|
|
21
25
|
Arguments: $ARGUMENTS
|
|
22
26
|
|
|
23
27
|
**Flags:**
|
|
24
|
-
- `--scope <type>` — Limit analysis to a wiki type (spec,
|
|
28
|
+
- `--scope <type>` — Limit analysis to a wiki type (spec, memory, note, lesson, issue). Default: all types.
|
|
25
29
|
- `--min-similarity N` — Minimum similarity score threshold 0.0-1.0 (default: 0.3)
|
|
26
30
|
- `--fix` — Auto-apply the top suggestions by updating wiki entries with new `related` links
|
|
27
31
|
- `--max N` — Maximum number of suggestions to generate (default: 20)
|
|
@@ -66,13 +70,13 @@ For each entry, compute potential connections:
|
|
|
66
70
|
For each orphan entry, search for related entries using:
|
|
67
71
|
- `maestro wiki search "<orphan title>"` — BM25 match by title
|
|
68
72
|
- Tag overlap: entries sharing 2+ tags with the orphan
|
|
69
|
-
- Same
|
|
73
|
+
- Same category: entries with matching `category`
|
|
70
74
|
|
|
71
75
|
**2b. Missing Bidirectional Links:**
|
|
72
76
|
For entries that have forward links but no corresponding backlink (A links to B, but B doesn't link to A), suggest adding the reverse link.
|
|
73
77
|
|
|
74
78
|
**2c. Transitive Closure:**
|
|
75
|
-
If A → B and B → C, but A has no link to C, and A and C share tags or
|
|
79
|
+
If A → B and B → C, but A has no link to C, and A and C share tags or category, suggest A → C.
|
|
76
80
|
|
|
77
81
|
**2d. Type Bridge:**
|
|
78
82
|
Entries of different types that reference the same concept (e.g., a `spec-auth` and a `lesson-auth-gotcha`) but aren't linked.
|
|
@@ -83,13 +87,13 @@ For each candidate connection (source → target), compute similarity:
|
|
|
83
87
|
```
|
|
84
88
|
score = 0.4 × tag_overlap_ratio
|
|
85
89
|
+ 0.3 × title_bm25_similarity
|
|
86
|
-
+ 0.2 ×
|
|
90
|
+
+ 0.2 × same_category_bonus
|
|
87
91
|
+ 0.1 × type_bridge_bonus
|
|
88
92
|
```
|
|
89
93
|
|
|
90
94
|
- `tag_overlap_ratio`: shared_tags / max(source_tags, target_tags)
|
|
91
95
|
- `title_bm25_similarity`: normalized BM25 score from wiki search
|
|
92
|
-
- `
|
|
96
|
+
- `same_category_bonus`: 1.0 if same category, else 0.0
|
|
93
97
|
- `type_bridge_bonus`: 1.0 if different types, else 0.0
|
|
94
98
|
|
|
95
99
|
Filter by `--min-similarity`, rank descending, limit to `--max`.
|
|
@@ -17,6 +17,10 @@ Knowledge synthesis command that generates actionable digests from the wiki know
|
|
|
17
17
|
Unlike `maestro wiki list` which shows raw entries, this command synthesizes and interprets the knowledge base, producing a curated summary with gap analysis and recommended next actions.
|
|
18
18
|
</purpose>
|
|
19
19
|
|
|
20
|
+
<required_reading>
|
|
21
|
+
@~/.maestro/workflows/wiki-digest.md
|
|
22
|
+
</required_reading>
|
|
23
|
+
|
|
20
24
|
<deferred_reading>
|
|
21
25
|
- @~/.maestro/workflows/issue.md (issues.jsonl canonical schema for `--create-issues` routing)
|
|
22
26
|
</deferred_reading>
|
|
@@ -27,7 +31,7 @@ Arguments: $ARGUMENTS
|
|
|
27
31
|
**Scope resolution (auto-detected):**
|
|
28
32
|
- `<topic>` — Search wiki for entries matching the topic via `maestro wiki search`
|
|
29
33
|
- `--recent N` — Entries updated in the last N days
|
|
30
|
-
- `--type <type>` — Filter by wiki type (spec,
|
|
34
|
+
- `--type <type>` — Filter by wiki type (spec, memory, note, lesson, issue)
|
|
31
35
|
- No arguments — digest of the entire wiki
|
|
32
36
|
|
|
33
37
|
**Flags:**
|
|
@@ -101,7 +105,6 @@ Build a matrix showing knowledge density by type × theme:
|
|
|
101
105
|
```
|
|
102
106
|
Theme 1 Theme 2 Theme 3 Theme 4 Theme 5
|
|
103
107
|
spec ███░░ ░░░░░ █████ ██░░░ ░░░░░
|
|
104
|
-
phase ████░ ███░░ ░░░░░ █████ ██░░░
|
|
105
108
|
memory ░░░░░ ████░ ██░░░ ░░░░░ ███░░
|
|
106
109
|
lesson █░░░░ ██░░░ ████░ █░░░░ ░░░░░
|
|
107
110
|
issue ██░░░ ░░░░░ █░░░░ ███░░ ░░░░░
|
|
@@ -166,7 +169,7 @@ For each knowledge gap identified in Stage 5:
|
|
|
166
169
|
1. Write digest file
|
|
167
170
|
2. Append meta-insights to `lessons.jsonl`:
|
|
168
171
|
- `source: "wiki-digest"`, `category: "technique"`
|
|
169
|
-
- e.g., "Auth knowledge is concentrated in specs but lacks lessons", "
|
|
172
|
+
- e.g., "Auth knowledge is concentrated in specs but lacks lessons", "Security category has no decision entries"
|
|
170
173
|
3. Update `learning-index.json`
|
|
171
174
|
4. Display summary with key findings
|
|
172
175
|
|
|
@@ -63,7 +63,7 @@ After a barrier skill completes **in its spawned sub-agent**, coordinator reads
|
|
|
63
63
|
| Skill | Artifacts to Read | Context Updates |
|
|
64
64
|
|-------|------------------|-----------------|
|
|
65
65
|
| `maestro-analyze` | `.workflow/.csv-wave/*/context.md`, `state.json` | `gaps`, `phase`, `analysis_dir` |
|
|
66
|
-
| `maestro-plan` | `{
|
|
66
|
+
| `maestro-plan` | `{artifact_dir}/plan.json`, `{artifact_dir}/.task/TASK-*.json` | `plan_dir`, `task_count`, `wave_count` |
|
|
67
67
|
| `maestro-brainstorm` | `.workflow/.csv-wave/*/.brainstorming/` | `brainstorm_dir`, `features` |
|
|
68
68
|
| `maestro-spec-generate` | `.workflow/.csv-wave/*/specs/` | `spec_session_id` |
|
|
69
69
|
| `maestro-execute` | `.workflow/.csv-wave/*/results.csv` | `exec_status`, `completed_tasks`, `failed_tasks` |
|
|
@@ -111,7 +111,7 @@ function analyzeBarrierArtifacts(step, result, ctx) {
|
|
|
111
111
|
**`--continue`**: Glob `.workflow/.maestro-coordinate/MCC-*/state.json` sorted desc; load most recent; resume from first pending wave.
|
|
112
112
|
|
|
113
113
|
**Fresh mode**:
|
|
114
|
-
1. Read `.workflow/state.json` for project context (
|
|
114
|
+
1. Read `.workflow/state.json` for project context (derive current phase from artifact registry, `workflow_name`)
|
|
115
115
|
2. If `--chain` given, use directly
|
|
116
116
|
3. Otherwise classify intent via keyword heuristics (see chain_map)
|
|
117
117
|
4. No match + not AUTO_YES → one clarifying question via `AskUserQuestion`
|
|
@@ -61,7 +61,7 @@ Wave-based multi-dimensional analysis using `spawn_agents_on_csv`. Diamond topol
|
|
|
61
61
|
$maestro-analyze "3"
|
|
62
62
|
$maestro-analyze -y "microservices vs monolith"
|
|
63
63
|
$maestro-analyze -c 6 "3 -q"
|
|
64
|
-
$maestro-analyze --continue "analyze-microservices
|
|
64
|
+
$maestro-analyze --continue "20260318-analyze-microservices"
|
|
65
65
|
```
|
|
66
66
|
|
|
67
67
|
**Flags**:
|
|
@@ -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/analyze-{slug}
|
|
135
|
+
.workflow/.csv-wave/{YYYYMMDD}-analyze-{slug}/
|
|
136
136
|
+-- tasks.csv
|
|
137
137
|
+-- results.csv
|
|
138
138
|
+-- discoveries.ndjson
|
|
@@ -219,9 +219,9 @@ if (GAPS_MODE) {
|
|
|
219
219
|
}
|
|
220
220
|
|
|
221
221
|
const dateStr = getUtc8ISOString().substring(0, 10)
|
|
222
|
-
const sessionId =
|
|
222
|
+
const sessionId = `${dateStr}-analyze-${slug}`
|
|
223
223
|
const sessionFolder = `.workflow/.csv-wave/${sessionId}`
|
|
224
|
-
const scratchDir = `.workflow/scratch
|
|
224
|
+
const scratchDir = `.workflow/scratch/${dateStr}-analyze-${slug}`
|
|
225
225
|
|
|
226
226
|
Bash(`mkdir -p ${sessionFolder}`)
|
|
227
227
|
Bash(`mkdir -p ${scratchDir}`)
|