prizmkit 1.1.6 → 1.1.8

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 (63) hide show
  1. package/bundled/VERSION.json +3 -3
  2. package/bundled/dev-pipeline/README.md +65 -65
  3. package/bundled/dev-pipeline/assets/feature-list-example.json +2 -2
  4. package/bundled/dev-pipeline/launch-bugfix-daemon.sh +11 -10
  5. package/bundled/dev-pipeline/launch-feature-daemon.sh +12 -11
  6. package/bundled/dev-pipeline/launch-refactor-daemon.sh +11 -10
  7. package/bundled/dev-pipeline/reset-bug.sh +305 -0
  8. package/bundled/dev-pipeline/reset-feature.sh +9 -8
  9. package/bundled/dev-pipeline/reset-refactor.sh +10 -9
  10. package/bundled/dev-pipeline/retry-bugfix.sh +7 -6
  11. package/bundled/dev-pipeline/retry-feature.sh +7 -6
  12. package/bundled/dev-pipeline/retry-refactor.sh +7 -6
  13. package/bundled/dev-pipeline/run-bugfix.sh +71 -23
  14. package/bundled/dev-pipeline/run-feature.sh +30 -21
  15. package/bundled/dev-pipeline/run-refactor.sh +21 -17
  16. package/bundled/dev-pipeline/scripts/cleanup-logs.py +2 -2
  17. package/bundled/dev-pipeline/scripts/detect-stuck.py +3 -3
  18. package/bundled/dev-pipeline/scripts/generate-bootstrap-prompt.py +26 -14
  19. package/bundled/dev-pipeline/scripts/generate-bugfix-prompt.py +6 -6
  20. package/bundled/dev-pipeline/scripts/generate-refactor-prompt.py +6 -6
  21. package/bundled/dev-pipeline/scripts/init-bugfix-pipeline.py +4 -4
  22. package/bundled/dev-pipeline/scripts/init-pipeline.py +26 -12
  23. package/bundled/dev-pipeline/scripts/init-refactor-pipeline.py +4 -4
  24. package/bundled/dev-pipeline/scripts/update-bug-status.py +10 -10
  25. package/bundled/dev-pipeline/scripts/update-feature-status.py +31 -31
  26. package/bundled/dev-pipeline/scripts/update-refactor-status.py +8 -8
  27. package/bundled/dev-pipeline/templates/bug-fix-list-schema.json +111 -31
  28. package/bundled/dev-pipeline/templates/feature-list-schema.json +91 -25
  29. package/bundled/dev-pipeline/templates/refactor-list-schema.json +107 -28
  30. package/bundled/dev-pipeline/tests/test_auto_skip.py +1 -1
  31. package/bundled/skills/_metadata.json +10 -2
  32. package/bundled/skills/app-planner/SKILL.md +24 -13
  33. package/bundled/skills/app-planner/references/project-brief-guide.md +1 -1
  34. package/bundled/skills/bug-fix-workflow/SKILL.md +7 -5
  35. package/bundled/skills/bug-planner/SKILL.md +80 -25
  36. package/bundled/skills/bug-planner/scripts/validate-bug-list.py +3 -3
  37. package/bundled/skills/bugfix-pipeline-launcher/SKILL.md +38 -33
  38. package/bundled/skills/feature-pipeline-launcher/SKILL.md +33 -33
  39. package/bundled/skills/feature-pipeline-launcher/scripts/preflight-check.py +3 -3
  40. package/bundled/skills/feature-planner/SKILL.md +96 -24
  41. package/bundled/skills/feature-planner/references/error-recovery.md +9 -9
  42. package/bundled/skills/feature-planner/scripts/validate-and-generate.py +25 -24
  43. package/bundled/skills/feature-workflow/SKILL.md +23 -20
  44. package/bundled/skills/prizmkit-committer/SKILL.md +1 -0
  45. package/bundled/skills/prizmkit-deploy/SKILL.md +1 -0
  46. package/bundled/skills/prizmkit-deploy/assets/deploy-template.md +1 -1
  47. package/bundled/skills/prizmkit-implement/SKILL.md +1 -1
  48. package/bundled/skills/prizmkit-implement/references/deploy-guide-protocol.md +4 -4
  49. package/bundled/skills/prizmkit-plan/SKILL.md +3 -3
  50. package/bundled/skills/prizmkit-retrospective/SKILL.md +40 -3
  51. package/bundled/skills/prizmkit-verify/SKILL.md +281 -0
  52. package/bundled/skills/prizmkit-verify/scripts/verify-light.py +402 -0
  53. package/bundled/skills/recovery-workflow/SKILL.md +15 -14
  54. package/bundled/skills/recovery-workflow/evals/evals.json +5 -5
  55. package/bundled/skills/recovery-workflow/scripts/detect-recovery-state.py +43 -10
  56. package/bundled/skills/refactor-pipeline-launcher/SKILL.md +38 -34
  57. package/bundled/skills/refactor-planner/SKILL.md +74 -24
  58. package/bundled/skills/refactor-planner/scripts/validate-and-generate-refactor.py +17 -17
  59. package/bundled/skills/refactor-workflow/SKILL.md +24 -20
  60. package/package.json +1 -1
  61. package/src/clean.js +4 -4
  62. package/src/gitignore-template.js +7 -8
  63. package/src/scaffold.js +4 -2
@@ -10,9 +10,9 @@ Plan a new application from idea to actionable project context through interacti
10
10
  - Tech stack selection
11
11
  - Constraints and design direction
12
12
  - Architecture decision capture
13
- - Project brief accumulation (`project-brief.md`)
13
+ - Project brief accumulation (`.prizmkit/plans/project-brief.md`)
14
14
 
15
- This skill captures **what to build and why**. For **feature decomposition and `feature-list.json` generation**, hand off to `feature-planner`.
15
+ This skill captures **what to build and why**. For **feature decomposition and `.prizmkit/plans/feature-list.json` generation**, hand off to `feature-planner`.
16
16
 
17
17
  For adding features to an **existing** project, use `feature-planner` directly.
