prizmkit 1.1.1 → 1.1.4
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/adapters/claude/agent-adapter.js +18 -0
- package/bundled/adapters/claude/command-adapter.js +1 -27
- package/bundled/agents/prizm-dev-team-critic.md +2 -0
- package/bundled/agents/prizm-dev-team-dev.md +2 -0
- package/bundled/agents/prizm-dev-team-reviewer.md +2 -0
- package/bundled/dev-pipeline/README.md +63 -63
- package/bundled/dev-pipeline/assets/feature-list-example.json +1 -1
- package/bundled/dev-pipeline/assets/prizm-dev-team-integration.md +1 -1
- package/bundled/dev-pipeline/{launch-daemon.sh → launch-feature-daemon.sh} +33 -33
- package/bundled/dev-pipeline/launch-refactor-daemon.sh +454 -0
- package/bundled/dev-pipeline/lib/branch.sh +1 -1
- package/bundled/dev-pipeline/reset-feature.sh +3 -3
- package/bundled/dev-pipeline/reset-refactor.sh +312 -0
- package/bundled/dev-pipeline/{retry-bug.sh → retry-bugfix.sh} +47 -59
- package/bundled/dev-pipeline/retry-feature.sh +41 -54
- package/bundled/dev-pipeline/retry-refactor.sh +358 -0
- package/bundled/dev-pipeline/run-bugfix.sh +41 -0
- package/bundled/dev-pipeline/{run.sh → run-feature.sh} +64 -31
- package/bundled/dev-pipeline/run-refactor.sh +787 -0
- package/bundled/dev-pipeline/scripts/generate-bootstrap-prompt.py +398 -10
- package/bundled/dev-pipeline/scripts/generate-bugfix-prompt.py +124 -0
- package/bundled/dev-pipeline/scripts/generate-refactor-prompt.py +419 -0
- package/bundled/dev-pipeline/scripts/init-refactor-pipeline.py +393 -0
- package/bundled/dev-pipeline/scripts/update-refactor-status.py +726 -0
- package/bundled/dev-pipeline/templates/agent-prompts/critic-code-challenge.md +13 -0
- package/bundled/dev-pipeline/templates/agent-prompts/critic-plan-challenge.md +7 -0
- package/bundled/dev-pipeline/templates/agent-prompts/dev-fix.md +7 -0
- package/bundled/dev-pipeline/templates/agent-prompts/dev-implement.md +27 -0
- package/bundled/dev-pipeline/templates/agent-prompts/dev-resume.md +5 -0
- package/bundled/dev-pipeline/templates/agent-prompts/reviewer-analyze.md +5 -0
- package/bundled/dev-pipeline/templates/agent-prompts/reviewer-review.md +12 -0
- package/bundled/dev-pipeline/templates/bootstrap-tier1.md +33 -2
- package/bundled/dev-pipeline/templates/bootstrap-tier2.md +13 -9
- package/bundled/dev-pipeline/templates/bootstrap-tier3.md +16 -12
- package/bundled/dev-pipeline/templates/bugfix-bootstrap-prompt.md +22 -4
- package/bundled/dev-pipeline/templates/feature-list-schema.json +1 -1
- package/bundled/dev-pipeline/templates/refactor-list-schema.json +159 -0
- package/bundled/dev-pipeline/templates/sections/ac-verification-checklist.md +13 -0
- package/bundled/dev-pipeline/templates/sections/checkpoint-system.md +36 -0
- package/bundled/dev-pipeline/templates/sections/failure-log-check.md +2 -1
- package/bundled/dev-pipeline/templates/sections/feature-context.md +1 -1
- package/bundled/dev-pipeline/templates/sections/phase-analyze-agent.md +11 -7
- package/bundled/dev-pipeline/templates/sections/phase-analyze-full.md +11 -7
- package/bundled/dev-pipeline/templates/sections/phase-browser-verification.md +5 -1
- package/bundled/dev-pipeline/templates/sections/phase-commit-full.md +3 -0
- package/bundled/dev-pipeline/templates/sections/phase-commit.md +3 -0
- package/bundled/dev-pipeline/templates/sections/phase-context-snapshot-agent-suffix.md +3 -0
- package/bundled/dev-pipeline/templates/sections/phase-context-snapshot-lite-suffix.md +3 -0
- package/bundled/dev-pipeline/templates/sections/phase-critic-code.md +11 -10
- package/bundled/dev-pipeline/templates/sections/phase-critic-plan-full.md +12 -10
- package/bundled/dev-pipeline/templates/sections/phase-critic-plan.md +11 -9
- package/bundled/dev-pipeline/templates/sections/phase-deploy-verification.md +3 -0
- package/bundled/dev-pipeline/templates/sections/phase-implement-agent.md +10 -10
- package/bundled/dev-pipeline/templates/sections/phase-implement-full.md +12 -16
- package/bundled/dev-pipeline/templates/sections/phase-implement-lite.md +3 -0
- package/bundled/dev-pipeline/templates/sections/phase-plan-agent.md +3 -0
- package/bundled/dev-pipeline/templates/sections/phase-plan-lite.md +3 -0
- package/bundled/dev-pipeline/templates/sections/phase-review-agent.md +11 -13
- package/bundled/dev-pipeline/templates/sections/phase-review-full.md +12 -20
- package/bundled/dev-pipeline/templates/sections/phase-specify-plan-full.md +3 -0
- package/bundled/dev-pipeline/templates/sections/phase0-init.md +3 -0
- package/bundled/dev-pipeline/templates/sections/phase0-test-baseline.md +3 -0
- package/bundled/dev-pipeline/templates/sections/resume-header.md +4 -1
- package/bundled/dev-pipeline/templates/sections/test-failure-recovery.md +75 -0
- package/bundled/rules/prizm/prizm-commit-workflow.md +1 -0
- package/bundled/rules/prizm/prizm-documentation.md +15 -15
- package/bundled/rules/prizm/prizm-progressive-loading.md +2 -1
- package/bundled/skills/_metadata.json +33 -6
- package/bundled/skills/app-planner/SKILL.md +105 -320
- package/bundled/skills/app-planner/assets/app-design-guide.md +101 -0
- package/bundled/skills/app-planner/references/frontend-design-guide.md +1 -1
- package/bundled/skills/app-planner/references/project-brief-guide.md +49 -80
- package/bundled/skills/bug-fix-workflow/SKILL.md +2 -2
- package/bundled/skills/bug-planner/SKILL.md +68 -5
- package/bundled/skills/bug-planner/scripts/validate-bug-list.py +3 -2
- package/bundled/skills/bugfix-pipeline-launcher/SKILL.md +19 -5
- package/bundled/skills/{dev-pipeline-launcher → feature-pipeline-launcher}/SKILL.md +32 -32
- package/bundled/skills/feature-planner/SKILL.md +337 -0
- package/bundled/skills/{app-planner → feature-planner}/assets/evaluation-guide.md +4 -4
- package/bundled/skills/{app-planner → feature-planner}/assets/planning-guide.md +3 -171
- package/bundled/skills/{app-planner → feature-planner}/references/browser-interaction.md +6 -5
- package/bundled/skills/feature-planner/references/decomposition-patterns.md +75 -0
- package/bundled/skills/{app-planner → feature-planner}/references/error-recovery.md +8 -8
- package/bundled/skills/{app-planner → feature-planner}/references/incremental-feature-planning.md +1 -1
- package/bundled/skills/{app-planner/references/new-app-planning.md → feature-planner/references/new-project-planning.md} +1 -1
- package/bundled/skills/{app-planner → feature-planner}/scripts/validate-and-generate.py +4 -4
- package/bundled/skills/feature-workflow/SKILL.md +23 -23
- package/bundled/skills/prizm-kit/SKILL.md +1 -3
- package/bundled/skills/prizm-kit/assets/project-memory-template.md +4 -2
- package/bundled/skills/prizmkit-analyze/SKILL.md +2 -5
- package/bundled/skills/prizmkit-code-review/SKILL.md +2 -2
- package/bundled/skills/prizmkit-committer/SKILL.md +32 -8
- package/bundled/skills/prizmkit-deploy/SKILL.md +1 -5
- package/bundled/skills/prizmkit-implement/SKILL.md +5 -51
- package/bundled/skills/prizmkit-init/SKILL.md +7 -78
- package/bundled/skills/prizmkit-plan/SKILL.md +1 -12
- package/bundled/skills/prizmkit-prizm-docs/SKILL.md +13 -28
- package/bundled/skills/prizmkit-prizm-docs/assets/PRIZM-SPEC.md +52 -1
- package/bundled/skills/prizmkit-retrospective/SKILL.md +12 -117
- package/bundled/skills/recovery-workflow/SKILL.md +168 -316
- package/bundled/skills/recovery-workflow/evals/evals.json +29 -13
- package/bundled/skills/recovery-workflow/scripts/detect-recovery-state.py +232 -274
- package/bundled/skills/refactor-pipeline-launcher/SKILL.md +352 -0
- package/bundled/skills/refactor-planner/SKILL.md +436 -0
- package/bundled/skills/refactor-planner/assets/planning-guide.md +292 -0
- package/bundled/skills/refactor-planner/references/behavior-preservation.md +301 -0
- package/bundled/skills/refactor-planner/references/refactor-scoping-guide.md +221 -0
- package/bundled/skills/refactor-planner/scripts/validate-and-generate-refactor.py +786 -0
- package/bundled/skills/refactor-workflow/SKILL.md +299 -319
- package/bundled/team/prizm-dev-team.json +1 -1
- package/package.json +1 -1
- package/src/clean.js +3 -3
- package/src/scaffold.js +6 -6
- package/bundled/skills/prizmkit-plan/assets/spec-template.md +0 -56
- package/bundled/skills/prizmkit-plan/references/clarify-guide.md +0 -67
- package/src/config.js +0 -504
- package/src/prompts.js +0 -210
- /package/bundled/skills/{dev-pipeline-launcher → feature-pipeline-launcher}/scripts/preflight-check.py +0 -0
package/bundled/VERSION.json
CHANGED
|
@@ -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-
|
|
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 `
|
|
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
|
|
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-
|
|
212
|
+
### `retry-bugfix.sh` — Retry Single Failed Bug
|
|
213
213
|
|
|
214
214
|
```bash
|
|
215
|
-
./retry-
|
|
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-
|
|
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-
|
|
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-
|
|
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": "
|
|
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
|
|
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)
|