prizmkit 1.1.8 → 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 (123) 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/SCHEMA_ANALYSIS.md +535 -0
  6. package/bundled/dev-pipeline/assets/feature-list-example.json +0 -1
  7. package/bundled/dev-pipeline/launch-bugfix-daemon.sh +57 -12
  8. package/bundled/dev-pipeline/launch-feature-daemon.sh +3 -1
  9. package/bundled/dev-pipeline/launch-refactor-daemon.sh +57 -12
  10. package/bundled/dev-pipeline/lib/branch.sh +6 -1
  11. package/bundled/dev-pipeline/lib/common.sh +71 -0
  12. package/bundled/dev-pipeline/lib/heartbeat.sh +2 -2
  13. package/bundled/dev-pipeline/retry-bugfix.sh +60 -23
  14. package/bundled/dev-pipeline/retry-feature.sh +47 -12
  15. package/bundled/dev-pipeline/retry-refactor.sh +105 -23
  16. package/bundled/dev-pipeline/run-bugfix.sh +265 -44
  17. package/bundled/dev-pipeline/run-feature.sh +35 -1
  18. package/bundled/dev-pipeline/run-refactor.sh +376 -51
  19. package/bundled/dev-pipeline/scripts/check-session-status.py +24 -1
  20. package/bundled/dev-pipeline/scripts/detect-stuck.py +195 -85
  21. package/bundled/dev-pipeline/scripts/generate-bootstrap-prompt.py +31 -19
  22. package/bundled/dev-pipeline/scripts/generate-bugfix-prompt.py +19 -3
  23. package/bundled/dev-pipeline/scripts/generate-refactor-prompt.py +98 -11
  24. package/bundled/dev-pipeline/scripts/init-bugfix-pipeline.py +30 -5
  25. package/bundled/dev-pipeline/scripts/init-pipeline.py +3 -3
  26. package/bundled/dev-pipeline/scripts/init-refactor-pipeline.py +15 -4
  27. package/bundled/dev-pipeline/scripts/parse-stream-progress.py +1 -5
  28. package/bundled/dev-pipeline/scripts/patch-completion-notes.py +191 -0
  29. package/bundled/dev-pipeline/scripts/update-bug-status.py +159 -14
  30. package/bundled/dev-pipeline/scripts/update-feature-status.py +79 -37
  31. package/bundled/dev-pipeline/scripts/update-refactor-status.py +343 -13
  32. package/bundled/dev-pipeline/templates/agent-prompts/dev-fix.md +1 -1
  33. package/bundled/dev-pipeline/templates/agent-prompts/reviewer-review.md +7 -11
  34. package/bundled/dev-pipeline/templates/bootstrap-prompt.md +41 -7
  35. package/bundled/dev-pipeline/templates/bootstrap-tier1.md +27 -3
  36. package/bundled/dev-pipeline/templates/bootstrap-tier2.md +43 -19
  37. package/bundled/dev-pipeline/templates/bootstrap-tier3.md +54 -26
  38. package/bundled/dev-pipeline/templates/bug-fix-list-schema.json +5 -14
  39. package/bundled/dev-pipeline/templates/bugfix-bootstrap-prompt.md +36 -25
  40. package/bundled/dev-pipeline/templates/feature-list-schema.json +23 -11
  41. package/bundled/dev-pipeline/templates/refactor-bootstrap-prompt.md +270 -0
  42. package/bundled/dev-pipeline/templates/refactor-list-schema.json +10 -2
  43. package/bundled/dev-pipeline/templates/sections/context-budget-rules.md +3 -1
  44. package/bundled/dev-pipeline/templates/sections/critical-paths-agent.md +1 -0
  45. package/bundled/dev-pipeline/templates/sections/feature-context.md +2 -0
  46. package/bundled/dev-pipeline/templates/sections/phase-commit-full.md +29 -2
  47. package/bundled/dev-pipeline/templates/sections/phase-commit.md +22 -0
  48. package/bundled/dev-pipeline/templates/sections/phase-deploy-verification.md +2 -2
  49. package/bundled/dev-pipeline/templates/sections/phase-review-agent.md +8 -6
  50. package/bundled/dev-pipeline/templates/sections/phase-review-full.md +7 -5
  51. package/bundled/dev-pipeline/templates/sections/phase-specify-plan-full.md +3 -3
  52. package/bundled/skills/_metadata.json +5 -22
  53. package/bundled/skills/app-planner/SKILL.md +92 -66
  54. package/bundled/skills/app-planner/assets/app-design-guide.md +1 -1
  55. package/bundled/skills/app-planner/references/architecture-decisions.md +1 -1
  56. package/bundled/skills/app-planner/references/project-brief-guide.md +69 -66
  57. package/bundled/skills/bug-fix-workflow/SKILL.md +47 -4
  58. package/bundled/skills/bug-planner/SKILL.md +130 -188
  59. package/bundled/skills/bug-planner/assets/bug-confirmation-template.md +43 -0
  60. package/bundled/skills/bug-planner/references/critic-and-verification.md +44 -0
  61. package/bundled/skills/bug-planner/references/error-recovery.md +73 -0
  62. package/bundled/skills/bug-planner/references/input-formats.md +53 -0
  63. package/bundled/skills/bug-planner/references/schema-validation.md +25 -0
  64. package/bundled/skills/bug-planner/references/severity-rules.md +16 -0
  65. package/bundled/skills/bug-planner/scripts/validate-bug-list.py +1 -5
  66. package/bundled/skills/bugfix-pipeline-launcher/SKILL.md +5 -10
  67. package/bundled/skills/feature-pipeline-launcher/SKILL.md +16 -3
  68. package/bundled/skills/feature-planner/SKILL.md +33 -122
  69. package/bundled/skills/feature-planner/assets/evaluation-guide.md +1 -1
  70. package/bundled/skills/feature-planner/assets/planning-guide.md +21 -5
  71. package/bundled/skills/feature-planner/references/browser-interaction.md +2 -4
  72. package/bundled/skills/feature-planner/references/completeness-review.md +57 -0
  73. package/bundled/skills/feature-planner/references/error-recovery.md +15 -34
  74. package/bundled/skills/feature-planner/references/incremental-feature-planning.md +1 -1
  75. package/bundled/skills/feature-planner/references/new-project-planning.md +2 -2
  76. package/bundled/skills/feature-planner/scripts/validate-and-generate.py +1 -2
  77. package/bundled/skills/feature-workflow/SKILL.md +3 -4
  78. package/bundled/skills/prizm-kit/SKILL.md +39 -49
  79. package/bundled/skills/prizmkit-code-review/SKILL.md +51 -64
  80. package/bundled/skills/prizmkit-code-review/rules/dimensions.md +85 -0
  81. package/bundled/skills/prizmkit-code-review/rules/fix-strategy.md +11 -11
  82. package/bundled/skills/prizmkit-committer/SKILL.md +3 -31
  83. package/bundled/skills/prizmkit-deploy/SKILL.md +34 -31
  84. package/bundled/skills/prizmkit-deploy/assets/deploy-template.md +1 -1
  85. package/bundled/skills/prizmkit-implement/SKILL.md +35 -68
  86. package/bundled/skills/prizmkit-init/SKILL.md +112 -65
  87. package/bundled/skills/prizmkit-init/assets/project-brief-template.md +82 -0
  88. package/bundled/skills/prizmkit-plan/SKILL.md +120 -79
  89. package/bundled/skills/prizmkit-plan/assets/plan-template.md +28 -18
  90. package/bundled/skills/prizmkit-plan/assets/spec-template.md +28 -11
  91. package/bundled/skills/prizmkit-plan/references/clarify-guide.md +3 -3
  92. package/bundled/skills/prizmkit-plan/references/verification-checklist.md +60 -0
  93. package/bundled/skills/prizmkit-prizm-docs/SKILL.md +10 -81
  94. package/bundled/skills/prizmkit-prizm-docs/assets/{PRIZM-SPEC.md → prizm-docs-format.md} +41 -526
  95. package/bundled/skills/prizmkit-prizm-docs/references/op-init.md +46 -0
  96. package/bundled/skills/prizmkit-prizm-docs/references/op-rebuild.md +16 -0
  97. package/bundled/skills/prizmkit-prizm-docs/references/op-status.md +14 -0
  98. package/bundled/skills/prizmkit-prizm-docs/references/op-update.md +19 -0
  99. package/bundled/skills/prizmkit-prizm-docs/references/op-validate.md +17 -0
  100. package/bundled/skills/prizmkit-retrospective/SKILL.md +27 -65
  101. package/bundled/skills/prizmkit-retrospective/references/knowledge-injection-steps.md +3 -4
  102. package/bundled/skills/prizmkit-retrospective/references/structural-sync-steps.md +7 -25
  103. package/bundled/skills/recovery-workflow/SKILL.md +8 -8
  104. package/bundled/skills/refactor-pipeline-launcher/SKILL.md +17 -9
  105. package/bundled/skills/refactor-planner/SKILL.md +23 -41
  106. package/bundled/skills/refactor-workflow/SKILL.md +1 -2
  107. package/bundled/team/prizm-dev-team.json +1 -1
  108. package/bundled/{skills/prizm-kit/assets → templates}/project-memory-template.md +1 -1
  109. package/package.json +1 -1
  110. package/src/clean.js +0 -1
  111. package/src/gitignore-template.js +0 -1
  112. package/src/scaffold.js +10 -3
  113. package/bundled/dev-pipeline/templates/agent-prompts/reviewer-analyze.md +0 -5
  114. package/bundled/dev-pipeline/templates/sections/phase-analyze-agent.md +0 -19
  115. package/bundled/dev-pipeline/templates/sections/phase-analyze-full.md +0 -19
  116. package/bundled/skills/app-planner/references/project-conventions.md +0 -93
  117. package/bundled/skills/prizmkit-analyze/SKILL.md +0 -207
  118. package/bundled/skills/prizmkit-code-review/rules/dimensions-bugfix.md +0 -25
  119. package/bundled/skills/prizmkit-code-review/rules/dimensions-feature.md +0 -43
  120. package/bundled/skills/prizmkit-code-review/rules/dimensions-refactor.md +0 -25
  121. package/bundled/skills/prizmkit-implement/references/deploy-guide-protocol.md +0 -69
  122. package/bundled/skills/prizmkit-verify/SKILL.md +0 -281
  123. package/bundled/skills/prizmkit-verify/scripts/verify-light.py +0 -402
