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.
Files changed (132) hide show
  1. package/bundled/VERSION.json +3 -3
  2. package/bundled/adapters/codebuddy/skill-adapter.js +21 -7
  3. package/bundled/agents/prizm-dev-team-reviewer.md +53 -173
  4. package/bundled/dev-pipeline/.env.example +45 -0
  5. package/bundled/dev-pipeline/README.md +64 -64
  6. package/bundled/dev-pipeline/SCHEMA_ANALYSIS.md +535 -0
  7. package/bundled/dev-pipeline/assets/feature-list-example.json +0 -1
  8. package/bundled/dev-pipeline/launch-bugfix-daemon.sh +64 -18
  9. package/bundled/dev-pipeline/launch-feature-daemon.sh +15 -12
  10. package/bundled/dev-pipeline/launch-refactor-daemon.sh +64 -18
  11. package/bundled/dev-pipeline/lib/branch.sh +6 -1
  12. package/bundled/dev-pipeline/lib/common.sh +71 -0
  13. package/bundled/dev-pipeline/lib/heartbeat.sh +2 -2
  14. package/bundled/dev-pipeline/reset-bug.sh +10 -9
  15. package/bundled/dev-pipeline/reset-feature.sh +9 -8
  16. package/bundled/dev-pipeline/reset-refactor.sh +10 -9
  17. package/bundled/dev-pipeline/retry-bugfix.sh +67 -29
  18. package/bundled/dev-pipeline/retry-feature.sh +54 -18
  19. package/bundled/dev-pipeline/retry-refactor.sh +112 -29
  20. package/bundled/dev-pipeline/run-bugfix.sh +281 -59
  21. package/bundled/dev-pipeline/run-feature.sh +53 -18
  22. package/bundled/dev-pipeline/run-refactor.sh +392 -66
  23. package/bundled/dev-pipeline/scripts/check-session-status.py +24 -1
  24. package/bundled/dev-pipeline/scripts/cleanup-logs.py +2 -2
  25. package/bundled/dev-pipeline/scripts/detect-stuck.py +195 -85
  26. package/bundled/dev-pipeline/scripts/generate-bootstrap-prompt.py +57 -33
  27. package/bundled/dev-pipeline/scripts/generate-bugfix-prompt.py +25 -9
  28. package/bundled/dev-pipeline/scripts/generate-refactor-prompt.py +104 -17
  29. package/bundled/dev-pipeline/scripts/init-bugfix-pipeline.py +34 -9
  30. package/bundled/dev-pipeline/scripts/init-pipeline.py +10 -10
  31. package/bundled/dev-pipeline/scripts/init-refactor-pipeline.py +19 -8
  32. package/bundled/dev-pipeline/scripts/parse-stream-progress.py +1 -5
  33. package/bundled/dev-pipeline/scripts/patch-completion-notes.py +191 -0
  34. package/bundled/dev-pipeline/scripts/update-bug-status.py +167 -22
  35. package/bundled/dev-pipeline/scripts/update-feature-status.py +104 -62
  36. package/bundled/dev-pipeline/scripts/update-refactor-status.py +351 -21
  37. package/bundled/dev-pipeline/templates/agent-prompts/dev-fix.md +1 -1
  38. package/bundled/dev-pipeline/templates/agent-prompts/reviewer-review.md +7 -11
  39. package/bundled/dev-pipeline/templates/bootstrap-prompt.md +41 -7
  40. package/bundled/dev-pipeline/templates/bootstrap-tier1.md +27 -3
  41. package/bundled/dev-pipeline/templates/bootstrap-tier2.md +43 -19
  42. package/bundled/dev-pipeline/templates/bootstrap-tier3.md +54 -26
  43. package/bundled/dev-pipeline/templates/bug-fix-list-schema.json +6 -15
  44. package/bundled/dev-pipeline/templates/bugfix-bootstrap-prompt.md +36 -25
  45. package/bundled/dev-pipeline/templates/feature-list-schema.json +109 -31
  46. package/bundled/dev-pipeline/templates/refactor-bootstrap-prompt.md +270 -0
  47. package/bundled/dev-pipeline/templates/refactor-list-schema.json +11 -3
  48. package/bundled/dev-pipeline/templates/sections/context-budget-rules.md +3 -1
  49. package/bundled/dev-pipeline/templates/sections/critical-paths-agent.md +1 -0
  50. package/bundled/dev-pipeline/templates/sections/feature-context.md +2 -0
  51. package/bundled/dev-pipeline/templates/sections/phase-commit-full.md +29 -2
  52. package/bundled/dev-pipeline/templates/sections/phase-commit.md +22 -0
  53. package/bundled/dev-pipeline/templates/sections/phase-deploy-verification.md +2 -2
  54. package/bundled/dev-pipeline/templates/sections/phase-review-agent.md +8 -6
  55. package/bundled/dev-pipeline/templates/sections/phase-review-full.md +7 -5
  56. package/bundled/dev-pipeline/templates/sections/phase-specify-plan-full.md +3 -3
  57. package/bundled/skills/_metadata.json +5 -22
  58. package/bundled/skills/app-planner/SKILL.md +98 -72
  59. package/bundled/skills/app-planner/assets/app-design-guide.md +1 -1
  60. package/bundled/skills/app-planner/references/architecture-decisions.md +1 -1
  61. package/bundled/skills/app-planner/references/project-brief-guide.md +69 -66
  62. package/bundled/skills/bug-fix-workflow/SKILL.md +52 -9
  63. package/bundled/skills/bug-planner/SKILL.md +139 -197
  64. package/bundled/skills/bug-planner/assets/bug-confirmation-template.md +43 -0
  65. package/bundled/skills/bug-planner/references/critic-and-verification.md +44 -0
  66. package/bundled/skills/bug-planner/references/error-recovery.md +73 -0
  67. package/bundled/skills/bug-planner/references/input-formats.md +53 -0
  68. package/bundled/skills/bug-planner/references/schema-validation.md +25 -0
  69. package/bundled/skills/bug-planner/references/severity-rules.md +16 -0
  70. package/bundled/skills/bug-planner/scripts/validate-bug-list.py +4 -8
  71. package/bundled/skills/bugfix-pipeline-launcher/SKILL.md +34 -39
  72. package/bundled/skills/feature-pipeline-launcher/SKILL.md +49 -36
  73. package/bundled/skills/feature-pipeline-launcher/scripts/preflight-check.py +3 -3
  74. package/bundled/skills/feature-planner/SKILL.md +53 -142
  75. package/bundled/skills/feature-planner/assets/evaluation-guide.md +1 -1
  76. package/bundled/skills/feature-planner/assets/planning-guide.md +21 -5
  77. package/bundled/skills/feature-planner/references/browser-interaction.md +2 -4
  78. package/bundled/skills/feature-planner/references/completeness-review.md +57 -0
  79. package/bundled/skills/feature-planner/references/error-recovery.md +16 -35
  80. package/bundled/skills/feature-planner/references/incremental-feature-planning.md +1 -1
  81. package/bundled/skills/feature-planner/references/new-project-planning.md +2 -2
  82. package/bundled/skills/feature-planner/scripts/validate-and-generate.py +19 -20
  83. package/bundled/skills/feature-workflow/SKILL.md +24 -25
  84. package/bundled/skills/prizm-kit/SKILL.md +39 -49
  85. package/bundled/skills/prizmkit-code-review/SKILL.md +51 -64
  86. package/bundled/skills/prizmkit-code-review/rules/dimensions.md +85 -0
  87. package/bundled/skills/prizmkit-code-review/rules/fix-strategy.md +11 -11
  88. package/bundled/skills/prizmkit-committer/SKILL.md +3 -31
  89. package/bundled/skills/prizmkit-deploy/SKILL.md +34 -31
  90. package/bundled/skills/prizmkit-deploy/assets/deploy-template.md +1 -1
  91. package/bundled/skills/prizmkit-implement/SKILL.md +35 -68
  92. package/bundled/skills/prizmkit-init/SKILL.md +112 -65
  93. package/bundled/skills/prizmkit-init/assets/project-brief-template.md +82 -0
  94. package/bundled/skills/prizmkit-plan/SKILL.md +120 -79
  95. package/bundled/skills/prizmkit-plan/assets/plan-template.md +28 -18
  96. package/bundled/skills/prizmkit-plan/assets/spec-template.md +28 -11
  97. package/bundled/skills/prizmkit-plan/references/clarify-guide.md +3 -3
  98. package/bundled/skills/prizmkit-plan/references/verification-checklist.md +60 -0
  99. package/bundled/skills/prizmkit-prizm-docs/SKILL.md +10 -81
  100. package/bundled/skills/prizmkit-prizm-docs/assets/{PRIZM-SPEC.md → prizm-docs-format.md} +41 -526
  101. package/bundled/skills/prizmkit-prizm-docs/references/op-init.md +46 -0
  102. package/bundled/skills/prizmkit-prizm-docs/references/op-rebuild.md +16 -0
  103. package/bundled/skills/prizmkit-prizm-docs/references/op-status.md +14 -0
  104. package/bundled/skills/prizmkit-prizm-docs/references/op-update.md +19 -0
  105. package/bundled/skills/prizmkit-prizm-docs/references/op-validate.md +17 -0
  106. package/bundled/skills/prizmkit-retrospective/SKILL.md +27 -65
  107. package/bundled/skills/prizmkit-retrospective/references/knowledge-injection-steps.md +3 -4
  108. package/bundled/skills/prizmkit-retrospective/references/structural-sync-steps.md +7 -25
  109. package/bundled/skills/recovery-workflow/SKILL.md +22 -22
  110. package/bundled/skills/recovery-workflow/evals/evals.json +5 -5
  111. package/bundled/skills/recovery-workflow/scripts/detect-recovery-state.py +43 -10
  112. package/bundled/skills/refactor-pipeline-launcher/SKILL.md +48 -40
  113. package/bundled/skills/refactor-planner/SKILL.md +43 -61
  114. package/bundled/skills/refactor-planner/scripts/validate-and-generate-refactor.py +17 -17
  115. package/bundled/skills/refactor-workflow/SKILL.md +23 -24
  116. package/bundled/team/prizm-dev-team.json +1 -1
  117. package/bundled/{skills/prizm-kit/assets → templates}/project-memory-template.md +1 -1
  118. package/package.json +1 -1
  119. package/src/clean.js +3 -4
  120. package/src/gitignore-template.js +7 -9
  121. package/src/scaffold.js +14 -5
  122. package/bundled/dev-pipeline/templates/agent-prompts/reviewer-analyze.md +0 -5
  123. package/bundled/dev-pipeline/templates/sections/phase-analyze-agent.md +0 -19
  124. package/bundled/dev-pipeline/templates/sections/phase-analyze-full.md +0 -19
  125. package/bundled/skills/app-planner/references/project-conventions.md +0 -93
  126. package/bundled/skills/prizmkit-analyze/SKILL.md +0 -207
  127. package/bundled/skills/prizmkit-code-review/rules/dimensions-bugfix.md +0 -25
  128. package/bundled/skills/prizmkit-code-review/rules/dimensions-feature.md +0 -43
  129. package/bundled/skills/prizmkit-code-review/rules/dimensions-refactor.md +0 -25
  130. package/bundled/skills/prizmkit-implement/references/deploy-guide-protocol.md +0 -69
  131. package/bundled/skills/prizmkit-verify/SKILL.md +0 -281
  132. 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**: `feature-list.json` must exist in project root (or user-specified path)
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 `feature-list.json` is missing, inform user:
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 dev-pipeline/state \
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 `feature-list.json` and `.prizmkit/config.json`
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 dev-pipeline/state/pipeline-daemon.log
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 dev-pipeline/state \
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 dev-pipeline/state/pipeline-daemon.log
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 dev-pipeline/state/pipeline-daemon.log
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 dev-pipeline/state/pipeline-daemon.log
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 dev-pipeline/state/features/<FEATURE_ID>/status.json 2>/dev/null
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 dev-pipeline/state/features/<FEATURE_ID>/sessions/<SESSION_ID>/logs/session.log
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. **It always performs a full clean** (deletes session history and `.prizmkit/specs/` artifacts) before retrying, ensuring a fresh start. This is destructive prior session logs and spec artifacts for this feature will be deleted.
328
- - `reset-feature.sh --clean --run` is equivalent to a manual clean + retry (same behavior as `retry-feature.sh`, but can also operate on ranges and filtered sets).
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
- | `feature-list.json` not found | Tell user to run `feature-planner` skill first |
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 dev-pipeline/state/pipeline-daemon.log` |
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 `feature-list.json`, suggest launching the pipeline.
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 (`state/` vs `bugfix-state/`), so they can run simultaneously without conflict.
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 `feature-list.json` that conforms to `dev-pipeline-feature-list`.
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 (e.g., fast path via `/prizmkit-plan`), you MUST:
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 `feature-list.json`
38
+ - Execute any implementation action beyond writing `.prizmkit/plans/feature-list.json`
39
39
 
40
40
  **Your ONLY writable outputs are:**
41
- 1. `feature-list.json` (project root)
42
- 2. Draft backups in `.prizmkit/planning/`
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 agreesrecommend invoking `feature-pipeline-launcher` or running `run-feature.sh` (do NOT execute it yourself)
48
- 4. If the user wants to adjust continue refining `feature-list.json`
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
- - `project-brief.md` (project context from app-planner, if available)
105
- - existing `feature-list.json` (required for incremental mode)
106
- - `.prizmkit/project-conventions.json` (project conventions from app-planner, if available)
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 `feature-list.json`.
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 `feature-list.json` provides technology stack information to the pipeline for intelligent code generation.
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
- ### Auto-Population from app-planner
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 `feature-list.json` yet.
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 `feature-list.json`
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 `feature-list.json` and wants to add or adjust features.
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 `feature-list.json` first (if missing, ask whether to start new plan)
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 `feature-list.json`
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** | `feature-list.json` Generated | Schema validates, all required keys present | 7-8 |
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 `feature-list.json`, review the full feature set holistically. Individual features may look fine in isolation but have gaps when viewed together.
233
-
234
- ### Step 1: Description Adequacy Scan
200
+ Before generating `.prizmkit/plans/feature-list.json`, review the full feature set holistically.
235
201
 
236
- For each feature, evaluate against the word-count thresholds in `planning-guide.md` §4:
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
- Then ask if any features need further discussion.
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 `feature-list.json` and confirm scope
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
- `feature-list.json` must satisfy:
318
- - `$schema` = `dev-pipeline-feature-list-v1`
319
- - non-empty `features`
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` must be a string: `"high"`, `"medium"`, or `"low"` (NOT numeric)
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
- - `model` field is optional
326
- - `critic` field defaults based on priority: `true` for high/medium, `false` for low
327
- - `critic_count` field defaults: `3` for high priority, `1` for medium
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
- ### 1. Test File Generation (TDD)
336
-
337
- Every feature includes tests. In the feature description, state testing expectations:
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
- Default ON for all qualifying frontend features.
268
+ ## Testing Defaults (Phase 8)
348
269
 
349
- ### 3. Adversarial Critic Review
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 these three options in this strict order:
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
- - `feature-list.json` MUST be written to project root (same level as `package.json` / `.git`)
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 `feature-list.json` written in this session
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 `feature-list.json` but we haven't completed it yet."
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 /.codebuddy/skill-evals/feature-planner-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} \