maestro-flow 0.3.10 → 0.3.12
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/agents/conceptual-planning-agent.md +1 -0
- package/.claude/agents/workflow-analyzer.md +114 -114
- package/.claude/agents/workflow-collab-planner.md +144 -144
- package/.claude/agents/workflow-debugger.md +102 -103
- package/.claude/agents/workflow-executor.md +127 -128
- package/.claude/agents/workflow-integration-checker.md +82 -82
- package/.claude/agents/workflow-nyquist-auditor.md +85 -84
- package/.claude/agents/workflow-phase-researcher.md +85 -85
- package/.claude/agents/workflow-plan-checker.md +90 -90
- package/.claude/agents/workflow-planner.md +178 -178
- package/.claude/agents/workflow-roadmapper.md +81 -83
- package/.claude/agents/workflow-verifier.md +119 -119
- package/.claude/commands/learn-decompose.md +176 -176
- package/.claude/commands/learn-follow.md +167 -167
- package/.claude/commands/learn-retro.md +3 -3
- package/.claude/commands/learn-second-opinion.md +2 -2
- package/.claude/commands/maestro-brainstorm.md +1 -0
- package/.claude/commands/maestro-coordinate.md +1 -3
- package/.claude/commands/maestro-fork.md +133 -111
- package/.claude/commands/maestro-merge.md +85 -77
- package/.claude/commands/maestro-plan.md +88 -2
- package/.claude/commands/maestro-roadmap.md +113 -2
- package/.claude/commands/maestro.md +1 -0
- package/.claude/commands/manage-harvest.md +131 -131
- package/.claude/commands/manage-issue.md +2 -2
- package/.claude/commands/quality-business-test.md +5 -5
- package/.claude/commands/quality-debug.md +3 -2
- package/.claude/commands/quality-retrospective.md +6 -4
- package/.claude/commands/quality-review.md +1 -1
- package/.claude/commands/quality-test-gen.md +5 -4
- package/.claude/commands/spec-add.md +67 -56
- package/.claude/commands/spec-load.md +66 -64
- package/.claude/commands/spec-setup.md +5 -9
- package/.codex/skills/learn-decompose/SKILL.md +119 -0
- package/.codex/skills/learn-follow/SKILL.md +83 -0
- package/.codex/skills/learn-investigate/SKILL.md +83 -0
- package/.codex/skills/learn-retro/SKILL.md +83 -0
- package/.codex/skills/learn-second-opinion/SKILL.md +86 -0
- package/.codex/skills/maestro/SKILL.md +151 -279
- package/.codex/skills/maestro-analyze/SKILL.md +59 -71
- package/.codex/skills/maestro-brainstorm/SKILL.md +452 -463
- package/.codex/skills/maestro-chain/SKILL.md +95 -110
- package/.codex/skills/maestro-coordinate/SKILL.md +68 -234
- package/.codex/skills/maestro-execute/SKILL.md +435 -446
- package/.codex/skills/maestro-fork/SKILL.md +98 -0
- package/.codex/skills/maestro-init/SKILL.md +172 -167
- package/.codex/skills/maestro-learn/SKILL.md +80 -0
- package/.codex/skills/maestro-link-coordinate/SKILL.md +224 -220
- package/.codex/skills/maestro-merge/SKILL.md +69 -0
- package/.codex/skills/maestro-milestone-audit/SKILL.md +108 -103
- package/.codex/skills/maestro-milestone-complete/SKILL.md +155 -149
- package/.codex/skills/maestro-milestone-release/SKILL.md +70 -0
- package/.codex/skills/maestro-overlay/SKILL.md +188 -185
- package/.codex/skills/maestro-plan/SKILL.md +58 -69
- package/.codex/skills/maestro-quick/SKILL.md +26 -23
- package/.codex/skills/maestro-roadmap/SKILL.md +65 -73
- package/.codex/skills/maestro-spec-generate/SKILL.md +66 -74
- package/.codex/skills/maestro-ui-design/SKILL.md +35 -32
- package/.codex/skills/maestro-verify/SKILL.md +556 -566
- package/.codex/skills/manage-codebase-rebuild/SKILL.md +397 -405
- package/.codex/skills/manage-codebase-refresh/SKILL.md +93 -82
- package/.codex/skills/manage-harvest/SKILL.md +82 -0
- package/.codex/skills/manage-issue/SKILL.md +80 -65
- package/.codex/skills/manage-issue-discover/SKILL.md +491 -503
- package/.codex/skills/manage-learn/SKILL.md +190 -186
- package/.codex/skills/manage-memory/SKILL.md +95 -72
- package/.codex/skills/manage-memory-capture/SKILL.md +99 -86
- package/.codex/skills/manage-status/SKILL.md +102 -89
- package/.codex/skills/quality-business-test/SKILL.md +228 -223
- package/.codex/skills/quality-debug/SKILL.md +54 -66
- package/.codex/skills/quality-integration-test/SKILL.md +532 -544
- package/.codex/skills/quality-refactor/SKILL.md +197 -191
- package/.codex/skills/quality-retrospective/SKILL.md +512 -505
- package/.codex/skills/quality-review/SKILL.md +95 -107
- package/.codex/skills/quality-sync/SKILL.md +101 -89
- package/.codex/skills/quality-test/SKILL.md +202 -198
- package/.codex/skills/quality-test-gen/SKILL.md +94 -105
- package/.codex/skills/spec-add/SKILL.md +58 -39
- package/.codex/skills/spec-load/SKILL.md +45 -40
- package/.codex/skills/spec-map/SKILL.md +180 -182
- package/.codex/skills/spec-setup/SKILL.md +94 -76
- package/.codex/skills/team-coordinate/SKILL.md +346 -357
- package/.codex/skills/team-executor/SKILL.md +70 -112
- package/.codex/skills/team-lifecycle-v4/SKILL.md +311 -299
- package/.codex/skills/team-quality-assurance/SKILL.md +234 -227
- package/.codex/skills/team-review/SKILL.md +232 -225
- package/.codex/skills/team-tech-debt/SKILL.md +78 -100
- package/.codex/skills/team-testing/SKILL.md +242 -235
- package/.codex/skills/wiki-connect/SKILL.md +75 -0
- package/.codex/skills/wiki-digest/SKILL.md +87 -0
- package/README.md +9 -4
- package/README.zh-CN.md +9 -4
- package/dashboard/dist/assets/{ArtifactsPage-DZNCi6tn.js → ArtifactsPage-CUrrDGgN.js} +1 -1
- package/dashboard/dist/assets/ChatInput-pUOLJIKE.js +49 -0
- package/dashboard/dist/assets/ChatPage-B8Xqkt0v.js +27 -0
- package/dashboard/dist/assets/{CollabPage-B4NAHXS2.js → CollabPage-DIUXeazv.js} +1 -1
- package/dashboard/dist/assets/{ExecutionPanel-CFt4LJyq.js → ExecutionPanel-VmYeADFj.js} +1 -1
- package/dashboard/dist/assets/KanbanPage-DLq8v7hg.js +21 -0
- package/dashboard/dist/assets/{MarkdownRenderer-X4af_WNb.js → MarkdownRenderer-D7AehrnR.js} +1 -1
- package/dashboard/dist/assets/{McpPage-BKfCVIyU.js → McpPage-BY0SjTgw.js} +2 -2
- package/dashboard/dist/assets/{OutputPanel-BlBQFJSW.js → OutputPanel-B-Rjwgmv.js} +1 -1
- package/dashboard/dist/assets/{ProblemsPanel-De3DLvoI.js → ProblemsPanel-GEpF-oi4.js} +1 -1
- package/dashboard/dist/assets/RequirementBoardPage-xs8uDM7I.js +6 -0
- package/dashboard/dist/assets/{RequirementPage-Bllxe2XI.js → RequirementPage-BKDSFwjA.js} +5 -10
- package/dashboard/dist/assets/SpecsPage-DLFb9ZH0.js +36 -0
- package/dashboard/dist/assets/SupervisorPage-SOki_kgz.js +6 -0
- package/dashboard/dist/assets/TeamsPage-BO2kP70F.js +11 -0
- package/dashboard/dist/assets/{TreeBrowser-Q12qobZs.js → TreeBrowser-B9DHdULE.js} +1 -1
- package/dashboard/dist/assets/{WorkflowPage-D_Fzdy3_.js → WorkflowPage-C8hWbYim.js} +1 -1
- package/dashboard/dist/assets/{check-u6fGOwQO.js → check-DJDk3A2a.js} +1 -1
- package/dashboard/dist/assets/{chevron-right-Csu22t58.js → chevron-right-C7bVDreZ.js} +1 -1
- package/dashboard/dist/assets/{circle-CMrkbRNg.js → circle-Qfgy4LB_.js} +1 -1
- package/dashboard/dist/assets/{circle-alert-c3tH1P4z.js → circle-alert-Na1vf6qQ.js} +1 -1
- package/dashboard/dist/assets/{circle-check-gYxxSYuH.js → circle-check-CEGgy3NV.js} +1 -1
- package/dashboard/dist/assets/{circle-check-big-TDSeWstm.js → circle-check-big-3JB8zRYj.js} +1 -1
- package/dashboard/dist/assets/{code-CFN2uX9V.js → code-Ble63Idz.js} +1 -1
- package/dashboard/dist/assets/{columns-3-38xIDlzy.js → columns-3-BUcKlxve.js} +1 -1
- package/dashboard/dist/assets/{download-DC7KkKyP.js → download-CMqkfn8x.js} +1 -1
- package/dashboard/dist/assets/{folder-CWq_lAnf.js → folder-B9ewx9LL.js} +1 -1
- package/dashboard/dist/assets/index-C2Mcb4TJ.js +231 -0
- package/dashboard/dist/assets/index-DyBbPc18.css +1 -0
- package/dashboard/dist/assets/{index-Do71weNR.js → index-JTmGteaT.js} +1 -1
- package/dashboard/dist/assets/{list-CgIP_2A-.js → list-DI8Wn2aT.js} +1 -1
- package/dashboard/dist/assets/loader-B5F6PzFT.js +11 -0
- package/dashboard/dist/assets/{minus-DYoN5UGk.js → minus-Lp_BfctG.js} +1 -1
- package/dashboard/dist/assets/{pen-line-Bh_WKYHm.js → pen-line-Ch7sphzZ.js} +1 -1
- package/dashboard/dist/assets/pencil-_yRMHmGT.js +6 -0
- package/dashboard/dist/assets/{proxy-BKxDAKTj.js → proxy-D72Y8a4Y.js} +1 -1
- package/dashboard/dist/assets/{search-SieXnOgr.js → search-BS6fI6Bg.js} +1 -1
- package/dashboard/dist/assets/{shallow-Bme1JY57.js → shallow-BXasQBvr.js} +1 -1
- package/dashboard/dist/assets/table-CeGlFjlP.js +6 -0
- package/dashboard/dist/assets/{terminal-BB3Xfuv5.js → terminal-BJic2yW-.js} +1 -1
- package/dashboard/dist/assets/{trash-2-C8f4vFFM.js → trash-2-Czz4X8Fb.js} +1 -1
- package/dashboard/dist/assets/{zap-4uwlzVm0.js → zap-C3H0jVFA.js} +1 -1
- package/dashboard/dist/index.html +2 -2
- package/dashboard/dist-server/dashboard/src/server/agents/agent-manager.js +16 -1
- package/dashboard/dist-server/dashboard/src/server/agents/agent-manager.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/agents/delegate-broker-monitor.js +1 -2
- package/dashboard/dist-server/dashboard/src/server/agents/delegate-broker-monitor.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/commander/commander-prompts.d.ts +1 -1
- package/dashboard/dist-server/dashboard/src/server/commander/commander-prompts.js +2 -1
- package/dashboard/dist-server/dashboard/src/server/commander/commander-prompts.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/index.js +3 -0
- package/dashboard/dist-server/dashboard/src/server/index.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/routes/collab.js +124 -0
- package/dashboard/dist-server/dashboard/src/server/routes/collab.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/routes/specs.d.ts +1 -1
- package/dashboard/dist-server/dashboard/src/server/routes/specs.js +75 -30
- package/dashboard/dist-server/dashboard/src/server/routes/specs.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/state/event-bus.d.ts +5 -0
- package/dashboard/dist-server/dashboard/src/server/state/event-bus.js +5 -0
- package/dashboard/dist-server/dashboard/src/server/state/event-bus.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/ws/handlers/team-handler.d.ts +10 -0
- package/dashboard/dist-server/dashboard/src/server/ws/handlers/team-handler.js +73 -0
- package/dashboard/dist-server/dashboard/src/server/ws/handlers/team-handler.js.map +1 -0
- package/dashboard/dist-server/dashboard/src/shared/collab-types.d.ts +31 -0
- package/dashboard/dist-server/dashboard/src/shared/collab-types.js +28 -0
- package/dashboard/dist-server/dashboard/src/shared/collab-types.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/shared/constants.js +10 -0
- package/dashboard/dist-server/dashboard/src/shared/constants.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/shared/coordinate-types.d.ts +22 -0
- package/dashboard/dist-server/dashboard/src/shared/issue-types.d.ts +12 -0
- package/dashboard/dist-server/dashboard/src/shared/issue-types.js +12 -0
- package/dashboard/dist-server/dashboard/src/shared/issue-types.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/shared/team-types.d.ts +22 -0
- package/dashboard/dist-server/dashboard/src/shared/team-types.js +7 -0
- package/dashboard/dist-server/dashboard/src/shared/team-types.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/shared/types.d.ts +3 -2
- package/dashboard/dist-server/dashboard/src/shared/ws-protocol.d.ts +28 -2
- package/dashboard/dist-server/dashboard/src/shared/ws-protocol.js.map +1 -1
- package/dashboard/dist-server/shared/agent-types.d.ts +4 -0
- package/dashboard/dist-server/src/hooks/constants.d.ts +3 -1
- package/dashboard/dist-server/src/hooks/constants.js +4 -2
- package/dashboard/dist-server/src/hooks/constants.js.map +1 -1
- package/dist/shared/agent-types.d.ts +4 -0
- package/dist/shared/agent-types.d.ts.map +1 -1
- package/dist/src/commands/collab.js +4 -4
- package/dist/src/commands/collab.js.map +1 -1
- package/dist/src/commands/hooks.d.ts.map +1 -1
- package/dist/src/commands/hooks.js +66 -1
- package/dist/src/commands/hooks.js.map +1 -1
- package/dist/src/commands/install-backend.d.ts.map +1 -1
- package/dist/src/commands/install-backend.js +29 -18
- package/dist/src/commands/install-backend.js.map +1 -1
- package/dist/src/commands/spec.d.ts.map +1 -1
- package/dist/src/commands/spec.js +7 -2
- package/dist/src/commands/spec.js.map +1 -1
- package/dist/src/hooks/__tests__/statusline-visual-test.js +23 -1
- package/dist/src/hooks/__tests__/statusline-visual-test.js.map +1 -1
- package/dist/src/hooks/constants.d.ts +3 -1
- package/dist/src/hooks/constants.d.ts.map +1 -1
- package/dist/src/hooks/constants.js +4 -2
- package/dist/src/hooks/constants.js.map +1 -1
- package/dist/src/hooks/guards/index.d.ts +1 -0
- package/dist/src/hooks/guards/index.d.ts.map +1 -1
- package/dist/src/hooks/guards/index.js +1 -0
- package/dist/src/hooks/guards/index.js.map +1 -1
- package/dist/src/hooks/guards/spec-validator.d.ts +25 -0
- package/dist/src/hooks/guards/spec-validator.d.ts.map +1 -0
- package/dist/src/hooks/guards/spec-validator.js +66 -0
- package/dist/src/hooks/guards/spec-validator.js.map +1 -0
- package/dist/src/hooks/keyword-spec-injector.d.ts +21 -0
- package/dist/src/hooks/keyword-spec-injector.d.ts.map +1 -0
- package/dist/src/hooks/keyword-spec-injector.js +96 -0
- package/dist/src/hooks/keyword-spec-injector.js.map +1 -0
- package/dist/src/hooks/plugins/spec-injection-plugin.d.ts +2 -1
- package/dist/src/hooks/plugins/spec-injection-plugin.d.ts.map +1 -1
- package/dist/src/hooks/plugins/spec-injection-plugin.js +21 -12
- package/dist/src/hooks/plugins/spec-injection-plugin.js.map +1 -1
- package/dist/src/hooks/skill-context.d.ts +3 -0
- package/dist/src/hooks/skill-context.d.ts.map +1 -1
- package/dist/src/hooks/skill-context.js +95 -9
- package/dist/src/hooks/skill-context.js.map +1 -1
- package/dist/src/hooks/spec-bridge.d.ts +40 -0
- package/dist/src/hooks/spec-bridge.d.ts.map +1 -0
- package/dist/src/hooks/spec-bridge.js +97 -0
- package/dist/src/hooks/spec-bridge.js.map +1 -0
- package/dist/src/hooks/spec-injector.d.ts.map +1 -1
- package/dist/src/hooks/spec-injector.js +18 -12
- package/dist/src/hooks/spec-injector.js.map +1 -1
- package/dist/src/hooks/statusline.d.ts.map +1 -1
- package/dist/src/hooks/statusline.js +6 -3
- package/dist/src/hooks/statusline.js.map +1 -1
- package/dist/src/team/phase-orchestrator.d.ts +52 -0
- package/dist/src/team/phase-orchestrator.d.ts.map +1 -0
- package/dist/src/team/phase-orchestrator.js +165 -0
- package/dist/src/team/phase-orchestrator.js.map +1 -0
- package/dist/src/team/phase-types.d.ts +51 -0
- package/dist/src/team/phase-types.d.ts.map +1 -0
- package/dist/src/team/phase-types.js +41 -0
- package/dist/src/team/phase-types.js.map +1 -0
- package/dist/src/tools/index.d.ts.map +1 -1
- package/dist/src/tools/index.js +6 -0
- package/dist/src/tools/index.js.map +1 -1
- package/dist/src/tools/merge-validator.d.ts.map +1 -1
- package/dist/src/tools/merge-validator.js +114 -16
- package/dist/src/tools/merge-validator.js.map +1 -1
- package/dist/src/tools/spec-entry-parser.d.ts +56 -0
- package/dist/src/tools/spec-entry-parser.d.ts.map +1 -0
- package/dist/src/tools/spec-entry-parser.js +196 -0
- package/dist/src/tools/spec-entry-parser.js.map +1 -0
- package/dist/src/tools/spec-init.d.ts.map +1 -1
- package/dist/src/tools/spec-init.js +66 -92
- package/dist/src/tools/spec-init.js.map +1 -1
- package/dist/src/tools/spec-keyword-index.d.ts +30 -0
- package/dist/src/tools/spec-keyword-index.d.ts.map +1 -0
- package/dist/src/tools/spec-keyword-index.js +101 -0
- package/dist/src/tools/spec-keyword-index.js.map +1 -0
- package/dist/src/tools/spec-loader.d.ts +3 -3
- package/dist/src/tools/spec-loader.d.ts.map +1 -1
- package/dist/src/tools/spec-loader.js +49 -23
- package/dist/src/tools/spec-loader.js.map +1 -1
- package/dist/src/tools/team-agents.d.ts +27 -0
- package/dist/src/tools/team-agents.d.ts.map +1 -0
- package/dist/src/tools/team-agents.js +362 -0
- package/dist/src/tools/team-agents.js.map +1 -0
- package/dist/src/tools/team-mailbox.d.ts +40 -0
- package/dist/src/tools/team-mailbox.d.ts.map +1 -0
- package/dist/src/tools/team-mailbox.js +384 -0
- package/dist/src/tools/team-mailbox.js.map +1 -0
- package/dist/src/tools/team-msg.d.ts +17 -8
- package/dist/src/tools/team-msg.d.ts.map +1 -1
- package/dist/src/tools/team-msg.js +110 -13
- package/dist/src/tools/team-msg.js.map +1 -1
- package/dist/src/tools/team-tasks-mcp.d.ts +27 -0
- package/dist/src/tools/team-tasks-mcp.d.ts.map +1 -0
- package/dist/src/tools/team-tasks-mcp.js +408 -0
- package/dist/src/tools/team-tasks-mcp.js.map +1 -0
- package/package.json +2 -1
- package/shared/agent-types.ts +4 -0
- package/templates/worktree-scope.json +9 -10
- package/templates/worktrees.json +26 -27
- package/workflows/analyze.md +816 -816
- package/workflows/brainstorm.md +480 -471
- package/workflows/codebase-rebuild.md +332 -332
- package/workflows/codebase-refresh.md +240 -240
- package/workflows/debug.md +16 -6
- package/workflows/execute.md +1 -1
- package/workflows/fork.md +100 -36
- package/workflows/harvest.md +420 -420
- package/workflows/integration-test.md +355 -343
- package/workflows/issue-discover.md +414 -414
- package/workflows/issue.md +14 -4
- package/workflows/learn.md +19 -5
- package/workflows/maestro.md +1 -0
- package/workflows/map.md +111 -111
- package/workflows/merge.md +113 -55
- package/workflows/milestone-complete.md +176 -176
- package/workflows/plan.md +1 -1
- package/workflows/quick.md +497 -497
- package/workflows/refactor.md +300 -300
- package/workflows/retrospective.md +61 -22
- package/workflows/review.md +17 -4
- package/workflows/roadmap.md +335 -335
- package/workflows/spec-generate.md +640 -640
- package/workflows/specs-add.md +46 -81
- package/workflows/specs-load.md +15 -17
- package/workflows/specs-setup.md +40 -161
- package/workflows/test.md +12 -2
- package/workflows/ui-style.md +9 -2
- package/dashboard/dist/assets/ChatInput-Bvr-FeEq.js +0 -49
- package/dashboard/dist/assets/ChatPage-D9zTkJZo.js +0 -22
- package/dashboard/dist/assets/KanbanPage-C8USth6H.js +0 -21
- package/dashboard/dist/assets/RequirementBoardPage-Bf1trzqs.js +0 -11
- package/dashboard/dist/assets/SpecsPage-9lwxKT27.js +0 -36
- package/dashboard/dist/assets/SupervisorPage-SusdfHFq.js +0 -6
- package/dashboard/dist/assets/TeamsPage-DsuM6OwC.js +0 -6
- package/dashboard/dist/assets/arrow-left-Bqtb2hle.js +0 -6
- package/dashboard/dist/assets/index-DWG-WrzT.js +0 -231
- package/dashboard/dist/assets/index-GUNJodSR.css +0 -1
- package/dashboard/dist/assets/table-llyEtj-7.js +0 -6
package/workflows/specs-add.md
CHANGED
|
@@ -1,34 +1,31 @@
|
|
|
1
1
|
# Workflow: specs-add
|
|
2
2
|
|
|
3
|
-
Add a
|
|
3
|
+
Add a `<spec-entry>` closed-tag entry to a single target spec file by category.
|
|
4
4
|
|
|
5
5
|
## Arguments
|
|
6
6
|
|
|
7
7
|
```
|
|
8
|
-
$ARGUMENTS: "<
|
|
8
|
+
$ARGUMENTS: "<category> <content>"
|
|
9
9
|
|
|
10
|
-
|
|
11
|
-
content
|
|
10
|
+
category -- one of: coding, arch, quality, debug, test, review, learning
|
|
11
|
+
content -- free-text description of the entry
|
|
12
12
|
```
|
|
13
13
|
|
|
14
|
-
##
|
|
14
|
+
## Category-to-File Mapping (1:1)
|
|
15
15
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
|
19
|
-
|
|
20
|
-
| `
|
|
21
|
-
| `
|
|
22
|
-
| `
|
|
23
|
-
| `
|
|
24
|
-
| `
|
|
25
|
-
| `test` | `.workflow/specs/learnings.md` | `.workflow/specs/test-conventions.md` |
|
|
26
|
-
| `review` | `.workflow/specs/learnings.md` | `.workflow/specs/review-standards.md` |
|
|
27
|
-
| `validation` | `.workflow/specs/learnings.md` | `.workflow/specs/validation-rules.md` |
|
|
16
|
+
| Category | Target file |
|
|
17
|
+
|----------|------------|
|
|
18
|
+
| `coding` | `.workflow/specs/coding-conventions.md` |
|
|
19
|
+
| `arch` | `.workflow/specs/architecture-constraints.md` |
|
|
20
|
+
| `quality` | `.workflow/specs/quality-rules.md` |
|
|
21
|
+
| `debug` | `.workflow/specs/debug-notes.md` |
|
|
22
|
+
| `test` | `.workflow/specs/test-conventions.md` |
|
|
23
|
+
| `review` | `.workflow/specs/review-standards.md` |
|
|
24
|
+
| `learning` | `.workflow/specs/learnings.md` |
|
|
28
25
|
|
|
29
26
|
## Prerequisites
|
|
30
27
|
|
|
31
|
-
- `.workflow/specs/` directory must exist (run `/
|
|
28
|
+
- `.workflow/specs/` directory must exist (run `/spec-setup` first if missing)
|
|
32
29
|
|
|
33
30
|
## Execution Steps
|
|
34
31
|
|
|
@@ -36,97 +33,65 @@ All entries are first appended to `learnings.md` (primary). Types with secondary
|
|
|
36
33
|
|
|
37
34
|
```
|
|
38
35
|
Split $ARGUMENTS into:
|
|
39
|
-
|
|
40
|
-
content
|
|
36
|
+
category = first word
|
|
37
|
+
content = remaining text
|
|
41
38
|
|
|
42
39
|
Validate:
|
|
43
|
-
-
|
|
40
|
+
- category must be one of: coding, arch, quality, debug, test, review, learning
|
|
44
41
|
- content must not be empty
|
|
45
42
|
|
|
46
43
|
On validation failure:
|
|
47
|
-
- Display usage: `/
|
|
48
|
-
- List valid
|
|
49
|
-
bug -- Bug or gotcha learned during development
|
|
50
|
-
pattern -- Coding pattern or convention to follow
|
|
51
|
-
decision -- Architecture decision or constraint
|
|
52
|
-
rule -- Quality rule or enforcement criterion
|
|
53
|
-
debug -- Debug tip, root cause record, or known issue workaround
|
|
54
|
-
test -- Test convention, pattern, or framework-specific note
|
|
55
|
-
review -- Review standard, checklist item, or quality gate
|
|
56
|
-
validation -- Verification criterion or acceptance standard
|
|
44
|
+
- Display usage: `/spec-add <category> <content>`
|
|
45
|
+
- List valid categories
|
|
57
46
|
- Exit
|
|
58
47
|
```
|
|
59
48
|
|
|
60
|
-
### Step 2: Resolve Target
|
|
61
|
-
|
|
62
|
-
```
|
|
63
|
-
Map type to file paths using the Type-to-File Mapping table above.
|
|
64
|
-
Verify the primary file (learnings.md) exists.
|
|
49
|
+
### Step 2: Resolve Target File
|
|
65
50
|
|
|
66
|
-
If file does not exist
|
|
67
|
-
- Warn: "Specs not initialized. Run /workflow:specs-setup first."
|
|
68
|
-
- Exit
|
|
69
|
-
```
|
|
51
|
+
Map category to file path. If file does not exist, create it with a basic header.
|
|
70
52
|
|
|
71
|
-
Check for near-duplicate entries
|
|
53
|
+
Check for near-duplicate entries:
|
|
72
54
|
```bash
|
|
73
|
-
grep -i "<content_first_10_words>" .workflow/specs
|
|
55
|
+
grep -i "<content_first_10_words>" .workflow/specs/<target_file> | tail -5
|
|
74
56
|
```
|
|
75
57
|
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
### Step 3: Format Entry
|
|
58
|
+
### Step 3: Extract Keywords
|
|
79
59
|
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
60
|
+
Auto-extract 3-5 relevant keywords from the content:
|
|
61
|
+
- Domain-specific terms (not generic words like "code", "file", "function")
|
|
62
|
+
- Lowercase, no spaces (use hyphens for multi-word terms)
|
|
63
|
+
- Terms that would help future keyword-based lookup
|
|
84
64
|
|
|
85
|
-
|
|
86
|
-
### [YYYY-MM-DD] <type>: <title>
|
|
65
|
+
### Step 4: Format Entry
|
|
87
66
|
|
|
88
|
-
<full_content>
|
|
89
67
|
```
|
|
68
|
+
Generate timestamp: YYYY-MM-DD (local date)
|
|
69
|
+
Generate title from first meaningful phrase of content.
|
|
90
70
|
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
```
|
|
94
|
-
Read .workflow/specs/learnings.md.
|
|
95
|
-
Find the "## Entries" section.
|
|
96
|
-
Append the formatted entry after the last existing entry (or after the section header if empty).
|
|
97
|
-
Write the file back.
|
|
98
|
-
```
|
|
71
|
+
Entry format (closed-tag):
|
|
72
|
+
<spec-entry category="{category}" keywords="{kw1},{kw2},{kw3}" date="{YYYY-MM-DD}">
|
|
99
73
|
|
|
100
|
-
###
|
|
74
|
+
### {title}
|
|
101
75
|
|
|
102
|
-
|
|
76
|
+
{content}
|
|
103
77
|
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
| `pattern` | `coding-conventions.md` | Add or update convention section |
|
|
107
|
-
| `decision` | `architecture-constraints.md` | Add decision record |
|
|
108
|
-
| `rule` | `quality-rules.md` | Add rule under `## Manual` section |
|
|
109
|
-
| `debug` | `debug-notes.md` | Add entry under `## Entries` section |
|
|
110
|
-
| `test` | `test-conventions.md` | Add entry under `## Manual Additions` section |
|
|
111
|
-
| `review` | `review-standards.md` | Add entry under `## Manual Additions` section |
|
|
112
|
-
| `validation` | `validation-rules.md` | Add entry under `## Manual Additions` section |
|
|
113
|
-
| `bug` | -- | No secondary update (learnings only) |
|
|
78
|
+
</spec-entry>
|
|
79
|
+
```
|
|
114
80
|
|
|
115
|
-
|
|
81
|
+
### Step 5: Append to Target File
|
|
116
82
|
|
|
83
|
+
Read target file. Append the formatted `<spec-entry>` block at the end. Write file back.
|
|
117
84
|
|
|
118
85
|
### Step 6: Confirm
|
|
119
86
|
|
|
120
87
|
```
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
Entry: ### [date] <type>: <title>
|
|
88
|
+
== spec-add complete ==
|
|
89
|
+
Category: <category>
|
|
90
|
+
Added to: .workflow/specs/<target_file>
|
|
91
|
+
Keywords: <kw1>, <kw2>, <kw3>
|
|
92
|
+
Verify: /spec-load --keyword <kw1>
|
|
128
93
|
```
|
|
129
94
|
|
|
130
95
|
## Output
|
|
131
96
|
|
|
132
|
-
|
|
97
|
+
One `<spec-entry>` block appended to the target file.
|
package/workflows/specs-load.md
CHANGED
|
@@ -7,27 +7,25 @@ Load spec files from `.workflow/specs/`, filtered by category.
|
|
|
7
7
|
```
|
|
8
8
|
$ARGUMENTS: "[--category <type>] [keyword]"
|
|
9
9
|
|
|
10
|
-
--category -- filter by category:
|
|
11
|
-
|
|
10
|
+
--category -- filter by category (1:1 mapping to file):
|
|
11
|
+
coding | arch | quality | debug | test | review | learning | all
|
|
12
12
|
keyword -- optional, grep within loaded specs for matching sections
|
|
13
13
|
```
|
|
14
14
|
|
|
15
|
-
## Category →
|
|
15
|
+
## Category → File Mapping (1:1)
|
|
16
16
|
|
|
17
|
-
|
|
17
|
+
Each category loads exactly one file. Same mapping as spec-add.
|
|
18
18
|
|
|
19
|
-
| Category |
|
|
20
|
-
|
|
21
|
-
| `
|
|
22
|
-
| `
|
|
23
|
-
| `
|
|
24
|
-
| `
|
|
25
|
-
| `
|
|
26
|
-
| `
|
|
27
|
-
| `
|
|
28
|
-
|
|
|
29
|
-
|
|
30
|
-
`learnings.md` is always included regardless of category filter.
|
|
19
|
+
| Category | File loaded |
|
|
20
|
+
|----------|------------|
|
|
21
|
+
| `coding` | `coding-conventions.md` |
|
|
22
|
+
| `arch` | `architecture-constraints.md` |
|
|
23
|
+
| `quality` | `quality-rules.md` |
|
|
24
|
+
| `debug` | `debug-notes.md` |
|
|
25
|
+
| `test` | `test-conventions.md` |
|
|
26
|
+
| `review` | `review-standards.md` |
|
|
27
|
+
| `learning` | `learnings.md` |
|
|
28
|
+
| `all` (default) | All `.md` files in specs/ |
|
|
31
29
|
|
|
32
30
|
## Execution Steps
|
|
33
31
|
|
|
@@ -47,7 +45,7 @@ maestro spec load --category <category>
|
|
|
47
45
|
|
|
48
46
|
If `maestro spec load` CLI is unavailable, read files directly:
|
|
49
47
|
```bash
|
|
50
|
-
cat .workflow/specs/<matched-
|
|
48
|
+
cat .workflow/specs/<matched-file>
|
|
51
49
|
```
|
|
52
50
|
|
|
53
51
|
### Step 3: Keyword Filter (optional)
|
package/workflows/specs-setup.md
CHANGED
|
@@ -4,8 +4,8 @@ System specs initialization -- scan project structure, detect tech stack, genera
|
|
|
4
4
|
|
|
5
5
|
## Trigger
|
|
6
6
|
|
|
7
|
-
- First `/
|
|
8
|
-
- Manual `/
|
|
7
|
+
- First `/maestro-init` (automatic)
|
|
8
|
+
- Manual `/spec-setup`
|
|
9
9
|
|
|
10
10
|
## Prerequisites
|
|
11
11
|
|
|
@@ -36,7 +36,7 @@ Detection targets:
|
|
|
36
36
|
Cargo.toml --> Rust
|
|
37
37
|
pom.xml --> Java (Maven)
|
|
38
38
|
build.gradle --> Java/Kotlin (Gradle)
|
|
39
|
-
composer.json
|
|
39
|
+
composer.json --> PHP
|
|
40
40
|
Gemfile --> Ruby
|
|
41
41
|
.csproj / .sln --> .NET/C#
|
|
42
42
|
Dockerfile --> Container deployment
|
|
@@ -85,22 +85,16 @@ Formatting: Check for .prettierrc, .editorconfig, eslint config
|
|
|
85
85
|
File naming: kebab-case vs camelCase vs PascalCase for source files
|
|
86
86
|
```
|
|
87
87
|
|
|
88
|
-
### Step 5: Generate
|
|
88
|
+
### Step 5: Generate Core Files (always created)
|
|
89
|
+
|
|
90
|
+
#### 5a: coding-conventions.md
|
|
89
91
|
|
|
90
92
|
Output: `.workflow/specs/coding-conventions.md`
|
|
91
93
|
|
|
92
94
|
```markdown
|
|
93
95
|
---
|
|
94
96
|
title: "Coding Conventions"
|
|
95
|
-
|
|
96
|
-
priority: high
|
|
97
|
-
category: execution
|
|
98
|
-
keywords:
|
|
99
|
-
- style
|
|
100
|
-
- naming
|
|
101
|
-
- import
|
|
102
|
-
- pattern
|
|
103
|
-
- convention
|
|
97
|
+
category: coding
|
|
104
98
|
---
|
|
105
99
|
# Coding Conventions
|
|
106
100
|
|
|
@@ -126,26 +120,18 @@ Auto-generated from project analysis. Update manually as patterns evolve.
|
|
|
126
120
|
## Patterns
|
|
127
121
|
{list detected patterns from codebase analysis}
|
|
128
122
|
|
|
129
|
-
##
|
|
130
|
-
{empty section for
|
|
123
|
+
## Entries
|
|
124
|
+
{empty section for spec-add entries}
|
|
131
125
|
```
|
|
132
126
|
|
|
133
|
-
|
|
127
|
+
#### 5b: architecture-constraints.md
|
|
134
128
|
|
|
135
129
|
Output: `.workflow/specs/architecture-constraints.md`
|
|
136
130
|
|
|
137
131
|
```markdown
|
|
138
132
|
---
|
|
139
133
|
title: "Architecture Constraints"
|
|
140
|
-
|
|
141
|
-
priority: high
|
|
142
|
-
category: planning
|
|
143
|
-
keywords:
|
|
144
|
-
- architecture
|
|
145
|
-
- module
|
|
146
|
-
- layer
|
|
147
|
-
- boundary
|
|
148
|
-
- dependency
|
|
134
|
+
category: arch
|
|
149
135
|
---
|
|
150
136
|
# Architecture Constraints
|
|
151
137
|
|
|
@@ -166,115 +152,57 @@ Auto-generated from project structure. Update manually as architecture evolves.
|
|
|
166
152
|
- Module system: {ESM | CommonJS | ...}
|
|
167
153
|
- Strict mode: {yes | no}
|
|
168
154
|
|
|
169
|
-
##
|
|
170
|
-
{empty section for
|
|
155
|
+
## Entries
|
|
156
|
+
{empty section for spec-add entries}
|
|
171
157
|
```
|
|
172
158
|
|
|
173
|
-
|
|
159
|
+
#### 5c: learnings.md
|
|
174
160
|
|
|
175
161
|
Output: `.workflow/specs/learnings.md`
|
|
176
162
|
|
|
177
163
|
```markdown
|
|
178
164
|
---
|
|
179
165
|
title: "Learnings"
|
|
180
|
-
|
|
181
|
-
priority: medium
|
|
182
|
-
category: general
|
|
183
|
-
keywords:
|
|
184
|
-
- bug
|
|
185
|
-
- lesson
|
|
186
|
-
- gotcha
|
|
166
|
+
category: learning
|
|
187
167
|
---
|
|
188
168
|
# Learnings
|
|
189
169
|
|
|
190
170
|
Bugs, gotchas, and lessons learned during development.
|
|
191
|
-
Add entries with: `/
|
|
192
|
-
|
|
193
|
-
## Format
|
|
194
|
-
|
|
195
|
-
Each entry follows: `- [{YYYY-MM-DD HH:mm}] <description>`
|
|
171
|
+
Add entries with: `/spec-add learning <description>`
|
|
196
172
|
|
|
197
173
|
## Entries
|
|
198
174
|
|
|
199
|
-
{empty -- entries added via
|
|
175
|
+
{empty -- entries added via spec-add}
|
|
200
176
|
```
|
|
201
177
|
|
|
202
|
-
### Step
|
|
178
|
+
### Step 6: Generate Optional Files (when signals detected)
|
|
179
|
+
|
|
180
|
+
#### 6a: quality-rules.md (when linter config or CI detected)
|
|
203
181
|
|
|
204
182
|
Output: `.workflow/specs/quality-rules.md`
|
|
205
183
|
|
|
206
184
|
```markdown
|
|
207
185
|
---
|
|
208
186
|
title: "Quality Rules"
|
|
209
|
-
|
|
210
|
-
priority: medium
|
|
211
|
-
category: execution
|
|
212
|
-
keywords:
|
|
213
|
-
- quality
|
|
214
|
-
- rule
|
|
215
|
-
- enforcement
|
|
216
|
-
- standard
|
|
187
|
+
category: quality
|
|
217
188
|
---
|
|
218
189
|
# Quality Rules
|
|
219
190
|
|
|
220
|
-
Project-specific quality rules and enforcement criteria.
|
|
221
|
-
Add entries with: `/workflow:specs-add rule <description>`
|
|
222
|
-
|
|
223
|
-
## Format
|
|
224
|
-
|
|
225
|
-
Each entry follows: `- [{YYYY-MM-DD HH:mm}] <description>`
|
|
226
|
-
|
|
227
|
-
## Entries
|
|
228
|
-
|
|
229
|
-
{empty -- entries added via specs-add}
|
|
230
|
-
```
|
|
231
|
-
|
|
232
|
-
### Step 9: Generate debug-notes.md
|
|
233
|
-
|
|
234
|
-
Output: `.workflow/specs/debug-notes.md`
|
|
235
|
-
|
|
236
|
-
```markdown
|
|
237
|
-
---
|
|
238
|
-
title: "Debug Notes"
|
|
239
|
-
readMode: optional
|
|
240
|
-
priority: medium
|
|
241
|
-
category: debug
|
|
242
|
-
keywords:
|
|
243
|
-
- debug
|
|
244
|
-
- issue
|
|
245
|
-
- workaround
|
|
246
|
-
- root-cause
|
|
247
|
-
- gotcha
|
|
248
|
-
---
|
|
249
|
-
# Debug Notes
|
|
250
|
-
|
|
251
|
-
Known issues, debugging tips, and root cause records.
|
|
252
|
-
Add entries with: `/spec-add debug <description>`
|
|
253
|
-
|
|
254
191
|
## Entries
|
|
255
192
|
|
|
256
193
|
{empty -- entries added via spec-add}
|
|
257
194
|
```
|
|
258
195
|
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
Output: `.workflow/specs/test-conventions.md`
|
|
196
|
+
#### 6b: test-conventions.md (when test framework or test files detected)
|
|
262
197
|
|
|
263
198
|
Scan existing test files for conventions (framework, naming, directory structure, patterns).
|
|
264
199
|
|
|
200
|
+
Output: `.workflow/specs/test-conventions.md`
|
|
201
|
+
|
|
265
202
|
```markdown
|
|
266
203
|
---
|
|
267
204
|
title: "Test Conventions"
|
|
268
|
-
readMode: required
|
|
269
|
-
priority: high
|
|
270
205
|
category: test
|
|
271
|
-
keywords:
|
|
272
|
-
- test
|
|
273
|
-
- coverage
|
|
274
|
-
- mock
|
|
275
|
-
- fixture
|
|
276
|
-
- assertion
|
|
277
|
-
- framework
|
|
278
206
|
---
|
|
279
207
|
# Test Conventions
|
|
280
208
|
|
|
@@ -291,80 +219,31 @@ Auto-generated from project analysis. Update manually as patterns evolve.
|
|
|
291
219
|
- Test files: {detected: *.test.ts | *.spec.ts | test_*.py | etc.}
|
|
292
220
|
|
|
293
221
|
## Patterns
|
|
294
|
-
{detected patterns from existing test files
|
|
295
|
-
|
|
296
|
-
## Manual Additions
|
|
297
|
-
|
|
298
|
-
```
|
|
299
|
-
|
|
300
|
-
### Step 11: Generate review-standards.md
|
|
301
|
-
|
|
302
|
-
Output: `.workflow/specs/review-standards.md`
|
|
303
|
-
|
|
304
|
-
```markdown
|
|
305
|
-
---
|
|
306
|
-
title: "Review Standards"
|
|
307
|
-
readMode: required
|
|
308
|
-
priority: medium
|
|
309
|
-
category: review
|
|
310
|
-
keywords:
|
|
311
|
-
- review
|
|
312
|
-
- checklist
|
|
313
|
-
- gate
|
|
314
|
-
- approval
|
|
315
|
-
- standard
|
|
316
|
-
---
|
|
317
|
-
# Review Standards
|
|
318
|
-
|
|
319
|
-
## Review Checklist
|
|
320
|
-
|
|
321
|
-
## Quality Gates
|
|
322
|
-
|
|
323
|
-
## Manual Additions
|
|
222
|
+
{detected patterns from existing test files}
|
|
324
223
|
|
|
224
|
+
## Entries
|
|
225
|
+
{empty section for spec-add entries}
|
|
325
226
|
```
|
|
326
227
|
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
Output: `.workflow/specs/validation-rules.md`
|
|
228
|
+
#### 6c: debug-notes.md and review-standards.md
|
|
330
229
|
|
|
331
|
-
|
|
332
|
-
---
|
|
333
|
-
title: "Validation Rules"
|
|
334
|
-
readMode: required
|
|
335
|
-
priority: high
|
|
336
|
-
category: validation
|
|
337
|
-
keywords:
|
|
338
|
-
- validation
|
|
339
|
-
- verification
|
|
340
|
-
- acceptance
|
|
341
|
-
- criteria
|
|
342
|
-
- check
|
|
343
|
-
---
|
|
344
|
-
# Validation Rules
|
|
345
|
-
|
|
346
|
-
## Verification Criteria
|
|
347
|
-
|
|
348
|
-
## Acceptance Standards
|
|
349
|
-
|
|
350
|
-
## Manual Additions
|
|
351
|
-
|
|
352
|
-
```
|
|
230
|
+
These are NOT created during setup. They are created on demand when `spec-add debug` or `spec-add review` is first used.
|
|
353
231
|
|
|
354
|
-
### Step
|
|
232
|
+
### Step 7: Summary
|
|
355
233
|
|
|
356
234
|
Display what was created:
|
|
357
235
|
```
|
|
358
236
|
Specs initialized:
|
|
359
|
-
.workflow/project-tech.json
|
|
360
|
-
.workflow/specs/coding-conventions.md
|
|
361
|
-
.workflow/specs/architecture-constraints.md
|
|
362
|
-
.workflow/specs/learnings.md
|
|
363
|
-
|
|
364
|
-
.workflow/specs/
|
|
365
|
-
.workflow/specs/test-conventions.md
|
|
366
|
-
|
|
367
|
-
|
|
237
|
+
.workflow/project-tech.json -- Tech stack analysis
|
|
238
|
+
.workflow/specs/coding-conventions.md (category: coding)
|
|
239
|
+
.workflow/specs/architecture-constraints.md (category: arch)
|
|
240
|
+
.workflow/specs/learnings.md (category: learning)
|
|
241
|
+
{if created:}
|
|
242
|
+
.workflow/specs/quality-rules.md (category: quality)
|
|
243
|
+
.workflow/specs/test-conventions.md (category: test)
|
|
244
|
+
|
|
245
|
+
Categories: coding, arch, quality, debug, test, review, learning
|
|
246
|
+
debug-notes.md and review-standards.md created on demand via /spec-add
|
|
368
247
|
```
|
|
369
248
|
|
|
370
249
|
## Output
|
package/workflows/test.md
CHANGED
|
@@ -22,7 +22,16 @@ Determine test target from $ARGUMENTS:
|
|
|
22
22
|
|
|
23
23
|
**If phase number provided** (e.g., "3"):
|
|
24
24
|
- Set `$TARGET_TYPE = "phase"`
|
|
25
|
-
-
|
|
25
|
+
- Resolve phase dir:
|
|
26
|
+
```
|
|
27
|
+
Read .workflow/state.json → state
|
|
28
|
+
artifacts = state.artifacts ?? []
|
|
29
|
+
IF artifacts.length > 0:
|
|
30
|
+
art = artifacts.find(a => a.type === 'execute' && a.phase === phaseNum)
|
|
31
|
+
PHASE_DIR = ".workflow/" + art.path
|
|
32
|
+
ELSE:
|
|
33
|
+
PHASE_DIR = ".workflow/phases/{NN}-{slug}/"
|
|
34
|
+
```
|
|
26
35
|
- Load `$PHASE_DIR/index.json` for context
|
|
27
36
|
|
|
28
37
|
**If scratch task ID provided:**
|
|
@@ -45,8 +54,9 @@ Validate target exists and has been verified (verification.json present). (E002)
|
|
|
45
54
|
### Step 2: Check Active Sessions
|
|
46
55
|
|
|
47
56
|
```bash
|
|
48
|
-
|
|
57
|
+
# Check both scratch (artifact registry) and legacy phases for active UAT sessions
|
|
49
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
|
|
50
60
|
```
|
|
51
61
|
|
|
52
62
|
Read each file's frontmatter (status, target) and Current Test section.
|
package/workflows/ui-style.md
CHANGED
|
@@ -21,8 +21,15 @@ Pipeline position: analyze -> **ui-design** -> plan -> execute -> verify
|
|
|
21
21
|
Input: <phase> argument (number or slug) OR topic text
|
|
22
22
|
|
|
23
23
|
IF argument is a number or matches phase pattern:
|
|
24
|
-
|
|
25
|
-
|
|
24
|
+
Read .workflow/state.json → state
|
|
25
|
+
artifacts = state.artifacts ?? []
|
|
26
|
+
IF artifacts.length > 0:
|
|
27
|
+
art = artifacts.find(a => a.phase === phaseNum)
|
|
28
|
+
PHASE_DIR = ".workflow/" + art.path
|
|
29
|
+
ELSE:
|
|
30
|
+
Find .workflow/phases/{NN}-*/index.json
|
|
31
|
+
PHASE_DIR = resolved path
|
|
32
|
+
Set SCRATCH_MODE = false
|
|
26
33
|
|
|
27
34
|
ELSE (topic text — scratch mode):
|
|
28
35
|
1. slug = slugify(topic)
|