@@ -0,0 +1,53 @@
1
+ # Bug Input Format Detection & Extraction
2
+
3
+ Auto-detect the user's input format and extract structured bug information accordingly.
4
+
5
+ ## Format A: Stack Trace / Error Log
6
+
7
+ ```
8
+ TypeError: Cannot read property 'token' of null
9
+ at AuthService.handleLogin (src/services/auth.ts:42)
10
+ at LoginPage.onSubmit (src/pages/login.tsx:28)
11
+ ```
12
+
13
+ Extract: `error_source.type="stack_trace"`, `error_message`, `stack_trace`, `affected_modules`
14
+
15
+ ## Format B: Natural Language User Report
16
+
17
+ ```
18
+ When I click the login button with correct credentials, the page turns white.
19
+ Expected: redirect to home page.
20
+ Actual: white screen with no error message visible.
21
+ ```
22
+
23
+ Extract: `error_source.type="user_report"`, `reproduction_steps`, `description` (expected vs actual)
24
+
25
+ ## Format C: Failed Test Output
26
+
27
+ ```
28
+ FAIL src/services/__tests__/auth.test.ts
29
+ ● AuthService > handleLogin > should return token on success
30
+ Expected: "abc123"
31
+ Received: null
32
+ ```
33
+
34
+ Extract: `error_source.type="failed_test"`, `failed_test_path`, `error_message`
35
+
36
+ ## Format D: Log Pattern
37
+
38
+ ```
39
+ [2026-03-07 10:23:45] ERROR [auth-service] Connection timeout after 30000ms
40
+ [2026-03-07 10:23:45] ERROR [auth-service] Failed to authenticate user: ETIMEDOUT
41
+ [2026-03-07 10:23:46] ERROR [auth-service] Connection timeout after 30000ms
42
+ ```
43
+
44
+ Extract: `error_source.type="log_pattern"`, `log_snippet`, `affected_modules`
45
+
46
+ ## Format E: Monitoring Alert
47
+
48
+ ```
49
+ ALERT: CPU usage > 95% for auth-service pod (5min avg)
50
+ ALERT: Error rate spike: 500 errors/min on /api/login endpoint
51
+ ```
52
+
53
+ Extract: `error_source.type="monitoring_alert"`, `error_message`, `affected_modules`
@@ -0,0 +1,25 @@
1
+ # Schema Validation Checklist
2
+
3
+ Use this checklist for manual validation when `validate-bug-list.py` is not available. The script is the source of truth — this checklist mirrors its logic.
4
+
5
+ ## Required Top-Level Fields
6
+
7
+ - [ ] `$schema`: must be `"dev-pipeline-bug-fix-list-v1"`
8
+ - [ ] `project_name`: non-empty string
9
+ - [ ] `bugs`: non-empty array
10
+
11
+ ## Per-Bug Required Fields
12
+
13
+ - [ ] `id`: matches pattern `B-NNN` (e.g., `B-001`)
14
+ - [ ] `title`: non-empty string
15
+ - [ ] `description`: non-empty string
16
+ - [ ] `severity`: one of `critical`, `high`, `medium`, `low`
17
+ - [ ] `error_source.type`: one of `stack_trace`, `user_report`, `failed_test`, `log_pattern`, `monitoring_alert`
18
+ - [ ] `verification_type`: one of `automated`, `manual`, `hybrid`
19
+ - [ ] `acceptance_criteria`: non-empty array of strings
20
+ - [ ] `status`: must be `pending` for new bugs
21
+
22
+ ## Consistency Checks
23
+
24
+ - [ ] No duplicate bug IDs
25
+ - [ ] If `priority` is set, must be one of `high`, `medium`, `low`
@@ -0,0 +1,16 @@
1
+ # Severity Auto-Classification Rules
2
+
3
+ When extracting bugs, apply these rules to auto-suggest severity:
4
+
5
+ | Severity | Indicators | Examples |
6
+ |----------|------------|----------|
7
+ | **critical** | System crash, data loss, security breach, OOM, unrecoverable error | `Segmentation fault`, `OutOfMemoryError`, `SQL injection vulnerability`, `Database corrupted` |
8
+ | **high** | Core feature broken, authentication failure, data integrity issue, timeout | `Auth token invalid`, `Payment failed`, `Connection timeout`, `500 Internal Server Error` |
9
+ | **medium** | Feature partially broken, workaround exists, incorrect output | `CSV encoding issue`, `Pagination not working`, `Wrong date format`, `Missing validation` |
10
+ | **low** | Cosmetic issue, minor inconvenience, edge case | `UI misalignment`, `Typo in error message`, `Slow loading (non-critical page)`, `Non-breaking warning` |
11
+
12
+ ## Special Cases
13
+
14
+ - Failed test → medium (unless test covers critical path, then high)
15
+ - User report with "cannot use app" → high
16
+ - User report with "annoying but works" → low
@@ -19,7 +19,7 @@ import re
19
19
  VALID_SEVERITIES = {"critical", "high", "medium", "low"}