18
18
 
@@ -35,18 +35,21 @@ If you believe the task is better suited for a different workflow, you MUST:
35
35
  - Create project scaffolding, directories, or boilerplate
36
36
  - Run build/install/test commands (npm init, pip install, etc.)
37
37
  - Execute any implementation action beyond writing planning artifacts
38
- - Generate `feature-list.json` — that is `feature-planner`'s responsibility
38
+ - Generate `.prizmkit/plans/feature-list.json` — that is `feature-planner`'s responsibility
39
39
 
40
40
  **Your ONLY writable outputs are:**
41
- 1. `project-brief.md` (project root — accumulated project context brief)
41
+ 1. `.prizmkit/plans/project-brief.md` (`.prizmkit/plans/` — accumulated project context brief)
42
42
  2. `.prizmkit/project-conventions.json` (project convention answers)
43
- 3. Architecture decisions appended to `CLAUDE.md` / `CODEBUDDY.md` (with user consent)
44
- 4. Draft backups in `.prizmkit/planning/`
43
+ 3. `.prizm-docs/root.prizm` (if architecture decisions are captured see Architecture Decision Capture section)
44
+ - Contains architecture decisions, tech stack rationale, and key constraints
45
+ - Used as input by feature-planner and other workflows
46
+ 4. Architecture decisions appended to `CLAUDE.md` / `CODEBUDDY.md` (with user consent)
47
+ 5. Draft backups in `.prizmkit/planning/`
45
48
 
46
49
  **After planning is complete**, you MUST:
47
50
  1. Present the summary of captured vision, constraints, and decisions
48
51
  2. **Ask the user explicitly** whether they want to proceed to feature decomposition
49
- 3. If the user agrees → recommend invoking `feature-planner` to decompose into features and generate `feature-list.json`
52
+ 3. If the user agrees → recommend invoking `feature-planner` to decompose into features and generate `.prizmkit/plans/feature-list.json`
50
53
  4. If the user wants to continue exploring → stay in app-planner
51
54
  5. **NEVER auto-execute** the pipeline, feature-planner, or any implementation step
52
55
 
@@ -151,16 +154,24 @@ Checkpoints catch cascading errors early — skipping one means the next phase b
151
154
  | **CP-AP-1** | Conventions Checked | Project conventions loaded or asked; `.prizmkit/project-conventions.json` up to date | 1 |
152
155
  | **CP-AP-2** | Vision Summary | Goal/users/differentiators confirmed by user | 1-2 |
153
156
  | **CP-AP-3** | Frontend Design Evaluated | For frontend projects: checked for existing UI/UX design system; user was asked if missing | 2 |
154
- | **CP-AP-4** | Project Brief Accumulated | `project-brief.md` exists at project root with at least 3 ideas listed | 3 |
157
+ | **CP-AP-4** | Project Brief Accumulated | `.prizmkit/plans/project-brief.md` exists at `.prizmkit/plans/` with at least 3 ideas listed | 3 |
155
158
  | **CP-AP-5** | Handoff Ready | All app-level context captured; user confirmed readiness for feature decomposition | 4 |
156
159
 
157
160
  ## Architecture Decision Capture
158
161
 
159
162
  After Phase 2, if framework-shaping architecture decisions emerged during planning (tech stack, communication patterns, data model strategies — not individual feature details), read `${SKILL_DIR}/references/architecture-decisions.md` and follow the capture flow. Most sessions will NOT produce architecture decisions — only capture when genuinely impactful.
160
163
 
164
+ **Handoff to feature-planner**: Captured architecture decisions MUST be written to `.prizm-docs/root.prizm` so that feature-planner can read them as context. This ensures all downstream planners (feature, bug, refactor) share consistent architectural understanding.
165
+
166
+ **How it works**:
167
+ 1. If decisions are captured → create `.prizm-docs/root.prizm` with decision summaries
168
+ 2. Also append decisions to `CLAUDE.md` / `CODEBUDDY.md` for human reference
169
+ 3. When feature-planner is invoked, it will read `.prizm-docs/root.prizm` as prerequisite context
170
+ 4. Feature decomposition will respect captured architecture decisions (no conflicting tech choices)
171
+
161
172
  ## Project Brief Accumulation
162
173
 
163
- During interactive planning, maintain a `project-brief.md` at the project root as a simple checklist of product ideas.
174
+ During interactive planning, maintain a `.prizmkit/plans/project-brief.md` at `.prizmkit/plans/` as a simple checklist of product ideas.
164
175
 
165
176
  → Read `${SKILL_DIR}/references/project-brief-guide.md` for full format and rules.
166
177
 
@@ -192,13 +203,13 @@ Prevent accidental session exit without completing the planning artifacts.
192
203
 
193
204
  Activate when ALL true:
194
205
  - Session goal = `produce`
195
- - `project-brief.md` has not been written or is incomplete (Vision section missing)
206
+ - `.prizmkit/plans/project-brief.md` has not been written or is incomplete (Vision section missing)
196
207
  - No architecture decisions captured yet (if any emerged)
197
208
 
198
209
  ### Gate Behavior
199
210
 
200
211
  When the session appears to be ending:
201
- 1. **Remind**: "You set out to produce a project plan but `project-brief.md` isn't complete yet."
212
+ 1. **Remind**: "You set out to produce a project plan but `.prizmkit/plans/project-brief.md` isn't complete yet."
202
213
  2. **Offer 3 options**:
203
214
  - **(a) Continue to completion**
204
215
  - **(b) Save draft & exit** — write current progress as draft to `.prizmkit/planning/`
@@ -209,6 +220,6 @@ When the session appears to be ending:
209
220
  After all checkpoints pass, present a summary and recommend next steps:
210
221
 
211
222
  1. **Summary**: List captured vision, tech stack, constraints, architecture decisions, and project brief status
