prizmkit 1.1.1 → 1.1.3

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 (99) hide show
  1. package/bundled/VERSION.json +3 -3
  2. package/bundled/adapters/claude/agent-adapter.js +18 -0
  3. package/bundled/adapters/claude/command-adapter.js +1 -27
  4. package/bundled/agents/prizm-dev-team-critic.md +2 -0
  5. package/bundled/agents/prizm-dev-team-dev.md +2 -0
  6. package/bundled/agents/prizm-dev-team-reviewer.md +2 -0
  7. package/bundled/dev-pipeline/README.md +63 -63
  8. package/bundled/dev-pipeline/assets/feature-list-example.json +1 -1
  9. package/bundled/dev-pipeline/assets/prizm-dev-team-integration.md +1 -1
  10. package/bundled/dev-pipeline/{launch-daemon.sh → launch-feature-daemon.sh} +33 -33
  11. package/bundled/dev-pipeline/launch-refactor-daemon.sh +454 -0
  12. package/bundled/dev-pipeline/lib/branch.sh +1 -1
  13. package/bundled/dev-pipeline/reset-feature.sh +3 -3
  14. package/bundled/dev-pipeline/reset-refactor.sh +312 -0
  15. package/bundled/dev-pipeline/{retry-bug.sh → retry-bugfix.sh} +47 -59
  16. package/bundled/dev-pipeline/retry-feature.sh +41 -54
  17. package/bundled/dev-pipeline/retry-refactor.sh +358 -0
  18. package/bundled/dev-pipeline/run-bugfix.sh +6 -0
  19. package/bundled/dev-pipeline/{run.sh → run-feature.sh} +31 -31
  20. package/bundled/dev-pipeline/run-refactor.sh +787 -0
  21. package/bundled/dev-pipeline/scripts/generate-bootstrap-prompt.py +177 -10
  22. package/bundled/dev-pipeline/scripts/generate-refactor-prompt.py +419 -0
  23. package/bundled/dev-pipeline/scripts/init-refactor-pipeline.py +393 -0
  24. package/bundled/dev-pipeline/scripts/update-refactor-status.py +726 -0
  25. package/bundled/dev-pipeline/templates/agent-prompts/critic-code-challenge.md +13 -0
  26. package/bundled/dev-pipeline/templates/agent-prompts/critic-plan-challenge.md +7 -0
  27. package/bundled/dev-pipeline/templates/agent-prompts/dev-fix.md +7 -0
  28. package/bundled/dev-pipeline/templates/agent-prompts/dev-implement.md +26 -0
  29. package/bundled/dev-pipeline/templates/agent-prompts/dev-resume.md +5 -0
  30. package/bundled/dev-pipeline/templates/agent-prompts/reviewer-analyze.md +5 -0
  31. package/bundled/dev-pipeline/templates/agent-prompts/reviewer-review.md +12 -0
  32. package/bundled/dev-pipeline/templates/bootstrap-tier1.md +29 -2
  33. package/bundled/dev-pipeline/templates/bootstrap-tier2.md +8 -7
  34. package/bundled/dev-pipeline/templates/bootstrap-tier3.md +11 -10
  35. package/bundled/dev-pipeline/templates/bugfix-bootstrap-prompt.md +2 -3
  36. package/bundled/dev-pipeline/templates/feature-list-schema.json +1 -1
  37. package/bundled/dev-pipeline/templates/refactor-list-schema.json +159 -0
  38. package/bundled/dev-pipeline/templates/sections/ac-verification-checklist.md +13 -0
  39. package/bundled/dev-pipeline/templates/sections/feature-context.md +1 -1
  40. package/bundled/dev-pipeline/templates/sections/phase-analyze-agent.md +9 -8
  41. package/bundled/dev-pipeline/templates/sections/phase-analyze-full.md +9 -8
  42. package/bundled/dev-pipeline/templates/sections/phase-browser-verification.md +2 -1
  43. package/bundled/dev-pipeline/templates/sections/phase-critic-code.md +8 -10
  44. package/bundled/dev-pipeline/templates/sections/phase-critic-plan-full.md +9 -10
  45. package/bundled/dev-pipeline/templates/sections/phase-critic-plan.md +8 -9
  46. package/bundled/dev-pipeline/templates/sections/phase-implement-agent.md +7 -10
  47. package/bundled/dev-pipeline/templates/sections/phase-implement-full.md +8 -15
  48. package/bundled/dev-pipeline/templates/sections/phase-review-agent.md +7 -12
  49. package/bundled/dev-pipeline/templates/sections/phase-review-full.md +8 -19
  50. package/bundled/dev-pipeline/templates/sections/test-failure-recovery.md +75 -0
  51. package/bundled/skills/_metadata.json +33 -6
  52. package/bundled/skills/app-planner/SKILL.md +105 -320
  53. package/bundled/skills/app-planner/assets/app-design-guide.md +101 -0
  54. package/bundled/skills/app-planner/references/frontend-design-guide.md +1 -1
  55. package/bundled/skills/app-planner/references/project-brief-guide.md +49 -80
  56. package/bundled/skills/bug-fix-workflow/SKILL.md +2 -2
  57. package/bundled/skills/bug-planner/SKILL.md +68 -5
  58. package/bundled/skills/bug-planner/scripts/validate-bug-list.py +3 -2
  59. package/bundled/skills/bugfix-pipeline-launcher/SKILL.md +19 -5
  60. package/bundled/skills/{dev-pipeline-launcher → feature-pipeline-launcher}/SKILL.md +32 -32
  61. package/bundled/skills/feature-planner/SKILL.md +337 -0
  62. package/bundled/skills/{app-planner → feature-planner}/assets/evaluation-guide.md +4 -4
  63. package/bundled/skills/{app-planner → feature-planner}/assets/planning-guide.md +3 -171
  64. package/bundled/skills/{app-planner → feature-planner}/references/browser-interaction.md +6 -5
  65. package/bundled/skills/feature-planner/references/decomposition-patterns.md +75 -0
  66. package/bundled/skills/{app-planner → feature-planner}/references/error-recovery.md +8 -8
  67. package/bundled/skills/{app-planner → feature-planner}/references/incremental-feature-planning.md +1 -1
  68. package/bundled/skills/{app-planner/references/new-app-planning.md → feature-planner/references/new-project-planning.md} +1 -1
  69. package/bundled/skills/{app-planner → feature-planner}/scripts/validate-and-generate.py +4 -4
  70. package/bundled/skills/feature-workflow/SKILL.md +23 -23
  71. package/bundled/skills/prizm-kit/SKILL.md +1 -3
  72. package/bundled/skills/prizmkit-analyze/SKILL.md +2 -5
  73. package/bundled/skills/prizmkit-code-review/SKILL.md +2 -2
  74. package/bundled/skills/prizmkit-committer/SKILL.md +4 -8
  75. package/bundled/skills/prizmkit-deploy/SKILL.md +1 -5
  76. package/bundled/skills/prizmkit-implement/SKILL.md +3 -50
  77. package/bundled/skills/prizmkit-init/SKILL.md +5 -77
  78. package/bundled/skills/prizmkit-plan/SKILL.md +1 -12
  79. package/bundled/skills/prizmkit-prizm-docs/SKILL.md +6 -24
  80. package/bundled/skills/prizmkit-prizm-docs/assets/PRIZM-SPEC.md +21 -0
  81. package/bundled/skills/prizmkit-retrospective/SKILL.md +12 -117
  82. package/bundled/skills/recovery-workflow/SKILL.md +166 -316
  83. package/bundled/skills/recovery-workflow/evals/evals.json +29 -13
  84. package/bundled/skills/recovery-workflow/scripts/detect-recovery-state.py +232 -274
  85. package/bundled/skills/refactor-pipeline-launcher/SKILL.md +352 -0
  86. package/bundled/skills/refactor-planner/SKILL.md +436 -0
  87. package/bundled/skills/refactor-planner/assets/planning-guide.md +292 -0
  88. package/bundled/skills/refactor-planner/references/behavior-preservation.md +301 -0
  89. package/bundled/skills/refactor-planner/references/refactor-scoping-guide.md +221 -0
  90. package/bundled/skills/refactor-planner/scripts/validate-and-generate-refactor.py +786 -0
  91. package/bundled/skills/refactor-workflow/SKILL.md +299 -319
  92. package/package.json +1 -1
  93. package/src/clean.js +3 -3
  94. package/src/scaffold.js +6 -6
  95. package/bundled/skills/prizmkit-plan/assets/spec-template.md +0 -56
  96. package/bundled/skills/prizmkit-plan/references/clarify-guide.md +0 -67
  97. package/src/config.js +0 -504
  98. package/src/prompts.js +0 -210
  99. /package/bundled/skills/{dev-pipeline-launcher → feature-pipeline-launcher}/scripts/preflight-check.py +0 -0