20
20
  VALID_SOURCE_TYPES = {"stack_trace", "user_report", "failed_test", "log_pattern", "monitoring_alert"}
21
21
  VALID_VERIFICATION_TYPES = {"automated", "manual", "hybrid"}
22
- VALID_STATUSES = {"pending", "in_progress", "fixed", "failed", "skipped", "needs_info"}
22
+ VALID_STATUSES = {"pending", "triaging", "reproducing", "fixing", "verifying", "completed", "failed", "needs_info", "skipped"}
23
23
  BUG_ID_PATTERN = re.compile(r"^B-\d{3}$")
24
24
  SCHEMA_VERSION = "dev-pipeline-bug-fix-list-v1"
25
25
 
@@ -117,10 +117,6 @@ def validate(bug_list_path, feature_list_path=None):
117
117
  if priority not in ("high", "medium", "low"):
118
118
  errors.append(f"{prefix} ({bug_id}): invalid priority '{priority}' — must be one of 'high', 'medium', 'low'")
119
119
 
120
- # Cross-reference affected_feature
121
- affected_feature = bug.get("affected_feature")
122
- if affected_feature and feature_ids and affected_feature not in feature_ids:
123
- warnings.append(f"{prefix} ({bug_id}): affected_feature '{affected_feature}' not found in feature-list.json")
124
120
 
