@sienklogic/plan-build-run 2.0.0
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/CHANGELOG.md +56 -0
- package/CLAUDE.md +149 -0
- package/LICENSE +21 -0
- package/README.md +247 -0
- package/dashboard/bin/cli.js +25 -0
- package/dashboard/package.json +34 -0
- package/dashboard/public/.gitkeep +0 -0
- package/dashboard/public/css/layout.css +406 -0
- package/dashboard/public/css/status-colors.css +98 -0
- package/dashboard/public/js/htmx-title.js +5 -0
- package/dashboard/public/js/sidebar-toggle.js +20 -0
- package/dashboard/src/app.js +78 -0
- package/dashboard/src/middleware/errorHandler.js +52 -0
- package/dashboard/src/middleware/notFoundHandler.js +9 -0
- package/dashboard/src/repositories/planning.repository.js +128 -0
- package/dashboard/src/routes/events.routes.js +40 -0
- package/dashboard/src/routes/index.routes.js +31 -0
- package/dashboard/src/routes/pages.routes.js +195 -0
- package/dashboard/src/server.js +42 -0
- package/dashboard/src/services/dashboard.service.js +222 -0
- package/dashboard/src/services/phase.service.js +167 -0
- package/dashboard/src/services/project.service.js +57 -0
- package/dashboard/src/services/roadmap.service.js +171 -0
- package/dashboard/src/services/sse.service.js +58 -0
- package/dashboard/src/services/todo.service.js +254 -0
- package/dashboard/src/services/watcher.service.js +48 -0
- package/dashboard/src/views/coming-soon.ejs +11 -0
- package/dashboard/src/views/error.ejs +13 -0
- package/dashboard/src/views/index.ejs +5 -0
- package/dashboard/src/views/layout.ejs +1 -0
- package/dashboard/src/views/partials/dashboard-content.ejs +77 -0
- package/dashboard/src/views/partials/footer.ejs +3 -0
- package/dashboard/src/views/partials/head.ejs +21 -0
- package/dashboard/src/views/partials/header.ejs +12 -0
- package/dashboard/src/views/partials/layout-bottom.ejs +15 -0
- package/dashboard/src/views/partials/layout-top.ejs +8 -0
- package/dashboard/src/views/partials/phase-content.ejs +181 -0
- package/dashboard/src/views/partials/phases-content.ejs +117 -0
- package/dashboard/src/views/partials/roadmap-content.ejs +142 -0
- package/dashboard/src/views/partials/sidebar.ejs +38 -0
- package/dashboard/src/views/partials/todo-create-content.ejs +53 -0
- package/dashboard/src/views/partials/todo-detail-content.ejs +38 -0
- package/dashboard/src/views/partials/todos-content.ejs +53 -0
- package/dashboard/src/views/phase-detail.ejs +5 -0
- package/dashboard/src/views/phases.ejs +5 -0
- package/dashboard/src/views/roadmap.ejs +5 -0
- package/dashboard/src/views/todo-create.ejs +5 -0
- package/dashboard/src/views/todo-detail.ejs +5 -0
- package/dashboard/src/views/todos.ejs +5 -0
- package/package.json +57 -0
- package/plugins/pbr/.claude-plugin/plugin.json +13 -0
- package/plugins/pbr/UI-CONSISTENCY-GAPS.md +61 -0
- package/plugins/pbr/agents/codebase-mapper.md +271 -0
- package/plugins/pbr/agents/debugger.md +281 -0
- package/plugins/pbr/agents/executor.md +407 -0
- package/plugins/pbr/agents/general.md +164 -0
- package/plugins/pbr/agents/integration-checker.md +141 -0
- package/plugins/pbr/agents/plan-checker.md +280 -0
- package/plugins/pbr/agents/planner.md +358 -0
- package/plugins/pbr/agents/researcher.md +363 -0
- package/plugins/pbr/agents/synthesizer.md +230 -0
- package/plugins/pbr/agents/verifier.md +454 -0
- package/plugins/pbr/commands/begin.md +5 -0
- package/plugins/pbr/commands/build.md +5 -0
- package/plugins/pbr/commands/config.md +5 -0
- package/plugins/pbr/commands/continue.md +5 -0
- package/plugins/pbr/commands/debug.md +5 -0
- package/plugins/pbr/commands/discuss.md +5 -0
- package/plugins/pbr/commands/explore.md +5 -0
- package/plugins/pbr/commands/health.md +5 -0
- package/plugins/pbr/commands/help.md +5 -0
- package/plugins/pbr/commands/import.md +5 -0
- package/plugins/pbr/commands/milestone.md +5 -0
- package/plugins/pbr/commands/note.md +5 -0
- package/plugins/pbr/commands/pause.md +5 -0
- package/plugins/pbr/commands/plan.md +5 -0
- package/plugins/pbr/commands/quick.md +5 -0
- package/plugins/pbr/commands/resume.md +5 -0
- package/plugins/pbr/commands/review.md +5 -0
- package/plugins/pbr/commands/scan.md +5 -0
- package/plugins/pbr/commands/setup.md +5 -0
- package/plugins/pbr/commands/status.md +5 -0
- package/plugins/pbr/commands/todo.md +5 -0
- package/plugins/pbr/contexts/dev.md +27 -0
- package/plugins/pbr/contexts/research.md +28 -0
- package/plugins/pbr/contexts/review.md +36 -0
- package/plugins/pbr/hooks/hooks.json +183 -0
- package/plugins/pbr/references/agent-anti-patterns.md +24 -0
- package/plugins/pbr/references/agent-interactions.md +134 -0
- package/plugins/pbr/references/agent-teams.md +54 -0
- package/plugins/pbr/references/checkpoints.md +157 -0
- package/plugins/pbr/references/common-bug-patterns.md +13 -0
- package/plugins/pbr/references/continuation-format.md +212 -0
- package/plugins/pbr/references/deviation-rules.md +112 -0
- package/plugins/pbr/references/git-integration.md +226 -0
- package/plugins/pbr/references/integration-patterns.md +117 -0
- package/plugins/pbr/references/model-profiles.md +99 -0
- package/plugins/pbr/references/model-selection.md +31 -0
- package/plugins/pbr/references/pbr-rules.md +193 -0
- package/plugins/pbr/references/plan-authoring.md +181 -0
- package/plugins/pbr/references/plan-format.md +283 -0
- package/plugins/pbr/references/planning-config.md +213 -0
- package/plugins/pbr/references/questioning.md +214 -0
- package/plugins/pbr/references/reading-verification.md +127 -0
- package/plugins/pbr/references/stub-patterns.md +160 -0
- package/plugins/pbr/references/subagent-coordination.md +119 -0
- package/plugins/pbr/references/ui-formatting.md +399 -0
- package/plugins/pbr/references/verification-patterns.md +198 -0
- package/plugins/pbr/references/wave-execution.md +95 -0
- package/plugins/pbr/scripts/auto-continue.js +80 -0
- package/plugins/pbr/scripts/check-dangerous-commands.js +136 -0
- package/plugins/pbr/scripts/check-doc-sprawl.js +102 -0
- package/plugins/pbr/scripts/check-phase-boundary.js +196 -0
- package/plugins/pbr/scripts/check-plan-format.js +270 -0
- package/plugins/pbr/scripts/check-roadmap-sync.js +252 -0
- package/plugins/pbr/scripts/check-skill-workflow.js +262 -0
- package/plugins/pbr/scripts/check-state-sync.js +476 -0
- package/plugins/pbr/scripts/check-subagent-output.js +144 -0
- package/plugins/pbr/scripts/config-schema.json +251 -0
- package/plugins/pbr/scripts/context-budget-check.js +287 -0
- package/plugins/pbr/scripts/event-handler.js +151 -0
- package/plugins/pbr/scripts/event-logger.js +92 -0
- package/plugins/pbr/scripts/hook-logger.js +76 -0
- package/plugins/pbr/scripts/hooks-schema.json +79 -0
- package/plugins/pbr/scripts/log-subagent.js +152 -0
- package/plugins/pbr/scripts/log-tool-failure.js +88 -0
- package/plugins/pbr/scripts/pbr-tools.js +1301 -0
- package/plugins/pbr/scripts/post-write-dispatch.js +66 -0
- package/plugins/pbr/scripts/post-write-quality.js +207 -0
- package/plugins/pbr/scripts/pre-bash-dispatch.js +56 -0
- package/plugins/pbr/scripts/pre-write-dispatch.js +62 -0
- package/plugins/pbr/scripts/progress-tracker.js +228 -0
- package/plugins/pbr/scripts/session-cleanup.js +254 -0
- package/plugins/pbr/scripts/status-line.js +285 -0
- package/plugins/pbr/scripts/suggest-compact.js +119 -0
- package/plugins/pbr/scripts/task-completed.js +45 -0
- package/plugins/pbr/scripts/track-context-budget.js +119 -0
- package/plugins/pbr/scripts/validate-commit.js +200 -0
- package/plugins/pbr/scripts/validate-plugin-structure.js +172 -0
- package/plugins/pbr/skills/begin/SKILL.md +545 -0
- package/plugins/pbr/skills/begin/templates/PROJECT.md.tmpl +33 -0
- package/plugins/pbr/skills/begin/templates/REQUIREMENTS.md.tmpl +18 -0
- package/plugins/pbr/skills/begin/templates/STATE.md.tmpl +49 -0
- package/plugins/pbr/skills/begin/templates/config.json.tmpl +63 -0
- package/plugins/pbr/skills/begin/templates/researcher-prompt.md.tmpl +19 -0
- package/plugins/pbr/skills/begin/templates/roadmap-prompt.md.tmpl +30 -0
- package/plugins/pbr/skills/begin/templates/synthesis-prompt.md.tmpl +16 -0
- package/plugins/pbr/skills/build/SKILL.md +962 -0
- package/plugins/pbr/skills/config/SKILL.md +241 -0
- package/plugins/pbr/skills/continue/SKILL.md +127 -0
- package/plugins/pbr/skills/debug/SKILL.md +489 -0
- package/plugins/pbr/skills/debug/templates/continuation-prompt.md.tmpl +16 -0
- package/plugins/pbr/skills/debug/templates/initial-investigation-prompt.md.tmpl +27 -0
- package/plugins/pbr/skills/discuss/SKILL.md +338 -0
- package/plugins/pbr/skills/discuss/templates/CONTEXT.md.tmpl +61 -0
- package/plugins/pbr/skills/discuss/templates/decision-categories.md +9 -0
- package/plugins/pbr/skills/explore/SKILL.md +362 -0
- package/plugins/pbr/skills/health/SKILL.md +186 -0
- package/plugins/pbr/skills/health/templates/check-pattern.md.tmpl +30 -0
- package/plugins/pbr/skills/health/templates/output-format.md.tmpl +63 -0
- package/plugins/pbr/skills/help/SKILL.md +140 -0
- package/plugins/pbr/skills/import/SKILL.md +490 -0
- package/plugins/pbr/skills/milestone/SKILL.md +673 -0
- package/plugins/pbr/skills/milestone/templates/audit-report.md.tmpl +48 -0
- package/plugins/pbr/skills/milestone/templates/stats-file.md.tmpl +30 -0
- package/plugins/pbr/skills/note/SKILL.md +212 -0
- package/plugins/pbr/skills/pause/SKILL.md +235 -0
- package/plugins/pbr/skills/pause/templates/continue-here.md.tmpl +71 -0
- package/plugins/pbr/skills/plan/SKILL.md +628 -0
- package/plugins/pbr/skills/plan/decimal-phase-calc.md +98 -0
- package/plugins/pbr/skills/plan/templates/checker-prompt.md.tmpl +21 -0
- package/plugins/pbr/skills/plan/templates/gap-closure-prompt.md.tmpl +32 -0
- package/plugins/pbr/skills/plan/templates/planner-prompt.md.tmpl +38 -0
- package/plugins/pbr/skills/plan/templates/researcher-prompt.md.tmpl +19 -0
- package/plugins/pbr/skills/plan/templates/revision-prompt.md.tmpl +23 -0
- package/plugins/pbr/skills/quick/SKILL.md +335 -0
- package/plugins/pbr/skills/resume/SKILL.md +388 -0
- package/plugins/pbr/skills/review/SKILL.md +652 -0
- package/plugins/pbr/skills/review/templates/debugger-prompt.md.tmpl +60 -0
- package/plugins/pbr/skills/review/templates/gap-planner-prompt.md.tmpl +40 -0
- package/plugins/pbr/skills/review/templates/verifier-prompt.md.tmpl +115 -0
- package/plugins/pbr/skills/scan/SKILL.md +269 -0
- package/plugins/pbr/skills/scan/templates/mapper-prompt.md.tmpl +201 -0
- package/plugins/pbr/skills/setup/SKILL.md +227 -0
- package/plugins/pbr/skills/shared/commit-planning-docs.md +35 -0
- package/plugins/pbr/skills/shared/config-loading.md +102 -0
- package/plugins/pbr/skills/shared/context-budget.md +40 -0
- package/plugins/pbr/skills/shared/context-loader-task.md +86 -0
- package/plugins/pbr/skills/shared/digest-select.md +79 -0
- package/plugins/pbr/skills/shared/domain-probes.md +125 -0
- package/plugins/pbr/skills/shared/error-reporting.md +79 -0
- package/plugins/pbr/skills/shared/gate-prompts.md +388 -0
- package/plugins/pbr/skills/shared/phase-argument-parsing.md +45 -0
- package/plugins/pbr/skills/shared/progress-display.md +53 -0
- package/plugins/pbr/skills/shared/revision-loop.md +81 -0
- package/plugins/pbr/skills/shared/state-loading.md +62 -0
- package/plugins/pbr/skills/shared/state-update.md +161 -0
- package/plugins/pbr/skills/shared/universal-anti-patterns.md +33 -0
- package/plugins/pbr/skills/status/SKILL.md +353 -0
- package/plugins/pbr/skills/todo/SKILL.md +181 -0
- package/plugins/pbr/templates/CONTEXT.md.tmpl +52 -0
- package/plugins/pbr/templates/INTEGRATION-REPORT.md.tmpl +151 -0
- package/plugins/pbr/templates/RESEARCH-SUMMARY.md.tmpl +97 -0
- package/plugins/pbr/templates/ROADMAP.md.tmpl +40 -0
- package/plugins/pbr/templates/SUMMARY.md.tmpl +81 -0
- package/plugins/pbr/templates/VERIFICATION-DETAIL.md.tmpl +116 -0
- package/plugins/pbr/templates/codebase/ARCHITECTURE.md.tmpl +98 -0
- package/plugins/pbr/templates/codebase/CONCERNS.md.tmpl +93 -0
- package/plugins/pbr/templates/codebase/CONVENTIONS.md.tmpl +104 -0
- package/plugins/pbr/templates/codebase/INTEGRATIONS.md.tmpl +78 -0
- package/plugins/pbr/templates/codebase/STACK.md.tmpl +78 -0
- package/plugins/pbr/templates/codebase/STRUCTURE.md.tmpl +80 -0
- package/plugins/pbr/templates/codebase/TESTING.md.tmpl +107 -0
- package/plugins/pbr/templates/continue-here.md.tmpl +73 -0
- package/plugins/pbr/templates/prompt-partials/phase-project-context.md.tmpl +37 -0
- package/plugins/pbr/templates/research/ARCHITECTURE.md.tmpl +124 -0
- package/plugins/pbr/templates/research/STACK.md.tmpl +71 -0
- package/plugins/pbr/templates/research/SUMMARY.md.tmpl +112 -0
- package/plugins/pbr/templates/research-outputs/phase-research.md.tmpl +81 -0
- package/plugins/pbr/templates/research-outputs/project-research.md.tmpl +99 -0
- package/plugins/pbr/templates/research-outputs/synthesis.md.tmpl +36 -0
|
@@ -0,0 +1,399 @@
|
|
|
1
|
+
# Plan-Build-Run UI Brand & Formatting Reference
|
|
2
|
+
|
|
3
|
+
Consistent output formatting for all Plan-Build-Run skills. Every skill that produces user-facing output should follow these patterns.
|
|
4
|
+
|
|
5
|
+
## Stage Banners
|
|
6
|
+
|
|
7
|
+
Use for major workflow transitions. Always use `PLAN-BUILD-RUN` prefix.
|
|
8
|
+
|
|
9
|
+
```
|
|
10
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
11
|
+
PLAN-BUILD-RUN ► {STAGE NAME}
|
|
12
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
**Stage names (uppercase):**
|
|
16
|
+
- `QUESTIONING`
|
|
17
|
+
- `RESEARCHING`
|
|
18
|
+
- `DEFINING REQUIREMENTS`
|
|
19
|
+
- `CREATING ROADMAP`
|
|
20
|
+
- `PLANNING PHASE {N}`
|
|
21
|
+
- `EXECUTING WAVE {N}`
|
|
22
|
+
- `VERIFYING`
|
|
23
|
+
- `PHASE {N} COMPLETE ✓`
|
|
24
|
+
- `MILESTONE COMPLETE 🎉`
|
|
25
|
+
- `SCANNING CODEBASE`
|
|
26
|
+
- `DEBUGGING`
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
## Headers
|
|
31
|
+
|
|
32
|
+
Use these patterns for consistent visual hierarchy within sections:
|
|
33
|
+
|
|
34
|
+
```
|
|
35
|
+
## Phase 3: Authentication <- Phase-level header
|
|
36
|
+
### Plan 01: Database Schema <- Plan-level header
|
|
37
|
+
#### Task 1: Create User Table <- Task-level header
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
## Status Indicators
|
|
43
|
+
|
|
44
|
+
| Status | Indicator | Usage |
|
|
45
|
+
|--------|-----------|-------|
|
|
46
|
+
| Complete | `✓` | Completed items, passed checks |
|
|
47
|
+
| Failed | `✗` | Failed verification, missing items |
|
|
48
|
+
| Pending | `○` | Not yet started |
|
|
49
|
+
| In Progress | `◐` | Currently executing |
|
|
50
|
+
| Needs Human | `?` | Requires human verification |
|
|
51
|
+
| Warning | `⚠` | Warnings, non-blocking issues |
|
|
52
|
+
| Blocked | `⊘` | Blocked by dependency |
|
|
53
|
+
| Auto-approved | `⚡` | Automatically approved (gates) |
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
## Progress Display
|
|
58
|
+
|
|
59
|
+
**Phase/milestone level:**
|
|
60
|
+
```
|
|
61
|
+
Progress: ████████░░ 80%
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
**Phase progress (detailed):**
|
|
65
|
+
```
|
|
66
|
+
Phase 3 of 5: Authentication
|
|
67
|
+
Progress: [████████░░░░░░░░░░░░] 40%
|
|
68
|
+
Plans: 2/5 complete
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
**Build progress (wave tracking):**
|
|
72
|
+
```
|
|
73
|
+
Wave 1: ✓ Plan 01, ✓ Plan 02
|
|
74
|
+
Wave 2: ◐ Plan 03 (executing)
|
|
75
|
+
Wave 3: ○ Plan 04
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
**Task level:**
|
|
79
|
+
```
|
|
80
|
+
Tasks: 2/4 complete
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
---
|
|
84
|
+
|
|
85
|
+
## Spawning Indicators
|
|
86
|
+
|
|
87
|
+
Show when agents are being launched:
|
|
88
|
+
|
|
89
|
+
```
|
|
90
|
+
◐ Spawning executor...
|
|
91
|
+
|
|
92
|
+
◐ Spawning 4 executors in parallel...
|
|
93
|
+
→ Plan 01: Database Schema
|
|
94
|
+
→ Plan 02: Auth Service
|
|
95
|
+
→ Plan 03: API Routes
|
|
96
|
+
→ Plan 04: Test Suite
|
|
97
|
+
|
|
98
|
+
✓ Plan 01 complete (2m 14s)
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
For research agents:
|
|
102
|
+
```
|
|
103
|
+
◐ Spawning 4 researchers in parallel...
|
|
104
|
+
→ Stack research
|
|
105
|
+
→ Features research
|
|
106
|
+
→ Architecture research
|
|
107
|
+
→ Pitfalls research
|
|
108
|
+
|
|
109
|
+
✓ Researcher complete: STACK.md written
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
---
|
|
113
|
+
|
|
114
|
+
## Checkpoint Boxes
|
|
115
|
+
|
|
116
|
+
User action required. Use double-line box drawing, 62-character width.
|
|
117
|
+
|
|
118
|
+
```
|
|
119
|
+
╔══════════════════════════════════════════════════════════════╗
|
|
120
|
+
║ CHECKPOINT: {Type} ║
|
|
121
|
+
╚══════════════════════════════════════════════════════════════╝
|
|
122
|
+
|
|
123
|
+
{Content}
|
|
124
|
+
|
|
125
|
+
──────────────────────────────────────────────────────────────
|
|
126
|
+
→ {ACTION PROMPT}
|
|
127
|
+
──────────────────────────────────────────────────────────────
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
**Types:**
|
|
131
|
+
- `CHECKPOINT: Verification Required` → `→ Type "approved" or describe issues`
|
|
132
|
+
- `CHECKPOINT: Decision Required` → `→ Select: option-a / option-b`
|
|
133
|
+
- `CHECKPOINT: Action Required` → `→ Type "done" when complete`
|
|
134
|
+
|
|
135
|
+
---
|
|
136
|
+
|
|
137
|
+
## AskUserQuestion Patterns
|
|
138
|
+
|
|
139
|
+
Structured prompts for user decision points. All gate checks use AskUserQuestion instead of
|
|
140
|
+
plain-text "Type approved" prompts. See `skills/shared/gate-prompts.md` for the full
|
|
141
|
+
pattern catalog (21 named AskUserQuestion patterns).
|
|
142
|
+
|
|
143
|
+
### Structure
|
|
144
|
+
|
|
145
|
+
```
|
|
146
|
+
AskUserQuestion:
|
|
147
|
+
question: "{contextual question}"
|
|
148
|
+
header: "{max 12 chars}"
|
|
149
|
+
options:
|
|
150
|
+
- label: "{Option 1}" description: "{What happens}"
|
|
151
|
+
- label: "{Option 2}" description: "{What happens}"
|
|
152
|
+
multiSelect: false
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
### Rules
|
|
156
|
+
|
|
157
|
+
- **Max 4 options** per call. Split into 2-step flow if more are needed.
|
|
158
|
+
- **Header max 12 characters.** Single word preferred (e.g., "Approve?", "Confirm", "Scope").
|
|
159
|
+
- **multiSelect: false** always. Plan-Build-Run gates require single selection.
|
|
160
|
+
- **Handle "Other"**: Users may type freeform text instead of selecting. Skills must handle this gracefully.
|
|
161
|
+
- **Orchestrator only**: AskUserQuestion cannot be called from subagents.
|
|
162
|
+
|
|
163
|
+
### Common Patterns
|
|
164
|
+
|
|
165
|
+
**Approval gate** (approve-revise-abort):
|
|
166
|
+
```
|
|
167
|
+
question: "Approve these plans?"
|
|
168
|
+
header: "Approve?"
|
|
169
|
+
options:
|
|
170
|
+
- label: "Approve" description: "Proceed with execution"
|
|
171
|
+
- label: "Request changes" description: "Discuss adjustments before proceeding"
|
|
172
|
+
- label: "Abort" description: "Cancel this operation"
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
**Simple confirmation** (yes-no):
|
|
176
|
+
```
|
|
177
|
+
question: "Re-plan this phase with gap context?"
|
|
178
|
+
header: "Confirm"
|
|
179
|
+
options:
|
|
180
|
+
- label: "Yes" description: "Create gap-closure plans"
|
|
181
|
+
- label: "No" description: "Skip re-planning"
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
**Category selection** (settings-category-select):
|
|
185
|
+
```
|
|
186
|
+
question: "What would you like to configure?"
|
|
187
|
+
header: "Configure"
|
|
188
|
+
options:
|
|
189
|
+
- label: "Depth" description: "quick/standard/comprehensive"
|
|
190
|
+
- label: "Model profile" description: "quality/balanced/budget/adaptive"
|
|
191
|
+
- label: "Features" description: "Toggle workflow features and gates"
|
|
192
|
+
- label: "Git settings" description: "branching strategy, commit mode"
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
**Dynamic routing** (action-routing):
|
|
196
|
+
```
|
|
197
|
+
question: "What would you like to do next?"
|
|
198
|
+
header: "Next Step"
|
|
199
|
+
options:
|
|
200
|
+
- label: "/pbr:build 3" description: "Execute phase 3 plans"
|
|
201
|
+
- label: "/pbr:review 2" description: "Verify phase 2 results"
|
|
202
|
+
- label: "Something else" description: "Enter a different command"
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
### When NOT to Use
|
|
206
|
+
|
|
207
|
+
Do not use AskUserQuestion for:
|
|
208
|
+
- Freeform text input (symptom descriptions, task descriptions, open questions)
|
|
209
|
+
- Socratic discussion (explore, discuss follow-ups)
|
|
210
|
+
- Situations with unbounded response space
|
|
211
|
+
|
|
212
|
+
Use plain conversational prompts for these cases instead.
|
|
213
|
+
|
|
214
|
+
---
|
|
215
|
+
|
|
216
|
+
## Next Up Block
|
|
217
|
+
|
|
218
|
+
Always present at end of major completions (phase complete, milestone complete, project init).
|
|
219
|
+
|
|
220
|
+
```
|
|
221
|
+
───────────────────────────────────────────────────────────────
|
|
222
|
+
|
|
223
|
+
## ▶ Next Up
|
|
224
|
+
|
|
225
|
+
**{Identifier}: {Name}** — {one-line description}
|
|
226
|
+
|
|
227
|
+
`{copy-paste command}`
|
|
228
|
+
|
|
229
|
+
<sub>`/clear` first → fresh context window</sub>
|
|
230
|
+
|
|
231
|
+
───────────────────────────────────────────────────────────────
|
|
232
|
+
|
|
233
|
+
**Also available:**
|
|
234
|
+
- `/pbr:alternative-1` — description
|
|
235
|
+
- `/pbr:alternative-2` — description
|
|
236
|
+
|
|
237
|
+
───────────────────────────────────────────────────────────────
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
**Shorter routing (for minor completions):**
|
|
241
|
+
```
|
|
242
|
+
What's next?
|
|
243
|
+
→ /pbr:plan 4 — plan the next phase
|
|
244
|
+
→ /pbr:review 3 — review what was just built
|
|
245
|
+
→ /pbr:status — see full project status
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
---
|
|
249
|
+
|
|
250
|
+
## Error Box
|
|
251
|
+
|
|
252
|
+
```
|
|
253
|
+
╔══════════════════════════════════════════════════════════════╗
|
|
254
|
+
║ ERROR ║
|
|
255
|
+
╚══════════════════════════════════════════════════════════════╝
|
|
256
|
+
|
|
257
|
+
{Error description}
|
|
258
|
+
|
|
259
|
+
**To fix:** {Resolution steps}
|
|
260
|
+
```
|
|
261
|
+
|
|
262
|
+
---
|
|
263
|
+
|
|
264
|
+
## Tables
|
|
265
|
+
|
|
266
|
+
Use tables for structured data:
|
|
267
|
+
|
|
268
|
+
```markdown
|
|
269
|
+
| Phase | Status | Plans | Progress |
|
|
270
|
+
|-------|--------|-------|----------|
|
|
271
|
+
| 1. Foundation | ✓ Complete | 3/3 | 100% |
|
|
272
|
+
| 2. Database | ✓ Complete | 2/2 | 100% |
|
|
273
|
+
| 3. Auth | ◐ Building | 1/3 | 33% |
|
|
274
|
+
| 4. Frontend | ○ Pending | 0/4 | 0% |
|
|
275
|
+
```
|
|
276
|
+
|
|
277
|
+
---
|
|
278
|
+
|
|
279
|
+
## Cost/Token Warnings
|
|
280
|
+
|
|
281
|
+
```
|
|
282
|
+
⚠ Budget check: This operation will spawn 4 agents (~400k tokens)
|
|
283
|
+
Estimated: ~20% of 5-hour window
|
|
284
|
+
Continue? [/pbr:config to adjust depth first]
|
|
285
|
+
```
|
|
286
|
+
|
|
287
|
+
---
|
|
288
|
+
|
|
289
|
+
## Completion Summary Templates
|
|
290
|
+
|
|
291
|
+
### Phase Complete
|
|
292
|
+
|
|
293
|
+
```
|
|
294
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
295
|
+
PLAN-BUILD-RUN ► PHASE {N} COMPLETE ✓
|
|
296
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
297
|
+
|
|
298
|
+
**Phase {N}: {Name}**
|
|
299
|
+
|
|
300
|
+
{X} plans executed
|
|
301
|
+
Goal verified ✓
|
|
302
|
+
|
|
303
|
+
───────────────────────────────────────────────────────────────
|
|
304
|
+
|
|
305
|
+
## ▶ Next Up
|
|
306
|
+
|
|
307
|
+
**Phase {N+1}: {Name}** — {Goal from ROADMAP.md}
|
|
308
|
+
|
|
309
|
+
/pbr:discuss {N+1} — gather context and clarify approach
|
|
310
|
+
|
|
311
|
+
<sub>/clear first → fresh context window</sub>
|
|
312
|
+
|
|
313
|
+
───────────────────────────────────────────────────────────────
|
|
314
|
+
|
|
315
|
+
**Also available:**
|
|
316
|
+
- /pbr:plan {N+1} — skip discussion, plan directly
|
|
317
|
+
- /pbr:review {N} — manual acceptance testing before continuing
|
|
318
|
+
|
|
319
|
+
───────────────────────────────────────────────────────────────
|
|
320
|
+
```
|
|
321
|
+
|
|
322
|
+
### Milestone Complete
|
|
323
|
+
|
|
324
|
+
```
|
|
325
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
326
|
+
PLAN-BUILD-RUN ► MILESTONE COMPLETE 🎉
|
|
327
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
328
|
+
|
|
329
|
+
**{version}**
|
|
330
|
+
|
|
331
|
+
{N} phases completed
|
|
332
|
+
All phase goals verified ✓
|
|
333
|
+
|
|
334
|
+
───────────────────────────────────────────────────────────────
|
|
335
|
+
|
|
336
|
+
## ▶ Next Up
|
|
337
|
+
|
|
338
|
+
**Audit milestone** — verify requirements, cross-phase integration, E2E flows
|
|
339
|
+
|
|
340
|
+
/pbr:milestone audit
|
|
341
|
+
|
|
342
|
+
<sub>/clear first → fresh context window</sub>
|
|
343
|
+
|
|
344
|
+
───────────────────────────────────────────────────────────────
|
|
345
|
+
|
|
346
|
+
**Also available:**
|
|
347
|
+
- /pbr:review — manual acceptance testing
|
|
348
|
+
- /pbr:milestone complete — skip audit, archive directly
|
|
349
|
+
|
|
350
|
+
───────────────────────────────────────────────────────────────
|
|
351
|
+
```
|
|
352
|
+
|
|
353
|
+
### Gaps Found
|
|
354
|
+
|
|
355
|
+
```
|
|
356
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
357
|
+
PLAN-BUILD-RUN ► PHASE {N} GAPS FOUND ⚠
|
|
358
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
359
|
+
|
|
360
|
+
**Phase {N}: {Name}**
|
|
361
|
+
|
|
362
|
+
Score: {X}/{Y} must-haves verified
|
|
363
|
+
Report: .planning/phases/{phase_dir}/VERIFICATION.md
|
|
364
|
+
|
|
365
|
+
### What's Missing
|
|
366
|
+
|
|
367
|
+
{Extract gap summaries from VERIFICATION.md}
|
|
368
|
+
|
|
369
|
+
───────────────────────────────────────────────────────────────
|
|
370
|
+
|
|
371
|
+
## ▶ Next Up
|
|
372
|
+
|
|
373
|
+
**Plan gap closure** — create additional plans to complete the phase
|
|
374
|
+
|
|
375
|
+
/pbr:plan {N} --gaps
|
|
376
|
+
|
|
377
|
+
<sub>/clear first → fresh context window</sub>
|
|
378
|
+
|
|
379
|
+
───────────────────────────────────────────────────────────────
|
|
380
|
+
|
|
381
|
+
**Also available:**
|
|
382
|
+
- cat .planning/phases/{phase_dir}/VERIFICATION.md — see full report
|
|
383
|
+
- /pbr:review {N} — manual testing before planning
|
|
384
|
+
|
|
385
|
+
───────────────────────────────────────────────────────────────
|
|
386
|
+
```
|
|
387
|
+
|
|
388
|
+
---
|
|
389
|
+
|
|
390
|
+
## Anti-Patterns
|
|
391
|
+
|
|
392
|
+
Do NOT:
|
|
393
|
+
- Use varying box/banner widths
|
|
394
|
+
- Mix banner styles (`===`, `---`, `***`) with `━━━` banners
|
|
395
|
+
- Skip `PLAN-BUILD-RUN ►` prefix in stage banners
|
|
396
|
+
- Use random emoji (only `🎉` for milestone complete, `✓` for phase complete)
|
|
397
|
+
- Skip the "Next Up" block after major completions
|
|
398
|
+
- Reference non-Plan-Build-Run commands (always use `/dev:*` commands)
|
|
399
|
+
- Use non-Plan-Build-Run branding in banners
|
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
# Goal-Backward Verification Patterns
|
|
2
|
+
|
|
3
|
+
Reference patterns for deriving verification criteria from goals. Used by the planner to create `<verify>` and `<done>` elements, and by the verifier to check phase completion.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## The Three-Layer Check
|
|
8
|
+
|
|
9
|
+
Every must-have is verified through three layers, checked in order:
|
|
10
|
+
|
|
11
|
+
### Layer 1: Existence
|
|
12
|
+
|
|
13
|
+
Does the artifact exist?
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
# File existence
|
|
17
|
+
ls -la src/auth/discord.ts
|
|
18
|
+
|
|
19
|
+
# Module export existence
|
|
20
|
+
grep -q "export.*authenticateWithDiscord" src/auth/discord.ts
|
|
21
|
+
|
|
22
|
+
# Database table existence
|
|
23
|
+
npx prisma db execute --stdin <<< "SELECT 1 FROM users LIMIT 1"
|
|
24
|
+
|
|
25
|
+
# Route existence
|
|
26
|
+
curl -s -o /dev/null -w "%{http_code}" http://localhost:3000/api/auth/login
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
### Layer 2: Substantiveness
|
|
30
|
+
|
|
31
|
+
Is the artifact more than a stub?
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
# File has real content (not just exports)
|
|
35
|
+
wc -l src/auth/discord.ts # Should be > 10 lines for a real implementation
|
|
36
|
+
|
|
37
|
+
# Function has a body (not just a signature)
|
|
38
|
+
grep -A5 "authenticateWithDiscord" src/auth/discord.ts | grep -q "return"
|
|
39
|
+
|
|
40
|
+
# Test file has actual test cases
|
|
41
|
+
grep -c "it(" tests/auth.test.ts # Should be > 0
|
|
42
|
+
|
|
43
|
+
# API returns real data (not just 200 OK)
|
|
44
|
+
curl -s http://localhost:3000/api/health | jq '.status' | grep -q "ok"
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
### Layer 3: Wiring
|
|
48
|
+
|
|
49
|
+
Are components connected to each other?
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
# Module is imported where needed
|
|
53
|
+
grep -q "from.*auth/discord" src/routes/auth.ts
|
|
54
|
+
|
|
55
|
+
# Middleware is applied to routes
|
|
56
|
+
grep -q "requireAuth" src/routes/protected.ts
|
|
57
|
+
|
|
58
|
+
# Database is configured in app init
|
|
59
|
+
grep -q "prisma" src/app.ts
|
|
60
|
+
|
|
61
|
+
# Environment variables are referenced
|
|
62
|
+
grep -q "DISCORD_CLIENT_ID" src/auth/discord.ts
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
---
|
|
66
|
+
|
|
67
|
+
## Verification by Feature Type
|
|
68
|
+
|
|
69
|
+
### API Endpoint
|
|
70
|
+
|
|
71
|
+
```
|
|
72
|
+
Existence: curl returns non-404 status
|
|
73
|
+
Substance: curl returns expected response shape (correct fields)
|
|
74
|
+
Wiring: endpoint calls the right service, middleware is applied
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
### Database Schema
|
|
78
|
+
|
|
79
|
+
```
|
|
80
|
+
Existence: table/collection exists, can query without error
|
|
81
|
+
Substance: columns/fields match specification, constraints are applied
|
|
82
|
+
Wiring: application code references the schema, migrations run cleanly
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
### Authentication
|
|
86
|
+
|
|
87
|
+
```
|
|
88
|
+
Existence: auth routes exist, auth module exports functions
|
|
89
|
+
Substance: login flow returns token, invalid creds return error
|
|
90
|
+
Wiring: protected routes use auth middleware, tokens are validated
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
### UI Component
|
|
94
|
+
|
|
95
|
+
```
|
|
96
|
+
Existence: component file exists, exports default component
|
|
97
|
+
Substance: component renders expected elements (test or visual check)
|
|
98
|
+
Wiring: component is imported in parent, receives correct props, routes to it
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
### Configuration
|
|
102
|
+
|
|
103
|
+
```
|
|
104
|
+
Existence: config file exists, environment variables documented
|
|
105
|
+
Substance: config values are used (not dead code), defaults are sensible
|
|
106
|
+
Wiring: application reads config at startup, config changes take effect
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
---
|
|
110
|
+
|
|
111
|
+
## Verify Command Patterns
|
|
112
|
+
|
|
113
|
+
### TypeScript/JavaScript
|
|
114
|
+
|
|
115
|
+
```bash
|
|
116
|
+
# Type checking
|
|
117
|
+
npx tsc --noEmit
|
|
118
|
+
|
|
119
|
+
# Unit tests
|
|
120
|
+
npm test
|
|
121
|
+
npm test -- --grep "pattern"
|
|
122
|
+
npx jest path/to/test
|
|
123
|
+
|
|
124
|
+
# Linting
|
|
125
|
+
npx eslint src/auth/
|
|
126
|
+
|
|
127
|
+
# Build check
|
|
128
|
+
npm run build
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
### Python
|
|
132
|
+
|
|
133
|
+
```bash
|
|
134
|
+
# Type checking
|
|
135
|
+
mypy src/
|
|
136
|
+
|
|
137
|
+
# Unit tests
|
|
138
|
+
pytest tests/
|
|
139
|
+
pytest tests/test_auth.py -v
|
|
140
|
+
pytest -k "test_login"
|
|
141
|
+
|
|
142
|
+
# Linting
|
|
143
|
+
flake8 src/
|
|
144
|
+
pylint src/auth/
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
### General
|
|
148
|
+
|
|
149
|
+
```bash
|
|
150
|
+
# File existence
|
|
151
|
+
ls -la path/to/file
|
|
152
|
+
|
|
153
|
+
# Content check
|
|
154
|
+
grep -q "pattern" path/to/file
|
|
155
|
+
|
|
156
|
+
# HTTP endpoint
|
|
157
|
+
curl -s -o /dev/null -w "%{http_code}" http://localhost:PORT/path
|
|
158
|
+
|
|
159
|
+
# Process running
|
|
160
|
+
pgrep -f "process-name"
|
|
161
|
+
|
|
162
|
+
# Port listening
|
|
163
|
+
netstat -an | grep LISTEN | grep PORT
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
---
|
|
167
|
+
|
|
168
|
+
## Done Condition Patterns
|
|
169
|
+
|
|
170
|
+
### Good Done Conditions (Observable, Falsifiable)
|
|
171
|
+
|
|
172
|
+
- "User can log in with Discord and see their dashboard"
|
|
173
|
+
- "API returns paginated list of items with correct total count"
|
|
174
|
+
- "Database migration creates users table with all required columns"
|
|
175
|
+
- "Protected routes return 401 without valid JWT"
|
|
176
|
+
- "Build completes without TypeScript errors"
|
|
177
|
+
|
|
178
|
+
### Bad Done Conditions (Vague, Not Falsifiable)
|
|
179
|
+
|
|
180
|
+
- "Authentication is implemented" (how do you test this?)
|
|
181
|
+
- "Code is clean" (subjective)
|
|
182
|
+
- "Database is set up" (what does "set up" mean?)
|
|
183
|
+
- "Tests pass" (which tests? what do they test?)
|
|
184
|
+
- "File was created" (created with what content?)
|
|
185
|
+
|
|
186
|
+
### Transformation Rule
|
|
187
|
+
|
|
188
|
+
```
|
|
189
|
+
Bad: "Authentication is implemented"
|
|
190
|
+
Good: "User can complete Discord OAuth flow and receive a valid JWT"
|
|
191
|
+
|
|
192
|
+
Bad: "Database is set up"
|
|
193
|
+
Good: "Users table exists with id, email, name columns and can accept INSERT"
|
|
194
|
+
|
|
195
|
+
Bad: "Tests pass"
|
|
196
|
+
Good: "All 5 auth middleware tests pass: valid token, expired token,
|
|
197
|
+
missing token, malformed token, and correct user extraction"
|
|
198
|
+
```
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
# Wave-Based Execution
|
|
2
|
+
|
|
3
|
+
How Plan-Build-Run parallelizes plan execution within a phase while respecting dependencies.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## What Are Waves?
|
|
8
|
+
|
|
9
|
+
Waves are dependency-based groupings of plans within a phase. Plans in the same wave have no dependencies on each other and can execute in parallel. Plans in later waves depend on earlier waves completing first.
|
|
10
|
+
|
|
11
|
+
```
|
|
12
|
+
Wave 1: [plan-01, plan-02] (no dependencies, can run in parallel)
|
|
13
|
+
Wave 2: [plan-03] (depends on wave 1 plans)
|
|
14
|
+
Wave 3: [plan-04, plan-05] (depends on wave 2)
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## How Wave Numbers Are Assigned
|
|
18
|
+
|
|
19
|
+
Wave numbers come from the `depends_on` field in each plan's YAML frontmatter:
|
|
20
|
+
|
|
21
|
+
```yaml
|
|
22
|
+
---
|
|
23
|
+
plan: "03-01"
|
|
24
|
+
wave: 1
|
|
25
|
+
depends_on: [] # No dependencies → Wave 1
|
|
26
|
+
---
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
```yaml
|
|
30
|
+
---
|
|
31
|
+
plan: "03-03"
|
|
32
|
+
wave: 2
|
|
33
|
+
depends_on: [03-01] # Depends on Wave 1 plan → Wave 2
|
|
34
|
+
---
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
**Rules**:
|
|
38
|
+
- Wave 1 plans must have `depends_on: []`
|
|
39
|
+
- Wave 2+ plans must depend only on plans from earlier waves
|
|
40
|
+
- No plan depends on a plan in the same wave (that would require sequential execution within the wave)
|
|
41
|
+
|
|
42
|
+
## Execution Order
|
|
43
|
+
|
|
44
|
+
1. All Wave 1 plans execute (in parallel if enabled)
|
|
45
|
+
2. Wait for all Wave 1 plans to complete
|
|
46
|
+
3. All Wave 2 plans execute (in parallel if enabled)
|
|
47
|
+
4. Repeat until all waves complete
|
|
48
|
+
|
|
49
|
+
## Parallelization Config
|
|
50
|
+
|
|
51
|
+
Controlled by `config.json`:
|
|
52
|
+
|
|
53
|
+
```json
|
|
54
|
+
{
|
|
55
|
+
"parallelization": {
|
|
56
|
+
"enabled": true,
|
|
57
|
+
"plan_level": true,
|
|
58
|
+
"max_concurrent_agents": 3
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
| Setting | Effect |
|
|
64
|
+
|---------|--------|
|
|
65
|
+
| `enabled: false` | All plans execute sequentially, regardless of wave |
|
|
66
|
+
| `plan_level: true` | Plans within a wave run in parallel |
|
|
67
|
+
| `max_concurrent_agents` | Cap on simultaneous executor agents (default: 3) |
|
|
68
|
+
|
|
69
|
+
When `enabled: false` or `plan_level: false`, plans execute one at a time within each wave, in plan ID order.
|
|
70
|
+
|
|
71
|
+
## Git Lock Handling
|
|
72
|
+
|
|
73
|
+
When multiple executors run in parallel, git lock conflicts can occur. Executors handle this with a retry pattern:
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
git commit -m "message" || (sleep 2 && git commit -m "message") || (sleep 2 && git commit -m "message")
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
Maximum 3 attempts with 2-second delays between retries.
|
|
80
|
+
|
|
81
|
+
## Checkpoint Manifest
|
|
82
|
+
|
|
83
|
+
The build skill tracks wave progress in `.checkpoint-manifest.json`:
|
|
84
|
+
|
|
85
|
+
```json
|
|
86
|
+
{
|
|
87
|
+
"plans": ["03-01", "03-02", "03-03"],
|
|
88
|
+
"checkpoints_resolved": ["03-01", "03-02"],
|
|
89
|
+
"wave": 2,
|
|
90
|
+
"commit_log": [...],
|
|
91
|
+
"last_good_commit": "abc1234"
|
|
92
|
+
}
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
On crash/resume, the manifest tells the build skill which plans are complete and which wave to resume from.
|