212
- 2. **Primary recommendation**: Invoke `feature-planner` to decompose the application into features and generate `feature-list.json`
223
+ 2. **Primary recommendation**: Invoke `feature-planner` to decompose the application into features and generate `.prizmkit/plans/feature-list.json` (schema: `dev-pipeline-feature-list-v1`, uses `project_name` field for the app name)
213
224
  3. **Alternative**: If the user wants to continue refining the vision or constraints, stay in app-planner
214
- 4. **Artifacts produced**: List files written (`project-brief.md`, `.prizmkit/project-conventions.json`, architecture decisions if any)
225
+ 4. **Artifacts produced**: List files written (`.prizmkit/plans/project-brief.md`, `.prizmkit/project-conventions.json`, architecture decisions if any)
@@ -8,7 +8,7 @@ During `app-planner` conversation, the user describes what they want to build. `
8
8
 
9
9
  ## Persistence
10
10
 
11
- - **File**: `project-brief.md` at project root (same level as `feature-list.json`)
11
+ - **File**: `project-brief.md` at `.prizmkit/plans/` (shared location with `feature-list.json`)
12
12
  - **Format**: Checklist — one idea per line, `[ ]` for pending, `[x]` for completed
13
13
  - **Size limit**: 500 words max (injected into every session's context window)
14
14
  - **Consumed by**: `dev-pipeline/scripts/generate-bootstrap-prompt.py` → `{{PROJECT_BRIEF}}` placeholder
@@ -27,7 +27,7 @@ Fix a single bug interactively within the current AI CLI session. This is the in
27
27
 
28
28
  | Input Source | Detection | Example |
29
29
  |---|---|---|
30
- | Bug-fix-list.json entry | User says "fix B-001" → read entry from `bug-fix-list.json` | `fix B-001` |
30
+ | Bug-fix-list.json entry | User says "fix B-001" → read entry from `.prizmkit/plans/bug-fix-list.json` | `fix B-001` |
31
31
  | Stack trace / error message | User pastes error directly | `TypeError: Cannot read property...` |
32
32
  | Natural language description | User describes the problem | "login page crashes on submit" |
33
33
  | Failed test | User references a failing test file | `src/auth/__tests__/login.test.ts` |
@@ -83,11 +83,13 @@ For trivial bugs with clear root cause and minimal scope:
83
83
 
84
84
  **Goal**: Fully understand the bug before touching any code. Vague bug reports lead to incorrect fixes that mask the real issue or introduce new bugs.
85
85
 
86
+ **Fast Path Decision Point**: After initial information gathering (Step 1.1), evaluate the Fast Path Eligibility Criteria above. If ALL criteria are met, ask the user: "This looks like a straightforward fix. Use fast path? (Y/n)". If yes, skip directly to the Fast Path Workflow (branch setup already done in Phase 0). If no or uncertain, continue with full diagnosis.
87
+
86
88
  **CRITICAL RULE**: Ask as many questions as needed until the bug is fully understood. Do NOT rush into code. A misdiagnosed bug leads to a wrong fix, which is worse than no fix.
87
89
 
88
90
  #### Step 1.1: Initial Bug Information Gathering
89
91
 
90
- - If bug ID given (e.g. B-001): read entry from `bug-fix-list.json` — but DO NOT assume the description is complete
92
+ - If bug ID given (e.g. B-001): read entry from `.prizmkit/plans/bug-fix-list.json` — but DO NOT assume the description is complete
91
93
  - If raw error/stack trace: extract error message, affected files, line numbers
92
94
  - If natural language description: start the deep-dive Q&A below
93
95
 
@@ -269,10 +271,10 @@ If user reports the fix is NOT working:
269
271
  git branch -d fix/<BUG_ID>-<short-description>
270
272
  ```
271
273
  4. **If (b)**: Inform user: "Branch `fix/<BUG_ID>-<short-desc>` retained. Create a PR when ready."
272
- 5. **If bug came from bug-fix-list.json**: inform user to update bug status
274
+ 5. **If bug came from .prizmkit/plans/bug-fix-list.json**: inform user to update bug status
273
275
  ```
274
276
  Bug B-001 fixed and committed.
275
- To update the bug list: manually set B-001 status to "fixed" in bug-fix-list.json
277
+ To update the bug list: manually set B-001 status to "fixed" in .prizmkit/plans/bug-fix-list.json
276
278
  Or retry the pipeline to pick up remaining bugs.
277
279
  ```
278
280
 
@@ -321,7 +323,7 @@ Only 2 artifact files per bug, consistent with the pipeline convention.
321
323
 
322
324
  | Scenario | Action |
323
325
  |----------|--------|
324
- | Bug ID not found in bug-fix-list.json | Ask user to provide bug details directly |
326
+ | Bug ID not found in .prizmkit/plans/bug-fix-list.json | Ask user to provide bug details directly |
325
327
  | User's bug description is too vague | Ask systematic clarification questions (Phase 1) |
326
328
  | Cannot reproduce the bug | Ask for more context, try alternative reproduction |
327
329
  | Fix causes regressions | Revert, analyze, retry (max 3 rounds) |
@@ -1,12 +1,12 @@
1
1
  ---
2
2
  name: "bug-planner"
3
3
  tier: companion
4
- description: "Interactive bug planning that produces bug-fix-list.json for the Bug Fix Pipeline. Supports multiple input formats: error logs, stack traces, user reports, failed tests, monitoring alerts. Use this skill whenever the user has bugs to report, errors to parse, or test failures to organize. Trigger on: 'plan bug fixes', 'report bugs', 'I have some bugs', 'these tests are failing', 'here is an error log', 'parse these errors', 'generate bug list'. (project)"
4
+ description: "Interactive bug planning that produces .prizmkit/plans/bug-fix-list.json for the Bug Fix Pipeline. Supports multiple input formats: error logs, stack traces, user reports, failed tests, monitoring alerts. Use this skill whenever the user has bugs to report, errors to parse, or test failures to organize. Trigger on: 'plan bug fixes', 'report bugs', 'I have some bugs', 'these tests are failing', 'here is an error log', 'parse these errors', 'generate bug list'. (project)"
5
5
  ---
6
6
 
7
7
  # Bug Planner