125
121
  # Output results
126
122
  if errors:
@@ -117,20 +117,16 @@ Detect user intent from their message, then follow the corresponding workflow:
117
117
 
118
118
  Use `AskUserQuestion` to present the following configuration choices. Each question is a separate selectable option:
119
119
 
120
- **Question 1 — Critic review** (multiSelect: false):
121
- - Off (default) — Skip adversarial review
122
- - On — Enable critic review after bug fix (+2-5 min/bug for critical/high severity)
123
-
124
- **Question 2 — Verbose logging** (multiSelect: false):
120
+ **Question 1 — Verbose logging** (multiSelect: false):
125
121
  - On (default) — Detailed AI session logs including tool calls and subagent activity
126
122
  - Off — Minimal logging
127
123
 
128
- **Question 3 — Max retries** (multiSelect: false):
124
+ **Question 2 — Max retries** (multiSelect: false):
129
125
  - 3 (default)
130
126
  - 1
131
127
  - 5
132
128
 
133
- **Question 4 — Session timeout** (multiSelect: false):
129
+ **Question 3 — Session timeout** (multiSelect: false):
134
130
  - None (default) — No timeout
135
131
  - 30 min — `SESSION_TIMEOUT=1800`
136
132
  - 1 hour — `SESSION_TIMEOUT=3600`
