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.
- package/bundled/VERSION.json +3 -3
- package/bundled/dev-pipeline/README.md +65 -65
- package/bundled/dev-pipeline/assets/feature-list-example.json +2 -2
- package/bundled/dev-pipeline/launch-bugfix-daemon.sh +11 -10
- package/bundled/dev-pipeline/launch-feature-daemon.sh +12 -11
- package/bundled/dev-pipeline/launch-refactor-daemon.sh +11 -10
- package/bundled/dev-pipeline/reset-bug.sh +305 -0
- package/bundled/dev-pipeline/reset-feature.sh +9 -8
- package/bundled/dev-pipeline/reset-refactor.sh +10 -9
- package/bundled/dev-pipeline/retry-bugfix.sh +7 -6
- package/bundled/dev-pipeline/retry-feature.sh +7 -6
- package/bundled/dev-pipeline/retry-refactor.sh +7 -6
- package/bundled/dev-pipeline/run-bugfix.sh +71 -23
- package/bundled/dev-pipeline/run-feature.sh +30 -21
- package/bundled/dev-pipeline/run-refactor.sh +21 -17
- package/bundled/dev-pipeline/scripts/cleanup-logs.py +2 -2
- package/bundled/dev-pipeline/scripts/detect-stuck.py +3 -3
- package/bundled/dev-pipeline/scripts/generate-bootstrap-prompt.py +26 -14
- package/bundled/dev-pipeline/scripts/generate-bugfix-prompt.py +6 -6
- package/bundled/dev-pipeline/scripts/generate-refactor-prompt.py +6 -6
- package/bundled/dev-pipeline/scripts/init-bugfix-pipeline.py +4 -4
- package/bundled/dev-pipeline/scripts/init-pipeline.py +26 -12
- package/bundled/dev-pipeline/scripts/init-refactor-pipeline.py +4 -4
- package/bundled/dev-pipeline/scripts/update-bug-status.py +10 -10
- package/bundled/dev-pipeline/scripts/update-feature-status.py +31 -31
- package/bundled/dev-pipeline/scripts/update-refactor-status.py +8 -8
- package/bundled/dev-pipeline/templates/bug-fix-list-schema.json +111 -31
- package/bundled/dev-pipeline/templates/feature-list-schema.json +91 -25
- package/bundled/dev-pipeline/templates/refactor-list-schema.json +107 -28
- package/bundled/dev-pipeline/tests/test_auto_skip.py +1 -1
- package/bundled/skills/_metadata.json +10 -2
- package/bundled/skills/app-planner/SKILL.md +24 -13
- package/bundled/skills/app-planner/references/project-brief-guide.md +1 -1
- package/bundled/skills/bug-fix-workflow/SKILL.md +7 -5
- package/bundled/skills/bug-planner/SKILL.md +80 -25
- package/bundled/skills/bug-planner/scripts/validate-bug-list.py +3 -3
- package/bundled/skills/bugfix-pipeline-launcher/SKILL.md +38 -33
- package/bundled/skills/feature-pipeline-launcher/SKILL.md +33 -33
- package/bundled/skills/feature-pipeline-launcher/scripts/preflight-check.py +3 -3
- package/bundled/skills/feature-planner/SKILL.md +96 -24
- package/bundled/skills/feature-planner/references/error-recovery.md +9 -9
- package/bundled/skills/feature-planner/scripts/validate-and-generate.py +25 -24
- package/bundled/skills/feature-workflow/SKILL.md +23 -20
- package/bundled/skills/prizmkit-committer/SKILL.md +1 -0
- package/bundled/skills/prizmkit-deploy/SKILL.md +1 -0
- package/bundled/skills/prizmkit-deploy/assets/deploy-template.md +1 -1
- package/bundled/skills/prizmkit-implement/SKILL.md +1 -1
- package/bundled/skills/prizmkit-implement/references/deploy-guide-protocol.md +4 -4
- package/bundled/skills/prizmkit-plan/SKILL.md +3 -3
- package/bundled/skills/prizmkit-retrospective/SKILL.md +40 -3
- package/bundled/skills/prizmkit-verify/SKILL.md +281 -0
- package/bundled/skills/prizmkit-verify/scripts/verify-light.py +402 -0
- package/bundled/skills/recovery-workflow/SKILL.md +15 -14
- package/bundled/skills/recovery-workflow/evals/evals.json +5 -5
- package/bundled/skills/recovery-workflow/scripts/detect-recovery-state.py +43 -10
- package/bundled/skills/refactor-pipeline-launcher/SKILL.md +38 -34
- package/bundled/skills/refactor-planner/SKILL.md +74 -24
- package/bundled/skills/refactor-planner/scripts/validate-and-generate-refactor.py +17 -17
- package/bundled/skills/refactor-workflow/SKILL.md +24 -20
- package/package.json +1 -1
- package/src/clean.js +4 -4
- package/src/gitignore-template.js +7 -8
- 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 (
|
|
13
|
+
- Project brief accumulation (`.prizmkit/plans/project-brief.md`)
|
|
14
14
|
|
|
15
|
-
This skill captures **what to build and why**. For **feature decomposition and
|
|
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
|
|
38
|
+
- Generate `.prizmkit/plans/feature-list.json` — that is `feature-planner`'s responsibility
|
|
39
39
|
|
|
40
40
|
**Your ONLY writable outputs are:**
|
|
41
|
-
1.
|
|
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.
|
|
44
|
-
|
|
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
|
|
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 |
|
|
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
|
|
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
|
-
-
|
|
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
|
|
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
|
|
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 (
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
45
|
-
2. **Identify tech stack**: Read from `.prizmkit/config.json` `tech_stack` (preferred), then
|
|
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
|
|
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 |
|
|
160
|
-
B-002 | CSV export Chinese encoding | medium |
|
|
161
|
-
B-003 | Slow dashboard loading | low |
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
283
|
+
5. Output draft `.prizmkit/plans/bug-fix-list.json`
|
|
275
284
|
|
|
276
285
|
## Operation: Validate
|
|
277
286
|
|
|
278
|
-
Validate existing
|
|
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
|
|
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
|
-
-
|
|
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
|
|
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**:
|
|
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
|
|
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
|
|
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 —
|
|
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
|
|
128
|
+
**Question 3 — Max retries** (multiSelect: false):
|
|
125
129
|
- 3 (default)
|
|
126
130
|
- 1
|
|
127
131
|
- 5
|
|
128
132
|
|
|
129
|
-
**Question
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
-
|
|
|
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
|
|
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
|
|
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 (
|
|
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.
|