@@ -1,5 +1,5 @@
1
1
  {
2
- "frameworkVersion": "1.1.1",
3
- "bundledAt": "2026-04-02T15:30:36.297Z",
4
- "bundledFrom": "5310137"
2
+ "frameworkVersion": "1.1.3",
3
+ "bundledAt": "2026-04-04T02:47:27.664Z",
4
+ "bundledFrom": "f15da00"
5
5
  }
@@ -45,6 +45,19 @@ export function convertAgent(agentContent, options = {}) {
45
45
  // Claude Code natively supports skills in frontmatter and slash commands in body.
46
46
  let convertedBody = body;
47
47
 
48
+ // Convert disallowedTools: comma-separated string -> deduplicated array
49
+ let disallowedTools = [];
50
+ if (frontmatter.disallowedTools) {
51
+ const rawDisallowed = frontmatter.disallowedTools.split(',').map(t => t.trim());
52
+ const mappedDisallowed = rawDisallowed.map(t => {
53
+ if (TOOL_MAPPING.hasOwnProperty(t)) {
54
+ return TOOL_MAPPING[t];
55
+ }
56
+ return t;
57
+ }).filter(Boolean);
58
+ disallowedTools = [...new Set(mappedDisallowed)];
59
+ }
60
+
48
61
  // Build Claude Code frontmatter
49
62
  const claudeFrontmatter = {
50
63
  name: frontmatter.name,
@@ -53,6 +66,11 @@ export function convertAgent(agentContent, options = {}) {
53
66
  model: options.model || DEFAULT_MODEL,
54
67
  };
55
68
 
69
+ // Add disallowedTools if present
70
+ if (disallowedTools.length > 0) {
71
+ claudeFrontmatter.disallowedTools = disallowedTools;
72
+ }
73
+
56
74
  // Preserve skills field if present (Claude Code supports it natively)
57
75
  if (frontmatter.skills) {
58
76
  claudeFrontmatter.skills = frontmatter.skills;
@@ -15,34 +15,8 @@ import { existsSync, mkdirSync, cpSync, readdirSync } from 'node:fs';
15
15
  import { readFile, writeFile } from 'node:fs/promises';
16
16
  import path from 'path';
17
17
 
18
- const TOOL_SHORTHANDS = new Set([
19
- 'tech_debt_tracker',
20
- 'bug_reproducer',
21
- 'adr_manager',
22
- 'security_audit',
23
- 'dependency_health',
24
- 'ci_cd_generator',
25
- 'deployment_strategy',
26
- 'db_migration',
27
- 'monitoring_setup',
28
- 'error_triage',
29
- 'log_analyzer',
30
- 'perf_profiler',
31
- 'onboarding_generator',
32
- 'api_doc_generator',
33
- ]);
34
-
35
18
  function toClaudePrizmkitCommand(sub) {
36
19
  const normalized = sub.replace(/_/g, '-');
37
-
38
- if (sub.startsWith('tool_')) {
39
- return `prizmkit-${normalized}`;
40
- }
41
-
42
- if (TOOL_SHORTHANDS.has(sub)) {
43
- return `prizmkit-tool-${normalized}`;
44
- }
45
-
46
20
  return `prizmkit-${normalized}`;
47
21
  }
48
22
 
@@ -84,7 +58,7 @@ export function convertSkillToCommand(skillContent, skillName) {
84
58
  convertedBody = convertedBody.replace(
85
59
  /prizmkit\.(\w+)/g,
86
60
  (_match, sub) => {
87
- // Map shorthand references like prizmkit.tech_debt_tracker -> /prizmkit-tool-tech-debt-tracker
61
+ // Map shorthand references like prizmkit.tech_debt_tracker -> /prizmkit-tech-debt-tracker
88
62
  const commandName = toClaudePrizmkitCommand(sub);
89
63
  return `\`/${commandName}\``;
90
64
  }
@@ -2,7 +2,9 @@
2
2
  name: prizm-dev-team-critic
3
3
  description: Adversarial challenger that questions plan fitness and code integration quality. Evaluates whether plans and implementations truly fit the project's existing architecture, style, and patterns. Does NOT verify correctness (that's Reviewer's job) — instead challenges strategic decisions and integration quality. Use when performing adversarial plan or code challenge.
4
4
  tools: Read, Glob, Grep, Bash
5
+ disallowedTools: Agent, Write, Edit
5
6
  model: inherit
7
+ context_level: minimal
6
8
  ---
7
9
 
8
10
  You are the **Critic Agent**, the adversarial challenger of the PrizmKit-integrated Multi-Agent software development collaboration team.
@@ -2,7 +2,9 @@
2
2
  name: prizm-dev-team-dev
3
3
  description: PrizmKit-integrated module implementer (multi-instance). Follows /prizmkit-implement workflow with TDD, marks tasks [x] in plan.md Tasks section, works within assigned Git worktrees. Use when implementing specific feature modules.
4
4
  tools: Read, Write, Edit, Bash, Glob, Grep, TaskCreate, TaskGet, TaskUpdate, TaskList, SendMessage
5
+ disallowedTools: Agent
5
6
  model: inherit
7
+ context_level: full
6
8
  skills: prizmkit-implement, prizmkit-prizm-docs
7
9
  ---
8
10
 
@@ -2,7 +2,9 @@
2
2
  name: prizm-dev-team-reviewer
3
3
  description: PrizmKit-integrated quality reviewer and technical advisor. Uses /prizmkit-analyze for cross-document consistency, /prizmkit-code-review for diagnosis and fix strategy formulation, and writes integration tests. Produces structured Fix Instructions that Dev can follow precisely. Use when performing analysis, testing, or code review.
4
4
  tools: Read, Write, Edit, Bash, Glob, Grep, TaskCreate, TaskGet, TaskUpdate, TaskList, SendMessage
5
+ disallowedTools: Agent
5
6
  model: inherit
7
+ context_level: full
6
8
  skills: prizmkit-code-review, prizmkit-analyze, prizmkit-prizm-docs
7
9
  ---
8
10
 
@@ -7,13 +7,13 @@ Autonomous development pipeline that drives the `prizm-dev-team` multi-agent tea
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
- - `feature-list.json` generated by the `app-planner` skill (for feature pipeline)
10
+ - `feature-list.json` generated by the `feature-planner` skill (for feature pipeline)
11
11
  - `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
- # 1. Generate feature list (via app-planner skill in an AI CLI session)
16
+ # 1. Generate feature list (via feature-planner skill in an AI CLI session)
17
17
  # Output: feature-list.json in project root
18
18
 
19
19
  # 2. Initialize pipeline state
@@ -22,30 +22,30 @@ python3 dev-pipeline/scripts/init-pipeline.py \
22
22
  --state-dir dev-pipeline/state
23
23
 
24
24
  # 3. Run the pipeline (foreground, Ctrl+C to pause, re-run to resume)
25
- ./dev-pipeline/run.sh run feature-list.json
25
+ ./dev-pipeline/run-feature.sh run feature-list.json
26
26
 
27
27
  # 4. Check progress at any time (from another terminal)
28
- ./dev-pipeline/run.sh status feature-list.json
28
+ ./dev-pipeline/run-feature.sh status feature-list.json
29
29
 
30
30
  # 5. Or run as a background daemon
31
- ./dev-pipeline/launch-daemon.sh start feature-list.json
31
+ ./dev-pipeline/launch-feature-daemon.sh start feature-list.json
32
32
  ```
33
33
 
34
34
  ---
35
35
 
36
36
  ## Shell Scripts Reference
37
37
 
38
- ### `run.sh` — Feature Pipeline Runner
38
+ ### `run-feature.sh` — Feature Pipeline Runner
39
39
 
40
40
  Main entry point. Drives the full feature development pipeline.
41
41
 
42
42
  ```bash
43
- ./run.sh run [feature-list.json] # Run all features
44
- ./run.sh run <feature-id> [options] # Run a single feature (F-NNN)
45
- ./run.sh status [feature-list.json] # Show pipeline status
46
- ./run.sh reset # Clear all state in state/
47
- ./run.sh test-cli # Test AI CLI detection
48
- ./run.sh help # Show usage help
43
+ ./run-feature.sh run [feature-list.json] # Run all features
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
46
+ ./run-feature.sh reset # Clear all state in state/
47
+ ./run-feature.sh test-cli # Test AI CLI detection
48
+ ./run-feature.sh help # Show usage help
49
49
  ```
50
50
 
51
51
  **Single-feature options:**
@@ -61,19 +61,19 @@ Main entry point. Drives the full feature development pipeline.
61
61
 
62
62
  ```bash
63
63
  # Run all features
64
- ./dev-pipeline/run.sh run feature-list.json
64
+ ./dev-pipeline/run-feature.sh run feature-list.json
65
65
 
66
66
  # Run a single feature
67
- ./dev-pipeline/run.sh run F-007
67
+ ./dev-pipeline/run-feature.sh run F-007
68
68
 
69
69
  # Dry run — inspect the generated prompt without spawning a session
70
- ./dev-pipeline/run.sh run F-007 --dry-run
70
+ ./dev-pipeline/run-feature.sh run F-007 --dry-run
71
71
 
72
72
  # Resume from Phase 6 (implementation)
73
- ./dev-pipeline/run.sh run feature-list.json --resume-phase 6
73
+ ./dev-pipeline/run-feature.sh run feature-list.json --resume-phase 6
74
74
 
75
75
  # With timeout per session
76
- SESSION_TIMEOUT=7200 ./dev-pipeline/run.sh run feature-list.json
76
+ SESSION_TIMEOUT=7200 ./dev-pipeline/run-feature.sh run feature-list.json
77
77
  ```
78
78
 
79
79
  If `feature-list.json` path is omitted, defaults to `feature-list.json` in the project root.
@@ -138,17 +138,17 @@ Resets a feature's state so it can be re-executed from scratch.
138
138
 
139
139
  ---
140
140
 
141
- ### `launch-daemon.sh` — Feature Pipeline Daemon
141
+ ### `launch-feature-daemon.sh` — Feature Pipeline Daemon
142
142
 
143
- Manages `run.sh` as a background daemon process with PID tracking and log consolidation. Designed for invocation from AI skill sessions.
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-daemon.sh start [feature-list.json] [--mode <mode>] [--env "KEY=VAL ..."]
147
- ./launch-daemon.sh stop
148
- ./launch-daemon.sh status
149
- ./launch-daemon.sh logs [--lines N] [--follow]
150
- ./launch-daemon.sh restart [feature-list.json] [--mode <mode>] [--env "KEY=VAL ..."]
151
- ./launch-daemon.sh help
146
+ ./launch-feature-daemon.sh start [feature-list.json] [--mode <mode>] [--env "KEY=VAL ..."]
147
+ ./launch-feature-daemon.sh stop
148
+ ./launch-feature-daemon.sh status
149
+ ./launch-feature-daemon.sh logs [--lines N] [--follow]
150
+ ./launch-feature-daemon.sh restart [feature-list.json] [--mode <mode>] [--env "KEY=VAL ..."]
151
+ ./launch-feature-daemon.sh help
152
152
  ```
153
153
 
154
154
  | Subcommand | Description |
@@ -164,7 +164,7 @@ Manages `run.sh` as a background daemon process with PID tracking and log consol
164
164
  **`--env` format:** Pass environment variables as a quoted string:
165
165
 
166
166
  ```bash
167
- ./dev-pipeline/launch-daemon.sh start feature-list.json \
167
+ ./dev-pipeline/launch-feature-daemon.sh start feature-list.json \
168
168
  --mode standard \
169
169
  --env "MAX_RETRIES=5 SESSION_TIMEOUT=3600 MODEL=claude-sonnet-4.6"
170
170
  ```
@@ -193,7 +193,7 @@ Manages `run.sh` as a background daemon process with PID tracking and log consol
193
193
 
194
194
  ### `run-bugfix.sh` — Bug-Fix Pipeline Runner
195
195
 
196
- Equivalent to `run.sh` but for the bug-fix pipeline.
196
+ Equivalent to `run-feature.sh` but for the bug-fix pipeline.
197
197
 
198
198
  ```bash
199
199
  ./run-bugfix.sh run [bug-fix-list.json] # Run all bugs
@@ -203,16 +203,16 @@ Equivalent to `run.sh` but for the bug-fix pipeline.
203
203
  ./run-bugfix.sh help
204
204
  ```
205
205
 
206
- **Single-bug options:** `--dry-run`, `--timeout N` (same as `run.sh`)
206
+ **Single-bug options:** `--dry-run`, `--timeout N` (same as `run-feature.sh`)
207
207
 
208
208
  Processes bugs by: **severity** (critical > high > medium > low) then **priority** (high > medium > low).
209
209
 
210
210
  ---
211
211
 
212
- ### `retry-bug.sh` — Retry Single Failed Bug
212
+ ### `retry-bugfix.sh` — Retry Single Failed Bug
213
213
 
214
214
  ```bash
215
- ./retry-bug.sh <bug-id> [bug-fix-list.json]
215
+ ./retry-bugfix.sh <bug-id> [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.
@@ -221,7 +221,7 @@ Same behavior as `retry-feature.sh` but for bugs. Cleans bug artifacts, generate
221
221
 
222
222
  ### `launch-bugfix-daemon.sh` — Bug-Fix Pipeline Daemon
223
223
 
224
- Identical interface to `launch-daemon.sh` but manages `run-bugfix.sh` in background.
224
+ Identical interface to `launch-feature-daemon.sh` but manages `run-bugfix.sh` in background.
225
225
 
226
226
  ```bash
227
227
  ./launch-bugfix-daemon.sh start [bug-fix-list.json] [--env "KEY=VAL ..."]
@@ -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.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 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
@@ -568,12 +568,12 @@ Also exports: `log_info`, `log_warn`, `log_error`, `log_success` (with timestamp
568
568
 
569
569
  | Variable | Default | Used By | Description |
570
570
  |----------|---------|---------|-------------|
571
- | `MAX_RETRIES` | `3` | run.sh | Max retry attempts per feature before marking as failed |
572
- | `SESSION_TIMEOUT` | `0` (none) | run.sh, retry-feature.sh, run-bugfix.sh, retry-bug.sh | Timeout in seconds per AI CLI session. 0 = no timeout |
573
- | `PIPELINE_MODE` | (auto) | run.sh, launch-daemon.sh | Override mode for all features: `lite\|standard\|full` |
574
- | `ENABLE_CRITIC` | `false` | run.sh, launch-daemon.sh | Enable adversarial critic review: `true\|false` |
575
- | `DEV_BRANCH` | auto-generated | run.sh | Custom git branch name (default: `dev/{feature-id}-{timestamp}`) |
576
- | `AUTO_PUSH` | `0` | run.sh | Set to `1` to auto-push branch to remote after successful session |
571
+ | `MAX_RETRIES` | `3` | run-feature.sh | Max retry attempts per feature before marking as failed |
572
+ | `SESSION_TIMEOUT` | `0` (none) | run-feature.sh, retry-feature.sh, run-bugfix.sh, retry-bugfix.sh | Timeout in seconds per AI CLI session. 0 = no timeout |
573
+ | `PIPELINE_MODE` | (auto) | run-feature.sh, launch-feature-daemon.sh | Override mode for all features: `lite\|standard\|full` |
574
+ | `ENABLE_CRITIC` | `false` | run-feature.sh, launch-feature-daemon.sh | Enable adversarial critic review: `true\|false` |
575
+ | `DEV_BRANCH` | auto-generated | run-feature.sh | Custom git branch name (default: `dev/{feature-id}-{timestamp}`) |
576
+ | `AUTO_PUSH` | `0` | run-feature.sh | Set to `1` to auto-push branch to remote after successful session |
577
577
 
578
578
  ### AI CLI Configuration
579
579
 
@@ -581,29 +581,29 @@ Also exports: `log_info`, `log_warn`, `log_error`, `log_success` (with timestamp
581
581
  |----------|---------|---------|-------------|
582
582
  | `AI_CLI` | auto-detect | all shell scripts | AI CLI command name. Auto-detects `cbc` or `claude` |
583
583
  | `PRIZMKIT_PLATFORM` | auto-detect | all shell scripts | Force platform: `codebuddy` or `claude` |
584
- | `MODEL` | (none) | run.sh, retry-feature.sh, run-bugfix.sh, retry-bug.sh | AI model fallback. Overridden by per-feature `model` field. See [Model Selection](#model-selection) |
584
+ | `MODEL` | (none) | run-feature.sh, retry-feature.sh, run-bugfix.sh, retry-bugfix.sh | AI model fallback. Overridden by per-feature `model` field. See [Model Selection](#model-selection) |
585
585
  | `CODEBUDDY_CLI` | (deprecated) | all shell scripts | Legacy alias for `AI_CLI`. Prefer `AI_CLI` |
586
- | `VERBOSE` | `0` | run.sh, retry-feature.sh | Set to `1` to enable `--verbose` on AI CLI |
586
+ | `VERBOSE` | `0` | run-feature.sh, retry-feature.sh | Set to `1` to enable `--verbose` on AI CLI |
587
587
 
588
588
  ### Monitoring & Logging
589
589
 
590
590
  | Variable | Default | Used By | Description |
591
591
  |----------|---------|---------|-------------|
592
- | `HEARTBEAT_INTERVAL` | `30` | run.sh, retry-feature.sh | Seconds between heartbeat log output |
593
- | `HEARTBEAT_STALE_THRESHOLD` | `600` | run.sh | Seconds before a session is considered stale/stuck |
594
- | `LOG_CLEANUP_ENABLED` | `1` | run.sh | Run log cleanup before pipeline execution |
595
- | `LOG_RETENTION_DAYS` | `14` | run.sh | Delete logs older than N days |
596
- | `LOG_MAX_TOTAL_MB` | `1024` | run.sh | Keep total log size under N MB |
592
+ | `HEARTBEAT_INTERVAL` | `30` | run-feature.sh, retry-feature.sh | Seconds between heartbeat log output |
593
+ | `HEARTBEAT_STALE_THRESHOLD` | `600` | run-feature.sh | Seconds before a session is considered stale/stuck |
594
+ | `LOG_CLEANUP_ENABLED` | `1` | run-feature.sh | Run log cleanup before pipeline execution |
595
+ | `LOG_RETENTION_DAYS` | `14` | run-feature.sh | Delete logs older than N days |
596
+ | `LOG_MAX_TOTAL_MB` | `1024` | run-feature.sh | Keep total log size under N MB |
597
597
 
598
598
  **Examples:**
599
599
 
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.sh run feature-list.json
603
+ ./dev-pipeline/run-feature.sh run feature-list.json
604
604
 
605
605
  # Via daemon with --env
606
- ./dev-pipeline/launch-daemon.sh start feature-list.json \
606
+ ./dev-pipeline/launch-feature-daemon.sh start feature-list.json \
607
607
  --mode standard \
608
608
  --env "MAX_RETRIES=5 SESSION_TIMEOUT=3600 AUTO_PUSH=1"
609
609
  ```
@@ -640,13 +640,13 @@ 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.sh run feature-list.json
643
+ MODEL=claude-sonnet-4.6 ./dev-pipeline/run-feature.sh run feature-list.json
644
644
 
645
645
  # Retry with Opus
646
646
  MODEL=claude-opus-4.6 ./dev-pipeline/retry-feature.sh F-007
647
647
 
648
648
  # Test which model the CLI is using
649
- MODEL=claude-sonnet-4.6 ./dev-pipeline/run.sh test-cli
649
+ MODEL=claude-sonnet-4.6 ./dev-pipeline/run-feature.sh test-cli
650
650
  ```
651
651
 
652
652
  ### Dry-Run Model Verification
@@ -654,7 +654,7 @@ MODEL=claude-sonnet-4.6 ./dev-pipeline/run.sh test-cli
654
654
  Use `--dry-run` to verify which model will be used without spawning a session:
655
655
 
656
656
  ```bash
657
- ./dev-pipeline/run.sh run F-017 --dry-run
657
+ ./dev-pipeline/run-feature.sh run F-017 --dry-run
658
658
  # Output includes: "Feature Model: claude-opus-4.6"
659
659
  ```
660
660
 
@@ -691,15 +691,15 @@ 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.sh run feature-list.json
694
+ AI_CLI=claude ./dev-pipeline/run-feature.sh run feature-list.json
695
695
  ```
696
696
 
697
697
  ### Testing AI CLI (`test-cli`)
698
698
 
699
699
  ```bash
700
- ./dev-pipeline/run.sh test-cli
701
- MODEL=claude-sonnet-4.6 ./dev-pipeline/run.sh test-cli
702
- AI_CLI=cbc ./dev-pipeline/run.sh test-cli
700
+ ./dev-pipeline/run-feature.sh test-cli
701
+ MODEL=claude-sonnet-4.6 ./dev-pipeline/run-feature.sh test-cli
702
+ AI_CLI=cbc ./dev-pipeline/run-feature.sh test-cli
703
703
  ```
704
704
 
705
705
  ---
@@ -709,7 +709,7 @@ AI_CLI=cbc ./dev-pipeline/run.sh test-cli
709
709
  ### Feature Pipeline Execution Flow
710
710
 
711
711
  ```
712
- run.sh main loop
712
+ run-feature.sh main loop
713
713
  |
714
714
  +- detect-stuck.py # Check for stale/stuck sessions
715
715
  +- update-feature-status.py # get_next: find next runnable feature
@@ -787,14 +787,14 @@ cat dev-pipeline/state/features/F-003/sessions/F-003-*/logs/session.log | less
787
787
  ### Pause & Resume
788
788
 
789
789
  - **Ctrl+C** triggers graceful shutdown — current state is saved
790
- - **Re-running** `./run.sh run` resumes from where it left off (completed features skipped)
791
- - Force resume from a phase: `./run.sh run feature-list.json --resume-phase 6`
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`
792
792
 
793
793
  ### Manual Intervention
794
794
 
795
795
  ```bash
796
796
  # Check what failed
797
- ./dev-pipeline/run.sh status feature-list.json
797
+ ./dev-pipeline/run-feature.sh status feature-list.json
798
798
 
799
799
  # Review session logs
800
800
  cat dev-pipeline/state/features/F-XXX/sessions/*/logs/session.log
@@ -812,7 +812,7 @@ python3 dev-pipeline/scripts/update-feature-status.py \
812
812
  --feature-id F-XXX --action reset
813
813
 
814
814
  # Resume
815
- ./dev-pipeline/run.sh run feature-list.json
815
+ ./dev-pipeline/run-feature.sh run feature-list.json
816
816
  ```
817
817
 
818
818
  ---
@@ -889,12 +889,12 @@ dev-pipeline/bugfix-state/ # Runtime state (gitignored)
889
889
 
890
890
  ```
891
891
  dev-pipeline/
892
- +-- run.sh # Main pipeline runner (features)
892
+ +-- run-feature.sh # Main pipeline runner (features)
893
893
  +-- retry-feature.sh # Retry single failed feature
894
894
  +-- reset-feature.sh # Reset/clean feature for re-execution
895
- +-- launch-daemon.sh # Background daemon for feature pipeline
895
+ +-- launch-feature-daemon.sh # Background daemon for feature pipeline
896
896
  +-- run-bugfix.sh # Bug-fix pipeline runner
897
- +-- retry-bug.sh # Retry single failed bug
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
900
  +-- .gitignore # Ignores state/, bugfix-state/, __pycache__/
@@ -985,7 +985,7 @@ Check `set -e` interactions. All python invocations in the main loop should have
985
985
  Verify CLI is functional: `claude -p "test" --dangerously-skip-permissions` or `echo "test" | cbc --print -y`
986
986
 
987
987
  ### "PIPELINE_BLOCKED" loops
988
- All remaining features have unmet dependencies. Use `./run.sh status` to find the blocking feature, then reset or manually complete it.
988
+ All remaining features have unmet dependencies. Use `./run-feature.sh status` to find the blocking feature, then reset or manually complete it.
989
989
 
990
990
  ### Feature marked as "crashed"
991
991
  Session exited without `session-status.json`. Pipeline retries up to `MAX_RETRIES` times automatically.
@@ -3,7 +3,7 @@
3
3
  "app_name": "TaskFlow",
4
4
  "app_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
- "created_by": "app-planner",
6
+ "created_by": "feature-planner",
7
7
  "source_spec": ".prizmkit/specs/app-spec.md",
8
8
  "features": [
9
9
  {
@@ -9,7 +9,7 @@ dev-pipeline drives the prizm-dev-team multi-agent team through an outer shell l
9
9
  ```
10
10
  dev-pipeline (outer loop)
11
11
 
12
- ├── run.sh Shell runner — picks next feature, spawns CLI
12
+ ├── run-feature.sh Shell runner — picks next feature, spawns CLI
13
13
  ├── scripts/ Python state management scripts
14
14
  ├── templates/bootstrap-prompt.md Session prompt template
15
15
 
@@ -2,32 +2,32 @@
2
2
  set -euo pipefail
3
3
 
4
4
  # ============================================================
5
- # dev-pipeline/launch-daemon.sh - Daemon wrapper for run.sh
5
+ # dev-pipeline/launch-feature-daemon.sh - Daemon wrapper for run-feature.sh
6
6
  #
7
- # Manages run.sh as a background daemon process with PID tracking,
7
+ # Manages run-feature.sh as a background daemon process with PID tracking,
8
8
  # log consolidation, and lifecycle commands.
9
9
  #
10
10
  # Usage:
11
- # ./launch-daemon.sh start [feature-list.json] [--mode <mode>] [--env "KEY=VAL ..."]
12
- # ./launch-daemon.sh stop
13
- # ./launch-daemon.sh status
14
- # ./launch-daemon.sh logs [--lines N] [--follow]
15
- # ./launch-daemon.sh restart [feature-list.json] [--mode <mode>] [--env "KEY=VAL ..."]
11
+ # ./launch-feature-daemon.sh start [feature-list.json] [--mode <mode>] [--env "KEY=VAL ..."]
12
+ # ./launch-feature-daemon.sh stop
13
+ # ./launch-feature-daemon.sh status
14
+ # ./launch-feature-daemon.sh logs [--lines N] [--follow]
15
+ # ./launch-feature-daemon.sh restart [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
- # Do NOT call `run.sh run ...` directly, because foreground sessions may be killed by CLI timeout.
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.sh process
23
- # state/pipeline-daemon.log - Consolidated stdout+stderr from run.sh
22
+ # state/.pipeline.pid - PID of the background run-feature.sh process
23
+ # state/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
  STATE_DIR="$SCRIPT_DIR/state"
28
28
  PID_FILE="$STATE_DIR/.pipeline.pid"
29
29
  LOG_FILE="$STATE_DIR/pipeline-daemon.log"
30
- RUN_SCRIPT="$SCRIPT_DIR/run.sh"
30
+ RUN_SCRIPT="$SCRIPT_DIR/run-feature.sh"
31
31
 
32
32
  # Colors
33
33
  RED='\033[0;31m'
@@ -86,7 +86,7 @@ clean_stale_pid() {
86
86
  }
87
87
 
88
88
  # ============================================================
89
- # start: Launch run.sh in background
89
+ # start: Launch run-feature.sh in background
90
90
  # ============================================================
91
91
 
92
92
  cmd_start() {
@@ -162,13 +162,13 @@ cmd_start() {
162
162
  # Validate feature list
163
163
  if [[ ! -f "$feature_list" ]]; then
164
164
  log_error "Feature list not found: $feature_list"
165
- log_error "Run the app-planner skill first to generate feature-list.json"
165
+ log_error "Run the feature-planner skill first to generate feature-list.json"
166
166
  exit 2
167
167
  fi
168
168
 
169
- # Validate run.sh exists
169
+ # Validate run-feature.sh exists
170
170
  if [[ ! -x "$RUN_SCRIPT" ]]; then
171
- log_error "run.sh not found or not executable: $RUN_SCRIPT"
171
+ log_error "run-feature.sh not found or not executable: $RUN_SCRIPT"
172
172
  exit 2
173
173
  fi
174
174
 
@@ -180,7 +180,7 @@ cmd_start() {
180
180
  local pid
181
181
  pid=$(get_pid)
182
182
  log_error "Pipeline is already running (PID: $pid)"
183
- log_error "Use './launch-daemon.sh stop' first, or './launch-daemon.sh restart'"
183
+ log_error "Use './launch-feature-daemon.sh stop' first, or './launch-feature-daemon.sh restart'"
184
184
  exit 1
185
185
  fi
186
186
 
@@ -217,7 +217,7 @@ cmd_start() {
217
217
  fi
218
218
  fi
219
219
 
220
- # Launch run.sh in background, fully detached
220
+ # Launch run-feature.sh in background, fully detached
221
221
  log_info "Launching pipeline..."
222
222
  log_info "Feature list: $feature_list"
223
223
  log_info "Log file: $LOG_FILE"
@@ -297,8 +297,8 @@ os.replace(tmp, target)
297
297
  sleep 2
298
298
  if is_running; then
299
299
  log_success "Pipeline started successfully (PID: $pipeline_pid)"
300
- log_info "Monitor logs: ./launch-daemon.sh logs --follow"
301
- log_info "Check status: ./launch-daemon.sh status"
300
+ log_info "Monitor logs: ./launch-feature-daemon.sh logs --follow"
301
+ log_info "Check status: ./launch-feature-daemon.sh status"
302
302
 
303
303
  # Output JSON on stdout for programmatic consumption
304
304
  echo "{\"success\": true, \"pid\": $pipeline_pid, \"log_file\": \"$LOG_FILE\", \"started_at\": \"$start_time\"}"
@@ -579,7 +579,7 @@ cmd_restart() {
579
579
 
580
580
  show_help() {
581
581
  cat <<'HELP'
582
- Usage: launch-daemon.sh <command> [options]
582
+ Usage: launch-feature-daemon.sh <command> [options]
583
583
 
584
584
  Commands:
585
585
  start [feature-list.json] [--mode <mode>] [--features <filter>] [--env "K=V ..."] Start pipeline in background
@@ -597,19 +597,19 @@ Options:
597
597
  --env "KEY=VAL ..." Set environment variables
598
598
 
599
599
  Examples:
600
- ./launch-daemon.sh start # Start with default feature-list.json
601
- ./launch-daemon.sh start my-features.json # Start with custom feature list
602
- ./launch-daemon.sh start --features F-001:F-005 # Run only features F-001 through F-005
603
- ./launch-daemon.sh start --features F-001,F-003,F-007 # Run specific features
604
- ./launch-daemon.sh start --mode full # Full mode for complex features
605
- ./launch-daemon.sh start --critic # Enable adversarial critic review
606
- ./launch-daemon.sh start --env "MAX_RETRIES=5 SESSION_TIMEOUT=7200"
607
- ./launch-daemon.sh start feature-list.json --mode full --critic --env "VERBOSE=1"
608
- ./launch-daemon.sh status # Check if running (JSON on stdout)
609
- ./launch-daemon.sh logs --follow # Live log tailing
610
- ./launch-daemon.sh logs --lines 100 # Last 100 lines
611
- ./launch-daemon.sh stop # Graceful shutdown
612
- ./launch-daemon.sh restart # Stop + start
600
+ ./launch-feature-daemon.sh start # Start with default feature-list.json
601
+ ./launch-feature-daemon.sh start my-features.json # Start with custom feature list
602
+ ./launch-feature-daemon.sh start --features F-001:F-005 # Run only features F-001 through F-005
603
+ ./launch-feature-daemon.sh start --features F-001,F-003,F-007 # Run specific features
604
+ ./launch-feature-daemon.sh start --mode full # Full mode for complex features
605
+ ./launch-feature-daemon.sh start --critic # Enable adversarial critic review
606
+ ./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 status # Check if running (JSON on stdout)
609
+ ./launch-feature-daemon.sh logs --follow # Live log tailing
610
+ ./launch-feature-daemon.sh logs --lines 100 # Last 100 lines
611
+ ./launch-feature-daemon.sh stop # Graceful shutdown
612
+ ./launch-feature-daemon.sh restart # Stop + start
613
613
 
614
614
  Environment Variables (pass via --env):
615
615
  MAX_RETRIES Max retries per feature (default: 3)