@@ -142,7 +138,6 @@ Detect user intent from their message, then follow the corresponding workflow:
142
138
 
143
139
  | Config choice | Environment variable |
144
140
  |-----------|---------------------|
145
- | Critic: On | `ENABLE_CRITIC=true` |
146
141
  | Verbose: Off | `VERBOSE=0` |
147
142
  | Verbose: On | `VERBOSE=1` |
148
143
  | Max retries: N | `MAX_RETRIES=N` |
@@ -208,7 +203,7 @@ Detect user intent from their message, then follow the corresponding workflow:
208
203
 
209
204
  **If foreground**: Pipeline runs to completion in the terminal. After it finishes:
210
205
  - Summarize results: total bugs, fixed, failed, skipped
211
- - If all fixed: each bug session has already run `prizmkit-retrospective` (structural sync) internally. Ask user what's next.
206
+ - If all fixed: each bug session has already run `prizmkit-retrospective` internally (structural sync by default; full retrospective when the fix changed interfaces, dependencies, or observable behavior). Ask user what's next.
212
207
  - If some failed: show failed bug IDs and suggest `retry-bugfix.sh <B-XXX>` or `dev-pipeline/reset-bug.sh <B-XXX> --clean --run`
213
208
 
214
209
  **If background daemon**:
@@ -303,7 +298,7 @@ When user says "retry B-001":
303
298
  dev-pipeline/retry-bugfix.sh B-001 .prizmkit/plans/bug-fix-list.json
304
299
  ```
305
300
 
306
- **Note:** `retry-bugfix.sh` automatically cleans bug artifacts and resets status before retrying. This is equivalent to `reset-feature.sh --clean --run` in the feature pipeline. No separate reset command is needed.
301
+ **Note:** `retry-bugfix.sh` runs exactly one bug 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. For a full clean retry, use `dev-pipeline/reset-bug.sh <B-XXX> --clean --run`.
307
302
 
308
303
  Environment variables (optional):
309
304
  ```bash
@@ -170,6 +170,20 @@ 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.
@@ -324,9 +338,8 @@ SESSION_TIMEOUT=3600 dev-pipeline/retry-feature.sh F-003 .prizmkit/plans/feature
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
  ---
@@ -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
@@ -39,14 +39,13 @@ The user chose this skill intentionally. Respect that choice.
39
39
 
40
40
  **Your ONLY writable outputs are:**
41
41
  1. `.prizmkit/plans/feature-list.json` (`.prizmkit/plans/`)