8
8
 
9
- Interactive skill that collects bug information from various input formats and generates a standardized `bug-fix-list.json` for the Bug Fix Pipeline. This is the bug-fix counterpart to `feature-planner` (which generates `feature-list.json`).
9
+ Interactive skill that collects bug information from various input formats and generates a standardized `.prizmkit/plans/bug-fix-list.json` for the Bug Fix Pipeline. This is the bug-fix counterpart to `feature-planner` (which generates `.prizmkit/plans/feature-list.json`).
10
10
 
11
11
  ## When to Use
12
12
 
@@ -30,7 +30,7 @@ This skill handles multiple operations. Determine the user's intent and execute
30
30
  | Plan bugs interactively | **Interactive Planning** | "plan bug fixes", "report bugs" |
31
31
  | Parse error logs into bugs | **From Log** | "parse this error log", "here's a stack trace", "parse these errors" |
32
32
  | Parse test failures into bugs | **From Tests** | "these tests are failing", "parse test output" |
33
- | Validate existing bug list | **Validate** | "validate bug list", "check bug-fix-list.json" |
33
+ | Validate existing bug list | **Validate** | "validate bug list", "check .prizmkit/plans/bug-fix-list.json" |
34
34
  | Summarize bug list | **Summary** | "bug summary", "show bug list", "list bugs" |
35
35
 
36
36
  ---
@@ -41,8 +41,8 @@ Launch the interactive bug planning process through 5 phases.
41
41
 
42
42
  ### Phase 1: Project Context
43
43
 
44
- 1. **Identify project**: Read project name and description from existing `feature-list.json` or ask user
45
- 2. **Identify tech stack**: Read from `.prizmkit/config.json` `tech_stack` (preferred), then `feature-list.json` global_context, then `.prizm-docs/root.prizm`. Only ask user if none of these sources provide tech stack info.
44
+ 1. **Identify project**: Read project name and description from existing `.prizmkit/plans/feature-list.json` or ask user
45
+ 2. **Identify tech stack**: Read from `.prizmkit/config.json` `tech_stack` (preferred), then `.prizmkit/plans/feature-list.json` global_context, then `.prizm-docs/root.prizm`. Only ask user if none of these sources provide tech stack info.
46
46
  3. **Identify testing framework**: Read from `.prizmkit/config.json` `tech_stack.testing`, or auto-detect from package.json/requirements.txt/etc., or ask user
47
47
  4. **Clarify context** — if the project context, affected systems, or bug scope is unclear, ask questions one at a time (cite the unclear point, give a recommended answer with rationale) until you fully understand the environment. No limit on rounds or number of questions.
48
48
 
@@ -116,6 +116,7 @@ ALERT: Error rate spike: 500 errors/min on /api/login endpoint
116
116
  - Environment (ask or auto-detect from logs)
117
117
  - Verification type (suggest `automated` by default, ask user)
118
118
  - Acceptance criteria (auto-suggest based on description, user can edit)
119
+ - Model override (optional; if specified, overrides $MODEL env var for this bug fix)
119
120
 
120
121
  **Per-bug clarification** — if the bug's root cause, reproduction steps, expected behavior, or scope is unclear from the provided information, ask focused questions one at a time (cite the unclear point, give a recommended answer with rationale) until the bug is fully understood. Do not finalize a bug entry with ambiguous details. No limit on the number of questions per bug.
121
122
 
@@ -152,20 +153,28 @@ Only finalize the bug entry after user confirms all three points.
152
153
 
153
154
  ### Phase 3: Prioritization & Review
154
155
 
155
- 1. **Auto-assign priorities**: Based on severity (critical=1, high=2, medium=3, low=4), adjustable by user
156
+ 1. **Auto-assign priorities**: Based on severity (critical → high, high → high, medium → medium, low → low), adjustable by user
157
+
158
+ **Severity → Priority Mapping**:
159
+ - `critical` severity → `high` priority (treated with highest urgency)
160
+ - `high` severity → `high` priority
161
+ - `medium` severity → `medium` priority
162
+ - `low` severity → `low` priority
163
+
164
+ Note: Severity has 4 levels (critical, high, medium, low) but Priority has 3 levels (high, medium, low). Both critical and high severity bugs map to high priority.
156
165
  2. **Display summary table**:
157
166
  ```
158
167
  ID | Title | Severity | Priority | Verification
159
- B-001 | Login null reference crash | critical | 1 | automated
160
- B-002 | CSV export Chinese encoding | medium | 3 | hybrid
161
- B-003 | Slow dashboard loading | low | 4 | manual
168
+ B-001 | Login null reference crash | critical | high | automated
169
+ B-002 | CSV export Chinese encoding | medium | medium | hybrid
170
+ B-003 | Slow dashboard loading | low | low | manual
162
171
  ```
163
172
  3. **Ask for adjustments**: "Want to reorder priorities, change severity, or remove any bugs?"
164
173
  4. **Detect potential duplicates**: If two bugs have similar error messages or affected modules, warn user
165
174
 
166
175
  ### Phase 4: Pre-Generation Completeness Review
167
176
 
168
- Before generating `bug-fix-list.json`, perform a holistic scan across all collected bugs. The bugfix pipeline runs autonomously — any ambiguity left here becomes a wrong assumption later.
177
+ Before generating `.prizmkit/plans/bug-fix-list.json`, perform a holistic scan across all collected bugs. The bugfix pipeline runs autonomously — any ambiguity left here becomes a wrong assumption later.
169
178
 
170
179
  **Step 1 — Description adequacy scan**: For each bug, check:
171
180
  - Description clearly states **expected** vs **actual** behavior (not just "X doesn't work")
@@ -199,13 +208,13 @@ Only proceed to Phase 5 after user confirms.
199
208
 
200
209
  ### Phase 5: Generate & Validate
201
210
 
202
- 1. **Generate `bug-fix-list.json`**: Conform to `dev-pipeline/templates/bug-fix-list-schema.json`
211
+ 1. **Generate `.prizmkit/plans/bug-fix-list.json`**: Conform to `dev-pipeline/templates/bug-fix-list-schema.json`
203
212
  2. **Validate against schema**: Run the validation script:
