maestro-flow 0.3.10 → 0.3.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (184) hide show
  1. package/.claude/agents/workflow-collab-planner.md +1 -1
  2. package/.claude/agents/workflow-executor.md +1 -1
  3. package/.claude/agents/workflow-plan-checker.md +1 -1
  4. package/.claude/agents/workflow-planner.md +1 -1
  5. package/.claude/commands/learn-decompose.md +176 -176
  6. package/.claude/commands/learn-follow.md +167 -167
  7. package/.claude/commands/learn-retro.md +1 -1
  8. package/.claude/commands/maestro-coordinate.md +1 -3
  9. package/.claude/commands/manage-harvest.md +131 -131
  10. package/.claude/commands/manage-issue.md +2 -2
  11. package/.claude/commands/spec-add.md +67 -56
  12. package/.claude/commands/spec-load.md +66 -64
  13. package/.claude/commands/spec-setup.md +5 -9
  14. package/.codex/skills/learn-decompose/SKILL.md +119 -0
  15. package/.codex/skills/learn-follow/SKILL.md +83 -0
  16. package/.codex/skills/learn-investigate/SKILL.md +83 -0
  17. package/.codex/skills/learn-retro/SKILL.md +83 -0
  18. package/.codex/skills/learn-second-opinion/SKILL.md +86 -0
  19. package/.codex/skills/maestro/SKILL.md +151 -279
  20. package/.codex/skills/maestro-analyze/SKILL.md +59 -71
  21. package/.codex/skills/maestro-brainstorm/SKILL.md +452 -463
  22. package/.codex/skills/maestro-chain/SKILL.md +95 -110
  23. package/.codex/skills/maestro-coordinate/SKILL.md +68 -234
  24. package/.codex/skills/maestro-execute/SKILL.md +435 -446
  25. package/.codex/skills/maestro-fork/SKILL.md +68 -0
  26. package/.codex/skills/maestro-init/SKILL.md +171 -167
  27. package/.codex/skills/maestro-learn/SKILL.md +80 -0
  28. package/.codex/skills/maestro-link-coordinate/SKILL.md +224 -220
  29. package/.codex/skills/maestro-merge/SKILL.md +62 -0
  30. package/.codex/skills/maestro-milestone-audit/SKILL.md +108 -103
  31. package/.codex/skills/maestro-milestone-complete/SKILL.md +155 -149
  32. package/.codex/skills/maestro-milestone-release/SKILL.md +70 -0
  33. package/.codex/skills/maestro-overlay/SKILL.md +188 -185
  34. package/.codex/skills/maestro-plan/SKILL.md +58 -69
  35. package/.codex/skills/maestro-quick/SKILL.md +26 -23
  36. package/.codex/skills/maestro-roadmap/SKILL.md +65 -73
  37. package/.codex/skills/maestro-spec-generate/SKILL.md +66 -74
  38. package/.codex/skills/maestro-ui-design/SKILL.md +34 -31
  39. package/.codex/skills/maestro-verify/SKILL.md +556 -566
  40. package/.codex/skills/manage-codebase-rebuild/SKILL.md +397 -405
  41. package/.codex/skills/manage-codebase-refresh/SKILL.md +93 -82
  42. package/.codex/skills/manage-harvest/SKILL.md +82 -0
  43. package/.codex/skills/manage-issue/SKILL.md +80 -65
  44. package/.codex/skills/manage-issue-discover/SKILL.md +491 -503
  45. package/.codex/skills/manage-learn/SKILL.md +190 -186
  46. package/.codex/skills/manage-memory/SKILL.md +95 -72
  47. package/.codex/skills/manage-memory-capture/SKILL.md +99 -86
  48. package/.codex/skills/manage-status/SKILL.md +102 -89
  49. package/.codex/skills/quality-business-test/SKILL.md +228 -223
  50. package/.codex/skills/quality-debug/SKILL.md +54 -66
  51. package/.codex/skills/quality-integration-test/SKILL.md +532 -544
  52. package/.codex/skills/quality-refactor/SKILL.md +197 -191
  53. package/.codex/skills/quality-retrospective/SKILL.md +512 -505
  54. package/.codex/skills/quality-review/SKILL.md +93 -105
  55. package/.codex/skills/quality-sync/SKILL.md +101 -89
  56. package/.codex/skills/quality-test/SKILL.md +202 -198
  57. package/.codex/skills/quality-test-gen/SKILL.md +93 -104
  58. package/.codex/skills/spec-add/SKILL.md +58 -39
  59. package/.codex/skills/spec-load/SKILL.md +45 -40
  60. package/.codex/skills/spec-map/SKILL.md +180 -182
  61. package/.codex/skills/spec-setup/SKILL.md +94 -76
  62. package/.codex/skills/team-coordinate/SKILL.md +346 -357
  63. package/.codex/skills/team-executor/SKILL.md +70 -112
  64. package/.codex/skills/team-lifecycle-v4/SKILL.md +311 -299
  65. package/.codex/skills/team-quality-assurance/SKILL.md +234 -227
  66. package/.codex/skills/team-review/SKILL.md +232 -225
  67. package/.codex/skills/team-tech-debt/SKILL.md +78 -100
  68. package/.codex/skills/team-testing/SKILL.md +242 -235
  69. package/.codex/skills/wiki-connect/SKILL.md +75 -0
  70. package/.codex/skills/wiki-digest/SKILL.md +87 -0
  71. package/README.md +7 -4
  72. package/README.zh-CN.md +7 -4
  73. package/dashboard/dist-server/dashboard/src/server/routes/specs.d.ts +1 -1
  74. package/dashboard/dist-server/dashboard/src/server/routes/specs.js +75 -30
  75. package/dashboard/dist-server/dashboard/src/server/routes/specs.js.map +1 -1
  76. package/dashboard/dist-server/dashboard/src/server/state/event-bus.d.ts +5 -0
  77. package/dashboard/dist-server/dashboard/src/server/state/event-bus.js +5 -0
  78. package/dashboard/dist-server/dashboard/src/server/state/event-bus.js.map +1 -1
  79. package/dashboard/dist-server/dashboard/src/shared/constants.js +5 -0
  80. package/dashboard/dist-server/dashboard/src/shared/constants.js.map +1 -1
  81. package/dashboard/dist-server/dashboard/src/shared/team-types.d.ts +21 -0
  82. package/dashboard/dist-server/dashboard/src/shared/team-types.js.map +1 -1
  83. package/dashboard/dist-server/dashboard/src/shared/types.d.ts +3 -2
  84. package/dashboard/dist-server/dashboard/src/shared/ws-protocol.d.ts +1 -1
  85. package/dashboard/dist-server/dashboard/src/shared/ws-protocol.js.map +1 -1
  86. package/dashboard/dist-server/src/hooks/constants.d.ts +2 -0
  87. package/dashboard/dist-server/src/hooks/constants.js +2 -0
  88. package/dashboard/dist-server/src/hooks/constants.js.map +1 -1
  89. package/dist/src/commands/collab.js +4 -4
  90. package/dist/src/commands/collab.js.map +1 -1
  91. package/dist/src/commands/hooks.d.ts.map +1 -1
  92. package/dist/src/commands/hooks.js +66 -1
  93. package/dist/src/commands/hooks.js.map +1 -1
  94. package/dist/src/commands/spec.d.ts.map +1 -1
  95. package/dist/src/commands/spec.js +7 -2
  96. package/dist/src/commands/spec.js.map +1 -1
  97. package/dist/src/hooks/constants.d.ts +2 -0
  98. package/dist/src/hooks/constants.d.ts.map +1 -1
  99. package/dist/src/hooks/constants.js +2 -0
  100. package/dist/src/hooks/constants.js.map +1 -1
  101. package/dist/src/hooks/guards/index.d.ts +1 -0
  102. package/dist/src/hooks/guards/index.d.ts.map +1 -1
  103. package/dist/src/hooks/guards/index.js +1 -0
  104. package/dist/src/hooks/guards/index.js.map +1 -1
  105. package/dist/src/hooks/guards/spec-validator.d.ts +25 -0
  106. package/dist/src/hooks/guards/spec-validator.d.ts.map +1 -0
  107. package/dist/src/hooks/guards/spec-validator.js +66 -0
  108. package/dist/src/hooks/guards/spec-validator.js.map +1 -0
  109. package/dist/src/hooks/keyword-spec-injector.d.ts +21 -0
  110. package/dist/src/hooks/keyword-spec-injector.d.ts.map +1 -0
  111. package/dist/src/hooks/keyword-spec-injector.js +96 -0
  112. package/dist/src/hooks/keyword-spec-injector.js.map +1 -0
  113. package/dist/src/hooks/plugins/spec-injection-plugin.d.ts +2 -1
  114. package/dist/src/hooks/plugins/spec-injection-plugin.d.ts.map +1 -1
  115. package/dist/src/hooks/plugins/spec-injection-plugin.js +21 -12
  116. package/dist/src/hooks/plugins/spec-injection-plugin.js.map +1 -1
  117. package/dist/src/hooks/spec-bridge.d.ts +40 -0
  118. package/dist/src/hooks/spec-bridge.d.ts.map +1 -0
  119. package/dist/src/hooks/spec-bridge.js +97 -0
  120. package/dist/src/hooks/spec-bridge.js.map +1 -0
  121. package/dist/src/hooks/spec-injector.d.ts.map +1 -1
  122. package/dist/src/hooks/spec-injector.js +18 -12
  123. package/dist/src/hooks/spec-injector.js.map +1 -1
  124. package/dist/src/team/phase-orchestrator.d.ts +52 -0
  125. package/dist/src/team/phase-orchestrator.d.ts.map +1 -0
  126. package/dist/src/team/phase-orchestrator.js +165 -0
  127. package/dist/src/team/phase-orchestrator.js.map +1 -0
  128. package/dist/src/team/phase-types.d.ts +51 -0
  129. package/dist/src/team/phase-types.d.ts.map +1 -0
  130. package/dist/src/team/phase-types.js +41 -0
  131. package/dist/src/team/phase-types.js.map +1 -0
  132. package/dist/src/tools/index.d.ts.map +1 -1
  133. package/dist/src/tools/index.js +6 -0
  134. package/dist/src/tools/index.js.map +1 -1
  135. package/dist/src/tools/spec-entry-parser.d.ts +56 -0
  136. package/dist/src/tools/spec-entry-parser.d.ts.map +1 -0
  137. package/dist/src/tools/spec-entry-parser.js +196 -0
  138. package/dist/src/tools/spec-entry-parser.js.map +1 -0
  139. package/dist/src/tools/spec-init.d.ts.map +1 -1
  140. package/dist/src/tools/spec-init.js +66 -92
  141. package/dist/src/tools/spec-init.js.map +1 -1
  142. package/dist/src/tools/spec-keyword-index.d.ts +30 -0
  143. package/dist/src/tools/spec-keyword-index.d.ts.map +1 -0
  144. package/dist/src/tools/spec-keyword-index.js +101 -0
  145. package/dist/src/tools/spec-keyword-index.js.map +1 -0
  146. package/dist/src/tools/spec-loader.d.ts +3 -3
  147. package/dist/src/tools/spec-loader.d.ts.map +1 -1
  148. package/dist/src/tools/spec-loader.js +49 -23
  149. package/dist/src/tools/spec-loader.js.map +1 -1
  150. package/dist/src/tools/team-agents.d.ts +27 -0
  151. package/dist/src/tools/team-agents.d.ts.map +1 -0
  152. package/dist/src/tools/team-agents.js +362 -0
  153. package/dist/src/tools/team-agents.js.map +1 -0
  154. package/dist/src/tools/team-mailbox.d.ts +40 -0
  155. package/dist/src/tools/team-mailbox.d.ts.map +1 -0
  156. package/dist/src/tools/team-mailbox.js +384 -0
  157. package/dist/src/tools/team-mailbox.js.map +1 -0
  158. package/dist/src/tools/team-msg.d.ts +17 -8
  159. package/dist/src/tools/team-msg.d.ts.map +1 -1
  160. package/dist/src/tools/team-msg.js +110 -13
  161. package/dist/src/tools/team-msg.js.map +1 -1
  162. package/dist/src/tools/team-tasks-mcp.d.ts +27 -0
  163. package/dist/src/tools/team-tasks-mcp.d.ts.map +1 -0
  164. package/dist/src/tools/team-tasks-mcp.js +408 -0
  165. package/dist/src/tools/team-tasks-mcp.js.map +1 -0
  166. package/package.json +2 -1
  167. package/workflows/analyze.md +816 -816
  168. package/workflows/brainstorm.md +471 -471
  169. package/workflows/codebase-rebuild.md +332 -332
  170. package/workflows/codebase-refresh.md +240 -240
  171. package/workflows/execute.md +1 -1
  172. package/workflows/harvest.md +420 -420
  173. package/workflows/integration-test.md +343 -343
  174. package/workflows/issue-discover.md +414 -414
  175. package/workflows/map.md +111 -111
  176. package/workflows/milestone-complete.md +176 -176
  177. package/workflows/plan.md +1 -1
  178. package/workflows/quick.md +497 -497
  179. package/workflows/refactor.md +300 -300
  180. package/workflows/roadmap.md +335 -335
  181. package/workflows/spec-generate.md +640 -640
  182. package/workflows/specs-add.md +46 -81
  183. package/workflows/specs-load.md +15 -17
  184. package/workflows/specs-setup.md +40 -161