42
- 2. Draft backups in `.prizmkit/planning/`
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 `.prizmkit/plans/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
 
@@ -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
@@ -103,7 +100,7 @@ Before questions, check optional context files (never block if absent):
103
100
  - `.prizmkit/config.json` (existing stack preferences and detected tech stack)
104
101
  - `.prizmkit/plans/project-brief.md` (project context from app-planner, if available)
105
102
  - existing `.prizmkit/plans/feature-list.json` (required for incremental mode)
106
- - `.prizmkit/project-conventions.json` (project conventions from app-planner, if available)
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'
@@ -116,7 +113,7 @@ Before questions, check optional context files (never block if absent):
116
113
 
117
114
  ## Global Context Population
118
115
 
119
- The `global_context` object in `.prizmkit/plans/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 `.prizmkit/plans/feature-list.json` provides tech
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
- - `.prizmkit/plans/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 `.prizmkit/plans/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
 
@@ -229,46 +197,11 @@ Checkpoints catch cascading errors early — skipping one means the next phase b
229
197
 
230
198
  ## Pre-Generation Completeness Review (Phase 6)
231
199
 
232
- Before generating `.prizmkit/plans/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
 
@@ -314,39 +247,27 @@ A feature is **exempt** when ANY true:
314
247
 
315
248
  ## Output Rules
316
249
 
317
- `.prizmkit/plans/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 .prizmkit/plans/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
 
@@ -397,7 +308,7 @@ When the session appears to be ending:
397
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} \
@@ -6,7 +6,7 @@ For app-level design references (vision templates, tech stack matrix), see `app-
6
6
 
7
7
  ---
8
8
 
9
- ## 4. Feature Description Writing Guide
9
+ ## Feature Description Writing Guide
10
10
 
11
11
  Feature descriptions are the **primary input** for autonomous pipeline sessions. A thin description forces the AI to guess — producing worse code. Invest in rich descriptions upfront.
12
12
 
@@ -52,9 +52,25 @@ Every description should cover these aspects (adapt per feature type):
52
52
  "Build a dashboard page at /dashboard as the post-login landing screen. Display: (1) summary cards showing total projects count, active tasks count, and recent activity count; (2) a recent activity feed listing the last 10 actions across all projects with timestamps; (3) a quick-access project list showing the 5 most recently updated projects. Fetch data via GET /api/dashboard/summary. Show loading skeleton on initial load, empty state when user has no projects."
53
53
  ```
54
54
 
55
+ ### Headless Execution Requirements
56
+
57
+ Feature descriptions are consumed by **autonomous AI sessions running in headless mode** — no human is available to clarify ambiguities. This raises the bar for description quality:
58
+
59
+ **Must include for headless readiness:**
60
+ 1. **Concrete deliverables** — specific files, endpoints, components, or models to create
61
+ 2. **Integration points** — which existing APIs to call, which models to import, which modules to extend
62
+ 3. **Key behaviors** — validation rules, state transitions, error codes, edge cases
63
+
64
+ **Dependency descriptions:**
65
+ When a feature depends on others, explicitly state what it needs from them:
66
+ - ✅ "Uses the User model (id, email, display_name) from F-001 to create a foreign key user_id on the Project model"
67
+ - ❌ "depends on F-001" — the AI won't know what F-001 built
68
+
69
+ **Self-test:** Read the description as if you have no other context. Could you implement it without asking a single question? If not, add more detail.
70
+
55
71
  ---
56
72
 
57
- ## 5. Acceptance Criteria Writing Guide
73
+ ## Acceptance Criteria Writing Guide
58
74
 
59
75
  Acceptance criteria define what "done" means for a feature. They should be specific, testable, and unambiguous.
60
76
 
@@ -95,7 +111,7 @@ Then [expected outcome]
95
111
 
96
112
  ---
97
113
 
98
- ## 6. Complexity Estimation Guide
114
+ ## Complexity Estimation Guide
99
115
 
100
116
  | Complexity | Characteristics | Typical Scope |
101
117
  |------------|----------------|---------------|
@@ -122,7 +138,7 @@ Consider splitting a feature if it exhibits any of the following:
122
138
 
123
139
  ---
124
140
 
125
- ## 7. Dependency Graph Rules
141
+ ## Dependency Graph Rules
126
142
 
127
143
  These rules ensure the feature dependency graph is valid and buildable.
128
144
 
@@ -150,7 +166,7 @@ These rules ensure the feature dependency graph is valid and buildable.
150
166
 
151
167
  ---
152
168
 
153
- ## 8. Session Granularity Decision Rules
169
+ ## Session Granularity Decision Rules
154
170
 