204
213
  ```bash
205
- python3 ${SKILL_DIR}/scripts/validate-bug-list.py bug-fix-list.json --feature-list feature-list.json
214
+ python3 ${SKILL_DIR}/scripts/validate-bug-list.py .prizmkit/plans/bug-fix-list.json --feature-list .prizmkit/plans/feature-list.json
206
215
  ```
207
216
  If the script is not available, perform the validation checks manually (see checklist below).
208
- 3. **Write file** to project root (or user-specified path)
217
+ 3. **Write file** to `.prizmkit/plans/` (or user-specified path)
209
218
  4. **Output**: File path, summary, and next steps
210
219
 
211
220
  #### Schema Validation Checklist
@@ -230,19 +239,19 @@ Before writing the file, verify all items pass:
230
239
  **Consistency checks:**
231
240
  - [ ] No duplicate bug IDs
232
241
  - [ ] If `priority` is set, must be one of `high`, `medium`, `low`
233
- - [ ] If `affected_feature` is set, verify it exists in `feature-list.json` (if available)
242
+ - [ ] If `affected_feature` is set, verify it exists in `.prizmkit/plans/feature-list.json` (if available)
234
243
 
235
244
  If any check fails, fix before writing the file.
236
245
 
237
246
  #### Success Output
238
247
 
239
248
  ```
240
- ✅ bug-fix-list.json generated with 3 bugs (1 critical, 1 medium, 1 low)
249
+ .prizmkit/plans/bug-fix-list.json generated with 3 bugs (1 critical, 1 medium, 1 low)
241
250
 
242
251
  Next steps:
243
- - Review: cat bug-fix-list.json
252
+ - Review: cat .prizmkit/plans/bug-fix-list.json
244
253
  - Start fixing: say "start fixing" or "start fixing bugs" to launch the bugfix pipeline
245
- - Or run directly: ./dev-pipeline/launch-bugfix-daemon.sh start bug-fix-list.json
254
+ - Or run directly: ./dev-pipeline/launch-bugfix-daemon.sh start .prizmkit/plans/bug-fix-list.json
246
255
  ```
247
256
 
248
257
  ---
@@ -260,7 +269,7 @@ Batch-parse error logs to generate bug entries without interactive prompts:
260
269
  - error_source: populated from log content
261
270
  - verification_type: default to `automated`
262
271
  - acceptance_criteria: auto-generate "Error no longer occurs in [scenario]"
263
- 4. Output draft `bug-fix-list.json` for user review
272
+ 4. Output draft `.prizmkit/plans/bug-fix-list.json` for user review
264
273
  5. Ask: "Review and confirm? You can edit individual entries."
265
274
 
266
275
  ## Operation: From Tests
@@ -271,11 +280,11 @@ Batch-parse failed test output:
271
280
  2. Parse each failed test case as a separate bug entry
272
281
  3. Auto-populate `failed_test_path`, `error_message`
273
282
  4. Set verification_type to `automated` (test already exists)
274
- 5. Output draft `bug-fix-list.json`
283
+ 5. Output draft `.prizmkit/plans/bug-fix-list.json`
275
284
 
276
285
  ## Operation: Validate
277
286
 
278
- Validate existing `bug-fix-list.json`:
287
+ Validate existing `.prizmkit/plans/bug-fix-list.json`:
279
288
 
280
289
  1. Check JSON syntax
281
290
  2. Validate against `dev-pipeline/templates/bug-fix-list-schema.json`
@@ -284,7 +293,7 @@ Validate existing `bug-fix-list.json`:
284
293
  - Missing required fields
285
294
  - Invalid status values
286
295
  - Invalid priority values (must be 'high', 'medium', or 'low')
287
- - Invalid `affected_feature` references (if feature-list.json exists)
296
+ - Invalid `affected_feature` references (if .prizmkit/plans/feature-list.json exists)
288
297
  4. Output: validation result with specific errors/warnings
289
298
 
290
299
  ## Operation: Summary
@@ -309,13 +318,59 @@ Affected Features: F-003 (1 bug), F-012 (1 bug), none (1 bug)
309
318
 
310
319
  ---
311
320
 
321
+ ## Adversarial Critic Review (Testing Defaults)
322
+
323
+ All bug fixes support optional critic review for additional quality assurance. The critic mechanism is disabled by default but can be enabled per-bug based on severity and complexity.
324
+
325
+ ### Default Critic Behavior
326
+
327
+ | Severity | `critic` | `critic_count` | Rationale |
328
+ |----------|----------|----------------|-----------|
329
+ | critical | `true` | `1` | Single critic review for critical bugs |
330
+ | high | `true` | `1` | Single critic review for high-severity bugs |
331
+ | medium | `false` | (omitted) | Skip critic for medium-severity bugs |
332
+ | low | `false` | (omitted) | Skip critic for low-severity bugs |
333
+
334
+ - `critic: true` — Enable adversarial review after fix implementation
335
+ - `critic_count: 1` — Single critic agent reviews the fix
336
+ - Critic verifies: fix addresses root cause, no regressions introduced, acceptance criteria met
337
+
338
+ **User Override**: During Phase 2 or Phase 3, users can opt to enable/disable critic on a per-bug basis.
339
+
340
+ ---
341
+
342
+ ## Browser Verification
343
+
344
+ **Browser verification is a feature-pipeline capability only.** Bug fixes use the `verification_type` field instead:
345
+
346
+ - `verification_type: automated` — Use unit/integration tests to verify the fix
347
+ - `verification_type: manual` — Describe manual testing steps in acceptance criteria (including any browser verification steps)
348
+ - `verification_type: hybrid` — Combine automated tests with manual browser verification steps
349
+
350
+ For UI-related bugs that require visual verification (e.g., "Button doesn't show error message"), describe the verification steps in your acceptance criteria:
351
+
352
+ Example:
353
+ ```
354
+ Bug Title: Login error message not displaying
355
+ Verification Type: manual
356
+ Acceptance Criteria:
357
+ 1. Navigate to /login with invalid credentials
358
+ 2. Verify error message "Invalid email or password" appears below the email field
359
+ 3. Verify error message is red (#FF0000)
360
+ 4. Verify form fields are still enabled and can be re-submitted
361
+ ```
362
+
363
+ The bugfix pipeline AI will use these criteria during manual verification.
364
+
365
+ ---
366
+
312
367
  ## Integration with Bug Fix Pipeline
