prizmkit 1.1.7 → 1.1.9
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/bundled/VERSION.json +3 -3
- package/bundled/adapters/codebuddy/skill-adapter.js +21 -7
- package/bundled/agents/prizm-dev-team-reviewer.md +53 -173
- package/bundled/dev-pipeline/.env.example +45 -0
- package/bundled/dev-pipeline/README.md +64 -64
- package/bundled/dev-pipeline/SCHEMA_ANALYSIS.md +535 -0
- package/bundled/dev-pipeline/assets/feature-list-example.json +0 -1
- package/bundled/dev-pipeline/launch-bugfix-daemon.sh +64 -18
- package/bundled/dev-pipeline/launch-feature-daemon.sh +15 -12
- package/bundled/dev-pipeline/launch-refactor-daemon.sh +64 -18
- package/bundled/dev-pipeline/lib/branch.sh +6 -1
- package/bundled/dev-pipeline/lib/common.sh +71 -0
- package/bundled/dev-pipeline/lib/heartbeat.sh +2 -2
- package/bundled/dev-pipeline/reset-bug.sh +10 -9
- package/bundled/dev-pipeline/reset-feature.sh +9 -8
- package/bundled/dev-pipeline/reset-refactor.sh +10 -9
- package/bundled/dev-pipeline/retry-bugfix.sh +67 -29
- package/bundled/dev-pipeline/retry-feature.sh +54 -18
- package/bundled/dev-pipeline/retry-refactor.sh +112 -29
- package/bundled/dev-pipeline/run-bugfix.sh +281 -59
- package/bundled/dev-pipeline/run-feature.sh +53 -18
- package/bundled/dev-pipeline/run-refactor.sh +392 -66
- package/bundled/dev-pipeline/scripts/check-session-status.py +24 -1
- package/bundled/dev-pipeline/scripts/cleanup-logs.py +2 -2
- package/bundled/dev-pipeline/scripts/detect-stuck.py +195 -85
- package/bundled/dev-pipeline/scripts/generate-bootstrap-prompt.py +57 -33
- package/bundled/dev-pipeline/scripts/generate-bugfix-prompt.py +25 -9
- package/bundled/dev-pipeline/scripts/generate-refactor-prompt.py +104 -17
- package/bundled/dev-pipeline/scripts/init-bugfix-pipeline.py +34 -9
- package/bundled/dev-pipeline/scripts/init-pipeline.py +10 -10
- package/bundled/dev-pipeline/scripts/init-refactor-pipeline.py +19 -8
- package/bundled/dev-pipeline/scripts/parse-stream-progress.py +1 -5
- package/bundled/dev-pipeline/scripts/patch-completion-notes.py +191 -0
- package/bundled/dev-pipeline/scripts/update-bug-status.py +167 -22
- package/bundled/dev-pipeline/scripts/update-feature-status.py +104 -62
- package/bundled/dev-pipeline/scripts/update-refactor-status.py +351 -21
- package/bundled/dev-pipeline/templates/agent-prompts/dev-fix.md +1 -1
- package/bundled/dev-pipeline/templates/agent-prompts/reviewer-review.md +7 -11
- package/bundled/dev-pipeline/templates/bootstrap-prompt.md +41 -7
- package/bundled/dev-pipeline/templates/bootstrap-tier1.md +27 -3
- package/bundled/dev-pipeline/templates/bootstrap-tier2.md +43 -19
- package/bundled/dev-pipeline/templates/bootstrap-tier3.md +54 -26
- package/bundled/dev-pipeline/templates/bug-fix-list-schema.json +6 -15
- package/bundled/dev-pipeline/templates/bugfix-bootstrap-prompt.md +36 -25
- package/bundled/dev-pipeline/templates/feature-list-schema.json +109 -31
- package/bundled/dev-pipeline/templates/refactor-bootstrap-prompt.md +270 -0
- package/bundled/dev-pipeline/templates/refactor-list-schema.json +11 -3
- package/bundled/dev-pipeline/templates/sections/context-budget-rules.md +3 -1
- package/bundled/dev-pipeline/templates/sections/critical-paths-agent.md +1 -0
- package/bundled/dev-pipeline/templates/sections/feature-context.md +2 -0
- package/bundled/dev-pipeline/templates/sections/phase-commit-full.md +29 -2
- package/bundled/dev-pipeline/templates/sections/phase-commit.md +22 -0
- package/bundled/dev-pipeline/templates/sections/phase-deploy-verification.md +2 -2
- package/bundled/dev-pipeline/templates/sections/phase-review-agent.md +8 -6
- package/bundled/dev-pipeline/templates/sections/phase-review-full.md +7 -5
- package/bundled/dev-pipeline/templates/sections/phase-specify-plan-full.md +3 -3
- package/bundled/skills/_metadata.json +5 -22
- package/bundled/skills/app-planner/SKILL.md +98 -72
- package/bundled/skills/app-planner/assets/app-design-guide.md +1 -1
- package/bundled/skills/app-planner/references/architecture-decisions.md +1 -1
- package/bundled/skills/app-planner/references/project-brief-guide.md +69 -66
- package/bundled/skills/bug-fix-workflow/SKILL.md +52 -9
- package/bundled/skills/bug-planner/SKILL.md +139 -197
- package/bundled/skills/bug-planner/assets/bug-confirmation-template.md +43 -0
- package/bundled/skills/bug-planner/references/critic-and-verification.md +44 -0
- package/bundled/skills/bug-planner/references/error-recovery.md +73 -0
- package/bundled/skills/bug-planner/references/input-formats.md +53 -0
- package/bundled/skills/bug-planner/references/schema-validation.md +25 -0
- package/bundled/skills/bug-planner/references/severity-rules.md +16 -0
- package/bundled/skills/bug-planner/scripts/validate-bug-list.py +4 -8
- package/bundled/skills/bugfix-pipeline-launcher/SKILL.md +34 -39
- package/bundled/skills/feature-pipeline-launcher/SKILL.md +49 -36
- package/bundled/skills/feature-pipeline-launcher/scripts/preflight-check.py +3 -3
- package/bundled/skills/feature-planner/SKILL.md +53 -142
- package/bundled/skills/feature-planner/assets/evaluation-guide.md +1 -1
- package/bundled/skills/feature-planner/assets/planning-guide.md +21 -5
- package/bundled/skills/feature-planner/references/browser-interaction.md +2 -4
- package/bundled/skills/feature-planner/references/completeness-review.md +57 -0
- package/bundled/skills/feature-planner/references/error-recovery.md +16 -35
- package/bundled/skills/feature-planner/references/incremental-feature-planning.md +1 -1
- package/bundled/skills/feature-planner/references/new-project-planning.md +2 -2
- package/bundled/skills/feature-planner/scripts/validate-and-generate.py +19 -20
- package/bundled/skills/feature-workflow/SKILL.md +24 -25
- package/bundled/skills/prizm-kit/SKILL.md +39 -49
- package/bundled/skills/prizmkit-code-review/SKILL.md +51 -64
- package/bundled/skills/prizmkit-code-review/rules/dimensions.md +85 -0
- package/bundled/skills/prizmkit-code-review/rules/fix-strategy.md +11 -11
- package/bundled/skills/prizmkit-committer/SKILL.md +3 -31
- package/bundled/skills/prizmkit-deploy/SKILL.md +34 -31
- package/bundled/skills/prizmkit-deploy/assets/deploy-template.md +1 -1
- package/bundled/skills/prizmkit-implement/SKILL.md +35 -68
- package/bundled/skills/prizmkit-init/SKILL.md +112 -65
- package/bundled/skills/prizmkit-init/assets/project-brief-template.md +82 -0
- package/bundled/skills/prizmkit-plan/SKILL.md +120 -79
- package/bundled/skills/prizmkit-plan/assets/plan-template.md +28 -18
- package/bundled/skills/prizmkit-plan/assets/spec-template.md +28 -11
- package/bundled/skills/prizmkit-plan/references/clarify-guide.md +3 -3
- package/bundled/skills/prizmkit-plan/references/verification-checklist.md +60 -0
- package/bundled/skills/prizmkit-prizm-docs/SKILL.md +10 -81
- package/bundled/skills/prizmkit-prizm-docs/assets/{PRIZM-SPEC.md → prizm-docs-format.md} +41 -526
- package/bundled/skills/prizmkit-prizm-docs/references/op-init.md +46 -0
- package/bundled/skills/prizmkit-prizm-docs/references/op-rebuild.md +16 -0
- package/bundled/skills/prizmkit-prizm-docs/references/op-status.md +14 -0
- package/bundled/skills/prizmkit-prizm-docs/references/op-update.md +19 -0
- package/bundled/skills/prizmkit-prizm-docs/references/op-validate.md +17 -0
- package/bundled/skills/prizmkit-retrospective/SKILL.md +27 -65
- package/bundled/skills/prizmkit-retrospective/references/knowledge-injection-steps.md +3 -4
- package/bundled/skills/prizmkit-retrospective/references/structural-sync-steps.md +7 -25
- package/bundled/skills/recovery-workflow/SKILL.md +22 -22
- package/bundled/skills/recovery-workflow/evals/evals.json +5 -5
- package/bundled/skills/recovery-workflow/scripts/detect-recovery-state.py +43 -10
- package/bundled/skills/refactor-pipeline-launcher/SKILL.md +48 -40
- package/bundled/skills/refactor-planner/SKILL.md +43 -61
- package/bundled/skills/refactor-planner/scripts/validate-and-generate-refactor.py +17 -17
- package/bundled/skills/refactor-workflow/SKILL.md +23 -24
- package/bundled/team/prizm-dev-team.json +1 -1
- package/bundled/{skills/prizm-kit/assets → templates}/project-memory-template.md +1 -1
- package/package.json +1 -1
- package/src/clean.js +3 -4
- package/src/gitignore-template.js +7 -9
- package/src/scaffold.js +14 -5
- package/bundled/dev-pipeline/templates/agent-prompts/reviewer-analyze.md +0 -5
- package/bundled/dev-pipeline/templates/sections/phase-analyze-agent.md +0 -19
- package/bundled/dev-pipeline/templates/sections/phase-analyze-full.md +0 -19
- package/bundled/skills/app-planner/references/project-conventions.md +0 -93
- package/bundled/skills/prizmkit-analyze/SKILL.md +0 -207
- package/bundled/skills/prizmkit-code-review/rules/dimensions-bugfix.md +0 -25
- package/bundled/skills/prizmkit-code-review/rules/dimensions-feature.md +0 -43
- package/bundled/skills/prizmkit-code-review/rules/dimensions-refactor.md +0 -25
- package/bundled/skills/prizmkit-implement/references/deploy-guide-protocol.md +0 -69
- package/bundled/skills/prizmkit-verify/SKILL.md +0 -281
- package/bundled/skills/prizmkit-verify/scripts/verify-light.py +0 -402
|
@@ -49,7 +49,7 @@ Three execution modes are available. The user chooses one before configuring oth
|
|
|
49
49
|
Before any action, validate:
|
|
50
50
|
|
|
51
51
|
1. **dev-pipeline exists**: Confirm `dev-pipeline/launch-feature-daemon.sh` is present and executable
|
|
52
|
-
2. **For start**:
|
|
52
|
+
2. **For start**: `.prizmkit/plans/feature-list.json` must exist in `.prizmkit/plans/` (or user-specified path)
|
|
53
53
|
3. **Dependencies**: `jq`, `python3`, AI CLI (`cbc` or `claude`) must be in PATH
|
|
54
54
|
4. **Python version**: Requires Python 3.8+ for dev-pipeline scripts
|
|
55
55
|
5. **playwright-cli** (optional): If any feature has `browser_interaction` field, check `playwright-cli` is available
|
|
@@ -61,8 +61,8 @@ command -v jq && command -v python3 && (command -v cbc || command -v claude) &&
|
|
|
61
61
|
command -v playwright-cli && echo "playwright-cli OK" || echo "playwright-cli not found (browser verification will be skipped)"
|
|
62
62
|
```
|
|
63
63
|
|
|
64
|
-
If
|
|
65
|
-
> "No feature-list.json found. Run the `feature-planner` skill first to generate one, or provide a path to your feature list."
|
|
64
|
+
If `.prizmkit/plans/feature-list.json` is missing, inform user:
|
|
65
|
+
> "No .prizmkit/plans/feature-list.json found. Run the `feature-planner` skill first to generate one, or provide a path to your feature list."
|
|
66
66
|
|
|
67
67
|
### Workflow
|
|
68
68
|
|
|
@@ -74,7 +74,7 @@ Detect user intent from their message, then follow the corresponding workflow:
|
|
|
74
74
|
|
|
75
75
|
1. **Check prerequisites**:
|
|
76
76
|
```bash
|
|
77
|
-
ls feature-list.json 2>/dev/null && echo "Found" || echo "Missing"
|
|
77
|
+
ls .prizmkit/plans/feature-list.json 2>/dev/null && echo "Found" || echo "Missing"
|
|
78
78
|
```
|
|
79
79
|
|
|
80
80
|
2. **Check not already running**:
|
|
@@ -87,7 +87,7 @@ Detect user intent from their message, then follow the corresponding workflow:
|
|
|
87
87
|
```bash
|
|
88
88
|
python3 -c "
|
|
89
89
|
import json
|
|
90
|
-
with open('feature-list.json') as f:
|
|
90
|
+
with open('.prizmkit/plans/feature-list.json') as f:
|
|
91
91
|
data = json.load(f)
|
|
92
92
|
features = data.get('features', [])
|
|
93
93
|
print(f'Total features: {len(features)}')
|
|
@@ -98,8 +98,8 @@ Detect user intent from their message, then follow the corresponding workflow:
|
|
|
98
98
|
If pipeline state already exists, use the status command instead:
|
|
99
99
|
```bash
|
|
100
100
|
python3 dev-pipeline/scripts/update-feature-status.py \
|
|
101
|
-
--feature-list feature-list.json \
|
|
102
|
-
--state-dir
|
|
101
|
+
--feature-list .prizmkit/plans/feature-list.json \
|
|
102
|
+
--state-dir .prizmkit/state/features \
|
|
103
103
|
--action status 2>/dev/null
|
|
104
104
|
```
|
|
105
105
|
|
|
@@ -107,11 +107,11 @@ Detect user intent from their message, then follow the corresponding workflow:
|
|
|
107
107
|
|
|
108
108
|
Run the preflight script to auto-detect the database type, verify env vars, test connectivity, and check migration status:
|
|
109
109
|
```bash
|
|
110
|
-
python3 ${SKILL_DIR}/scripts/preflight-check.py feature-list.json
|
|
110
|
+
python3 ${SKILL_DIR}/scripts/preflight-check.py .prizmkit/plans/feature-list.json
|
|
111
111
|
```
|
|
112
112
|
|
|
113
113
|
The script:
|
|
114
|
-
- Reads `global_context.database` from
|
|
114
|
+
- Reads `global_context.database` from `.prizmkit/plans/feature-list.json` and `.prizmkit/config.json`
|
|
115
115
|
- Scans `.env.local` / `.env` for connection variables (supports Supabase, PostgreSQL, MySQL, MongoDB, Firebase, and generic `DATABASE_URL`)
|
|
116
116
|
- Tests connectivity using the appropriate method per database type
|
|
117
117
|
- Checks migration status (Prisma, Drizzle, Supabase raw SQL, or generic migration directories)
|
|
@@ -170,40 +170,54 @@ Detect user intent from their message, then follow the corresponding workflow:
|
|
|
170
170
|
| Max retries: N | `MAX_RETRIES=N` |
|
|
171
171
|
| Timeout: value | `SESSION_TIMEOUT=<seconds>` |
|
|
172
172
|
|
|
173
|
+
**Advanced environment variables** (not exposed in interactive menu, pass via `--env`):
|
|
174
|
+
|
|
175
|
+
| Variable | Default | Purpose |
|
|
176
|
+
|----------|---------|---------|
|
|
177
|
+
| `MODEL` | (none) | AI model override (e.g. `claude-opus-4.6`) |
|
|
178
|
+
| `AUTO_PUSH` | `0` | Auto-push to remote after successful feature (`1` to enable) |
|
|
179
|
+
| `DEV_BRANCH` | auto-generated | Custom dev branch name (default: `dev/{feature_id}-YYYYMMDDHHmm`) |
|
|
180
|
+
| `HEARTBEAT_INTERVAL` | `30` | Heartbeat log interval in seconds |
|
|
181
|
+
| `HEARTBEAT_STALE_THRESHOLD` | `600` | Max seconds without heartbeat before marking stale |
|
|
182
|
+
| `PIPELINE_MODE` | (none) | Override mode for all features: `lite`\|`standard`\|`full` |
|
|
183
|
+
| `LOG_CLEANUP_ENABLED` | `1` | Run periodic log cleanup (`0` to disable) |
|
|
184
|
+
| `LOG_RETENTION_DAYS` | `14` | Delete logs older than N days |
|
|
185
|
+
| `LOG_MAX_TOTAL_MB` | `1024` | Keep total logs under N MB via oldest-first cleanup |
|
|
186
|
+
|
|
173
187
|
⚠️ STOP HERE and wait for user response before continuing to step 7.
|
|
174
188
|
|
|
175
189
|
7. **Show final command**: After user confirms configuration in step 6, assemble the complete command from execution mode + user-confirmed configuration, and present it to the user.
|
|
176
190
|
|
|
177
191
|
**Foreground command:**
|
|
178
192
|
```bash
|
|
179
|
-
VERBOSE=1 dev-pipeline/run-feature.sh run feature-list.json
|
|
193
|
+
VERBOSE=1 dev-pipeline/run-feature.sh run .prizmkit/plans/feature-list.json
|
|
180
194
|
```
|
|
181
195
|
With all options:
|
|
182
196
|
```bash
|
|
183
197
|
VERBOSE=1 ENABLE_CRITIC=true MAX_RETRIES=5 SESSION_TIMEOUT=3600 \
|
|
184
|
-
dev-pipeline/run-feature.sh run feature-list.json --features F-001:F-005
|
|
198
|
+
dev-pipeline/run-feature.sh run .prizmkit/plans/feature-list.json --features F-001:F-005
|
|
185
199
|
```
|
|
186
200
|
|
|
187
201
|
**Background daemon command:**
|
|
188
202
|
```bash
|
|
189
|
-
dev-pipeline/launch-feature-daemon.sh start feature-list.json --env "VERBOSE=1"
|
|
203
|
+
dev-pipeline/launch-feature-daemon.sh start .prizmkit/plans/feature-list.json --env "VERBOSE=1"
|
|
190
204
|
```
|
|
191
205
|
With all options:
|
|
192
206
|
```bash
|
|
193
|
-
dev-pipeline/launch-feature-daemon.sh start feature-list.json --features F-001:F-005 \
|
|
207
|
+
dev-pipeline/launch-feature-daemon.sh start .prizmkit/plans/feature-list.json --features F-001:F-005 \
|
|
194
208
|
--env "VERBOSE=1 ENABLE_CRITIC=true MAX_RETRIES=5"
|
|
195
209
|
```
|
|
196
210
|
|
|
197
211
|
**Manual mode**: Print the assembled command(s) and **stop here**. Do not execute anything. Do not proceed to step 8.
|
|
198
212
|
```
|
|
199
213
|
# To run in foreground:
|
|
200
|
-
VERBOSE=1 dev-pipeline/run-feature.sh run feature-list.json
|
|
214
|
+
VERBOSE=1 dev-pipeline/run-feature.sh run .prizmkit/plans/feature-list.json
|
|
201
215
|
|
|
202
216
|
# To run in background (detached):
|
|
203
|
-
dev-pipeline/launch-feature-daemon.sh start feature-list.json --env "VERBOSE=1"
|
|
217
|
+
dev-pipeline/launch-feature-daemon.sh start .prizmkit/plans/feature-list.json --env "VERBOSE=1"
|
|
204
218
|
|
|
205
219
|
# To check status:
|
|
206
|
-
dev-pipeline/run-feature.sh status feature-list.json
|
|
220
|
+
dev-pipeline/run-feature.sh status .prizmkit/plans/feature-list.json
|
|
207
221
|
```
|
|
208
222
|
|
|
209
223
|
8. **Confirm and launch** (Foreground and Background only — Manual mode ends at step 7):
|
|
@@ -227,7 +241,7 @@ Detect user intent from their message, then follow the corresponding workflow:
|
|
|
227
241
|
```
|
|
228
242
|
2. Start log monitoring — Use the Bash tool with `run_in_background: true`:
|
|
229
243
|
```bash
|
|
230
|
-
tail -f
|
|
244
|
+
tail -f .prizmkit/state/features/pipeline-daemon.log
|
|
231
245
|
```
|
|
232
246
|
3. Report to user:
|
|
233
247
|
- Pipeline PID
|
|
@@ -247,14 +261,14 @@ Detect user intent from their message, then follow the corresponding workflow:
|
|
|
247
261
|
2. **Show feature-level progress**:
|
|
248
262
|
```bash
|
|
249
263
|
python3 dev-pipeline/scripts/update-feature-status.py \
|
|
250
|
-
--feature-list feature-list.json \
|
|
251
|
-
--state-dir
|
|
264
|
+
--feature-list .prizmkit/plans/feature-list.json \
|
|
265
|
+
--state-dir .prizmkit/state/features \
|
|
252
266
|
--action status
|
|
253
267
|
```
|
|
254
268
|
|
|
255
269
|
3. **Show recent log activity** (last 20 lines):
|
|
256
270
|
```bash
|
|
257
|
-
tail -20
|
|
271
|
+
tail -20 .prizmkit/state/features/pipeline-daemon.log
|
|
258
272
|
```
|
|
259
273
|
|
|
260
274
|
4. **Summarize** to user: total features, completed, in-progress, failed, pending.
|
|
@@ -286,20 +300,20 @@ Detect user intent from their message, then follow the corresponding workflow:
|
|
|
286
300
|
|
|
287
301
|
2. **If running** -- Start live tail with Bash tool `run_in_background: true`:
|
|
288
302
|
```bash
|
|
289
|
-
tail -f
|
|
303
|
+
tail -f .prizmkit/state/features/pipeline-daemon.log
|
|
290
304
|
```
|
|
291
305
|
|
|
292
306
|
3. **If not running** -- Show last 50 lines:
|
|
293
307
|
```bash
|
|
294
|
-
tail -50
|
|
308
|
+
tail -50 .prizmkit/state/features/pipeline-daemon.log
|
|
295
309
|
```
|
|
296
310
|
|
|
297
311
|
4. **For per-feature session logs** (when user asks about a specific feature):
|
|
298
312
|
```bash
|
|
299
313
|
# Check feature status for last session ID
|
|
300
|
-
cat
|
|
314
|
+
cat .prizmkit/state/features/features/<FEATURE_ID>/status.json 2>/dev/null
|
|
301
315
|
# Then tail that feature's session log
|
|
302
|
-
tail -100
|
|
316
|
+
tail -100 .prizmkit/state/features/features/<FEATURE_ID>/sessions/<SESSION_ID>/logs/session.log
|
|
303
317
|
```
|
|
304
318
|
|
|
305
319
|
---
|
|
@@ -309,24 +323,23 @@ Detect user intent from their message, then follow the corresponding workflow:
|
|
|
309
323
|
When user says "retry F-003":
|
|
310
324
|
|
|
311
325
|
```bash
|
|
312
|
-
dev-pipeline/retry-feature.sh F-003 feature-list.json
|
|
326
|
+
dev-pipeline/retry-feature.sh F-003 .prizmkit/plans/feature-list.json
|
|
313
327
|
```
|
|
314
328
|
|
|
315
329
|
When user says "clean retry F-003" or "retry F-003 from scratch":
|
|
316
330
|
|
|
317
331
|
```bash
|
|
318
|
-
dev-pipeline/reset-feature.sh F-003 --clean --run feature-list.json
|
|
332
|
+
dev-pipeline/reset-feature.sh F-003 --clean --run .prizmkit/plans/feature-list.json
|
|
319
333
|
```
|
|
320
334
|
|
|
321
335
|
Environment variables (optional):
|
|
322
336
|
```bash
|
|
323
|
-
SESSION_TIMEOUT=3600 dev-pipeline/retry-feature.sh F-003 feature-list.json
|
|
337
|
+
SESSION_TIMEOUT=3600 dev-pipeline/retry-feature.sh F-003 .prizmkit/plans/feature-list.json
|
|
324
338
|
```
|
|
325
339
|
|
|
326
340
|
Notes:
|
|
327
|
-
- `retry-feature.sh` runs exactly one feature session and exits.
|
|
328
|
-
- `reset-feature.sh --clean --run`
|
|
329
|
-
- For a lighter retry that preserves prior session artifacts, use `run-feature.sh run <F-XXX> --no-reset` instead.
|
|
341
|
+
- `retry-feature.sh` runs exactly one feature session and exits. It **preserves prior session artifacts and checkpoint state** — reads `retry_count` and `resume_from_phase` from `status.json` so the AI session can resume from where it left off rather than starting from scratch.
|
|
342
|
+
- `reset-feature.sh --clean --run` performs a full clean (deletes session history and artifacts) before retrying — use this for a fresh start when checkpoint recovery is not desired.
|
|
330
343
|
- Keep pipeline daemon mode for main run management (`launch-feature-daemon.sh`).
|
|
331
344
|
|
|
332
345
|
---
|
|
@@ -339,7 +352,7 @@ After pipeline completion, if features have `browser_interaction` fields and `pl
|
|
|
339
352
|
```bash
|
|
340
353
|
python3 -c "
|
|
341
354
|
import json
|
|
342
|
-
with open('feature-list.json') as f:
|
|
355
|
+
with open('.prizmkit/plans/feature-list.json') as f:
|
|
343
356
|
data = json.load(f)
|
|
344
357
|
for feat in data.get('features', []):
|
|
345
358
|
bi = feat.get('browser_interaction')
|
|
@@ -368,14 +381,14 @@ After pipeline completion, if features have `browser_interaction` fields and `pl
|
|
|
368
381
|
|
|
369
382
|
| Error | Action |
|
|
370
383
|
|-------|--------|
|
|
371
|
-
|
|
|
384
|
+
| `.prizmkit/plans/feature-list.json` not found | Tell user to run `feature-planner` skill first |
|
|
372
385
|
| `jq` not installed | Suggest: `brew install jq` |
|
|
373
386
|
| `cbc`/`claude` not in PATH | Check AI CLI installation |
|
|
374
387
|
| Pipeline already running | Show status, ask if user wants to stop and restart |
|
|
375
388
|
| PID file stale (process dead) | `launch-feature-daemon.sh` auto-cleans, retry start |
|
|
376
|
-
| Launch failed (process died immediately) | Show last 20 lines of log: `tail -20
|
|
389
|
+
| Launch failed (process died immediately) | Show last 20 lines of log: `tail -20 .prizmkit/state/features/pipeline-daemon.log` |
|
|
377
390
|
| Feature stuck/blocked | Use `retry-feature.sh <F-XXX>` to retry; use `reset-feature.sh <F-XXX> --clean --run` for fresh start |
|
|
378
|
-
| All features blocked/failed | Show status, suggest daemon-safe recovery: `dev-pipeline/reset-feature.sh <F-XXX> --clean --run feature-list.json` |
|
|
391
|
+
| All features blocked/failed | Show status, suggest daemon-safe recovery: `dev-pipeline/reset-feature.sh <F-XXX> --clean --run .prizmkit/plans/feature-list.json` |
|
|
379
392
|
| `playwright-cli` not installed | Browser verification skipped (non-blocking). Suggest: `npm install -g @playwright/cli@latest && playwright-cli install --skills` |
|
|
380
393
|
| Permission denied on script | Run `chmod +x dev-pipeline/launch-feature-daemon.sh dev-pipeline/run-feature.sh` |
|
|
381
394
|
| Pipeline stop failed (process won't die) | Process may be stuck in I/O wait. Try `kill -9 <PID>` manually. Check for orphaned child processes with `ps aux \| grep claude` |
|
|
@@ -385,9 +398,9 @@ After pipeline completion, if features have `browser_interaction` fields and `pl
|
|
|
385
398
|
|
|
386
399
|
### Integration Notes
|
|
387
400
|
|
|
388
|
-
- **After feature-planner**: This is the natural next step. When user finishes planning and has
|
|
401
|
+
- **After feature-planner**: This is the natural next step. When user finishes planning and has `.prizmkit/plans/feature-list.json`, suggest launching the pipeline.
|
|
389
402
|
- **Session independence**: The pipeline runs completely detached. User can close the AI CLI session, open a new session later, and use this skill to check progress or stop the pipeline.
|
|
390
403
|
- **Single instance**: Only one pipeline can run at a time. The PID file prevents duplicates.
|
|
391
|
-
- **Pipeline coexistence**: Feature and bugfix pipelines use separate state directories (
|
|
404
|
+
- **Pipeline coexistence**: Feature and bugfix pipelines use separate state directories (`.prizmkit/state/features/` vs `.prizmkit/state/bugfix/`), so they can run simultaneously without conflict.
|
|
392
405
|
- **State preservation**: Stopping and restarting the pipeline resumes from where it left off -- completed features are not re-run.
|
|
393
406
|
- **HANDOFF**: After pipeline completes all features, each session has already run `prizmkit-retrospective` internally. Ask user what's next.
|
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
"""
|
|
3
3
|
dev-pipeline environment preflight checker.
|
|
4
4
|
|
|
5
|
-
Detects database type from feature-list.json / .prizmkit/config.json,
|
|
5
|
+
Detects database type from .prizmkit/plans/feature-list.json / .prizmkit/config.json,
|
|
6
6
|
verifies env vars, tests connectivity, and checks migration status.
|
|
7
7
|
|
|
8
8
|
Usage:
|
|
9
|
-
python3 preflight-check.py [feature-list.json]
|
|
9
|
+
python3 preflight-check.py [.prizmkit/plans/feature-list.json]
|
|
10
10
|
|
|
11
11
|
Output: PREFLIGHT lines to stdout (✓ / ⚠ / ℹ), JSON summary to stderr.
|
|
12
12
|
Exit code: 0 = all clear, 1 = warnings found, 2 = error.
|
|
@@ -402,7 +402,7 @@ def check_dev_server(feature_list_path):
|
|
|
402
402
|
# ── Main ────────────────────────────────────────────────────────
|
|
403
403
|
|
|
404
404
|
def main():
|
|
405
|
-
feature_list = sys.argv[1] if len(sys.argv) > 1 else "feature-list.json"
|
|
405
|
+
feature_list = sys.argv[1] if len(sys.argv) > 1 else ".prizmkit/plans/feature-list.json"
|
|
406
406
|
|
|
407
407
|
if not os.path.isfile(feature_list):
|
|
408
408
|
print(f"PREFLIGHT ⚠ Feature list not found: {feature_list}")
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: "feature-planner"
|
|
3
|
-
description: "Plan and manage features for an existing project — add new features, reprioritize, split, and generate validated feature-list.json for dev-pipeline execution. Use this skill for feature scoping, incremental planning, continuing a feature plan, or preparing pipeline input. For planning a new app from scratch, use app-planner instead."
|
|
3
|
+
description: "Plan and manage features for an existing project — add new features, reprioritize, split, and generate validated .prizmkit/plans/feature-list.json for dev-pipeline execution. Use this skill for feature scoping, incremental planning, continuing a feature plan, or preparing pipeline input. For planning a new app from scratch, use app-planner instead."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# feature planner
|
|
7
7
|
|
|
8
8
|
Plan deliverable features for dev-pipeline on existing projects:
|
|
9
|
-
- **New Feature Set**: create an initial feature-list.json for a project that has code but no plan yet
|
|
9
|
+
- **New Feature Set**: create an initial .prizmkit/plans/feature-list.json for a project that has code but no plan yet
|
|
10
10
|
- **Incremental Feature Planning**: append, adjust, or reprioritize features in an existing plan
|
|
11
11
|
|
|
12
|
-
Always produce a validated
|
|
12
|
+
Always produce a validated `.prizmkit/plans/feature-list.json` that conforms to `dev-pipeline-feature-list`.
|
|
13
13
|
|
|
14
14
|
For planning a **new application from scratch** (vision, tech stack, decomposition), use `app-planner` instead.
|
|
15
15
|
|
|
@@ -22,7 +22,7 @@ For planning a **new application from scratch** (vision, tech stack, decompositi
|
|
|
22
22
|
|
|
23
23
|
If the user's request is about planning a new app from scratch (vision, tech stack selection, app architecture), recommend `app-planner` instead and ask the user to confirm before switching.
|
|
24
24
|
|
|
25
|
-
If you believe the task is better suited for a different workflow
|
|
25
|
+
If you believe the task is better suited for a different workflow, you MUST:
|
|
26
26
|
1. **Explain why** you think a different path is more appropriate
|
|
27
27
|
2. **Ask the user explicitly** whether they want to switch or continue with feature-planner
|
|
28
28
|
3. **Only switch if the user confirms** — otherwise proceed with feature-planner as invoked
|
|
@@ -35,24 +35,23 @@ The user chose this skill intentionally. Respect that choice.
|
|
|
35
35
|
- Create, modify, or delete source code files (*.js, *.ts, *.py, *.go, *.html, *.css, etc.)
|
|
36
36
|
- Create project scaffolding, directories, or boilerplate
|
|
37
37
|
- Run build/install/test commands (npm init, pip install, etc.)
|
|
38
|
-
- Execute any implementation action beyond writing
|
|
38
|
+
- Execute any implementation action beyond writing `.prizmkit/plans/feature-list.json`
|
|
39
39
|
|
|
40
40
|
**Your ONLY writable outputs are:**
|
|
41
|
-
1.
|
|
42
|
-
2. Draft backups in `.prizmkit/
|
|
41
|
+
1. `.prizmkit/plans/feature-list.json` (`.prizmkit/plans/`)
|
|
42
|
+
2. Draft backups in `.prizmkit/plans/` (e.g., `feature-list.draft.json`)
|
|
43
43
|
|
|
44
44
|
**After planning is complete**, you MUST:
|
|
45
|
-
1. Present the summary and recommended next step
|
|
45
|
+
1. Present the summary and recommended next step (invoking `feature-pipeline-launcher` )
|
|
46
46
|
2. **Ask the user explicitly** whether they want to proceed to execution
|
|
47
|
-
3. If the user
|
|
48
|
-
4.
|
|
49
|
-
5. **NEVER auto-execute** the pipeline, launcher, or any implementation step
|
|
47
|
+
3. If the user wants to adjust → continue refining `.prizmkit/plans/feature-list.json`
|
|
48
|
+
4. **NEVER auto-execute** the pipeline, launcher, or any implementation step
|
|
50
49
|
|
|
51
50
|
## When to Use
|
|
52
51
|
|
|
53
52
|
Trigger this skill for requests like:
|
|
54
53
|
- "Add features to existing system", "Continue planning"
|
|
55
|
-
- "Prepare feature-list.json", "Prepare dev-pipeline input"
|
|
54
|
+
- "Prepare .prizmkit/plans/feature-list.json", "Prepare dev-pipeline input"
|
|
56
55
|
- "Reprioritize features", "Split features"
|
|
57
56
|
- "Plan features for my project" (when the project already exists)
|
|
58
57
|
|
|
@@ -74,18 +73,16 @@ Do NOT use this skill when:
|
|
|
74
73
|
- Browser interaction fields needed → read `${SKILL_DIR}/references/browser-interaction.md`
|
|
75
74
|
- New feature set for a project (Route A) → read `${SKILL_DIR}/references/new-project-planning.md` for phase guide, quality rules, and delivery checklist
|
|
76
75
|
- Feature decomposition from scratch → read `${SKILL_DIR}/references/decomposition-patterns.md` for common app patterns (CRUD, SaaS, Social, E-commerce)
|
|
76
|
+
- Phase 6 completeness review → read `${SKILL_DIR}/references/completeness-review.md`
|
|
77
77
|
|
|
78
|
-
4. **Always validate output via script
|
|
79
|
-
```bash
|
|
80
|
-
python3 ${SKILL_DIR}/scripts/validate-and-generate.py validate --input <output-path> --mode <new|incremental>
|
|
81
|
-
```
|
|
78
|
+
4. **Always validate output via script** — see §Output Rules for the validation command.
|
|
82
79
|
|
|
83
80
|
If the script is not available, perform these manual validation checks:
|
|
84
81
|
1. **ID sequence**: All feature IDs are sequential (F-001, F-002, F-003, ...)
|
|
85
82
|
2. **No circular dependencies**: No feature depends (directly or transitively) on itself
|
|
86
83
|
3. **Description length**: Minimum 15 words per description (error), 30/50/80 recommended
|
|
87
84
|
4. **Dependency references**: All referenced features in dependencies exist in features array
|
|
88
|
-
5. **Priority enums**: All priority values are exactly "high", "medium", or "low" (case-sensitive)
|
|
85
|
+
5. **Priority enums**: All priority values are exactly "critical", "high", "medium", or "low" (case-sensitive)
|
|
89
86
|
6. **Status enum**: All status values are one of: pending, in_progress, completed, failed, skipped, split, auto_skipped
|
|
90
87
|
7. **Acceptance criteria**: At least 1 criterion per feature, each is a concrete, measurable statement
|
|
91
88
|
8. **Browser interaction**: If present, has url, verify_steps array, and optional setup_command
|
|
@@ -101,22 +98,22 @@ Do NOT use this skill when:
|
|
|
101
98
|
Before questions, check optional context files (never block if absent):
|
|
102
99
|
- `.prizm-docs/root.prizm` (architecture/project context — typically created by app-planner with captured decisions)
|
|
103
100
|
- `.prizmkit/config.json` (existing stack preferences and detected tech stack)
|
|
104
|
-
-
|
|
105
|
-
- existing
|
|
106
|
-
-
|
|
101
|
+
- `.prizmkit/plans/project-brief.md` (project context from app-planner, if available)
|
|
102
|
+
- existing `.prizmkit/plans/feature-list.json` (required for incremental mode)
|
|
103
|
+
- `CLAUDE.md` / `CODEBUDDY.md` `### Project Conventions` section (project conventions from app-planner, if available)
|
|
107
104
|
- If `.prizm-docs/root.prizm` is absent and the project has existing source code, scan the directory structure to understand the codebase layout:
|
|
108
105
|
```bash
|
|
109
106
|
find . -maxdepth 2 -type d -not -path '*/node_modules/*' -not -path '*/.git/*' -not -path '*/dist/*' -not -path '*/build/*' -not -path '*/__pycache__/*' -not -path '*/vendor/*' | sed -e 's;[^/]*/;|____;g;s;____|; |;g'
|
|
110
107
|
```
|
|
111
108
|
|
|
112
109
|
**Tech stack from config.json:**
|
|
113
|
-
- If `.prizmkit/config.json` contains a `tech_stack` object, use it to pre-fill `global_context` fields in the generated
|
|
110
|
+
- If `.prizmkit/config.json` contains a `tech_stack` object, use it to pre-fill `global_context` fields in the generated `.prizmkit/plans/feature-list.json`.
|
|
114
111
|
- Map config fields to global_context: `language`, `runtime`, `frontend_framework`, `frontend_styling`, `backend_framework`, `database`, `orm`, `testing` → `testing_strategy`, `bundler`, `project_type`.
|
|
115
112
|
- Do NOT re-ask the user for tech stack info already present in config.json. Show detected stack and confirm.
|
|
116
113
|
|
|
117
114
|
## Global Context Population
|
|
118
115
|
|
|
119
|
-
The `global_context` object in
|
|
116
|
+
The `global_context` object in `.prizmkit/plans/feature-list.json` provides technology stack information. Populate it from `.prizmkit/config.json` if available, or ask the user during Phase 1.
|
|
120
117
|
|
|
121
118
|
### Recommended Fields by Project Type
|
|
122
119
|
|
|
@@ -136,37 +133,8 @@ The `global_context` object in `feature-list.json` provides technology stack inf
|
|
|
136
133
|
- `language`, `frontend_framework`, `backend_framework`, `database`, `testing_strategy` (all recommended)
|
|
137
134
|
- Additional: `frontend_styling`, `orm`, `bundler`, `runtime`
|
|
138
135
|
|
|
139
|
-
|
|
136
|
+
All `global_context` fields are optional — including recommended fields improves downstream code generation quality. See `dev-pipeline/templates/feature-list-schema.json` for the full schema definition.
|
|
140
137
|
|
|
141
|
-
If the project was planned with `app-planner`, `feature-planner` will automatically read:
|
|
142
|
-
- `.prizmkit/config.json` (tech stack detected by app-planner)
|
|
143
|
-
- `project-brief.md` (tech choices made during planning)
|
|
144
|
-
- `.prizm-docs/root.prizm` (architecture decisions)
|
|
145
|
-
|
|
146
|
-
**Recommendation**: Always run `app-planner` before `feature-planner` to ensure `global_context` is pre-populated correctly. This reduces planning time and improves code generation consistency.
|
|
147
|
-
|
|
148
|
-
### Manual Population (if no app-planner context)
|
|
149
|
-
|
|
150
|
-
If planning features directly without app-planner:
|
|
151
|
-
1. During Phase 1 (Scope Clarification), identify the project's tech stack
|
|
152
|
-
2. Ask user or read from existing `package.json` / `pyproject.toml` / `go.mod`
|
|
153
|
-
3. Populate `global_context` in `feature-list.json` with detected values
|
|
154
|
-
4. Confirm with user: "Using tech stack: [language] + [frameworks]. Correct?"
|
|
155
|
-
|
|
156
|
-
### Pipeline Behavior with Missing Fields
|
|
157
|
-
|
|
158
|
-
| Missing Field | Pipeline Behavior |
|
|
159
|
-
|---------------|-------------------|
|
|
160
|
-
| `language` | Uses generic pseudocode patterns; code generation may be generic |
|
|
161
|
-
| `frontend_framework` | Frontend features generate generic HTML/JavaScript; no framework-specific patterns |
|
|
162
|
-
| `backend_framework` | Backend features generate generic API patterns; no framework-specific scaffolding |
|
|
163
|
-
| `database` | Assumes no persistent storage; generates unit tests only with mocks |
|
|
164
|
-
| `testing_strategy` | Defaults to Jest (if JavaScript/TypeScript); pytest (if Python) |
|
|
165
|
-
| All fields empty | Pipeline still works but code quality/consistency may suffer; recommend re-running with app-planner |
|
|
166
|
-
|
|
167
|
-
### Note
|
|
168
|
-
|
|
169
|
-
**global_context fields are all optional** — pipeline can execute without them. However, including the recommended fields dramatically improves code generation quality and framework-specific best practices.
|
|
170
138
|
|
|
171
139
|
---
|
|
172
140
|
|
|
@@ -175,19 +143,19 @@ If planning features directly without app-planner:
|
|
|
175
143
|
Classify user intent first:
|
|
176
144
|
|
|
177
145
|
### Route A: New Feature Set (No Existing Plan)
|
|
178
|
-
Use when the project exists but has no
|
|
146
|
+
Use when the project exists but has no `.prizmkit/plans/feature-list.json` yet.
|
|
179
147
|
|
|
180
148
|
Actions:
|
|
181
149
|
1. Understand the existing codebase and what's already implemented
|
|
182
150
|
2. Run interactive planning phases to identify needed features
|
|
183
|
-
3. Generate initial
|
|
151
|
+
3. Generate initial `.prizmkit/plans/feature-list.json`
|
|
184
152
|
|
|
185
153
|
### Route B: Incremental Feature Planning
|
|
186
|
-
Use when user already has a
|
|
154
|
+
Use when user already has a `.prizmkit/plans/feature-list.json` and wants to add or adjust features.
|
|
187
155
|
|
|
188
156
|
Actions:
|
|
189
157
|
1. Load `${SKILL_DIR}/references/incremental-feature-planning.md`
|
|
190
|
-
2. Read existing
|
|
158
|
+
2. Read existing `.prizmkit/plans/feature-list.json` first (if missing, ask whether to start new plan)
|
|
191
159
|
3. Append features with next sequential `F-NNN` IDs
|
|
192
160
|
4. Preserve style/language/detail consistency with existing plan
|
|
193
161
|
|
|
@@ -205,7 +173,7 @@ Execute the planning workflow in conversation mode with mandatory checkpoints:
|
|
|
205
173
|
4.2 **Browser interaction** (mandatory for fullstack/frontend projects) — see §Browser Interaction Planning below. Qualifying features get `browser_interaction` by default. Only confirm with the user as a batch summary; do NOT ask per-feature.
|
|
206
174
|
5. Verify DAG/order/priorities
|
|
207
175
|
6. Pre-generation completeness review (see §Pre-Generation Completeness Review below)
|
|
208
|
-
7. Build or append
|
|
176
|
+
7. Build or append `.prizmkit/plans/feature-list.json`
|
|
209
177
|
8. Apply default testing strategy (see §Testing Defaults below)
|
|
210
178
|
9. Validate and fix until pass
|
|
211
179
|
10. Summarize final feature table
|
|
@@ -222,53 +190,18 @@ Checkpoints catch cascading errors early — skipping one means the next phase b
|
|
|
222
190
|
| **CP-FP-3.1** | Browser Interaction Applied | Qualifying features have `browser_interaction` field; user confirmed or opted out | 4 |
|
|
223
191
|
| **CP-FP-3.2** | Testing Defaults Applied | All features have appropriate `critic`, `critic_count`, and testing expectations | 7 |
|
|
224
192
|
| **CP-FP-3.3** | Completeness Review Passed | All features reviewed for description adequacy and cross-feature gaps | 6 |
|
|
225
|
-
| **CP-FP-4** |
|
|
193
|
+
| **CP-FP-4** | `.prizmkit/plans/feature-list.json` Generated | Schema validates, all required keys present | 7-8 |
|
|
226
194
|
| **CP-FP-5** | Final Validation Pass | Python script returns `"valid": true` with zero errors | 9 |
|
|
227
195
|
|
|
228
196
|
**Resume Detection**: If existing artifacts are found, read `${SKILL_DIR}/references/error-recovery.md` §Resume Support for checkpoint-based resumption.
|
|
229
197
|
|
|
230
198
|
## Pre-Generation Completeness Review (Phase 6)
|
|
231
199
|
|
|
232
|
-
Before generating
|
|
233
|
-
|
|
234
|
-
### Step 1: Description Adequacy Scan
|
|
200
|
+
Before generating `.prizmkit/plans/feature-list.json`, review the full feature set holistically.
|
|
235
201
|
|
|
236
|
-
|
|
237
|
-
- Does the description cover: what to build, key behaviors, integration points, data model (if applicable), error/edge cases?
|
|
238
|
-
- Is the description specific enough for an AI coding session to implement without guessing?
|
|
239
|
-
- Flag any feature below the recommended word count for its complexity level (30/50/80 words for low/medium/high).
|
|
240
|
-
|
|
241
|
-
### Step 2: Cross-Feature Completeness Check
|
|
242
|
-
|
|
243
|
-
Look at the feature set as a whole:
|
|
244
|
-
- **Implied functionality gaps**: Does feature A's acceptance criteria assume a capability that no other feature provides?
|
|
245
|
-
- **Missing integration seams**: If two features share data or interact at runtime, is the interface specified?
|
|
246
|
-
- **Scope leaks**: Does any feature's description reference functionality outside the agreed scope?
|
|
247
|
-
|
|
248
|
-
### Step 3: Present Review to User
|
|
249
|
-
|
|
250
|
-
Show a structured summary table:
|
|
251
|
-
|
|
252
|
-
```
|
|
253
|
-
Feature | Description | Cross-Feature | Recommendation
|
|
254
|
-
| Adequacy | Issues |
|
|
255
|
-
F-001 | ✓ (65 words)| — | Ready
|
|
256
|
-
F-002 | ⚠ (28 words)| — | Expand: add API endpoints, error handling
|
|
257
|
-
F-003 | ✓ (52 words)| Assumes email from | Clarify: who sends the notification?
|
|
258
|
-
| | F-006 (not yet defined)|
|
|
259
|
-
```
|
|
202
|
+
→ Read `${SKILL_DIR}/references/completeness-review.md` for the full review process (description adequacy scan, cross-feature completeness check, user presentation, and interactive supplementation).
|
|
260
203
|
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
### Step 4: Interactive Supplementation
|
|
264
|
-
|
|
265
|
-
For each feature the user wants to discuss:
|
|
266
|
-
1. Ask targeted questions about the unclear aspects
|
|
267
|
-
2. Propose concrete description supplements
|
|
268
|
-
3. Update the feature description with agreed details
|
|
269
|
-
4. Re-check: does the supplement resolve the gap?
|
|
270
|
-
|
|
271
|
-
Continue until the user confirms all features are implementation-ready. This gate exists because fixing thin descriptions here costs minutes; fixing misimplemented features downstream costs hours.
|
|
204
|
+
This gate ensures all features are implementation-ready before output generation. Thin descriptions here cost minutes to fix; misimplemented features downstream cost hours.
|
|
272
205
|
|
|
273
206
|
## Fast Path (Simple Incremental)
|
|
274
207
|
|
|
@@ -283,7 +216,7 @@ For simple incremental planning, skip detailed Phase 2-3 analysis:
|
|
|
283
216
|
- **No architectural changes** to existing tech stack
|
|
284
217
|
|
|
285
218
|
### Fast Path Workflow
|
|
286
|
-
1. Read existing
|
|
219
|
+
1. Read existing `.prizmkit/plans/feature-list.json` and confirm scope
|
|
287
220
|
2. **User confirmation (mandatory)** — Tell the user: "This qualifies for fast-path (simple incremental addition). Skip detailed Phase 2-3 analysis and draft directly? Or use full workflow?" Only proceed with fast path if user confirms.
|
|
288
221
|
3. Generate next sequential feature IDs
|
|
289
222
|
4. Draft features (title + description + acceptance_criteria + dependencies)
|
|
@@ -314,39 +247,27 @@ A feature is **exempt** when ANY true:
|
|
|
314
247
|
|
|
315
248
|
## Output Rules
|
|
316
249
|
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
250
|
+
`.prizmkit/plans/feature-list.json` must conform to `dev-pipeline/templates/feature-list-schema.json` (`$schema` = `dev-pipeline-feature-list-v1`).
|
|
251
|
+
|
|
252
|
+
Key requirements:
|
|
253
|
+
- non-empty `features` array
|
|
320
254
|
- sequential feature IDs (`F-001`, `F-002`, ...)
|
|
321
|
-
- valid dependency DAG
|
|
322
|
-
- `priority`
|
|
255
|
+
- valid dependency DAG (no cycles, all referenced IDs exist)
|
|
256
|
+
- `priority`: `"critical"`, `"high"`, `"medium"`, or `"low"` (string, NOT numeric)
|
|
323
257
|
- new items default `status: "pending"`
|
|
324
258
|
- English feature titles for stable slug generation
|
|
325
|
-
- `
|
|
326
|
-
- `
|
|
327
|
-
-
|
|
328
|
-
- `browser_interaction` field auto-generated for qualifying frontend features
|
|
329
|
-
- descriptions must be implementation-ready — minimum 15 words (error), recommended 30/50/80 words for low/medium/high complexity (warning). See `planning-guide.md` §4.
|
|
330
|
-
|
|
331
|
-
## Testing Defaults (Phase 8)
|
|
332
|
-
|
|
333
|
-
All three testing mechanisms are enabled by default. The user can opt out.
|
|
259
|
+
- `critic` / `critic_count` defaults per Testing Defaults section
|
|
260
|
+
- `browser_interaction` auto-generated for qualifying frontend features
|
|
261
|
+
- descriptions: minimum 15 words (error), recommended 30/50/80 for low/medium/high complexity (warning)
|
|
334
262
|
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
| Complexity | Default Testing Expectation |
|
|
340
|
-
|------------|----------------------------|
|
|
341
|
-
| low | Unit tests for core logic |
|
|
342
|
-
| medium | Unit tests + integration tests for key flows |
|
|
343
|
-
| high | Unit tests + integration tests + edge case coverage |
|
|
344
|
-
|
|
345
|
-
### 2. Browser Verification (Playwright)
|
|
263
|
+
Run the validation script after generation:
|
|
264
|
+
```bash
|
|
265
|
+
python3 ${SKILL_DIR}/scripts/validate-and-generate.py validate --input <output-path> --mode <new|incremental>
|
|
266
|
+
```
|
|
346
267
|
|
|
347
|
-
|
|
268
|
+
## Testing Defaults (Phase 8)
|
|
348
269
|
|
|
349
|
-
|
|
270
|
+
Set default testing-related fields for each feature. The user can opt out.
|
|
350
271
|
|
|
351
272
|
| Priority | `critic` | `critic_count` | Rationale |
|
|
352
273
|
|----------|----------|----------------|-----------|
|
|
@@ -354,23 +275,13 @@ Default ON for all qualifying frontend features.
|
|
|
354
275
|
| medium | `true` | `1` | Single critic review |
|
|
355
276
|
| low | `false` | (omitted) | Skip critic |
|
|
356
277
|
|
|
278
|
+
For frontend features with `browser_interaction`, Playwright verification is enabled by default.
|
|
279
|
+
|
|
357
280
|
Present a consolidated testing summary table at Phase 8, then ask for confirmation.
|
|
358
281
|
|
|
359
282
|
## Next-Step Execution Policy (after planning)
|
|
360
283
|
|
|
361
|
-
Recommend
|
|
362
|
-
|
|
363
|
-
1. **Preferred**: invoke `feature-pipeline-launcher` skill
|
|
364
|
-
2. **Fallback A**: run daemon wrapper
|
|
365
|
-
```bash
|
|
366
|
-
./dev-pipeline/launch-feature-daemon.sh start feature-list.json
|
|
367
|
-
./dev-pipeline/launch-feature-daemon.sh status
|
|
368
|
-
```
|
|
369
|
-
3. **Fallback B**: run direct foreground script
|
|
370
|
-
```bash
|
|
371
|
-
./dev-pipeline/run-feature.sh run
|
|
372
|
-
./dev-pipeline/run-feature.sh status
|
|
373
|
-
```
|
|
284
|
+
Recommend invoking `feature-pipeline-launcher` to configure and launch the dev-pipeline. Do NOT recommend running shell scripts directly — that is the launcher's responsibility.
|
|
374
285
|
|
|
375
286
|
## Error Recovery & Resume
|
|
376
287
|
|
|
@@ -380,7 +291,7 @@ Key behaviors:
|
|
|
380
291
|
- Warnings only → proceed with user approval
|
|
381
292
|
- Critical errors → group by type, auto-fix where possible, max 3 total attempts
|
|
382
293
|
- Interrupted session → detect checkpoint from existing artifacts, offer resume or restart
|
|
383
|
-
-
|
|
294
|
+
- `.prizmkit/plans/feature-list.json` MUST be written to `.prizmkit/plans/` (project root level: `./{root}/.prizmkit/plans/feature-list.json`)
|
|
384
295
|
|
|
385
296
|
## Session Exit Gate
|
|
386
297
|
|
|
@@ -388,16 +299,16 @@ Prevent accidental session exit without deliverable completion.
|
|
|
388
299
|
|
|
389
300
|
### Trigger Conditions
|
|
390
301
|
Activate when ALL true:
|
|
391
|
-
- User expressed intent to produce feature-list.json
|
|
302
|
+
- User expressed intent to produce .prizmkit/plans/feature-list.json
|
|
392
303
|
- Current phase < Phase 7
|
|
393
|
-
- No valid
|
|
304
|
+
- No valid `.prizmkit/plans/feature-list.json` written in this session
|
|
394
305
|
|
|
395
306
|
### Gate Behavior
|
|
396
307
|
When the session appears to be ending:
|
|
397
|
-
1. **Remind**: "You set out to produce
|
|
308
|
+
1. **Remind**: "You set out to produce `.prizmkit/plans/feature-list.json` but we haven't completed it yet."
|
|
398
309
|
2. **Offer 3 options**:
|
|
399
310
|
- **(a) Continue to completion**
|
|
400
|
-
- **(b) Save draft & exit** — write current progress as draft
|
|
311
|
+
- **(b) Save draft & exit** — write current progress as `feature-list.draft.json` to `.prizmkit/plans/`
|
|
401
312
|
- **(c) Abandon** — exit without saving
|
|
402
313
|
|
|
403
314
|
## Handoff Message Template
|
|
@@ -12,7 +12,7 @@ Requires npm setup:
|
|
|
12
12
|
|
|
13
13
|
```bash
|
|
14
14
|
npm run skill:review -- \
|
|
15
|
-
--workspace
|
|
15
|
+
--workspace .prizmkit/skill-evals/feature-planner-workspace \
|
|
16
16
|
--iteration iteration-N \
|
|
17
17
|
--skill-name feature-planner \
|
|
18
18
|
--skill-path ${SKILL_DIR} \
|