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
package/bundled/VERSION.json
CHANGED
|
@@ -1,34 +1,34 @@
|
|
|
1
1
|
# dev-pipeline
|
|
2
2
|
|
|
3
|
-
Autonomous development pipeline that drives the `prizm-dev-team` multi-agent team through iterative AI CLI sessions, implementing a complete app feature-by-feature from a
|
|
3
|
+
Autonomous development pipeline that drives the `prizm-dev-team` multi-agent team through iterative AI CLI sessions, implementing a complete app feature-by-feature from a `.prizmkit/plans/feature-list.json` specification. Includes a parallel bug-fix pipeline for `.prizmkit/plans/bug-fix-list.json`.
|
|
4
4
|
|
|
5
5
|
## Prerequisites
|
|
6
6
|
|
|
7
7
|
- Python 3.8+
|
|
8
8
|
- [jq](https://jqlang.github.io/jq/) (`brew install jq`)
|
|
9
9
|
- AI CLI in PATH: CodeBuddy (`cbc`) or Claude Code (`claude`)
|
|
10
|
-
-
|
|
11
|
-
-
|
|
10
|
+
- `.prizmkit/plans/feature-list.json` generated by the `feature-planner` skill (for feature pipeline)
|
|
11
|
+
- `.prizmkit/plans/bug-fix-list.json` generated by the `bug-planner` skill (for bug pipeline)
|
|
12
12
|
|
|
13
13
|
## Quick Start
|
|
14
14
|
|
|
15
15
|
```bash
|
|
16
16
|
# 1. Generate feature list (via feature-planner skill in an AI CLI session)
|
|
17
|
-
# Output: feature-list.json in project root
|
|
17
|
+
# Output: .prizmkit/plans/feature-list.json in project root
|
|
18
18
|
|
|
19
19
|
# 2. Initialize pipeline state
|
|
20
20
|
python3 dev-pipeline/scripts/init-pipeline.py \
|
|
21
|
-
--feature-list feature-list.json \
|
|
22
|
-
--state-dir
|
|
21
|
+
--feature-list .prizmkit/plans/feature-list.json \
|
|
22
|
+
--state-dir .prizmkit/state/features
|
|
23
23
|
|
|
24
24
|
# 3. Run the pipeline (foreground, Ctrl+C to pause, re-run to resume)
|
|
25
|
-
./dev-pipeline/run-feature.sh run feature-list.json
|
|
25
|
+
./dev-pipeline/run-feature.sh run .prizmkit/plans/feature-list.json
|
|
26
26
|
|
|
27
27
|
# 4. Check progress at any time (from another terminal)
|
|
28
|
-
./dev-pipeline/run-feature.sh status feature-list.json
|
|
28
|
+
./dev-pipeline/run-feature.sh status .prizmkit/plans/feature-list.json
|
|
29
29
|
|
|
30
30
|
# 5. Or run as a background daemon
|
|
31
|
-
./dev-pipeline/launch-feature-daemon.sh start feature-list.json
|
|
31
|
+
./dev-pipeline/launch-feature-daemon.sh start .prizmkit/plans/feature-list.json
|
|
32
32
|
```
|
|
33
33
|
|
|
34
34
|
---
|
|
@@ -40,9 +40,9 @@ python3 dev-pipeline/scripts/init-pipeline.py \
|
|
|
40
40
|
Main entry point. Drives the full feature development pipeline.
|
|
41
41
|
|
|
42
42
|
```bash
|
|
43
|
-
./run-feature.sh run [feature-list.json] # Run all features
|
|
43
|
+
./run-feature.sh run [.prizmkit/plans/feature-list.json] # Run all features
|
|
44
44
|
./run-feature.sh run <feature-id> [options] # Run a single feature (F-NNN)
|
|
45
|
-
./run-feature.sh status [feature-list.json] # Show pipeline status
|
|
45
|
+
./run-feature.sh status [.prizmkit/plans/feature-list.json] # Show pipeline status
|
|
46
46
|
./run-feature.sh reset # Clear all state in state/
|
|
47
47
|
./run-feature.sh test-cli # Test AI CLI detection
|
|
48
48
|
./run-feature.sh help # Show usage help
|
|
@@ -61,7 +61,7 @@ Main entry point. Drives the full feature development pipeline.
|
|
|
61
61
|
|
|
62
62
|
```bash
|
|
63
63
|
# Run all features
|
|
64
|
-
./dev-pipeline/run-feature.sh run feature-list.json
|
|
64
|
+
./dev-pipeline/run-feature.sh run .prizmkit/plans/feature-list.json
|
|
65
65
|
|
|
66
66
|
# Run a single feature
|
|
67
67
|
./dev-pipeline/run-feature.sh run F-007
|
|
@@ -70,13 +70,13 @@ Main entry point. Drives the full feature development pipeline.
|
|
|
70
70
|
./dev-pipeline/run-feature.sh run F-007 --dry-run
|
|
71
71
|
|
|
72
72
|
# Resume from Phase 6 (implementation)
|
|
73
|
-
./dev-pipeline/run-feature.sh run feature-list.json --resume-phase 6
|
|
73
|
+
./dev-pipeline/run-feature.sh run .prizmkit/plans/feature-list.json --resume-phase 6
|
|
74
74
|
|
|
75
75
|
# With timeout per session
|
|
76
|
-
SESSION_TIMEOUT=7200 ./dev-pipeline/run-feature.sh run feature-list.json
|
|
76
|
+
SESSION_TIMEOUT=7200 ./dev-pipeline/run-feature.sh run .prizmkit/plans/feature-list.json
|
|
77
77
|
```
|
|
78
78
|
|
|
79
|
-
If
|
|
79
|
+
If `.prizmkit/plans/feature-list.json` path is omitted, defaults to `.prizmkit/plans/feature-list.json` in the project root.
|
|
80
80
|
|
|
81
81
|
---
|
|
82
82
|
|
|
@@ -85,7 +85,7 @@ If `feature-list.json` path is omitted, defaults to `feature-list.json` in the p
|
|
|
85
85
|
Runs exactly ONE AI CLI session for a specified feature, then exits.
|
|
86
86
|
|
|
87
87
|
```bash
|
|
88
|
-
./retry-feature.sh <feature-id> [feature-list.json]
|
|
88
|
+
./retry-feature.sh <feature-id> [.prizmkit/plans/feature-list.json]
|
|
89
89
|
```
|
|
90
90
|
|
|
91
91
|
**What it does:**
|
|
@@ -99,7 +99,7 @@ Runs exactly ONE AI CLI session for a specified feature, then exits.
|
|
|
99
99
|
|
|
100
100
|
```bash
|
|
101
101
|
./dev-pipeline/retry-feature.sh F-007
|
|
102
|
-
./dev-pipeline/retry-feature.sh F-007 feature-list.json
|
|
102
|
+
./dev-pipeline/retry-feature.sh F-007 .prizmkit/plans/feature-list.json
|
|
103
103
|
SESSION_TIMEOUT=7200 ./dev-pipeline/retry-feature.sh F-007
|
|
104
104
|
MODEL=claude-opus-4.6 ./dev-pipeline/retry-feature.sh F-007
|
|
105
105
|
```
|
|
@@ -111,7 +111,7 @@ MODEL=claude-opus-4.6 ./dev-pipeline/retry-feature.sh F-007
|
|
|
111
111
|
Resets a feature's state so it can be re-executed from scratch.
|
|
112
112
|
|
|
113
113
|
```bash
|
|
114
|
-
./reset-feature.sh <feature-id> [--clean] [--run] [feature-list.json]
|
|
114
|
+
./reset-feature.sh <feature-id> [--clean] [--run] [.prizmkit/plans/feature-list.json]
|
|
115
115
|
```
|
|
116
116
|
|
|
117
117
|
| Flag | Description |
|
|
@@ -125,7 +125,7 @@ Resets a feature's state so it can be re-executed from scratch.
|
|
|
125
125
|
|
|
126
126
|
**What is always reset (with or without `--clean`):**
|
|
127
127
|
- `status.json` — status → pending, retry_count → 0
|
|
128
|
-
-
|
|
128
|
+
- `.prizmkit/plans/feature-list.json` — feature status → pending
|
|
129
129
|
|
|
130
130
|
**Examples:**
|
|
131
131
|
|
|
@@ -143,11 +143,11 @@ Resets a feature's state so it can be re-executed from scratch.
|
|
|
143
143
|
Manages `run-feature.sh` as a background daemon process with PID tracking and log consolidation. Designed for invocation from AI skill sessions.
|
|
144
144
|
|
|
145
145
|
```bash
|
|
146
|
-
./launch-feature-daemon.sh start [feature-list.json] [--mode <mode>] [--env "KEY=VAL ..."]
|
|
146
|
+
./launch-feature-daemon.sh start [.prizmkit/plans/feature-list.json] [--mode <mode>] [--env "KEY=VAL ..."]
|
|
147
147
|
./launch-feature-daemon.sh stop
|
|
148
148
|
./launch-feature-daemon.sh status
|
|
149
149
|
./launch-feature-daemon.sh logs [--lines N] [--follow]
|
|
150
|
-
./launch-feature-daemon.sh restart [feature-list.json] [--mode <mode>] [--env "KEY=VAL ..."]
|
|
150
|
+
./launch-feature-daemon.sh restart [.prizmkit/plans/feature-list.json] [--mode <mode>] [--env "KEY=VAL ..."]
|
|
151
151
|
./launch-feature-daemon.sh help
|
|
152
152
|
```
|
|
153
153
|
|
|
@@ -164,7 +164,7 @@ Manages `run-feature.sh` as a background daemon process with PID tracking and lo
|
|
|
164
164
|
**`--env` format:** Pass environment variables as a quoted string:
|
|
165
165
|
|
|
166
166
|
```bash
|
|
167
|
-
./dev-pipeline/launch-feature-daemon.sh start feature-list.json \
|
|
167
|
+
./dev-pipeline/launch-feature-daemon.sh start .prizmkit/plans/feature-list.json \
|
|
168
168
|
--mode standard \
|
|
169
169
|
--env "MAX_RETRIES=5 SESSION_TIMEOUT=3600 MODEL=claude-sonnet-4.6"
|
|
170
170
|
```
|
|
@@ -196,9 +196,9 @@ Manages `run-feature.sh` as a background daemon process with PID tracking and lo
|
|
|
196
196
|
Equivalent to `run-feature.sh` but for the bug-fix pipeline.
|
|
197
197
|
|
|
198
198
|
```bash
|
|
199
|
-
./run-bugfix.sh run [bug-fix-list.json] # Run all bugs
|
|
199
|
+
./run-bugfix.sh run [.prizmkit/plans/bug-fix-list.json] # Run all bugs
|
|
200
200
|
./run-bugfix.sh run <bug-id> [options] # Run single bug (B-NNN)
|
|
201
|
-
./run-bugfix.sh status [bug-fix-list.json] # Show status
|
|
201
|
+
./run-bugfix.sh status [.prizmkit/plans/bug-fix-list.json] # Show status
|
|
202
202
|
./run-bugfix.sh reset # Clear all bugfix state
|
|
203
203
|
./run-bugfix.sh help
|
|
204
204
|
```
|
|
@@ -212,7 +212,7 @@ Processes bugs by: **severity** (critical > high > medium > low) then **priority
|
|
|
212
212
|
### `retry-bugfix.sh` — Retry Single Failed Bug
|
|
213
213
|
|
|
214
214
|
```bash
|
|
215
|
-
./retry-bugfix.sh <bug-id> [bug-fix-list.json]
|
|
215
|
+
./retry-bugfix.sh <bug-id> [.prizmkit/plans/bug-fix-list.json]
|
|
216
216
|
```
|
|
217
217
|
|
|
218
218
|
Same behavior as `retry-feature.sh` but for bugs. Cleans bug artifacts, generates bugfix prompt, runs one session, updates status.
|
|
@@ -224,14 +224,14 @@ Same behavior as `retry-feature.sh` but for bugs. Cleans bug artifacts, generate
|
|
|
224
224
|
Identical interface to `launch-feature-daemon.sh` but manages `run-bugfix.sh` in background.
|
|
225
225
|
|
|
226
226
|
```bash
|
|
227
|
-
./launch-bugfix-daemon.sh start [bug-fix-list.json] [--env "KEY=VAL ..."]
|
|
227
|
+
./launch-bugfix-daemon.sh start [.prizmkit/plans/bug-fix-list.json] [--env "KEY=VAL ..."]
|
|
228
228
|
./launch-bugfix-daemon.sh stop
|
|
229
229
|
./launch-bugfix-daemon.sh status
|
|
230
230
|
./launch-bugfix-daemon.sh logs [--lines N] [--follow]
|
|
231
|
-
./launch-bugfix-daemon.sh restart [bug-fix-list.json] [--env "KEY=VAL ..."]
|
|
231
|
+
./launch-bugfix-daemon.sh restart [.prizmkit/plans/bug-fix-list.json] [--env "KEY=VAL ..."]
|
|
232
232
|
```
|
|
233
233
|
|
|
234
|
-
Uses
|
|
234
|
+
Uses `.prizmkit/state/bugfix/` instead of `.prizmkit/state/features/`.
|
|
235
235
|
|
|
236
236
|
---
|
|
237
237
|
|
|
@@ -239,7 +239,7 @@ Uses `bugfix-state/` instead of `state/`.
|
|
|
239
239
|
|
|
240
240
|
### `scripts/init-pipeline.py` — Initialize Feature Pipeline State
|
|
241
241
|
|
|
242
|
-
Validates
|
|
242
|
+
Validates `.prizmkit/plans/feature-list.json` schema and creates the `state/` directory structure.
|
|
243
243
|
|
|
244
244
|
```bash
|
|
245
245
|
python3 scripts/init-pipeline.py \
|
|
@@ -249,7 +249,7 @@ python3 scripts/init-pipeline.py \
|
|
|
249
249
|
|
|
250
250
|
**Validation checks:**
|
|
251
251
|
- Schema: `$schema == "dev-pipeline-feature-list-v1"`
|
|
252
|
-
- Required fields: `
|
|
252
|
+
- Required fields: `project_name` (string), `features` (non-empty array)
|
|
253
253
|
- Per-feature: `id` (F-NNN), `title`, `description`, `priority` (high/medium/low), `dependencies` (array of F-NNN), `acceptance_criteria` (array), `status`
|
|
254
254
|
- Dependency DAG cycle detection (Kahn's algorithm)
|
|
255
255
|
|
|
@@ -295,7 +295,7 @@ python3 scripts/init-dev-team.py \
|
|
|
295
295
|
|
|
296
296
|
### `scripts/generate-bootstrap-prompt.py` — Generate Feature Session Prompt
|
|
297
297
|
|
|
298
|
-
Renders a session-specific bootstrap prompt from a tier template and feature-list.json.
|
|
298
|
+
Renders a session-specific bootstrap prompt from a tier template and .prizmkit/plans/feature-list.json.
|
|
299
299
|
|
|
300
300
|
```bash
|
|
301
301
|
python3 scripts/generate-bootstrap-prompt.py \
|
|
@@ -325,7 +325,7 @@ python3 scripts/generate-bootstrap-prompt.py \
|
|
|
325
325
|
{ "success": true, "output_path": "/absolute/path/prompt.md", "model": "claude-sonnet-4.6" }
|
|
326
326
|
```
|
|
327
327
|
|
|
328
|
-
The `model` field is extracted from the feature's `"model"` field in feature-list.json (empty string if not specified). Used by `run-feature.sh` and `retry-feature.sh` to set `--model` on the AI CLI.
|
|
328
|
+
The `model` field is extracted from the feature's `"model"` field in .prizmkit/plans/feature-list.json (empty string if not specified). Used by `run-feature.sh` and `retry-feature.sh` to set `--model` on the AI CLI.
|
|
329
329
|
|
|
330
330
|
**Conditional blocks resolved:**
|
|
331
331
|
- `{{IF_RESUME}}` / `{{IF_FRESH_START}}` — Resume vs fresh start
|
|
@@ -600,10 +600,10 @@ Also exports: `log_info`, `log_warn`, `log_error`, `log_success` (with timestamp
|
|
|
600
600
|
```bash
|
|
601
601
|
# All env vars in one invocation
|
|
602
602
|
MAX_RETRIES=5 SESSION_TIMEOUT=7200 MODEL=claude-sonnet-4.6 VERBOSE=1 \
|
|
603
|
-
./dev-pipeline/run-feature.sh run feature-list.json
|
|
603
|
+
./dev-pipeline/run-feature.sh run .prizmkit/plans/feature-list.json
|
|
604
604
|
|
|
605
605
|
# Via daemon with --env
|
|
606
|
-
./dev-pipeline/launch-feature-daemon.sh start feature-list.json \
|
|
606
|
+
./dev-pipeline/launch-feature-daemon.sh start .prizmkit/plans/feature-list.json \
|
|
607
607
|
--mode standard \
|
|
608
608
|
--env "MAX_RETRIES=5 SESSION_TIMEOUT=3600 AUTO_PUSH=1"
|
|
609
609
|
```
|
|
@@ -614,13 +614,13 @@ MAX_RETRIES=5 SESSION_TIMEOUT=7200 MODEL=claude-sonnet-4.6 VERBOSE=1 \
|
|
|
614
614
|
|
|
615
615
|
Model is resolved with this priority chain (highest first):
|
|
616
616
|
|
|
617
|
-
1. **Per-feature `model` field** in
|
|
617
|
+
1. **Per-feature `model` field** in `.prizmkit/plans/feature-list.json`
|
|
618
618
|
2. **`MODEL` environment variable**
|
|
619
619
|
3. **No `--model` flag** (CLI uses its default)
|
|
620
620
|
|
|
621
621
|
### Per-Feature Model
|
|
622
622
|
|
|
623
|
-
Specify a model for individual features in
|
|
623
|
+
Specify a model for individual features in `.prizmkit/plans/feature-list.json`:
|
|
624
624
|
|
|
625
625
|
```json
|
|
626
626
|
{
|
|
@@ -640,7 +640,7 @@ Specify a model for individual features in `feature-list.json`:
|
|
|
640
640
|
|
|
641
641
|
```bash
|
|
642
642
|
# All features without a per-feature model use Sonnet
|
|
643
|
-
MODEL=claude-sonnet-4.6 ./dev-pipeline/run-feature.sh run feature-list.json
|
|
643
|
+
MODEL=claude-sonnet-4.6 ./dev-pipeline/run-feature.sh run .prizmkit/plans/feature-list.json
|
|
644
644
|
|
|
645
645
|
# Retry with Opus
|
|
646
646
|
MODEL=claude-opus-4.6 ./dev-pipeline/retry-feature.sh F-007
|
|
@@ -691,7 +691,7 @@ To permanently configure, create `.prizmkit/config.json`:
|
|
|
691
691
|
Or override per-invocation:
|
|
692
692
|
|
|
693
693
|
```bash
|
|
694
|
-
AI_CLI=claude ./dev-pipeline/run-feature.sh run feature-list.json
|
|
694
|
+
AI_CLI=claude ./dev-pipeline/run-feature.sh run .prizmkit/plans/feature-list.json
|
|
695
695
|
```
|
|
696
696
|
|
|
697
697
|
### Testing AI CLI (`test-cli`)
|
|
@@ -775,62 +775,62 @@ Features are executed in dependency order via DAG:
|
|
|
775
775
|
|
|
776
776
|
```bash
|
|
777
777
|
# Live tail current session
|
|
778
|
-
tail -f
|
|
778
|
+
tail -f .prizmkit/state/features/features/F-*/sessions/*/logs/session.log
|
|
779
779
|
|
|
780
780
|
# Specific feature
|
|
781
|
-
tail -f
|
|
781
|
+
tail -f .prizmkit/state/features/features/F-003/sessions/*/logs/session.log
|
|
782
782
|
|
|
783
783
|
# Review completed session
|
|
784
|
-
cat
|
|
784
|
+
cat .prizmkit/state/features/features/F-003/sessions/F-003-*/logs/session.log | less
|
|
785
785
|
```
|
|
786
786
|
|
|
787
787
|
### Pause & Resume
|
|
788
788
|
|
|
789
789
|
- **Ctrl+C** triggers graceful shutdown — current state is saved
|
|
790
790
|
- **Re-running** `./run-feature.sh run` resumes from where it left off (completed features skipped)
|
|
791
|
-
- Force resume from a phase: `./run-feature.sh run feature-list.json --resume-phase 6`
|
|
791
|
+
- Force resume from a phase: `./run-feature.sh run .prizmkit/plans/feature-list.json --resume-phase 6`
|
|
792
792
|
|
|
793
793
|
### Manual Intervention
|
|
794
794
|
|
|
795
795
|
```bash
|
|
796
796
|
# Check what failed
|
|
797
|
-
./dev-pipeline/run-feature.sh status feature-list.json
|
|
797
|
+
./dev-pipeline/run-feature.sh status .prizmkit/plans/feature-list.json
|
|
798
798
|
|
|
799
799
|
# Review session logs
|
|
800
|
-
cat
|
|
800
|
+
cat .prizmkit/state/features/features/F-XXX/sessions/*/logs/session.log
|
|
801
801
|
|
|
802
802
|
# Option A: Fix manually and mark complete
|
|
803
803
|
python3 dev-pipeline/scripts/update-feature-status.py \
|
|
804
|
-
--feature-list feature-list.json \
|
|
805
|
-
--state-dir
|
|
804
|
+
--feature-list .prizmkit/plans/feature-list.json \
|
|
805
|
+
--state-dir .prizmkit/state/features \
|
|
806
806
|
--feature-id F-XXX --action complete
|
|
807
807
|
|
|
808
808
|
# Option B: Reset for retry
|
|
809
809
|
python3 dev-pipeline/scripts/update-feature-status.py \
|
|
810
|
-
--feature-list feature-list.json \
|
|
811
|
-
--state-dir
|
|
810
|
+
--feature-list .prizmkit/plans/feature-list.json \
|
|
811
|
+
--state-dir .prizmkit/state/features \
|
|
812
812
|
--feature-id F-XXX --action reset
|
|
813
813
|
|
|
814
814
|
# Resume
|
|
815
|
-
./dev-pipeline/run-feature.sh run feature-list.json
|
|
815
|
+
./dev-pipeline/run-feature.sh run .prizmkit/plans/feature-list.json
|
|
816
816
|
```
|
|
817
817
|
|
|
818
818
|
---
|
|
819
819
|
|
|
820
820
|
## Bug Fix Pipeline
|
|
821
821
|
|
|
822
|
-
The bug fix pipeline provides the same autonomous outer-loop as the feature pipeline, tailored for
|
|
822
|
+
The bug fix pipeline provides the same autonomous outer-loop as the feature pipeline, tailored for `.prizmkit/plans/bug-fix-list.json`.
|
|
823
823
|
|
|
824
824
|
### Quick Start
|
|
825
825
|
|
|
826
826
|
```bash
|
|
827
827
|
# 1. Generate bug fix list (via bug-planner skill)
|
|
828
828
|
# 2. Run foreground
|
|
829
|
-
./dev-pipeline/run-bugfix.sh run bug-fix-list.json
|
|
829
|
+
./dev-pipeline/run-bugfix.sh run .prizmkit/plans/bug-fix-list.json
|
|
830
830
|
# 3. Or as daemon
|
|
831
|
-
./dev-pipeline/launch-bugfix-daemon.sh start bug-fix-list.json
|
|
831
|
+
./dev-pipeline/launch-bugfix-daemon.sh start .prizmkit/plans/bug-fix-list.json
|
|
832
832
|
# 4. Check progress
|
|
833
|
-
./dev-pipeline/run-bugfix.sh status bug-fix-list.json
|
|
833
|
+
./dev-pipeline/run-bugfix.sh status .prizmkit/plans/bug-fix-list.json
|
|
834
834
|
```
|
|
835
835
|
|
|
836
836
|
### Bug Fix Execution Flow
|
|
@@ -862,7 +862,7 @@ run-bugfix.sh main loop
|
|
|
862
862
|
### Bug Fix State Directory
|
|
863
863
|
|
|
864
864
|
```
|
|
865
|
-
|
|
865
|
+
.prizmkit/state/bugfix/ # Runtime state (gitignored)
|
|
866
866
|
+-- pipeline.json
|
|
867
867
|
+-- bugs/B-XXX/
|
|
868
868
|
+-- status.json
|
|
@@ -875,9 +875,9 @@ dev-pipeline/bugfix-state/ # Runtime state (gitignored)
|
|
|
875
875
|
|
|
876
876
|
| Aspect | Feature Pipeline | Bug Fix Pipeline |
|
|
877
877
|
|--------|-----------------|------------------|
|
|
878
|
-
| Input file |
|
|
878
|
+
| Input file | `.prizmkit/plans/feature-list.json` | `.prizmkit/plans/bug-fix-list.json` |
|
|
879
879
|
| ID format | `F-NNN` | `B-NNN` |
|
|
880
|
-
| State dir |
|
|
880
|
+
| State dir | `.prizmkit/state/features/` | `.prizmkit/state/bugfix/` |
|
|
881
881
|
| Ordering | Dependencies DAG + priority | Severity + priority (no deps) |
|
|
882
882
|
| Phases | Tiered (3-10 phases) | 5-phase (triage-reproduce-fix-verify-commit) |
|
|
883
883
|
| Commit prefix | `feat(<scope>):` | `fix(<scope>):` |
|
|
@@ -897,7 +897,7 @@ dev-pipeline/
|
|
|
897
897
|
+-- retry-bugfix.sh # Retry single failed bug
|
|
898
898
|
+-- launch-bugfix-daemon.sh # Background daemon for bugfix pipeline
|
|
899
899
|
+-- README.md # This file
|
|
900
|
-
+-- .gitignore # Ignores state/,
|
|
900
|
+
+-- .gitignore # Ignores .prizmkit/state/, __pycache__/
|
|
901
901
|
|
|
|
902
902
|
+-- lib/
|
|
903
903
|
| +-- common.sh # CLI detection, deps check, logging helpers
|
|
@@ -906,8 +906,8 @@ dev-pipeline/
|
|
|
906
906
|
|
|
|
907
907
|
+-- scripts/
|
|
908
908
|
| +-- utils.py # Shared Python utilities (JSON I/O, logging)
|
|
909
|
-
| +-- init-pipeline.py # Validate feature-list.json + create state/
|
|
910
|
-
| +-- init-bugfix-pipeline.py # Validate bug-fix-list.json + create
|
|
909
|
+
| +-- init-pipeline.py # Validate .prizmkit/plans/feature-list.json + create .prizmkit/state/features/
|
|
910
|
+
| +-- init-bugfix-pipeline.py # Validate .prizmkit/plans/bug-fix-list.json + create .prizmkit/state/bugfix/
|
|
911
911
|
| +-- init-dev-team.py # Create .prizmkit/specs/{slug}/ directories
|
|
912
912
|
| +-- generate-bootstrap-prompt.py # Render feature session prompt from template
|
|
913
913
|
| +-- generate-bugfix-prompt.py # Render bugfix session prompt from template
|
|
@@ -924,8 +924,8 @@ dev-pipeline/
|
|
|
924
924
|
| +-- bootstrap-tier3.md # Tier 3 prompt template (full team, full)
|
|
925
925
|
| +-- bootstrap-prompt.md # Legacy monolithic template (fallback)
|
|
926
926
|
| +-- bugfix-bootstrap-prompt.md # Bug-fix session prompt template
|
|
927
|
-
| +-- feature-list-schema.json # JSON schema for feature-list.json
|
|
928
|
-
| +-- bug-fix-list-schema.json # JSON schema for bug-fix-list.json
|
|
927
|
+
| +-- feature-list-schema.json # JSON schema for .prizmkit/plans/feature-list.json
|
|
928
|
+
| +-- bug-fix-list-schema.json # JSON schema for .prizmkit/plans/bug-fix-list.json
|
|
929
929
|
| +-- session-status-schema.json # JSON schema for session-status.json
|
|
930
930
|
|
|
|
931
931
|
+-- assets/
|
|
@@ -938,19 +938,19 @@ dev-pipeline/
|
|
|
938
938
|
| +-- test_generate_bugfix_prompt.py # Tests for bugfix prompt generation
|
|
939
939
|
| +-- test_utils.py # Tests for shared utilities
|
|
940
940
|
|
|
|
941
|
-
+-- state/ # Feature pipeline runtime state (gitignored)
|
|
941
|
+
+-- .prizmkit/state/features/ # Feature pipeline runtime state (gitignored)
|
|
942
942
|
| +-- pipeline.json
|
|
943
943
|
| +-- .pipeline.pid # Daemon PID file
|
|
944
944
|
| +-- .pipeline-meta.json # Daemon metadata
|
|
945
945
|
| +-- pipeline-daemon.log # Daemon log (50MB rotation)
|
|
946
|
-
| +--
|
|
946
|
+
| +-- F-XXX/
|
|
947
947
|
| +-- status.json
|
|
948
948
|
| +-- sessions/F-XXX-YYYYMMDDHHMMSS/
|
|
949
949
|
| +-- bootstrap-prompt.md
|
|
950
950
|
| +-- logs/session.log
|
|
951
951
|
|
|
|
952
|
-
+--
|
|
953
|
-
+-- (same structure as state/ but with
|
|
952
|
+
+-- .prizmkit/state/bugfix/ # Bug pipeline runtime state (gitignored)
|
|
953
|
+
+-- (same structure as .prizmkit/state/features/ but with B-XXX/ IDs)
|
|
954
954
|
```
|
|
955
955
|
|
|
956
956
|
---
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "dev-pipeline-feature-list-v1",
|
|
3
|
-
"
|
|
4
|
-
"
|
|
3
|
+
"project_name": "TaskFlow",
|
|
4
|
+
"project_description": "A modern task management application with team collaboration, real-time updates, and analytics dashboard",
|
|
5
5
|
"created_at": "2026-03-04T10:00:00Z",
|
|
6
6
|
"created_by": "feature-planner",
|
|
7
7
|
"source_spec": ".prizmkit/specs/app-spec.md",
|
|
@@ -8,23 +8,24 @@ set -euo pipefail
|
|
|
8
8
|
# log consolidation, and lifecycle commands.
|
|
9
9
|
#
|
|
10
10
|
# Usage:
|
|
11
|
-
# ./launch-bugfix-daemon.sh start [bug-fix-list.json] [--env "KEY=VAL ..."]
|
|
11
|
+
# ./launch-bugfix-daemon.sh start [.prizmkit/plans/bug-fix-list.json] [--env "KEY=VAL ..."]
|
|
12
12
|
# ./launch-bugfix-daemon.sh stop
|
|
13
13
|
# ./launch-bugfix-daemon.sh status
|
|
14
14
|
# ./launch-bugfix-daemon.sh logs [--lines N] [--follow]
|
|
15
|
-
# ./launch-bugfix-daemon.sh restart [bug-fix-list.json] [--env "KEY=VAL ..."]
|
|
15
|
+
# ./launch-bugfix-daemon.sh restart [.prizmkit/plans/bug-fix-list.json] [--env "KEY=VAL ..."]
|
|
16
16
|
#
|
|
17
17
|
# NOTE:
|
|
18
18
|
# In AI skill sessions, always use this daemon wrapper.
|
|
19
19
|
# Do NOT call `run-bugfix.sh run ...` directly, because foreground sessions may be killed by CLI timeout.
|
|
20
20
|
#
|
|
21
21
|
# Files managed:
|
|
22
|
-
# bugfix
|
|
23
|
-
#
|
|
22
|
+
# .prizmkit/state/bugfix/.pipeline.pid - PID of the background run-bugfix.sh process
|
|
23
|
+
# .prizmkit/state/bugfix/pipeline-daemon.log - Consolidated stdout+stderr
|
|
24
24
|
# ============================================================
|
|
25
25
|
|
|
26
26
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
27
|
-
|
|
27
|
+
PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
|
|
28
|
+
STATE_DIR="${PROJECT_ROOT}/.prizmkit/state/bugfix"
|
|
28
29
|
PID_FILE="$STATE_DIR/.pipeline.pid"
|
|
29
30
|
LOG_FILE="$STATE_DIR/pipeline-daemon.log"
|
|
30
31
|
RUN_SCRIPT="$SCRIPT_DIR/run-bugfix.sh"
|
|
@@ -97,7 +98,7 @@ cmd_start() {
|
|
|
97
98
|
done
|
|
98
99
|
|
|
99
100
|
if [[ -z "$bug_list" ]]; then
|
|
100
|
-
bug_list="bug-fix-list.json"
|
|
101
|
+
bug_list=".prizmkit/plans/bug-fix-list.json"
|
|
101
102
|
fi
|
|
102
103
|
if [[ ! "$bug_list" = /* ]]; then
|
|
103
104
|
bug_list="$(cd "$(dirname "$bug_list")" 2>/dev/null && pwd)/$(basename "$bug_list")"
|
|
@@ -105,7 +106,7 @@ cmd_start() {
|
|
|
105
106
|
|
|
106
107
|
if [[ ! -f "$bug_list" ]]; then
|
|
107
108
|
log_error "Bug fix list not found: $bug_list"
|
|
108
|
-
log_error "Run the bug-planner skill first to generate bug-fix-list.json"
|
|
109
|
+
log_error "Run the bug-planner skill first to generate .prizmkit/plans/bug-fix-list.json"
|
|
109
110
|
exit 2
|
|
110
111
|
fi
|
|
111
112
|
|
|
@@ -415,15 +416,15 @@ show_help() {
|
|
|
415
416
|
Usage: launch-bugfix-daemon.sh <command> [options]
|
|
416
417
|
|
|
417
418
|
Commands:
|
|
418
|
-
start [bug-fix-list.json] [--env "K=V ..."] Start bugfix pipeline in background
|
|
419
|
+
start [.prizmkit/plans/bug-fix-list.json] [--env "K=V ..."] Start bugfix pipeline in background
|
|
419
420
|
stop Gracefully stop pipeline
|
|
420
421
|
status Check if pipeline is running
|
|
421
422
|
logs [--lines N] [--follow] View pipeline logs
|
|
422
|
-
restart [bug-fix-list.json] [--env "K=V ..."] Stop + start pipeline
|
|
423
|
+
restart [.prizmkit/plans/bug-fix-list.json] [--env "K=V ..."] Stop + start pipeline
|
|
423
424
|
help Show this help
|
|
424
425
|
|
|
425
426
|
Examples:
|
|
426
|
-
./launch-bugfix-daemon.sh start # Start with default bug-fix-list.json
|
|
427
|
+
./launch-bugfix-daemon.sh start # Start with default .prizmkit/plans/bug-fix-list.json
|
|
427
428
|
./launch-bugfix-daemon.sh start my-bugs.json # Start with custom bug list
|
|
428
429
|
./launch-bugfix-daemon.sh start --env "MAX_RETRIES=5"
|
|
429
430
|
./launch-bugfix-daemon.sh status # Check if running (JSON on stdout)
|
|
@@ -8,23 +8,24 @@ set -euo pipefail
|
|
|
8
8
|
# log consolidation, and lifecycle commands.
|
|
9
9
|
#
|
|
10
10
|
# Usage:
|
|
11
|
-
# ./launch-feature-daemon.sh start [feature-list.json] [--mode <mode>] [--env "KEY=VAL ..."]
|
|
11
|
+
# ./launch-feature-daemon.sh start [.prizmkit/plans/feature-list.json] [--mode <mode>] [--env "KEY=VAL ..."]
|
|
12
12
|
# ./launch-feature-daemon.sh stop
|
|
13
13
|
# ./launch-feature-daemon.sh status
|
|
14
14
|
# ./launch-feature-daemon.sh logs [--lines N] [--follow]
|
|
15
|
-
# ./launch-feature-daemon.sh restart [feature-list.json] [--mode <mode>] [--env "KEY=VAL ..."]
|
|
15
|
+
# ./launch-feature-daemon.sh restart [.prizmkit/plans/feature-list.json] [--mode <mode>] [--env "KEY=VAL ..."]
|
|
16
16
|
#
|
|
17
17
|
# NOTE:
|
|
18
18
|
# In AI skill sessions, always use this daemon wrapper.
|
|
19
19
|
# Do NOT call `run-feature.sh run ...` directly, because foreground sessions may be killed by CLI timeout.
|
|
20
20
|
#
|
|
21
21
|
# Files managed:
|
|
22
|
-
# state/.pipeline.pid - PID of the background run-feature.sh process
|
|
23
|
-
# state/pipeline-daemon.log - Consolidated stdout+stderr from run-feature.sh
|
|
22
|
+
# .prizmkit/state/features/.pipeline.pid - PID of the background run-feature.sh process
|
|
23
|
+
# .prizmkit/state/features/pipeline-daemon.log - Consolidated stdout+stderr from run-feature.sh
|
|
24
24
|
# ============================================================
|
|
25
25
|
|
|
26
26
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
27
|
-
|
|
27
|
+
PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
|
|
28
|
+
STATE_DIR="${PROJECT_ROOT}/.prizmkit/state/features"
|
|
28
29
|
PID_FILE="$STATE_DIR/.pipeline.pid"
|
|
29
30
|
LOG_FILE="$STATE_DIR/pipeline-daemon.log"
|
|
30
31
|
RUN_SCRIPT="$SCRIPT_DIR/run-feature.sh"
|
|
@@ -151,7 +152,7 @@ cmd_start() {
|
|
|
151
152
|
|
|
152
153
|
# Default feature list
|
|
153
154
|
if [[ -z "$feature_list" ]]; then
|
|
154
|
-
feature_list="feature-list.json"
|
|
155
|
+
feature_list=".prizmkit/plans/feature-list.json"
|
|
155
156
|
fi
|
|
156
157
|
|
|
157
158
|
# Resolve to absolute path
|
|
@@ -162,7 +163,7 @@ cmd_start() {
|
|
|
162
163
|
# Validate feature list
|
|
163
164
|
if [[ ! -f "$feature_list" ]]; then
|
|
164
165
|
log_error "Feature list not found: $feature_list"
|
|
165
|
-
log_error "Run the feature-planner skill first to generate feature-list.json"
|
|
166
|
+
log_error "Run the feature-planner skill first to generate .prizmkit/plans/feature-list.json"
|
|
166
167
|
exit 2
|
|
167
168
|
fi
|
|
168
169
|
|
|
@@ -582,11 +583,11 @@ show_help() {
|
|
|
582
583
|
Usage: launch-feature-daemon.sh <command> [options]
|
|
583
584
|
|
|
584
585
|
Commands:
|
|
585
|
-
start [feature-list.json] [--mode <mode>] [--features <filter>] [--env "K=V ..."] Start pipeline in background
|
|
586
|
+
start [.prizmkit/plans/feature-list.json] [--mode <mode>] [--features <filter>] [--env "K=V ..."] Start pipeline in background
|
|
586
587
|
stop Gracefully stop pipeline
|
|
587
588
|
status Check if pipeline is running
|
|
588
589
|
logs [--lines N] [--follow] View pipeline logs
|
|
589
|
-
restart [feature-list.json] [--mode <mode>] [--features <filter>] [--env "K=V ..."] Stop + start pipeline
|
|
590
|
+
restart [.prizmkit/plans/feature-list.json] [--mode <mode>] [--features <filter>] [--env "K=V ..."] Stop + start pipeline
|
|
590
591
|
help Show this help
|
|
591
592
|
|
|
592
593
|
Options:
|
|
@@ -597,14 +598,14 @@ Options:
|
|
|
597
598
|
--env "KEY=VAL ..." Set environment variables
|
|
598
599
|
|
|
599
600
|
Examples:
|
|
600
|
-
./launch-feature-daemon.sh start # Start with default feature-list.json
|
|
601
|
+
./launch-feature-daemon.sh start # Start with default .prizmkit/plans/feature-list.json
|
|
601
602
|
./launch-feature-daemon.sh start my-features.json # Start with custom feature list
|
|
602
603
|
./launch-feature-daemon.sh start --features F-001:F-005 # Run only features F-001 through F-005
|
|
603
604
|
./launch-feature-daemon.sh start --features F-001,F-003,F-007 # Run specific features
|
|
604
605
|
./launch-feature-daemon.sh start --mode full # Full mode for complex features
|
|
605
606
|
./launch-feature-daemon.sh start --critic # Enable adversarial critic review
|
|
606
607
|
./launch-feature-daemon.sh start --env "MAX_RETRIES=5 SESSION_TIMEOUT=7200"
|
|
607
|
-
./launch-feature-daemon.sh start feature-list.json --mode full --critic --env "VERBOSE=1"
|
|
608
|
+
./launch-feature-daemon.sh start .prizmkit/plans/feature-list.json --mode full --critic --env "VERBOSE=1"
|
|
608
609
|
./launch-feature-daemon.sh status # Check if running (JSON on stdout)
|
|
609
610
|
./launch-feature-daemon.sh logs --follow # Live log tailing
|
|
610
611
|
./launch-feature-daemon.sh logs --lines 100 # Last 100 lines
|
|
@@ -8,23 +8,24 @@ set -euo pipefail
|
|
|
8
8
|
# log consolidation, and lifecycle commands.
|
|
9
9
|
#
|
|
10
10
|
# Usage:
|
|
11
|
-
# ./launch-refactor-daemon.sh start [refactor-list.json] [--env "KEY=VAL ..."]
|
|
11
|
+
# ./launch-refactor-daemon.sh start [.prizmkit/plans/refactor-list.json] [--env "KEY=VAL ..."]
|
|
12
12
|
# ./launch-refactor-daemon.sh stop
|
|
13
13
|
# ./launch-refactor-daemon.sh status
|
|
14
14
|
# ./launch-refactor-daemon.sh logs [--lines N] [--follow]
|
|
15
|
-
# ./launch-refactor-daemon.sh restart [refactor-list.json] [--env "KEY=VAL ..."]
|
|
15
|
+
# ./launch-refactor-daemon.sh restart [.prizmkit/plans/refactor-list.json] [--env "KEY=VAL ..."]
|
|
16
16
|
#
|
|
17
17
|
# NOTE:
|
|
18
18
|
# In AI skill sessions, always use this daemon wrapper.
|
|
19
19
|
# Do NOT call `run-refactor.sh run ...` directly, because foreground sessions may be killed by CLI timeout.
|
|
20
20
|
#
|
|
21
21
|
# Files managed:
|
|
22
|
-
# refactor
|
|
23
|
-
#
|
|
22
|
+
# .prizmkit/state/refactor/.pipeline.pid - PID of the background run-refactor.sh process
|
|
23
|
+
# .prizmkit/state/refactor/pipeline-daemon.log - Consolidated stdout+stderr
|
|
24
24
|
# ============================================================
|
|
25
25
|
|
|
26
26
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
27
|
-
|
|
27
|
+
PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
|
|
28
|
+
STATE_DIR="${PROJECT_ROOT}/.prizmkit/state/refactor"
|
|
28
29
|
PID_FILE="$STATE_DIR/.pipeline.pid"
|
|
29
30
|
LOG_FILE="$STATE_DIR/pipeline-daemon.log"
|
|
30
31
|
RUN_SCRIPT="$SCRIPT_DIR/run-refactor.sh"
|
|
@@ -97,7 +98,7 @@ cmd_start() {
|
|
|
97
98
|
done
|
|
98
99
|
|
|
99
100
|
if [[ -z "$refactor_list" ]]; then
|
|
100
|
-
refactor_list="refactor-list.json"
|
|
101
|
+
refactor_list=".prizmkit/plans/refactor-list.json"
|
|
101
102
|
fi
|
|
102
103
|
if [[ ! "$refactor_list" = /* ]]; then
|
|
103
104
|
refactor_list="$(cd "$(dirname "$refactor_list")" 2>/dev/null && pwd)/$(basename "$refactor_list")"
|
|
@@ -105,7 +106,7 @@ cmd_start() {
|
|
|
105
106
|
|
|
106
107
|
if [[ ! -f "$refactor_list" ]]; then
|
|
107
108
|
log_error "Refactor list not found: $refactor_list"
|
|
108
|
-
log_error "Run the refactor-planner skill first to generate refactor-list.json"
|
|
109
|
+
log_error "Run the refactor-planner skill first to generate .prizmkit/plans/refactor-list.json"
|
|
109
110
|
exit 2
|
|
110
111
|
fi
|
|
111
112
|
|
|
@@ -415,15 +416,15 @@ show_help() {
|
|
|
415
416
|
Usage: launch-refactor-daemon.sh <command> [options]
|
|
416
417
|
|
|
417
418
|
Commands:
|
|
418
|
-
start [refactor-list.json] [--env "K=V ..."] Start refactor pipeline in background
|
|
419
|
+
start [.prizmkit/plans/refactor-list.json] [--env "K=V ..."] Start refactor pipeline in background
|
|
419
420
|
stop Gracefully stop pipeline
|
|
420
421
|
status Check if pipeline is running
|
|
421
422
|
logs [--lines N] [--follow] View pipeline logs
|
|
422
|
-
restart [refactor-list.json] [--env "K=V ..."] Stop + start pipeline
|
|
423
|
+
restart [.prizmkit/plans/refactor-list.json] [--env "K=V ..."] Stop + start pipeline
|
|
423
424
|
help Show this help
|
|
424
425
|
|
|
425
426
|
Examples:
|
|
426
|
-
./launch-refactor-daemon.sh start # Start with default refactor-list.json
|
|
427
|
+
./launch-refactor-daemon.sh start # Start with default .prizmkit/plans/refactor-list.json
|
|
427
428
|
./launch-refactor-daemon.sh start my-refactors.json # Start with custom refactor list
|
|
428
429
|
./launch-refactor-daemon.sh start --env "MAX_RETRIES=5"
|
|
429
430
|
./launch-refactor-daemon.sh start --env "STRICT_BEHAVIOR_CHECK=0"
|