313
368
 
314
- After `bug-fix-list.json` is generated, the user can:
369
+ After `.prizmkit/plans/bug-fix-list.json` is generated, the user can:
315
370
 
316
371
  1. **Say "start fixing" or "start fixing bugs"** — triggers `bugfix-pipeline-launcher` skill to auto-launch pipeline in background (recommended)
317
- 2. **Background daemon**: `./dev-pipeline/launch-bugfix-daemon.sh start bug-fix-list.json`
318
- 3. **Foreground run**: `./dev-pipeline/run-bugfix.sh run bug-fix-list.json`
372
+ 2. **Background daemon**: `./dev-pipeline/launch-bugfix-daemon.sh start .prizmkit/plans/bug-fix-list.json`
373
+ 3. **Foreground run**: `./dev-pipeline/run-bugfix.sh run .prizmkit/plans/bug-fix-list.json`
319
374
  4. **Fix single bug interactively**: invoke `bug-fix-workflow` in current session
320
375
  5. **Retry a failed bug**: `./dev-pipeline/retry-bugfix.sh B-001`
321
376
 
@@ -332,6 +387,6 @@ After `bug-fix-list.json` is generated, the user can:
332
387
 
333
388
  ## Output
334
389
 
335
- - `bug-fix-list.json` conforming to `dev-pipeline/templates/bug-fix-list-schema.json`
390
+ - `.prizmkit/plans/bug-fix-list.json` conforming to `dev-pipeline/templates/bug-fix-list-schema.json`
336
391
  - Validation report (if validation run)
337
392
  - Summary report (if summary run)
@@ -1,9 +1,9 @@
1
1
  #!/usr/bin/env python3
