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.
- 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 +6 -0
- package/bundled/dev-pipeline/{run.sh → run-feature.sh} +31 -31
- package/bundled/dev-pipeline/run-refactor.sh +787 -0
- package/bundled/dev-pipeline/scripts/generate-bootstrap-prompt.py +177 -10
- 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 +26 -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 +29 -2
- package/bundled/dev-pipeline/templates/bootstrap-tier2.md +8 -7
- package/bundled/dev-pipeline/templates/bootstrap-tier3.md +11 -10
- package/bundled/dev-pipeline/templates/bugfix-bootstrap-prompt.md +2 -3
- 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/feature-context.md +1 -1
- package/bundled/dev-pipeline/templates/sections/phase-analyze-agent.md +9 -8
- package/bundled/dev-pipeline/templates/sections/phase-analyze-full.md +9 -8
- package/bundled/dev-pipeline/templates/sections/phase-browser-verification.md +2 -1
- package/bundled/dev-pipeline/templates/sections/phase-critic-code.md +8 -10
- package/bundled/dev-pipeline/templates/sections/phase-critic-plan-full.md +9 -10
- package/bundled/dev-pipeline/templates/sections/phase-critic-plan.md +8 -9
- package/bundled/dev-pipeline/templates/sections/phase-implement-agent.md +7 -10
- package/bundled/dev-pipeline/templates/sections/phase-implement-full.md +8 -15
- package/bundled/dev-pipeline/templates/sections/phase-review-agent.md +7 -12
- package/bundled/dev-pipeline/templates/sections/phase-review-full.md +8 -19
- package/bundled/dev-pipeline/templates/sections/test-failure-recovery.md +75 -0
- 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/prizmkit-analyze/SKILL.md +2 -5
- package/bundled/skills/prizmkit-code-review/SKILL.md +2 -2
- package/bundled/skills/prizmkit-committer/SKILL.md +4 -8
- package/bundled/skills/prizmkit-deploy/SKILL.md +1 -5
- package/bundled/skills/prizmkit-implement/SKILL.md +3 -50
- package/bundled/skills/prizmkit-init/SKILL.md +5 -77
- package/bundled/skills/prizmkit-plan/SKILL.md +1 -12
- package/bundled/skills/prizmkit-prizm-docs/SKILL.md +6 -24
- package/bundled/skills/prizmkit-prizm-docs/assets/PRIZM-SPEC.md +21 -0
- package/bundled/skills/prizmkit-retrospective/SKILL.md +12 -117
- package/bundled/skills/recovery-workflow/SKILL.md +166 -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/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
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
name: "
|
|
2
|
+
name: "feature-pipeline-launcher"
|
|
3
3
|
description: "Launch and manage the dev-pipeline from within an AI CLI session. Start pipeline in background, monitor logs, check status, stop pipeline. Use this skill whenever the user wants to start building features, run the pipeline, check pipeline progress, retry features, or stop the pipeline. Trigger on: 'run pipeline', 'start pipeline', 'start building', 'pipeline status', 'stop pipeline', 'retry feature', 'launch pipeline', 'start implementing', 'check pipeline status', 'stop the pipeline'. (project)"
|
|
4
4
|
---
|
|
5
5
|
|
|
@@ -11,8 +11,8 @@ Launch the autonomous development pipeline from within an AI CLI conversation. T
|
|
|
11
11
|
|
|
12
12
|
Three execution modes are available. The user chooses one before configuring other options:
|
|
13
13
|
|
|
14
|
-
1. **Foreground** (recommended) — `dev-pipeline/run.sh run`. Visible output, direct error feedback, no orphaned processes.
|
|
15
|
-
2. **Background daemon** — `dev-pipeline/launch-daemon.sh`. Runs fully detached, survives AI CLI session closure.
|
|
14
|
+
1. **Foreground** (recommended) — `dev-pipeline/run-feature.sh run`. Visible output, direct error feedback, no orphaned processes.
|
|
15
|
+
2. **Background daemon** — `dev-pipeline/launch-feature-daemon.sh`. Runs fully detached, survives AI CLI session closure.
|
|
16
16
|
3. **Manual** — Display the assembled command(s) only. Do not execute anything. User runs them on their own.
|
|
17
17
|
|
|
18
18
|
### When to Use
|
|
@@ -21,7 +21,7 @@ Three execution modes are available. The user chooses one before configuring oth
|
|
|
21
21
|
- "run pipeline", "start pipeline", "start building", "launch dev-pipeline"
|
|
22
22
|
- "run the features", "execute feature list", "start implementing"
|
|
23
23
|
- "launch pipeline", "run the pipeline", "start auto-development"
|
|
24
|
-
- After
|
|
24
|
+
- After feature-planner completes: "build it", "start developing from the feature list"
|
|
25
25
|
- "run only F-001 to F-005", "run features F-001,F-003", "only build these features"
|
|
26
26
|
|
|
27
27
|
**Check status** -- User says:
|
|
@@ -40,7 +40,7 @@ Three execution modes are available. The user chooses one before configuring oth
|
|
|
40
40
|
- "retry F-003", "retry this feature", "retry this node", "re-run this feature"
|
|
41
41
|
|
|
42
42
|
**Do NOT use this skill when:**
|
|
43
|
-
- User wants to plan features (use `
|
|
43
|
+
- User wants to plan features (use `feature-planner` instead)
|
|
44
44
|
- User wants to implement a single feature manually within current session (use `prizmkit-implement`)
|
|
45
45
|
- User wants to define specs/plan (use `prizmkit-plan`)
|
|
46
46
|
|
|
@@ -48,7 +48,7 @@ Three execution modes are available. The user chooses one before configuring oth
|
|
|
48
48
|
|
|
49
49
|
Before any action, validate:
|
|
50
50
|
|
|
51
|
-
1. **dev-pipeline exists**: Confirm `dev-pipeline/launch-daemon.sh` is present and executable
|
|
51
|
+
1. **dev-pipeline exists**: Confirm `dev-pipeline/launch-feature-daemon.sh` is present and executable
|
|
52
52
|
2. **For start**: `feature-list.json` must exist in project root (or user-specified path)
|
|
53
53
|
3. **Dependencies**: `jq`, `python3`, AI CLI (`cbc` or `claude`) must be in PATH
|
|
54
54
|
4. **Python version**: Requires Python 3.8+ for dev-pipeline scripts
|
|
@@ -62,7 +62,7 @@ command -v playwright-cli && echo "playwright-cli OK" || echo "playwright-cli no
|
|
|
62
62
|
```
|
|
63
63
|
|
|
64
64
|
If `feature-list.json` is missing, inform user:
|
|
65
|
-
> "No feature-list.json found. Run the `
|
|
65
|
+
> "No feature-list.json found. Run the `feature-planner` skill first to generate one, or provide a path to your feature list."
|
|
66
66
|
|
|
67
67
|
### Workflow
|
|
68
68
|
|
|
@@ -79,7 +79,7 @@ Detect user intent from their message, then follow the corresponding workflow:
|
|
|
79
79
|
|
|
80
80
|
2. **Check not already running**:
|
|
81
81
|
```bash
|
|
82
|
-
dev-pipeline/launch-daemon.sh status 2>/dev/null
|
|
82
|
+
dev-pipeline/launch-feature-daemon.sh status 2>/dev/null
|
|
83
83
|
```
|
|
84
84
|
If running, inform user and ask: "Pipeline is already running. Want to restart it, check status, or view logs?"
|
|
85
85
|
|
|
@@ -129,8 +129,8 @@ Detect user intent from their message, then follow the corresponding workflow:
|
|
|
129
129
|
5. **Ask execution mode** (first user decision):
|
|
130
130
|
|
|
131
131
|
Present the three modes and ask the user to choose:
|
|
132
|
-
- **(1) Foreground** (recommended) — pipeline runs in the current session via `run.sh run`. Visible output and direct error feedback.
|
|
133
|
-
- **(2) Background daemon** — pipeline runs fully detached via `launch-daemon.sh`. Survives AI CLI session closure.
|
|
132
|
+
- **(1) Foreground** (recommended) — pipeline runs in the current session via `run-feature.sh run`. Visible output and direct error feedback.
|
|
133
|
+
- **(2) Background daemon** — pipeline runs fully detached via `launch-feature-daemon.sh`. Survives AI CLI session closure.
|
|
134
134
|
- **(3) Manual** — display the final assembled commands only. Do not execute anything. User runs them on their own.
|
|
135
135
|
|
|
136
136
|
6. **Ask configuration options** ⚠️ MANDATORY INTERACTIVE STEP — applies to ALL execution modes (Foreground, Background, AND Manual). You MUST ask the user to configure options and WAIT for their response BEFORE proceeding to step 7. Do NOT skip this step or merge it with step 7.
|
|
@@ -169,8 +169,6 @@ Detect user intent from their message, then follow the corresponding workflow:
|
|
|
169
169
|
| Verbose: On | `VERBOSE=1` |
|
|
170
170
|
| Max retries: N | `MAX_RETRIES=N` |
|
|
171
171
|
| Timeout: value | `SESSION_TIMEOUT=<seconds>` |
|
|
172
|
-
| "skip browser verify" | `BROWSER_VERIFY=false` |
|
|
173
|
-
| "enable browser verify" | `BROWSER_VERIFY=true` |
|
|
174
172
|
|
|
175
173
|
⚠️ STOP HERE and wait for user response before continuing to step 7.
|
|
176
174
|
|
|
@@ -178,34 +176,34 @@ Detect user intent from their message, then follow the corresponding workflow:
|
|
|
178
176
|
|
|
179
177
|
**Foreground command:**
|
|
180
178
|
```bash
|
|
181
|
-
VERBOSE=1 dev-pipeline/run.sh run feature-list.json
|
|
179
|
+
VERBOSE=1 dev-pipeline/run-feature.sh run feature-list.json
|
|
182
180
|
```
|
|
183
181
|
With all options:
|
|
184
182
|
```bash
|
|
185
183
|
VERBOSE=1 ENABLE_CRITIC=true MAX_RETRIES=5 SESSION_TIMEOUT=3600 \
|
|
186
|
-
dev-pipeline/run.sh run feature-list.json --features F-001:F-005
|
|
184
|
+
dev-pipeline/run-feature.sh run feature-list.json --features F-001:F-005
|
|
187
185
|
```
|
|
188
186
|
|
|
189
187
|
**Background daemon command:**
|
|
190
188
|
```bash
|
|
191
|
-
dev-pipeline/launch-daemon.sh start feature-list.json --env "VERBOSE=1"
|
|
189
|
+
dev-pipeline/launch-feature-daemon.sh start feature-list.json --env "VERBOSE=1"
|
|
192
190
|
```
|
|
193
191
|
With all options:
|
|
194
192
|
```bash
|
|
195
|
-
dev-pipeline/launch-daemon.sh start feature-list.json --features F-001:F-005 \
|
|
193
|
+
dev-pipeline/launch-feature-daemon.sh start feature-list.json --features F-001:F-005 \
|
|
196
194
|
--env "VERBOSE=1 ENABLE_CRITIC=true MAX_RETRIES=5"
|
|
197
195
|
```
|
|
198
196
|
|
|
199
197
|
**Manual mode**: Print the assembled command(s) and **stop here**. Do not execute anything. Do not proceed to step 8.
|
|
200
198
|
```
|
|
201
199
|
# To run in foreground:
|
|
202
|
-
VERBOSE=1 dev-pipeline/run.sh run feature-list.json
|
|
200
|
+
VERBOSE=1 dev-pipeline/run-feature.sh run feature-list.json
|
|
203
201
|
|
|
204
202
|
# To run in background (detached):
|
|
205
|
-
dev-pipeline/launch-daemon.sh start feature-list.json --env "VERBOSE=1"
|
|
203
|
+
dev-pipeline/launch-feature-daemon.sh start feature-list.json --env "VERBOSE=1"
|
|
206
204
|
|
|
207
205
|
# To check status:
|
|
208
|
-
dev-pipeline/run.sh status feature-list.json
|
|
206
|
+
dev-pipeline/run-feature.sh status feature-list.json
|
|
209
207
|
```
|
|
210
208
|
|
|
211
209
|
8. **Confirm and launch** (Foreground and Background only — Manual mode ends at step 7):
|
|
@@ -225,7 +223,7 @@ Detect user intent from their message, then follow the corresponding workflow:
|
|
|
225
223
|
**If background daemon**:
|
|
226
224
|
1. Verify launch:
|
|
227
225
|
```bash
|
|
228
|
-
dev-pipeline/launch-daemon.sh status
|
|
226
|
+
dev-pipeline/launch-feature-daemon.sh status
|
|
229
227
|
```
|
|
230
228
|
2. Start log monitoring — Use the Bash tool with `run_in_background: true`:
|
|
231
229
|
```bash
|
|
@@ -243,7 +241,7 @@ Detect user intent from their message, then follow the corresponding workflow:
|
|
|
243
241
|
|
|
244
242
|
1. **Check daemon status**:
|
|
245
243
|
```bash
|
|
246
|
-
dev-pipeline/launch-daemon.sh status
|
|
244
|
+
dev-pipeline/launch-feature-daemon.sh status
|
|
247
245
|
```
|
|
248
246
|
|
|
249
247
|
2. **Show feature-level progress**:
|
|
@@ -267,12 +265,12 @@ Detect user intent from their message, then follow the corresponding workflow:
|
|
|
267
265
|
|
|
268
266
|
1. **Stop the daemon**:
|
|
269
267
|
```bash
|
|
270
|
-
dev-pipeline/launch-daemon.sh stop
|
|
268
|
+
dev-pipeline/launch-feature-daemon.sh stop
|
|
271
269
|
```
|
|
272
270
|
|
|
273
271
|
2. **Verify stopped**:
|
|
274
272
|
```bash
|
|
275
|
-
dev-pipeline/launch-daemon.sh status 2>/dev/null || true
|
|
273
|
+
dev-pipeline/launch-feature-daemon.sh status 2>/dev/null || true
|
|
276
274
|
```
|
|
277
275
|
|
|
278
276
|
3. **Inform user**: "Pipeline stopped. State is preserved -- you can resume later with 'start pipeline' and it will pick up where it left off."
|
|
@@ -283,7 +281,7 @@ Detect user intent from their message, then follow the corresponding workflow:
|
|
|
283
281
|
|
|
284
282
|
1. **Check if running**:
|
|
285
283
|
```bash
|
|
286
|
-
dev-pipeline/launch-daemon.sh status 2>/dev/null
|
|
284
|
+
dev-pipeline/launch-feature-daemon.sh status 2>/dev/null
|
|
287
285
|
```
|
|
288
286
|
|
|
289
287
|
2. **If running** -- Start live tail with Bash tool `run_in_background: true`:
|
|
@@ -326,9 +324,10 @@ SESSION_TIMEOUT=3600 dev-pipeline/retry-feature.sh F-003 feature-list.json
|
|
|
326
324
|
```
|
|
327
325
|
|
|
328
326
|
Notes:
|
|
329
|
-
- `retry-feature.sh` runs exactly one feature session and exits.
|
|
330
|
-
- `reset-feature.sh --clean --run`
|
|
331
|
-
-
|
|
327
|
+
- `retry-feature.sh` runs exactly one feature session and exits. **It always performs a full clean** (deletes session history and `.prizmkit/specs/` artifacts) before retrying, ensuring a fresh start. This is destructive — prior session logs and spec artifacts for this feature will be deleted.
|
|
328
|
+
- `reset-feature.sh --clean --run` is equivalent to a manual clean + retry (same behavior as `retry-feature.sh`, but can also operate on ranges and filtered sets).
|
|
329
|
+
- For a lighter retry that preserves prior session artifacts, use `run-feature.sh run <F-XXX> --no-reset` instead.
|
|
330
|
+
- Keep pipeline daemon mode for main run management (`launch-feature-daemon.sh`).
|
|
332
331
|
|
|
333
332
|
---
|
|
334
333
|
|
|
@@ -353,7 +352,7 @@ After pipeline completion, if features have `browser_interaction` fields and `pl
|
|
|
353
352
|
|
|
354
353
|
3. **If yes**, for each qualifying feature:
|
|
355
354
|
- Start dev server if `setup_command` is specified
|
|
356
|
-
- Use `playwright-cli` to
|
|
355
|
+
- Use `playwright-cli snapshot` to discover element refs, then verify each goal in `verify_steps` using appropriate actions, and take a screenshot
|
|
357
356
|
- Close browser and stop dev server
|
|
358
357
|
|
|
359
358
|
4. **Report results**:
|
|
@@ -369,23 +368,24 @@ After pipeline completion, if features have `browser_interaction` fields and `pl
|
|
|
369
368
|
|
|
370
369
|
| Error | Action |
|
|
371
370
|
|-------|--------|
|
|
372
|
-
| `feature-list.json` not found | Tell user to run `
|
|
371
|
+
| `feature-list.json` not found | Tell user to run `feature-planner` skill first |
|
|
373
372
|
| `jq` not installed | Suggest: `brew install jq` |
|
|
374
373
|
| `cbc`/`claude` not in PATH | Check AI CLI installation |
|
|
375
374
|
| Pipeline already running | Show status, ask if user wants to stop and restart |
|
|
376
|
-
| PID file stale (process dead) | `launch-daemon.sh` auto-cleans, retry start |
|
|
375
|
+
| PID file stale (process dead) | `launch-feature-daemon.sh` auto-cleans, retry start |
|
|
377
376
|
| Launch failed (process died immediately) | Show last 20 lines of log: `tail -20 dev-pipeline/state/pipeline-daemon.log` |
|
|
378
377
|
| Feature stuck/blocked | Use `retry-feature.sh <F-XXX>` to retry; use `reset-feature.sh <F-XXX> --clean --run` for fresh start |
|
|
379
378
|
| All features blocked/failed | Show status, suggest daemon-safe recovery: `dev-pipeline/reset-feature.sh <F-XXX> --clean --run feature-list.json` |
|
|
380
379
|
| `playwright-cli` not installed | Browser verification skipped (non-blocking). Suggest: `npm install -g @playwright/cli@latest && playwright-cli install --skills` |
|
|
381
|
-
| Permission denied on script | Run `chmod +x dev-pipeline/launch-daemon.sh dev-pipeline/run.sh` |
|
|
380
|
+
| Permission denied on script | Run `chmod +x dev-pipeline/launch-feature-daemon.sh dev-pipeline/run-feature.sh` |
|
|
381
|
+
| Pipeline stop failed (process won't die) | Process may be stuck in I/O wait. Try `kill -9 <PID>` manually. Check for orphaned child processes with `ps aux \| grep claude` |
|
|
382
382
|
| `.env.local` missing or incomplete | Warn: database connection variables not found. Suggest creating env file with required connection variables for the project's database |
|
|
383
383
|
| Database unreachable | Warn: database features will produce mock-only tests. Suggest checking database service status and connection credentials |
|
|
384
384
|
| Migrations not applied | Warn: tables or schema referenced in migration files not found in database. Suggest applying pending migrations |
|
|
385
385
|
|
|
386
386
|
### Integration Notes
|
|
387
387
|
|
|
388
|
-
- **After
|
|
388
|
+
- **After feature-planner**: This is the natural next step. When user finishes planning and has `feature-list.json`, suggest launching the pipeline.
|
|
389
389
|
- **Session independence**: The pipeline runs completely detached. User can close the AI CLI session, open a new session later, and use this skill to check progress or stop the pipeline.
|
|
390
390
|
- **Single instance**: Only one pipeline can run at a time. The PID file prevents duplicates.
|
|
391
391
|
- **Pipeline coexistence**: Feature and bugfix pipelines use separate state directories (`state/` vs `bugfix-state/`), so they can run simultaneously without conflict.
|
|
@@ -0,0 +1,337 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: "feature-planner"
|
|
3
|
+
description: "Plan and manage features for an existing project — add new features, reprioritize, split, and generate validated feature-list.json for dev-pipeline execution. Use this skill for feature scoping, incremental planning, continuing a feature plan, or preparing pipeline input. For planning a new app from scratch, use app-planner instead."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# feature planner
|
|
7
|
+
|
|
8
|
+
Plan deliverable features for dev-pipeline on existing projects:
|
|
9
|
+
- **New Feature Set**: create an initial feature-list.json for a project that has code but no plan yet
|
|
10
|
+
- **Incremental Feature Planning**: append, adjust, or reprioritize features in an existing plan
|
|
11
|
+
|
|
12
|
+
Always produce a validated `feature-list.json` that conforms to `dev-pipeline-feature-list`.
|
|
13
|
+
|
|
14
|
+
For planning a **new application from scratch** (vision, tech stack, decomposition), use `app-planner` instead.
|
|
15
|
+
|
|
16
|
+
## Invocation Commitment (Hard Rule)
|
|
17
|
+
|
|
18
|
+
**When the user invokes `/feature-planner`, you MUST execute the feature-planner workflow.** You must NEVER:
|
|
19
|
+
- Decide on the user's behalf that the task "doesn't need feature-planner"
|
|
20
|
+
- Skip feature-planner to jump directly to spec/plan/implement or any other skill
|
|
21
|
+
- Bypass the interactive phases because you judge the task to be "simple" or "obvious"
|
|
22
|
+
|
|
23
|
+
If the user's request is about planning a new app from scratch (vision, tech stack selection, app architecture), recommend `app-planner` instead and ask the user to confirm before switching.
|
|
24
|
+
|
|
25
|
+
If you believe the task is better suited for a different workflow (e.g., fast path via `/prizmkit-plan`), you MUST:
|
|
26
|
+
1. **Explain why** you think a different path is more appropriate
|
|
27
|
+
2. **Ask the user explicitly** whether they want to switch or continue with feature-planner
|
|
28
|
+
3. **Only switch if the user confirms** — otherwise proceed with feature-planner as invoked
|
|
29
|
+
|
|
30
|
+
The user chose this skill intentionally. Respect that choice.
|
|
31
|
+
|
|
32
|
+
## Scope Boundary (Hard Rule)
|
|
33
|
+
|
|
34
|
+
**This skill is PLANNING ONLY.** You must NEVER:
|
|
35
|
+
- Create, modify, or delete source code files (*.js, *.ts, *.py, *.go, *.html, *.css, etc.)
|
|
36
|
+
- Create project scaffolding, directories, or boilerplate
|
|
37
|
+
- Run build/install/test commands (npm init, pip install, etc.)
|
|
38
|
+
- Execute any implementation action beyond writing `feature-list.json`
|
|
39
|
+
|
|
40
|
+
**Your ONLY writable outputs are:**
|
|
41
|
+
1. `feature-list.json` (project root)
|
|
42
|
+
2. Draft backups in `.prizmkit/planning/`
|
|
43
|
+
|
|
44
|
+
**After planning is complete**, you MUST:
|
|
45
|
+
1. Present the summary and recommended next step
|
|
46
|
+
2. **Ask the user explicitly** whether they want to proceed to execution
|
|
47
|
+
3. If the user agrees → recommend invoking `feature-pipeline-launcher` or running `run-feature.sh` (do NOT execute it yourself)
|
|
48
|
+
4. If the user wants to adjust → continue refining `feature-list.json`
|
|
49
|
+
5. **NEVER auto-execute** the pipeline, launcher, or any implementation step
|
|
50
|
+
|
|
51
|
+
## When to Use
|
|
52
|
+
|
|
53
|
+
Trigger this skill for requests like:
|
|
54
|
+
- "Add features to existing system", "Continue planning"
|
|
55
|
+
- "Prepare feature-list.json", "Prepare dev-pipeline input"
|
|
56
|
+
- "Reprioritize features", "Split features"
|
|
57
|
+
- "Plan features for my project" (when the project already exists)
|
|
58
|
+
|
|
59
|
+
Do NOT use this skill when:
|
|
60
|
+
- The user wants to plan a new app from scratch → use `app-planner`
|
|
61
|
+
- The user only wants to run the pipeline → use `feature-pipeline-launcher`
|
|
62
|
+
- The user is debugging/refactoring or wants to write source code directly
|
|
63
|
+
|
|
64
|
+
## Resource Loading Rules (Mandatory)
|
|
65
|
+
|
|
66
|
+
1. **Planning reference** — load before writing feature descriptions:
|
|
67
|
+
- Read `${SKILL_DIR}/assets/planning-guide.md` for description writing standards, acceptance criteria patterns, complexity estimation, dependency rules, and session granularity
|
|
68
|
+
|
|
69
|
+
2. **Incremental planning reference** — load for incremental mode:
|
|
70
|
+
- Read `${SKILL_DIR}/references/incremental-feature-planning.md`
|
|
71
|
+
|
|
72
|
+
3. **Load on-demand references when triggered**:
|
|
73
|
+
- Validation errors or interrupted session → read `${SKILL_DIR}/references/error-recovery.md`
|
|
74
|
+
- Browser interaction fields needed → read `${SKILL_DIR}/references/browser-interaction.md`
|
|
75
|
+
- New feature set for a project (Route A) → read `${SKILL_DIR}/references/new-project-planning.md` for phase guide, quality rules, and delivery checklist
|
|
76
|
+
- Feature decomposition from scratch → read `${SKILL_DIR}/references/decomposition-patterns.md` for common app patterns (CRUD, SaaS, Social, E-commerce)
|
|
77
|
+
|
|
78
|
+
4. **Always validate output via script**:
|
|
79
|
+
```bash
|
|
80
|
+
python3 ${SKILL_DIR}/scripts/validate-and-generate.py validate --input <output-path> --mode <new|incremental>
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
5. **Use script output as source of truth** — if validation fails, fix and re-run until pass
|
|
84
|
+
|
|
85
|
+
## Prerequisites
|
|
86
|
+
|
|
87
|
+
Before questions, check optional context files (never block if absent):
|
|
88
|
+
- `.prizm-docs/root.prizm` (architecture/project context)
|
|
89
|
+
- `.prizmkit/config.json` (existing stack preferences and detected tech stack)
|
|
90
|
+
- existing `feature-list.json` (required for incremental mode)
|
|
91
|
+
- If `.prizm-docs/root.prizm` is absent and the project has existing source code, scan the directory structure to understand the codebase layout:
|
|
92
|
+
```bash
|
|
93
|
+
find . -maxdepth 2 -type d -not -path '*/node_modules/*' -not -path '*/.git/*' -not -path '*/dist/*' -not -path '*/build/*' -not -path '*/__pycache__/*' -not -path '*/vendor/*' | sed -e 's;[^/]*/;|____;g;s;____|; |;g'
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
**Tech stack from config.json:**
|
|
97
|
+
- If `.prizmkit/config.json` contains a `tech_stack` object, use it to pre-fill `global_context` fields in the generated `feature-list.json`.
|
|
98
|
+
- Map config fields to global_context: `language`, `runtime`, `frontend_framework`, `frontend_styling`, `backend_framework`, `database`, `orm`, `testing` → `testing_strategy`, `bundler`, `project_type`.
|
|
99
|
+
- Do NOT re-ask the user for tech stack info already present in config.json. Show detected stack and confirm.
|
|
100
|
+
|
|
101
|
+
## Scenario Routing
|
|
102
|
+
|
|
103
|
+
Classify user intent first:
|
|
104
|
+
|
|
105
|
+
### Route A: New Feature Set (No Existing Plan)
|
|
106
|
+
Use when the project exists but has no `feature-list.json` yet.
|
|
107
|
+
|
|
108
|
+
Actions:
|
|
109
|
+
1. Understand the existing codebase and what's already implemented
|
|
110
|
+
2. Run interactive planning phases to identify needed features
|
|
111
|
+
3. Generate initial `feature-list.json`
|
|
112
|
+
|
|
113
|
+
### Route B: Incremental Feature Planning
|
|
114
|
+
Use when user already has a `feature-list.json` and wants to add or adjust features.
|
|
115
|
+
|
|
116
|
+
Actions:
|
|
117
|
+
1. Load `${SKILL_DIR}/references/incremental-feature-planning.md`
|
|
118
|
+
2. Read existing `feature-list.json` first (if missing, ask whether to start new plan)
|
|
119
|
+
3. Append features with next sequential `F-NNN` IDs
|
|
120
|
+
4. Preserve style/language/detail consistency with existing plan
|
|
121
|
+
|
|
122
|
+
## Core Workflow
|
|
123
|
+
|
|
124
|
+
Execute the planning workflow in conversation mode with mandatory checkpoints:
|
|
125
|
+
|
|
126
|
+
### Interactive Phases
|
|
127
|
+
1. Clarify scope and goals
|
|
128
|
+
1.1 **Requirement clarification** — for ANY unclear aspect of the user's goals or scope, ask questions one at a time (cite the unclear point, give a recommended answer with rationale) until you fully understand. No limit on rounds. Do not proceed to Phase 2 with unresolved ambiguities.
|
|
129
|
+
2. Confirm constraints and existing architecture
|
|
130
|
+
3. Propose feature set with dependencies
|
|
131
|
+
4. Refine descriptions and acceptance criteria
|
|
132
|
+
4.1 **Per-feature clarification** — for each feature, if the description, acceptance criteria, or scope is vague or could be interpreted multiple ways, ask the user to clarify before finalizing.
|
|
133
|
+
4.2 **Browser interaction** (mandatory for fullstack/frontend projects) — see §Browser Interaction Planning below. Qualifying features get `browser_interaction` by default. Only confirm with the user as a batch summary; do NOT ask per-feature.
|
|
134
|
+
5. Verify DAG/order/priorities
|
|
135
|
+
6. Pre-generation completeness review (see §Pre-Generation Completeness Review below)
|
|
136
|
+
7. Build or append `feature-list.json`
|
|
137
|
+
8. Apply default testing strategy (see §Testing Defaults below)
|
|
138
|
+
9. Validate and fix until pass
|
|
139
|
+
10. Summarize final feature table
|
|
140
|
+
|
|
141
|
+
### Checkpoints (Mandatory Gates)
|
|
142
|
+
|
|
143
|
+
Checkpoints catch cascading errors early — skipping one means the next phase builds on unvalidated assumptions, which compounds into much harder debugging later.
|
|
144
|
+
|
|
145
|
+
| Checkpoint | Artifact/State | Criteria | Phase |
|
|
146
|
+
|-----------|----------------|----------|-------|
|
|
147
|
+
| **CP-FP-1** | Scope Confirmed | User confirmed what features to plan and context understood | 1 |
|
|
148
|
+
| **CP-FP-2** | Feature Proposals | Feature set with titles+deps identified (pre-validation) | 3-5 |
|
|
149
|
+
| **CP-FP-3** | DAG Validity | No cycles, dependencies resolved (validation dry-run) | 5 |
|
|
150
|
+
| **CP-FP-3.1** | Browser Interaction Applied | Qualifying features have `browser_interaction` field; user confirmed or opted out | 4 |
|
|
151
|
+
| **CP-FP-3.2** | Testing Defaults Applied | All features have appropriate `critic`, `critic_count`, and testing expectations | 7 |
|
|
152
|
+
| **CP-FP-3.3** | Completeness Review Passed | All features reviewed for description adequacy and cross-feature gaps | 6 |
|
|
153
|
+
| **CP-FP-4** | `feature-list.json` Generated | Schema validates, all required keys present | 7-8 |
|
|
154
|
+
| **CP-FP-5** | Final Validation Pass | Python script returns `"valid": true` with zero errors | 9 |
|
|
155
|
+
|
|
156
|
+
**Resume Detection**: If existing artifacts are found, read `${SKILL_DIR}/references/error-recovery.md` §Resume Support for checkpoint-based resumption.
|
|
157
|
+
|
|
158
|
+
## Pre-Generation Completeness Review (Phase 6)
|
|
159
|
+
|
|
160
|
+
Before generating `feature-list.json`, review the full feature set holistically. Individual features may look fine in isolation but have gaps when viewed together.
|
|
161
|
+
|
|
162
|
+
### Step 1: Description Adequacy Scan
|
|
163
|
+
|
|
164
|
+
For each feature, evaluate against the word-count thresholds in `planning-guide.md` §4:
|
|
165
|
+
- Does the description cover: what to build, key behaviors, integration points, data model (if applicable), error/edge cases?
|
|
166
|
+
- Is the description specific enough for an AI coding session to implement without guessing?
|
|
167
|
+
- Flag any feature below the recommended word count for its complexity level (30/50/80 words for low/medium/high).
|
|
168
|
+
|
|
169
|
+
### Step 2: Cross-Feature Completeness Check
|
|
170
|
+
|
|
171
|
+
Look at the feature set as a whole:
|
|
172
|
+
- **Implied functionality gaps**: Does feature A's acceptance criteria assume a capability that no other feature provides?
|
|
173
|
+
- **Missing integration seams**: If two features share data or interact at runtime, is the interface specified?
|
|
174
|
+
- **Scope leaks**: Does any feature's description reference functionality outside the agreed scope?
|
|
175
|
+
|
|
176
|
+
### Step 3: Present Review to User
|
|
177
|
+
|
|
178
|
+
Show a structured summary table:
|
|
179
|
+
|
|
180
|
+
```
|
|
181
|
+
Feature | Description | Cross-Feature | Recommendation
|
|
182
|
+
| Adequacy | Issues |
|
|
183
|
+
F-001 | ✓ (65 words)| — | Ready
|
|
184
|
+
F-002 | ⚠ (28 words)| — | Expand: add API endpoints, error handling
|
|
185
|
+
F-003 | ✓ (52 words)| Assumes email from | Clarify: who sends the notification?
|
|
186
|
+
| | F-006 (not yet defined)|
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
Then ask if any features need further discussion.
|
|
190
|
+
|
|
191
|
+
### Step 4: Interactive Supplementation
|
|
192
|
+
|
|
193
|
+
For each feature the user wants to discuss:
|
|
194
|
+
1. Ask targeted questions about the unclear aspects
|
|
195
|
+
2. Propose concrete description supplements
|
|
196
|
+
3. Update the feature description with agreed details
|
|
197
|
+
4. Re-check: does the supplement resolve the gap?
|
|
198
|
+
|
|
199
|
+
Continue until the user confirms all features are implementation-ready. This gate exists because fixing thin descriptions here costs minutes; fixing misimplemented features downstream costs hours.
|
|
200
|
+
|
|
201
|
+
## Fast Path (Simple Incremental)
|
|
202
|
+
|
|
203
|
+
For simple incremental planning, skip detailed Phase 2-3 analysis:
|
|
204
|
+
|
|
205
|
+
### Eligibility Criteria (ALL must apply)
|
|
206
|
+
- **Incremental mode only** — not new feature set
|
|
207
|
+
- **Adding 1-2 features max** to existing plan
|
|
208
|
+
- **Each feature**: ≤5 acceptance criteria, <100 words description
|
|
209
|
+
- **Dependencies**: depends on ≤2 existing features (no chains)
|
|
210
|
+
- **Complexity**: "low" or "medium" only
|
|
211
|
+
- **No architectural changes** to existing tech stack
|
|
212
|
+
|
|
213
|
+
### Fast Path Workflow
|
|
214
|
+
1. Read existing `feature-list.json` and confirm scope
|
|
215
|
+
2. **User confirmation (mandatory)** — Tell the user: "This qualifies for fast-path (simple incremental addition). Skip detailed Phase 2-3 analysis and draft directly? Or use full workflow?" Only proceed with fast path if user confirms.
|
|
216
|
+
3. Generate next sequential feature IDs
|
|
217
|
+
4. Draft features (title + description + acceptance_criteria + dependencies)
|
|
218
|
+
5. Run validation script immediately
|
|
219
|
+
6. If valid → summarize and recommend next step
|
|
220
|
+
7. If invalid → apply fixes, re-validate (max 2 attempts, then escalate to full workflow)
|
|
221
|
+
|
|
222
|
+
## Browser Interaction Planning
|
|
223
|
+
|
|
224
|
+
For fullstack/frontend projects, qualifying features get `browser_interaction` **by default**.
|
|
225
|
+
|
|
226
|
+
### Auto-Detection Rule
|
|
227
|
+
|
|
228
|
+
A feature **qualifies** when ALL true:
|
|
229
|
+
1. `global_context.frontend_framework` exists
|
|
230
|
+
2. The feature's `acceptance_criteria` contain UI-related keywords: click, button, modal, page, form, display, navigate, tab, input, opens, shows, renders, visible, redirect, download, upload, preview, select, toggle, dropdown, popup, toast, menu
|
|
231
|
+
|
|
232
|
+
A feature is **exempt** when ANY true:
|
|
233
|
+
- Backend-only (API endpoints, database migrations, no UI criteria)
|
|
234
|
+
- Config/setup/infrastructure
|
|
235
|
+
- `status: "completed"` (already implemented)
|
|
236
|
+
|
|
237
|
+
### Default Behavior (Phase 4.2)
|
|
238
|
+
|
|
239
|
+
1. **Auto-generate** `browser_interaction` for ALL qualifying features. Read `${SKILL_DIR}/references/browser-interaction.md` for the object format and field rules.
|
|
240
|
+
2. **Present a summary** to the user showing which features received `browser_interaction`.
|
|
241
|
+
3. **User can opt-OUT** specific features.
|
|
242
|
+
|
|
243
|
+
## Output Rules
|
|
244
|
+
|
|
245
|
+
`feature-list.json` must satisfy:
|
|
246
|
+
- `$schema` = `dev-pipeline-feature-list-v1`
|
|
247
|
+
- non-empty `features`
|
|
248
|
+
- sequential feature IDs (`F-001`, `F-002`, ...)
|
|
249
|
+
- valid dependency DAG
|
|
250
|
+
- `priority` must be a string: `"high"`, `"medium"`, or `"low"` (NOT numeric)
|
|
251
|
+
- new items default `status: "pending"`
|
|
252
|
+
- English feature titles for stable slug generation
|
|
253
|
+
- `model` field is optional
|
|
254
|
+
- `critic` field defaults based on priority: `true` for high/medium, `false` for low
|
|
255
|
+
- `critic_count` field defaults: `3` for high priority, `1` for medium
|
|
256
|
+
- `browser_interaction` field auto-generated for qualifying frontend features
|
|
257
|
+
- descriptions must be implementation-ready — minimum 15 words (error), recommended 30/50/80 words for low/medium/high complexity (warning). See `planning-guide.md` §4.
|
|
258
|
+
|
|
259
|
+
## Testing Defaults (Phase 8)
|
|
260
|
+
|
|
261
|
+
All three testing mechanisms are enabled by default. The user can opt out.
|
|
262
|
+
|
|
263
|
+
### 1. Test File Generation (TDD)
|
|
264
|
+
|
|
265
|
+
Every feature includes tests. In the feature description, state testing expectations:
|
|
266
|
+
|
|
267
|
+
| Complexity | Default Testing Expectation |
|
|
268
|
+
|------------|----------------------------|
|
|
269
|
+
| low | Unit tests for core logic |
|
|
270
|
+
| medium | Unit tests + integration tests for key flows |
|
|
271
|
+
| high | Unit tests + integration tests + edge case coverage |
|
|
272
|
+
|
|
273
|
+
### 2. Browser Verification (Playwright)
|
|
274
|
+
|
|
275
|
+
Default ON for all qualifying frontend features.
|
|
276
|
+
|
|
277
|
+
### 3. Adversarial Critic Review
|
|
278
|
+
|
|
279
|
+
| Priority | `critic` | `critic_count` | Rationale |
|
|
280
|
+
|----------|----------|----------------|-----------|
|
|
281
|
+
| high | `true` | `3` | Multi-critic voting |
|
|
282
|
+
| medium | `true` | `1` | Single critic review |
|
|
283
|
+
| low | `false` | (omitted) | Skip critic |
|
|
284
|
+
|
|
285
|
+
Present a consolidated testing summary table at Phase 8, then ask for confirmation.
|
|
286
|
+
|
|
287
|
+
## Next-Step Execution Policy (after planning)
|
|
288
|
+
|
|
289
|
+
Recommend these three options in this strict order:
|
|
290
|
+
|
|
291
|
+
1. **Preferred**: invoke `feature-pipeline-launcher` skill
|
|
292
|
+
2. **Fallback A**: run daemon wrapper
|
|
293
|
+
```bash
|
|
294
|
+
./dev-pipeline/launch-feature-daemon.sh start feature-list.json
|
|
295
|
+
./dev-pipeline/launch-feature-daemon.sh status
|
|
296
|
+
```
|
|
297
|
+
3. **Fallback B**: run direct foreground script
|
|
298
|
+
```bash
|
|
299
|
+
./dev-pipeline/run-feature.sh run
|
|
300
|
+
./dev-pipeline/run-feature.sh status
|
|
301
|
+
```
|
|
302
|
+
|
|
303
|
+
## Error Recovery & Resume
|
|
304
|
+
|
|
305
|
+
If validation fails or a session is interrupted → read `${SKILL_DIR}/references/error-recovery.md` for the full error type table, decision tree, retry logic, and checkpoint-based resume support.
|
|
306
|
+
|
|
307
|
+
Key behaviors:
|
|
308
|
+
- Warnings only → proceed with user approval
|
|
309
|
+
- Critical errors → group by type, auto-fix where possible, max 3 total attempts
|
|
310
|
+
- Interrupted session → detect checkpoint from existing artifacts, offer resume or restart
|
|
311
|
+
- `feature-list.json` MUST be written to project root (same level as `package.json` / `.git`)
|
|
312
|
+
|
|
313
|
+
## Session Exit Gate
|
|
314
|
+
|
|
315
|
+
Prevent accidental session exit without deliverable completion.
|
|
316
|
+
|
|
317
|
+
### Trigger Conditions
|
|
318
|
+
Activate when ALL true:
|
|
319
|
+
- User expressed intent to produce feature-list.json
|
|
320
|
+
- Current phase < Phase 7
|
|
321
|
+
- No valid `feature-list.json` written in this session
|
|
322
|
+
|
|
323
|
+
### Gate Behavior
|
|
324
|
+
When the session appears to be ending:
|
|
325
|
+
1. **Remind**: "You set out to produce `feature-list.json` but we haven't completed it yet."
|
|
326
|
+
2. **Offer 3 options**:
|
|
327
|
+
- **(a) Continue to completion**
|
|
328
|
+
- **(b) Save draft & exit** — write current progress as draft
|
|
329
|
+
- **(c) Abandon** — exit without saving
|
|
330
|
+
|
|
331
|
+
## Handoff Message Template
|
|
332
|
+
|
|
333
|
+
After successful validation, report:
|
|
334
|
+
1. Output file path
|
|
335
|
+
2. Total features + newly added features
|
|
336
|
+
3. Dependency and priority highlights
|
|
337
|
+
4. Recommended next action: `feature-pipeline-launcher`
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
#
|
|
1
|
+
# feature planner Evaluation Guide
|
|
2
2
|
|
|
3
|
-
This guide is for maintainers who evaluate and iterate on the `
|
|
3
|
+
This guide is for maintainers who evaluate and iterate on the `feature-planner` skill quality.
|
|
4
4
|
|
|
5
5
|
## Evaluation & Quality Gates (Optional but Recommended)
|
|
6
6
|
|
|
@@ -12,9 +12,9 @@ Requires npm setup:
|
|
|
12
12
|
|
|
13
13
|
```bash
|
|
14
14
|
npm run skill:review -- \
|
|
15
|
-
--workspace /.codebuddy/skill-evals/
|
|
15
|
+
--workspace /.codebuddy/skill-evals/feature-planner-workspace \
|
|
16
16
|
--iteration iteration-N \
|
|
17
|
-
--skill-name
|
|
17
|
+
--skill-name feature-planner \
|
|
18
18
|
--skill-path ${SKILL_DIR} \
|
|
19
19
|
--runs 3 \
|
|
20
20
|
--grader-cmd "python3 ${SKILL_DIR}/scripts/validate-and-generate.py grade --workspace {workspace} --iteration {iteration}"
|