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
package/workflows/status.md
CHANGED
|
@@ -1,290 +1,291 @@
|
|
|
1
|
-
# Workflow: status
|
|
2
|
-
|
|
3
|
-
Status dashboard with intelligent routing.
|
|
4
|
-
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
## Step 1: Load State
|
|
8
|
-
|
|
9
|
-
1. Check `.workflow/state.json` exists:
|
|
10
|
-
- If missing → display "No project initialized. Run `/workflow:init` to start." → exit
|
|
11
|
-
|
|
12
|
-
2. Read `.workflow/state.json`:
|
|
13
|
-
- Extract: project_name, current_milestone,
|
|
14
|
-
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
"
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
│
|
|
163
|
-
│
|
|
164
|
-
│
|
|
165
|
-
│
|
|
166
|
-
│
|
|
167
|
-
│
|
|
168
|
-
│
|
|
169
|
-
│
|
|
170
|
-
│
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
- `[
|
|
188
|
-
- `[
|
|
189
|
-
- `[
|
|
190
|
-
- `[
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
│
|
|
204
|
-
│
|
|
205
|
-
│
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
{
|
|
221
|
-
|
|
222
|
-
│
|
|
223
|
-
│
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
-
|
|
238
|
-
- Suggest: Skill({ skill: "
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
| /workflow:
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
completed (
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
1
|
+
# Workflow: status
|
|
2
|
+
|
|
3
|
+
Status dashboard with intelligent routing.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Step 1: Load State
|
|
8
|
+
|
|
9
|
+
1. Check `.workflow/state.json` exists:
|
|
10
|
+
- If missing → display "No project initialized. Run `/workflow:init` to start." → exit
|
|
11
|
+
|
|
12
|
+
2. Read `.workflow/state.json`:
|
|
13
|
+
- Extract: project_name, current_milestone, status, milestones, artifacts
|
|
14
|
+
- Derive current_phase and phases_summary from artifacts[] (see src/utils/state-schema.ts)
|
|
15
|
+
- Extract: accumulated_context (key_decisions, blockers, deferred)
|
|
16
|
+
|
|
17
|
+
3. Read `.workflow/roadmap.md`:
|
|
18
|
+
- Extract phase list with titles
|
|
19
|
+
|
|
20
|
+
4. Load Issue State:
|
|
21
|
+
- If `.workflow/issues/issues.jsonl` exists:
|
|
22
|
+
- Read all lines, parse each as JSON
|
|
23
|
+
- Compute statistics:
|
|
24
|
+
```
|
|
25
|
+
by_status: {
|
|
26
|
+
registered: count(status == "registered"),
|
|
27
|
+
diagnosed: count(status == "diagnosed"),
|
|
28
|
+
planning: count(status == "planning"),
|
|
29
|
+
planned: count(status == "planned"),
|
|
30
|
+
executing: count(status == "executing")
|
|
31
|
+
}
|
|
32
|
+
by_severity: {
|
|
33
|
+
critical: count(severity == "critical"),
|
|
34
|
+
high: count(severity == "high"),
|
|
35
|
+
medium: count(severity == "medium"),
|
|
36
|
+
low: count(severity == "low")
|
|
37
|
+
}
|
|
38
|
+
total_open: count where status NOT in [completed, failed, deferred]
|
|
39
|
+
critical_open: count where severity == "critical" AND status NOT in [completed, failed, deferred]
|
|
40
|
+
critical_issues: list of {id, title, status} where severity == "critical" AND status NOT in [completed, failed, deferred]
|
|
41
|
+
```
|
|
42
|
+
- Store as issue_state
|
|
43
|
+
- Else:
|
|
44
|
+
- issue_state = null (no issues tracked)
|
|
45
|
+
|
|
46
|
+
---
|
|
47
|
+
|
|
48
|
+
## Step 2: Build Virtual Phase View from Artifact Registry
|
|
49
|
+
|
|
50
|
+
Derive phase progress from `state.json.artifacts[]`:
|
|
51
|
+
|
|
52
|
+
```
|
|
53
|
+
// Group artifacts by phase for current milestone
|
|
54
|
+
milestone_artifacts = state.json.artifacts.filter(a => a.milestone == current_milestone)
|
|
55
|
+
|
|
56
|
+
// Build phase view from roadmap + artifact registry
|
|
57
|
+
phases_from_roadmap = parse roadmap.md → list of { number, slug, title }
|
|
58
|
+
|
|
59
|
+
FOR each phase IN phases_from_roadmap:
|
|
60
|
+
phase_artifacts = milestone_artifacts.filter(a => a.phase == phase.number)
|
|
61
|
+
has_analyze = phase_artifacts.some(a => a.type == "analyze" && a.status == "completed")
|
|
62
|
+
has_plan = phase_artifacts.some(a => a.type == "plan" && a.status == "completed")
|
|
63
|
+
has_execute = phase_artifacts.some(a => a.type == "execute" && a.status == "completed")
|
|
64
|
+
has_verify = phase_artifacts.some(a => a.type == "verify" && a.status == "completed")
|
|
65
|
+
|
|
66
|
+
// Derive status from artifact chain
|
|
67
|
+
status = has_verify ? "verified" :
|
|
68
|
+
has_execute ? "executed" :
|
|
69
|
+
has_plan ? "planned" :
|
|
70
|
+
has_analyze ? "analyzed" :
|
|
71
|
+
"pending"
|
|
72
|
+
|
|
73
|
+
// Get task counts from plan artifacts
|
|
74
|
+
plan_artifact = phase_artifacts.find(a => a.type == "plan" && a.status == "completed")
|
|
75
|
+
IF plan_artifact:
|
|
76
|
+
plan_json = read .workflow/{plan_artifact.path}/plan.json
|
|
77
|
+
tasks_total = plan_json.task_ids.length
|
|
78
|
+
tasks_completed = count .task/TASK-*.json where status == "completed"
|
|
79
|
+
|
|
80
|
+
phases[] = { number, slug, title, status, tasks_total, tasks_completed, has_verify }
|
|
81
|
+
|
|
82
|
+
// Also show adhoc artifacts
|
|
83
|
+
adhoc_artifacts = milestone_artifacts.filter(a => a.scope == "adhoc")
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
---
|
|
87
|
+
|
|
88
|
+
## Step 2.5: Artifact Registry Consistency Check
|
|
89
|
+
|
|
90
|
+
```
|
|
91
|
+
IF .workflow/roadmap.md exists:
|
|
92
|
+
roadmap_phases = parse phase headings from roadmap.md (count "### Phase N:" entries)
|
|
93
|
+
artifact_phases = unique phase numbers from milestone_artifacts
|
|
94
|
+
|
|
95
|
+
// Check for unregistered work (artifacts without matching roadmap phases)
|
|
96
|
+
orphan_artifacts = milestone_artifacts.filter(a => a.phase && !roadmap_phases.includes(a.phase))
|
|
97
|
+
IF orphan_artifacts.length > 0:
|
|
98
|
+
Display WARNING: "Artifacts reference phases not in roadmap"
|
|
99
|
+
|
|
100
|
+
ELSE IF NOT .workflow/roadmap.md exists AND milestone_artifacts.length > 0:
|
|
101
|
+
Display WARNING:
|
|
102
|
+
⚠️ Roadmap missing but artifact registry has {milestone_artifacts.length} entries.
|
|
103
|
+
This may indicate a completed milestone. Run /maestro continue to plan next milestone.
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
---
|
|
107
|
+
|
|
108
|
+
## Step 3: Compute Progress
|
|
109
|
+
|
|
110
|
+
1. Count by status:
|
|
111
|
+
```
|
|
112
|
+
total = phases.length
|
|
113
|
+
completed = phases.filter(status == "completed").length
|
|
114
|
+
executing = phases.filter(status == "executing").length
|
|
115
|
+
planning = phases.filter(status == "planning").length
|
|
116
|
+
exploring = phases.filter(status == "exploring").length
|
|
117
|
+
pending = phases.filter(status == "pending").length
|
|
118
|
+
blocked = phases.filter(status == "blocked").length
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
2. Calculate overall progress:
|
|
122
|
+
```
|
|
123
|
+
progress_pct = (completed / total) * 100
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
---
|
|
127
|
+
|
|
128
|
+
## Step 4: Display Dashboard
|
|
129
|
+
|
|
130
|
+
```
|
|
131
|
+
====================================================
|
|
132
|
+
PROJECT: {project_name}
|
|
133
|
+
MILESTONE: {current_milestone}
|
|
134
|
+
STATUS: {status}
|
|
135
|
+
PROGRESS: [{progress_bar}] {completed}/{total} phases ({progress_pct}%)
|
|
136
|
+
====================================================
|
|
137
|
+
|
|
138
|
+
PHASES:
|
|
139
|
+
{for each phase}
|
|
140
|
+
[{status_icon}] Phase {number}: {title}
|
|
141
|
+
Status: {status}
|
|
142
|
+
Tasks: {tasks_completed}/{tasks_total}
|
|
143
|
+
Verification: {verification_status}
|
|
144
|
+
{/for}
|
|
145
|
+
|
|
146
|
+
CONTEXT:
|
|
147
|
+
Key Decisions: {key_decisions, comma-separated}
|
|
148
|
+
Blockers: {blockers or "none"}
|
|
149
|
+
Deferred: {deferred or "none"}
|
|
150
|
+
|
|
151
|
+
====================================================
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
### Step 4.1: Render Issue Summary
|
|
155
|
+
|
|
156
|
+
If issue_state is not null:
|
|
157
|
+
|
|
158
|
+
```
|
|
159
|
+
┌─────────────────────────────────────────┐
|
|
160
|
+
│ ISSUES │
|
|
161
|
+
├─────────────────────────────────────────┤
|
|
162
|
+
│ Open: {total_open} │
|
|
163
|
+
│ Critical: {critical_open} │
|
|
164
|
+
│ By Status: │
|
|
165
|
+
│ registered: {N} | diagnosed: {N} │
|
|
166
|
+
│ planning: {N} | planned: {N} │
|
|
167
|
+
│ executing: {N} │
|
|
168
|
+
│ │
|
|
169
|
+
│ Critical Issues: │
|
|
170
|
+
│ {id} | {title (truncated 40ch)} | {status} │
|
|
171
|
+
│ ... │
|
|
172
|
+
└─────────────────────────────────────────┘
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
If critical_issues is empty, omit the "Critical Issues:" sub-section.
|
|
176
|
+
|
|
177
|
+
If accumulated_context.blockers is non-empty AND issue_state has critical issues:
|
|
178
|
+
- Print: "Note: Blockers are now tracked as critical issues in .workflow/issues/issues.jsonl"
|
|
179
|
+
|
|
180
|
+
If accumulated_context.deferred is non-empty:
|
|
181
|
+
- Print: "Note: Deferred items are tracked as deferred issues. Use /manage-issue list --status deferred"
|
|
182
|
+
|
|
183
|
+
Else (issue_state is null):
|
|
184
|
+
- Print: "ISSUES: No issues tracked. Use /manage-issue create or /maestro-verify to discover issues."
|
|
185
|
+
|
|
186
|
+
Status icons:
|
|
187
|
+
- `[x]` completed
|
|
188
|
+
- `[>]` executing / in_progress
|
|
189
|
+
- `[~]` planning / exploring
|
|
190
|
+
- `[ ]` pending
|
|
191
|
+
- `[!]` blocked
|
|
192
|
+
|
|
193
|
+
### Step 4.2: Render Worktree Status
|
|
194
|
+
|
|
195
|
+
```
|
|
196
|
+
IF file_exists(".workflow/worktree-scope.json"):
|
|
197
|
+
// Running inside a worktree
|
|
198
|
+
Read .workflow/worktree-scope.json → scope
|
|
199
|
+
Display:
|
|
200
|
+
┌─────────────────────────────────────────┐
|
|
201
|
+
│ WORKTREE MODE │
|
|
202
|
+
├─────────────────────────────────────────┤
|
|
203
|
+
│ Milestone: {scope.milestone} │
|
|
204
|
+
│ Branch: {scope.branch} │
|
|
205
|
+
│ Phases: {scope.owned_phases} │
|
|
206
|
+
│ Main: {scope.main_worktree} │
|
|
207
|
+
└─────────────────────────────────────────┘
|
|
208
|
+
|
|
209
|
+
ELSE IF file_exists(".workflow/worktrees.json"):
|
|
210
|
+
// Running in main worktree with active worktrees
|
|
211
|
+
Read .workflow/worktrees.json → registry
|
|
212
|
+
activeWorktrees = registry.worktrees.filter(w => w.status === "active")
|
|
213
|
+
|
|
214
|
+
IF activeWorktrees.length > 0:
|
|
215
|
+
Display:
|
|
216
|
+
┌─────────────────────────────────────────┐
|
|
217
|
+
│ ACTIVE WORKTREES │
|
|
218
|
+
├─────────────────────────────────────────┤
|
|
219
|
+
{for each wt in activeWorktrees}
|
|
220
|
+
│ {wt.milestone} | {wt.branch} | {wt.path} │
|
|
221
|
+
{/for}
|
|
222
|
+
│ │
|
|
223
|
+
│ Sync: /maestro-fork <milestone> --sync │
|
|
224
|
+
│ Merge: /maestro-merge <milestone> │
|
|
225
|
+
└─────────────────────────────────────────┘
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
---
|
|
229
|
+
|
|
230
|
+
## Step 5: Route Next Step
|
|
231
|
+
|
|
232
|
+
### Step 5.0: Issue-Aware Routing
|
|
233
|
+
|
|
234
|
+
If issue_state is not null, evaluate issue-based recommendations BEFORE status routing:
|
|
235
|
+
|
|
236
|
+
If critical_open > 0:
|
|
237
|
+
- Recommend: "{critical_open} critical issues require attention"
|
|
238
|
+
- Suggest: Skill({ skill: "manage-issue", args: "list --severity critical" })
|
|
239
|
+
- Suggest: Skill({ skill: "quality-debug", args: "--from-uat" })
|
|
240
|
+
|
|
241
|
+
If by_status.diagnosed > 0:
|
|
242
|
+
- Recommend: "{diagnosed} issues diagnosed and ready for planning"
|
|
243
|
+
- Suggest: Skill({ skill: "maestro-plan", args: "--gaps" })
|
|
244
|
+
|
|
245
|
+
If by_status.registered > 0:
|
|
246
|
+
- Recommend: "{registered} new issues need investigation"
|
|
247
|
+
- Suggest: Skill({ skill: "quality-debug" })
|
|
248
|
+
|
|
249
|
+
### Step 5.1: Status-Based Routing
|
|
250
|
+
|
|
251
|
+
Based on current project status, suggest the next command:
|
|
252
|
+
|
|
253
|
+
```
|
|
254
|
+
STATUS ROUTING TABLE:
|
|
255
|
+
-------------------------------------------------------------
|
|
256
|
+
Current Status | Suggested Command | Reason
|
|
257
|
+
-------------------------------------------------------------
|
|
258
|
+
idle | /workflow:init | Project needs initialization
|
|
259
|
+
exploring | /maestro-analyze -q | Continue exploration, lock decisions
|
|
260
|
+
| /workflow:plan {phase} | Ready to plan
|
|
261
|
+
planning | /workflow:plan {phase} | Resume planning
|
|
262
|
+
executing | /workflow:execute {phase} | Resume execution
|
|
263
|
+
verifying | /workflow:verify {phase} | Complete verification
|
|
264
|
+
| /workflow:review {phase} | Code quality review
|
|
265
|
+
| /workflow:test {phase} | Run tests
|
|
266
|
+
reviewing | /workflow:review {phase} | Complete review
|
|
267
|
+
testing | /workflow:test {phase} | Complete testing
|
|
268
|
+
completed (phase) | /workflow:phase-transition | Move to next phase
|
|
269
|
+
completed (all) | /workflow:milestone-audit | Audit milestone
|
|
270
|
+
blocked | /workflow:debug | Resolve blockers
|
|
271
|
+
-------------------------------------------------------------
|
|
272
|
+
```
|
|
273
|
+
|
|
274
|
+
Display:
|
|
275
|
+
```
|
|
276
|
+
NEXT STEP: /workflow:{suggested_command}
|
|
277
|
+
{reason}
|
|
278
|
+
```
|
|
279
|
+
|
|
280
|
+
If there are blockers, display them prominently before the routing suggestion.
|
|
281
|
+
|
|
282
|
+
---
|
|
283
|
+
|
|
284
|
+
## Step 6: Scratch Tasks (if any)
|
|
285
|
+
|
|
286
|
+
Check `.workflow/scratch/` for active tasks:
|
|
287
|
+
|
|
288
|
+
1. For each `scratch/*/index.json` where status != "completed":
|
|
289
|
+
- Display: type, title, status, progress
|
|
290
|
+
2. If active scratch tasks exist:
|
|
291
|
+
- Note: "Active scratch tasks found. These are independent of phase pipeline."
|
package/workflows/sync.md
CHANGED
|
@@ -159,14 +159,14 @@ Check if changes warrant spec updates:
|
|
|
159
159
|
- If new architectural patterns emerged: note in appropriate spec
|
|
160
160
|
- Skip if no spec-relevant changes detected
|
|
161
161
|
|
|
162
|
-
Check if dependency manifests changed (project
|
|
162
|
+
Check if dependency manifests changed (project.md Tech Stack refresh):
|
|
163
163
|
dependency_files = ["package.json", "go.mod", "pyproject.toml", "Cargo.toml",
|
|
164
164
|
"requirements.txt", "pom.xml", "build.gradle", "Gemfile"]
|
|
165
165
|
changed_deps = changed_files.filter(f => dependency_files.includes(basename(f)))
|
|
166
|
-
If changed_deps.length > 0 AND .workflow/project
|
|
166
|
+
If changed_deps.length > 0 AND .workflow/project.md exists:
|
|
167
167
|
Re-scan dependency manifests for current tech stack
|
|
168
|
-
Update .workflow/project
|
|
169
|
-
Display: "project
|
|
168
|
+
Update .workflow/project.md Tech Stack section with detected changes
|
|
169
|
+
Display: "project.md: Tech Stack refreshed from {changed_deps.join(', ')}"
|
|
170
170
|
```
|
|
171
171
|
|
|
172
172
|
### Step 8: Create Action Log
|
|
@@ -241,4 +241,4 @@ Sync complete:
|
|
|
241
241
|
| `.workflow/codebase/tech-registry/{slug}.md` | Regenerated for affected components |
|
|
242
242
|
| `.workflow/codebase/feature-maps/{slug}.md` | Regenerated for affected features |
|
|
243
243
|
| `.workflow/codebase/action-logs/{hash}.md` | Created |
|
|
244
|
-
| `.workflow/project
|
|
244
|
+
| `.workflow/project.md` | Tech Stack section updated if dependency manifests changed |
|
package/workflows/test.md
CHANGED
|
@@ -26,11 +26,11 @@ Determine test target from $ARGUMENTS:
|
|
|
26
26
|
```
|
|
27
27
|
Read .workflow/state.json → state
|
|
28
28
|
artifacts = state.artifacts ?? []
|
|
29
|
-
|
|
30
|
-
|
|
29
|
+
art = artifacts.find(a => a.type === 'execute' && a.phase === phaseNum)
|
|
30
|
+
IF art:
|
|
31
31
|
PHASE_DIR = ".workflow/" + art.path
|
|
32
32
|
ELSE:
|
|
33
|
-
|
|
33
|
+
ERROR "Phase {phaseNum} not found in artifact registry"
|
|
34
34
|
```
|
|
35
35
|
- Load `$PHASE_DIR/index.json` for context
|
|
36
36
|
|
|
@@ -54,9 +54,8 @@ Validate target exists and has been verified (verification.json present). (E002)
|
|
|
54
54
|
### Step 2: Check Active Sessions
|
|
55
55
|
|
|
56
56
|
```bash
|
|
57
|
-
# Check
|
|
57
|
+
# Check scratch dirs (resolved via artifact registry) for active UAT sessions
|
|
58
58
|
find .workflow/scratch -name "uat.md" -type f 2>/dev/null | head -5
|
|
59
|
-
find .workflow/phases -name "uat.md" -type f 2>/dev/null | head -5
|
|
60
59
|
```
|
|
61
60
|
|
|
62
61
|
Read each file's frontmatter (status, target) and Current Test section.
|