2
2
  """
3
- Validate bug-fix-list.json against the PrizmKit bug-fix-list schema.
3
+ Validate .prizmkit/plans/bug-fix-list.json against the PrizmKit bug-fix-list schema.
4
4
 
5
5
  Usage:
6
- python3 validate-bug-list.py [bug-fix-list.json] [--feature-list feature-list.json]
6
+ python3 validate-bug-list.py [.prizmkit/plans/bug-fix-list.json] [--feature-list .prizmkit/plans/feature-list.json]
7
7
 
8
8
  Exit codes:
9
9
  0 = valid
@@ -145,7 +145,7 @@ def validate(bug_list_path, feature_list_path=None):
145
145
 
146
146
 
147
147
  if __name__ == "__main__":
148
- bug_list = sys.argv[1] if len(sys.argv) > 1 else "bug-fix-list.json"
148
+ bug_list = sys.argv[1] if len(sys.argv) > 1 else ".prizmkit/plans/bug-fix-list.json"
149
149
  feature_list = None
150
150
 
151
151
  if "--feature-list" in sys.argv:
@@ -17,7 +17,7 @@ Three execution modes are available. The user chooses one before configuring oth
17
17
 
18
18
  **Background mode documentation**: When the user chooses background/daemon mode, record the choice and PID in `.prizmkit/bugfix-pipeline-run.log` (append-only) with timestamp, so the decision is traceable:
19
19
  ```
20
- [2026-03-26T10:30:00] MODE=daemon PID=12345 BUG_LIST=bug-fix-list.json BUGS=3
20
+ [2026-03-26T10:30:00] MODE=daemon PID=12345 BUG_LIST=.prizmkit/plans/bug-fix-list.json BUGS=3
21
21
  ```
22
22
 
23
23
  ### When to Use
@@ -48,7 +48,7 @@ Three execution modes are available. The user chooses one before configuring oth
48
48
  Before any action, validate:
49
49
 
50
50
  1. **bugfix pipeline exists**: Confirm `dev-pipeline/launch-bugfix-daemon.sh` and `dev-pipeline/run-bugfix.sh` are present and executable
51
- 2. **For start**: `bug-fix-list.json` must exist in project root (or user-specified path)
51
+ 2. **For start**: `.prizmkit/plans/bug-fix-list.json` must exist in `.prizmkit/plans/` (or user-specified path)
52
52
  3. **Dependencies**: `jq`, `python3`, AI CLI (`cbc` or `claude`) must be in PATH
53
53
 
54
54
  Quick check:
@@ -56,8 +56,8 @@ Quick check:
56
56
  command -v jq && command -v python3 && (command -v cbc || command -v claude) && echo "All dependencies OK"
57
57
  ```
58
58
 
59
- If `bug-fix-list.json` is missing, inform user:
60
- > "No bug-fix-list.json found. Run the `bug-planner` skill first to generate one, or provide a path to your bug fix list."
59
+ If `.prizmkit/plans/bug-fix-list.json` is missing, inform user:
60
+ > "No .prizmkit/plans/bug-fix-list.json found. Run the `bug-planner` skill first to generate one, or provide a path to your bug fix list."
61
61
 
62
62
  ### Workflow
63
63
 
@@ -69,7 +69,7 @@ Detect user intent from their message, then follow the corresponding workflow:
69
69
 
70
70
  1. **Check prerequisites**:
71
71
  ```bash
72
- ls bug-fix-list.json 2>/dev/null && echo "Found" || echo "Missing"
72
+ ls .prizmkit/plans/bug-fix-list.json 2>/dev/null && echo "Found" || echo "Missing"
73
73
  ```
74
74
 
75
75
  2. **Check not already running**:
@@ -82,7 +82,7 @@ Detect user intent from their message, then follow the corresponding workflow:
82
82
  ```bash
83
83
  python3 -c "
84
84
  import json
85
- with open('bug-fix-list.json') as f:
85
+ with open('.prizmkit/plans/bug-fix-list.json') as f:
86
86
  data = json.load(f)
87
87
  bugs = data.get('bugs', [])
88
88
  severity_order = {'critical': 0, 'high': 1, 'medium': 2, 'low': 3}
@@ -101,8 +101,8 @@ Detect user intent from their message, then follow the corresponding workflow:
101
101
  If pipeline state already exists, use the status command instead:
102
102
  ```bash
103
103
  python3 dev-pipeline/scripts/update-bug-status.py \
104
- --bug-list bug-fix-list.json \
105
- --state-dir dev-pipeline/bugfix-state \
104
+ --bug-list .prizmkit/plans/bug-fix-list.json \
105
+ --state-dir .prizmkit/state/bugfix \
106
106
  --action status 2>/dev/null
107
107
  ```
108
108
 
@@ -117,16 +117,20 @@ 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 — Verbose logging** (multiSelect: false):
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):
121
125
  - On (default) — Detailed AI session logs including tool calls and subagent activity
122
126
  - Off — Minimal logging
123
127
 
124
- **Question 2 — Max retries** (multiSelect: false):
128
+ **Question 3 — Max retries** (multiSelect: false):
125
129
  - 3 (default)
126
130
  - 1
127
131
  - 5
128
132
 
129
- **Question 3 — Session timeout** (multiSelect: false):
133
+ **Question 4 — Session timeout** (multiSelect: false):
130
134
  - None (default) — No timeout
131
135
  - 30 min — `SESSION_TIMEOUT=1800`
132
136
  - 1 hour — `SESSION_TIMEOUT=3600`
@@ -138,6 +142,7 @@ Detect user intent from their message, then follow the corresponding workflow:
138
142
 
139
143
  | Config choice | Environment variable |
140
144
  |-----------|---------------------|
145
+ | Critic: On | `ENABLE_CRITIC=true` |
141
146
  | Verbose: Off | `VERBOSE=0` |
142
147
  | Verbose: On | `VERBOSE=1` |
143
148
  | Max retries: N | `MAX_RETRIES=N` |
@@ -163,34 +168,34 @@ Detect user intent from their message, then follow the corresponding workflow:
163
168
 
164
169
  **Foreground command:**
165
170
  ```bash
166
- VERBOSE=1 dev-pipeline/run-bugfix.sh run bug-fix-list.json
171
+ VERBOSE=1 dev-pipeline/run-bugfix.sh run .prizmkit/plans/bug-fix-list.json
167
172
  ```
168
173
  With all options:
169
174
  ```bash
170
175
  VERBOSE=1 MAX_RETRIES=5 SESSION_TIMEOUT=3600 \
171
- dev-pipeline/run-bugfix.sh run bug-fix-list.json
176
+ dev-pipeline/run-bugfix.sh run .prizmkit/plans/bug-fix-list.json
172
177
  ```
173
178
 
174
179
  **Background daemon command:**
175
180
  ```bash
176
- dev-pipeline/launch-bugfix-daemon.sh start bug-fix-list.json --env "VERBOSE=1"
181
+ dev-pipeline/launch-bugfix-daemon.sh start .prizmkit/plans/bug-fix-list.json --env "VERBOSE=1"
177
182
  ```
178
183
  With all options:
179
184
  ```bash
180
- dev-pipeline/launch-bugfix-daemon.sh start bug-fix-list.json \
185
+ dev-pipeline/launch-bugfix-daemon.sh start .prizmkit/plans/bug-fix-list.json \
181
186
  --env "VERBOSE=1 MAX_RETRIES=5"
182
187
  ```
183
188
 
184
189
  **Manual mode**: Print the assembled command(s) and **stop here**. Do not execute anything. Do not proceed to step 7.
185
190
  ```
186
191
  # To run in foreground:
187
- VERBOSE=1 dev-pipeline/run-bugfix.sh run bug-fix-list.json
192
+ VERBOSE=1 dev-pipeline/run-bugfix.sh run .prizmkit/plans/bug-fix-list.json
188
193
 
189
194
  # To run in background (detached):
190
- dev-pipeline/launch-bugfix-daemon.sh start bug-fix-list.json --env "VERBOSE=1"
195
+ dev-pipeline/launch-bugfix-daemon.sh start .prizmkit/plans/bug-fix-list.json --env "VERBOSE=1"
191
196
 
192
197
  # To check status:
193
- dev-pipeline/run-bugfix.sh status bug-fix-list.json
198
+ dev-pipeline/run-bugfix.sh status .prizmkit/plans/bug-fix-list.json
194
199
  ```
195
200
 
196
201
  7. **Confirm and launch** (Foreground and Background only — Manual mode ends at step 6):
@@ -204,7 +209,7 @@ Detect user intent from their message, then follow the corresponding workflow:
204
209
  **If foreground**: Pipeline runs to completion in the terminal. After it finishes:
205
210
  - Summarize results: total bugs, fixed, failed, skipped
206
211
  - If all fixed: each bug session has already run `prizmkit-retrospective` (structural sync) internally. Ask user what's next.
207
- - If some failed: show failed bug IDs and suggest `retry-bugfix.sh <B-XXX>` or `reset-bug.sh <B-XXX> --clean --run`
212
+ - If some failed: show failed bug IDs and suggest `retry-bugfix.sh <B-XXX>` or `dev-pipeline/reset-bug.sh <B-XXX> --clean --run`
208
213
 
209
214
  **If background daemon**:
210
215
  1. Verify launch:
@@ -213,7 +218,7 @@ Detect user intent from their message, then follow the corresponding workflow:
213
218
  ```
214
219
  2. Start log monitoring — Use the Bash tool with `run_in_background: true`:
215
220
  ```bash
216
- tail -f dev-pipeline/bugfix-state/pipeline-daemon.log
221
+ tail -f .prizmkit/state/bugfix/pipeline-daemon.log
217
222
  ```
218
223
  3. Report to user:
219
224
  - Pipeline PID
@@ -233,14 +238,14 @@ Detect user intent from their message, then follow the corresponding workflow:
233
238
  2. **Show bug-level progress**:
234
239
  ```bash
235
240
  python3 dev-pipeline/scripts/update-bug-status.py \
236
- --bug-list bug-fix-list.json \
237
- --state-dir dev-pipeline/bugfix-state \
241
+ --bug-list .prizmkit/plans/bug-fix-list.json \
242
+ --state-dir .prizmkit/state/bugfix \
238
243
  --action status
239
244
  ```
240
245
 
241
246
  3. **Show recent log activity** (last 20 lines):
242
247
  ```bash
243
- tail -20 dev-pipeline/bugfix-state/pipeline-daemon.log
248
+ tail -20 .prizmkit/state/bugfix/pipeline-daemon.log
244
249
  ```
245
250
 
246
251
  4. **Summarize** to user: total bugs, completed, in-progress, failed, pending, needs-info.
@@ -272,20 +277,20 @@ Detect user intent from their message, then follow the corresponding workflow:
272
277
 
273
278
  2. **If running** -- Start live tail with Bash tool `run_in_background: true`:
274
279
  ```bash
275
- tail -f dev-pipeline/bugfix-state/pipeline-daemon.log
280
+ tail -f .prizmkit/state/bugfix/pipeline-daemon.log
276
281
  ```
277
282
 
278
283
  3. **If not running** -- Show last 50 lines:
279
284
  ```bash
280
- tail -50 dev-pipeline/bugfix-state/pipeline-daemon.log
285
+ tail -50 .prizmkit/state/bugfix/pipeline-daemon.log
281
286
  ```
282
287
 
283
288
  4. **For per-bug session logs** (when user asks about a specific bug):
284
289
  ```bash
285
290
  # Check bug status for last session ID
286
- cat dev-pipeline/bugfix-state/bugs/<BUG_ID>/status.json 2>/dev/null
291
+ cat .prizmkit/state/bugfix/bugs/<BUG_ID>/status.json 2>/dev/null
287
292
  # Then tail that bug's session log
288
- tail -100 dev-pipeline/bugfix-state/bugs/<BUG_ID>/sessions/<SESSION_ID>/logs/session.log
293
+ tail -100 .prizmkit/state/bugfix/bugs/<BUG_ID>/sessions/<SESSION_ID>/logs/session.log
289
294
  ```
290
295
 
291
296
  ---
@@ -295,35 +300,35 @@ Detect user intent from their message, then follow the corresponding workflow:
295
300
  When user says "retry B-001":
296
301
 
297
302
  ```bash
298
- dev-pipeline/retry-bugfix.sh B-001 bug-fix-list.json
303
+ dev-pipeline/retry-bugfix.sh B-001 .prizmkit/plans/bug-fix-list.json
299
304
  ```
300
305
 
301
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.
302
307
 
303
308
  Environment variables (optional):
304
309
  ```bash
305
- SESSION_TIMEOUT=3600 dev-pipeline/retry-bugfix.sh B-001 bug-fix-list.json
310
+ SESSION_TIMEOUT=3600 dev-pipeline/retry-bugfix.sh B-001 .prizmkit/plans/bug-fix-list.json
306
311
  ```
307
312
 
308
313
  ### Error Handling
309
314
 
310
315
  | Error | Action |
311
316
  |-------|--------|
312
- | `bug-fix-list.json` not found | Tell user to run `bug-planner` skill first |
317
+ | `.prizmkit/plans/bug-fix-list.json` not found | Tell user to run `bug-planner` skill first |
313
318
  | `jq` not installed | Suggest: `brew install jq` |
314
319
  | `cbc`/`claude` not in PATH | Check AI CLI installation |
315
320
  | Bugfix pipeline already running | Show status, ask if user wants to stop and restart |
316
321
  | PID file stale (process dead) | `launch-bugfix-daemon.sh` auto-cleans, retry start |
317
- | Launch failed (process died immediately) | Show last 20 lines of log: `tail -20 dev-pipeline/bugfix-state/pipeline-daemon.log` |
322
+ | Launch failed (process died immediately) | Show last 20 lines of log: `tail -20 .prizmkit/state/bugfix/pipeline-daemon.log` |
318
323
  | All bugs blocked/failed/needs-info | Show status, suggest retrying or providing more info |
319
324
  | Permission denied on script | Run `chmod +x dev-pipeline/launch-bugfix-daemon.sh dev-pipeline/run-bugfix.sh` |
320
325
 
321
326
  ### Integration Notes
322
327
 
323
- - **After bug-planner**: This is the natural next step. When user finishes bug planning and has `bug-fix-list.json`, suggest launching the bugfix pipeline.
328
+ - **After bug-planner**: This is the natural next step. When user finishes bug planning and has `.prizmkit/plans/bug-fix-list.json`, suggest launching the bugfix pipeline.
324
329
  - **Session independence**: In daemon mode, the bugfix pipeline runs completely detached. User can close the AI CLI, open a new session later, and use this skill to check progress or stop the pipeline.
325
330
  - **Single instance**: Only one bugfix pipeline can run at a time. The PID file prevents duplicates.
326
- - **Feature pipeline coexistence**: Bugfix and feature pipelines use separate state directories (`bugfix-state/` vs `state/`), so they can run simultaneously without conflict.
331
+ - **Feature pipeline coexistence**: Bugfix and feature pipelines use separate state directories (`.prizmkit/state/bugfix/` vs `.prizmkit/state/features/`), so they can run simultaneously without conflict.
327
332
  - **State preservation**: Stopping and restarting the bugfix pipeline resumes from where it left off -- completed bugs are not re-fixed.
328
333
  - **Bug ordering**: Bugs are processed by severity (critical → high → medium → low), then by priority number within the same severity.
329
334
  - **Background mode traceability**: When daemon mode is chosen, the decision is logged to `.prizmkit/bugfix-pipeline-run.log` with timestamp, PID, and bug count for auditability.