155
171
  Session granularity determines whether a feature is implemented in a single coding session or split across multiple sub-feature sessions.
156
172
 
@@ -4,11 +4,9 @@ For web apps with UI, features that involve user-facing pages or interactive flo
4
4
 
5
5
  ## How to Capture
6
6
 
7
- During Phase 4 (refine descriptions and acceptance criteria), for qualifying features ask:
7
+ During Phase 4.2, auto-generate `browser_interaction` for all qualifying features (see SKILL.md §Browser Interaction Planning for auto-detection rules). Present a **batch summary** to the user showing which features received `browser_interaction` — do NOT ask per-feature. The user can opt out specific features from the summary.
8
8
 
9
- > "This feature has UI behavior. Want to add browser verification so the pipeline can auto-check it after implementation? (Y/n)"
10
-
11
- If yes, generate the `browser_interaction` object:
9
+ For each qualifying feature, generate the `browser_interaction` object:
12
10
 
13
11
  ```json
14
12
  {
@@ -0,0 +1,57 @@
1
+ # Pre-Generation Completeness Review
2
+
3
+ Before generating `.prizmkit/plans/feature-list.json`, review the full feature set holistically. Individual features may look fine in isolation but have gaps when viewed together.
4
+
5
+ ## Step 1: Description Adequacy Scan
6
+
7
+ For each feature, evaluate against the word-count thresholds in `planning-guide.md`:
8
+ - Does the description cover: what to build, key behaviors, integration points, data model (if applicable), error/edge cases?
9
+ - Is the description specific enough for an AI coding session to implement without guessing?
10
+ - Flag any feature below the recommended word count for its complexity level (30/50/80 words for low/medium/high).
11
+
12
+ **Implementation clarity check** — Every feature description will be consumed by an autonomous AI session. Verify each description specifies:
13
+ 1. Concrete deliverables (files to create, endpoints to build, components to implement, models to define)
14
+ 2. Key behaviors and business rules (validation, state transitions, error handling)
15
+ 3. Integration points with other modules (which APIs to call, which models to use)
16
+
17
+ **Dependency context check** — If the feature depends on others, the description should reference what it needs from them:
18
+ - Good: "Uses User model from F-001 to link projects to users via userId foreign key"
19
+ - Bad: "depends on F-001" (too vague)
20
+
21
+ **Ambiguity check** — Flag vague phrases:
22
+ - Bad: "Create a nice dashboard" (what components? what data? what layout?)
23
+ - Good: "Create dashboard at /dashboard with: (1) summary cards showing total projects count, active tasks count; (2) recent activity feed (last 10 items); (3) quick-access project list (5 most recent). Fetch data via GET /api/dashboard/summary."
24
+
25
+ If any feature description is unclear, **expand it now** before generating the output file.
26
+
27
+ ## Step 2: Cross-Feature Completeness Check
28
+
29
+ Look at the feature set as a whole:
30
+ - **Implied functionality gaps**: Does feature A's acceptance criteria assume a capability that no other feature provides?
31
+ - **Missing integration seams**: If two features share data or interact at runtime, is the interface specified?
32
+ - **Scope leaks**: Does any feature's description reference functionality outside the agreed scope?
33
+
34
+ ## Step 3: Present Review to User
35
+
36
+ Show a structured summary table:
37
+
38
+ ```
39
+ Feature | Description | Cross-Feature | Recommendation
40
+ | Adequacy | Issues |
41
+ F-001 | ✓ (65 words)| — | Ready
42
+ F-002 | ⚠ (28 words)| — | Expand: add API endpoints, error handling
43
+ F-003 | ✓ (52 words)| Assumes email from | Clarify: who sends the notification?
44
+ | | F-006 (not yet defined)|
45
+ ```
46
+
47
+ Then ask if any features need further discussion.
48
+
49
+ ## Step 4: Interactive Supplementation
50
+
51
+ For each feature the user wants to discuss:
52
+ 1. Ask targeted questions about the unclear aspects
53
+ 2. Propose concrete description supplements
54
+ 3. Update the feature description with agreed details
55
+ 4. Re-check: does the supplement resolve the gap?
56
+
57
+ Continue until the user confirms all features are implementation-ready. Fixing thin descriptions here costs minutes; fixing misimplemented features downstream costs hours.