@@ -1,86 +1,99 @@
1
- ---
2
- name: manage-memory-capture
3
- description: Capture session memory (compact or tip) into .workflow/memory/ with JSON index
4
- argument-hint: "[compact|tip] [description] [--tag tag1,tag2]"
5
- allowed-tools: Read, Write, Edit, Bash, Glob, Grep, AskUserQuestion
6
- ---
7
-
8
- # Memory Capture
9
-
10
- ## Usage
11
-
12
- ```bash
13
- $manage-memory-capture
14
- $manage-memory-capture "compact"
15
- $manage-memory-capture "tip Always check state.json before phase operations --tag workflow,state"
16
- $manage-memory-capture "compact Full auth implementation session"
17
- ```
18
-
19
- **Modes**: `compact` (full session compression) or `tip` (quick note with tags).
20
- No arguments: auto-detect or ask user.
21
-
22
- ---
23
-
24
- ## Implementation
25
-
26
- ### Step 1: Validate
27
-
28
- ```bash
29
- test -d .workflow || exit 1 # E001: not initialized
30
- ```
31
-
32
- Create `.workflow/memory/` if it does not exist.
33
-
34
- ### Step 2: Detect Mode
35
-
36
- Parse first token as mode (`compact` or `tip`).
37
- If absent or ambiguous, ask user via AskUserQuestion.
38
-
39
- ### Step 3: Capture Content
40
-
41
- **Compact mode**:
42
- 1. Analyze current conversation for: objective, key decisions, modified files, current plan state, pending work
43
- 2. Generate entry ID: `MEM-{YYYYMMDD}-{NNN}`
44
- 3. Write `.workflow/memory/MEM-{id}.md` with sections:
45
- - Objective, Key Decisions, Files Modified (absolute paths), Execution Plan (verbatim), Pending Work, Context Notes
46
-
47
- **Tip mode**:
48
- 1. Extract content (everything after `tip`) and parse `--tag` flag
49
- 2. Generate entry ID: `TIP-{YYYYMMDD}-{NNN}`
50
- 3. Write `.workflow/memory/TIP-{id}.md` with: content, tags, timestamp, context
51
-
52
- ### Step 4: Update Index
53
-
54
- Read or create `.workflow/memory/memory-index.json`.
55
- Append new entry metadata:
56
-
57
- ```json
58
- {
59
- "id": "{entry_id}",
60
- "type": "compact|tip",
61
- "date": "{ISO}",
62
- "title": "{short title}",
63
- "tags": ["tag1", "tag2"],
64
- "file": "{filename}"
65
- }
66
- ```
67
-
68
- ### Step 5: Confirm
69
-
70
- ```
71
- === MEMORY CAPTURED ===
72
- ID: {entry_id}
73
- Type: {compact|tip}
74
- File: .workflow/memory/{filename}
75
- ```
76
-
77
- ---
78
-
79
- ## Error Handling
80
-
81
- | Code | Severity | Description |
82
- |------|----------|-------------|
83
- | E001 | error | `.workflow/` not initialized -- run `Skill({ skill: "maestro-init" })` first |
84
- | E002 | error | Empty note content in tip mode |
85
- | W001 | warning | No active workflow session -- compact captures conversation only |
86
- | W002 | warning | No explicit plan found -- using inferred plan |
1
+ ---
2
+ name: manage-memory-capture
3
+ description: Capture session memory (compact or tip) into .workflow/memory/ with JSON index
4
+ argument-hint: "[compact|tip] [description] [--tag tag1,tag2]"
5
+ allowed-tools: Read, Write, Edit, Bash, Glob, Grep, AskUserQuestion
6
+ ---
7
+
8
+ <purpose>
9
+ Capture session memory into `.workflow/memory/` with JSON index. Two modes: `compact` (full session compression) or `tip` (quick note with tags). Auto-detects mode or asks user when ambiguous.
10
+ </purpose>
11
+
12
+ <context>
13
+ $ARGUMENTS — mode token followed by description and optional flags.
14
+
15
+ ```bash
16
+ $manage-memory-capture
17
+ $manage-memory-capture "compact"
18
+ $manage-memory-capture "tip Always check state.json before phase operations --tag workflow,state"
19
+ $manage-memory-capture "compact Full auth implementation session"
20
+ ```
21
+
22
+ **Modes**: `compact` (full session compression) or `tip` (quick note with tags).
23
+ No arguments: auto-detect or ask user.
24
+
25
+ **Flags**:
26
+ - `--tag tag1,tag2` — Comma-separated tags for the entry
27
+ </context>
28
+
29
+ <execution>
30
+
31
+ ### Step 1: Validate
32
+
33
+ ```bash
34
+ test -d .workflow || exit 1 # E001: not initialized
35
+ ```
36
+
37
+ Create `.workflow/memory/` if it does not exist.
38
+
39
+ ### Step 2: Detect Mode
40
+
41
+ Parse first token as mode (`compact` or `tip`).
42
+ If absent or ambiguous, ask user via AskUserQuestion.
43
+
44
+ ### Step 3: Capture Content
45
+
46
+ **Compact mode**:
47
+ 1. Analyze current conversation for: objective, key decisions, modified files, current plan state, pending work
48
+ 2. Generate entry ID: `MEM-{YYYYMMDD}-{NNN}`
49
+ 3. Write `.workflow/memory/MEM-{id}.md` with sections:
50
+ - Objective, Key Decisions, Files Modified (absolute paths), Execution Plan (verbatim), Pending Work, Context Notes
51
+
52
+ **Tip mode**:
53
+ 1. Extract content (everything after `tip`) and parse `--tag` flag
54
+ 2. Generate entry ID: `TIP-{YYYYMMDD}-{NNN}`
55
+ 3. Write `.workflow/memory/TIP-{id}.md` with: content, tags, timestamp, context
56
+
57
+ ### Step 4: Update Index
58
+
59
+ Read or create `.workflow/memory/memory-index.json`.
60
+ Append new entry metadata:
61
+
62
+ ```json
63
+ {
64
+ "id": "{entry_id}",
65
+ "type": "compact|tip",
66
+ "date": "{ISO}",
67
+ "title": "{short title}",
68
+ "tags": ["tag1", "tag2"],
69
+ "file": "{filename}"
70
+ }
71
+ ```
72
+
73
+ ### Step 5: Confirm
74
+
75
+ ```
76
+ === MEMORY CAPTURED ===
77
+ ID: {entry_id}
78
+ Type: {compact|tip}
79
+ File: .workflow/memory/{filename}
80
+ ```
81
+ </execution>
82
+
83
+ <error_codes>
84
+ | Code | Severity | Description |
85
+ |------|----------|-------------|
86
+ | E001 | error | `.workflow/` not initialized -- run `Skill({ skill: "maestro-init" })` first |
87
+ | E002 | error | Empty note content in tip mode |
88
+ | W001 | warning | No active workflow session -- compact captures conversation only |
89
+ | W002 | warning | No explicit plan found -- using inferred plan |
90
+ </error_codes>
91
+
92
+ <success_criteria>
93
+ - [ ] `.workflow/` existence validated; `.workflow/memory/` created if missing
94
+ - [ ] Mode detected or prompted (compact vs tip)
95
+ - [ ] Compact: conversation analyzed, MEM-id generated, markdown file written with all sections
96
+ - [ ] Tip: content extracted, TIP-id generated, markdown file written
97
+ - [ ] Index updated with new entry metadata
98
+ - [ ] Confirmation displayed with ID, type, and file path
99
+ </success_criteria>
@@ -1,89 +1,102 @@
1
- ---
2
- name: manage-status
3
- description: Display project dashboard with phase progress, active tasks, and next steps
4
- argument-hint: ""
5
- allowed-tools: Read, Bash, Glob, Grep
6
- ---
7
-
8
- # Status Dashboard
9
-
10
- ## Usage
11
-
12
- ```bash
13
- $manage-status
14
- ```
15
-
16
- No arguments required. Reads `.workflow/` state files and renders a formatted project overview.
17
-
18
- ---
19
-
20
- ## Implementation
21
-
22
- ### Step 1: Validate Project
23
-
24
- ```bash
25
- # Verify .workflow/ exists
26
- test -d .workflow || exit 1 # E001: not initialized
27
- test -f .workflow/state.json || exit 1 # E002: state missing
28
- ```
29
-
30
- ### Step 2: Load State Files
31
-
32
- Read all state sources:
33
- - `.workflow/state.json` -- project-level state machine
34
- - `.workflow/roadmap.md` -- milestone and phase structure
35
- - `.workflow/phases/*/index.json` -- per-phase metadata and progress
36
- - `.workflow/phases/*/.task/TASK-*.json` -- individual task statuses
37
-
38
- ### Step 3: Calculate Progress
39
-
40
- For each phase directory found:
41
- 1. Count total tasks, completed, failed, blocked, pending
42
- 2. Calculate completion percentage
43
- 3. Determine phase status from index.json
44
-
45
- ### Step 4: Render Dashboard
46
-
47
- Display formatted output:
48
-
49
- ```
50
- === PROJECT DASHBOARD ===
51
- Project: {name} | Status: {state}
52
-
53
- --- Milestones & Phases ---
54
- {For each milestone}
55
- M{N}: {title}
56
- {For each phase}
57
- Phase {N}: {title} [{status}] {progress_bar} {completed}/{total} ({pct}%)
58
-
59
- --- Active Work ---
60
- Phase {N}: {title}
61
- In-progress: {list}
62
- Blocked: {list}
63
-
64
- --- Next Steps ---
65
- Based on current state: {suggestion with Skill() reference}
66
- ```
67
-
68
- ### Step 5: Suggest Next Steps
69
-
70
- Use this decision table to suggest the next action:
71
-
72
- | Current State | Suggestion |
73
- |---------------|------------|
74
- | No phases planned | `Skill({ skill: "maestro-brainstorm" })` or `Skill({ skill: "maestro-plan" })` |
75
- | Phase planned, not executed | `Skill({ skill: "maestro-execute", args: "<N>" })` |
76
- | Phase executed, not verified | `Skill({ skill: "maestro-verify", args: "<N>" })` |
77
- | Phase verified with gaps | `Skill({ skill: "maestro-plan", args: "<N> --gaps" })` |
78
- | Phase reviewed PASS/WARN | `Skill({ skill: "quality-test", args: "<N>" })` |
79
- | UAT passed | `Skill({ skill: "maestro-phase-transition" })` |
80
- | All milestone phases done | `Skill({ skill: "maestro-milestone-audit" })` |
81
-
82
- ---
83
-
84
- ## Error Handling
85
-
86
- | Code | Severity | Description |
87
- |------|----------|-------------|
88
- | E001 | fatal | `.workflow/` not initialized -- run `Skill({ skill: "maestro-init" })` first |
89
- | E002 | fatal | `state.json` missing or corrupt |
1
+ ---
2
+ name: manage-status
3
+ description: Display project dashboard with phase progress, active tasks, and next steps
4
+ argument-hint: ""
5
+ allowed-tools: Read, Bash, Glob, Grep
6
+ ---
7
+
8
+ <purpose>
9
+ Display project dashboard with phase progress, active tasks, and suggested next steps. Reads `.workflow/` state files and renders a formatted project overview. No arguments required.
10
+ </purpose>
11
+
12
+ <context>
13
+ $ARGUMENTS — none required.
14
+
15
+ ```bash
16
+ $manage-status
17
+ ```
18
+
19
+ Reads from:
20
+ - `.workflow/state.json` — project-level state machine
21
+ - `.workflow/roadmap.md` — milestone and phase structure
22
+ - `.workflow/phases/*/index.json` per-phase metadata and progress
23
+ - `.workflow/phases/*/.task/TASK-*.json` — individual task statuses
24
+ </context>
25
+
26
+ <execution>
27
+
28
+ ### Step 1: Validate Project
29
+
30
+ ```bash
31
+ # Verify .workflow/ exists
32
+ test -d .workflow || exit 1 # E001: not initialized
33
+ test -f .workflow/state.json || exit 1 # E002: state missing
34
+ ```
35
+
36
+ ### Step 2: Load State Files
37
+
38
+ Read all state sources:
39
+ - `.workflow/state.json` -- project-level state machine
40
+ - `.workflow/roadmap.md` -- milestone and phase structure
41
+ - `.workflow/phases/*/index.json` -- per-phase metadata and progress
42
+ - `.workflow/phases/*/.task/TASK-*.json` -- individual task statuses
43
+
44
+ ### Step 3: Calculate Progress
45
+
46
+ For each phase directory found:
47
+ 1. Count total tasks, completed, failed, blocked, pending
48
+ 2. Calculate completion percentage
49
+ 3. Determine phase status from index.json
50
+
51
+ ### Step 4: Render Dashboard
52
+
53
+ Display formatted output:
54
+
55
+ ```
56
+ === PROJECT DASHBOARD ===
57
+ Project: {name} | Status: {state}
58
+
59
+ --- Milestones & Phases ---
60
+ {For each milestone}
61
+ M{N}: {title}
62
+ {For each phase}
63
+ Phase {N}: {title} [{status}] {progress_bar} {completed}/{total} ({pct}%)
64
+
65
+ --- Active Work ---
66
+ Phase {N}: {title}
67
+ In-progress: {list}
68
+ Blocked: {list}
69
+
70
+ --- Next Steps ---
71
+ Based on current state: {suggestion with Skill() reference}
72
+ ```
73
+
74
+ ### Step 5: Suggest Next Steps
75
+
76
+ Use this decision table to suggest the next action:
77
+
78
+ | Current State | Suggestion |
79
+ |---------------|------------|
80
+ | No phases planned | `Skill({ skill: "maestro-brainstorm" })` or `Skill({ skill: "maestro-plan" })` |
81
+ | Phase planned, not executed | `Skill({ skill: "maestro-execute", args: "<N>" })` |
82
+ | Phase executed, not verified | `Skill({ skill: "maestro-verify", args: "<N>" })` |
83
+ | Phase verified with gaps | `Skill({ skill: "maestro-plan", args: "<N> --gaps" })` |
84
+ | Phase reviewed PASS/WARN | `Skill({ skill: "quality-test", args: "<N>" })` |
85
+ | UAT passed | `Skill({ skill: "maestro-phase-transition" })` |
86
+ | All milestone phases done | `Skill({ skill: "maestro-milestone-audit" })` |
87
+ </execution>
88
+
89
+ <error_codes>
90
+ | Code | Severity | Description |
91
+ |------|----------|-------------|
92
+ | E001 | fatal | `.workflow/` not initialized -- run `Skill({ skill: "maestro-init" })` first |
93
+ | E002 | fatal | `state.json` missing or corrupt |
94
+ </error_codes>
95
+
96
+ <success_criteria>
97
+ - [ ] `.workflow/` and `state.json` validated
98
+ - [ ] All state sources loaded (state.json, roadmap, phase indexes, task files)
99
+ - [ ] Progress calculated per phase (total, completed, failed, blocked, pending, percentage)
100
+ - [ ] Dashboard rendered with milestones, phases, active work, and next steps
101
+ - [ ] Next step suggestion matches current project state via decision table
102
+ </success_criteria>