prizmkit 1.1.57 → 1.1.60
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/bin/create-prizmkit.js +8 -6
- package/bundled/VERSION.json +3 -3
- package/bundled/adapters/codex/agent-adapter.js +38 -0
- package/bundled/adapters/codex/paths.js +27 -0
- package/bundled/adapters/codex/rules-adapter.js +30 -0
- package/bundled/adapters/codex/settings-adapter.js +27 -0
- package/bundled/adapters/codex/skill-adapter.js +65 -0
- package/bundled/adapters/codex/team-adapter.js +37 -0
- package/bundled/dev-pipeline/.env.example +2 -1
- package/bundled/dev-pipeline/README.md +10 -7
- package/bundled/dev-pipeline/lib/common.sh +278 -37
- package/bundled/dev-pipeline/run-bugfix.sh +10 -61
- package/bundled/dev-pipeline/run-feature.sh +10 -78
- package/bundled/dev-pipeline/run-recovery.sh +10 -46
- package/bundled/dev-pipeline/run-refactor.sh +10 -61
- package/bundled/dev-pipeline/scripts/generate-bootstrap-prompt.py +17 -7
- package/bundled/dev-pipeline/scripts/generate-bugfix-prompt.py +9 -3
- package/bundled/dev-pipeline/scripts/generate-refactor-prompt.py +9 -3
- package/bundled/dev-pipeline/scripts/utils.py +6 -4
- package/bundled/dev-pipeline-windows/.env.example +28 -0
- package/bundled/dev-pipeline-windows/README.md +30 -0
- package/bundled/dev-pipeline-windows/SCHEMA_ANALYSIS.md +525 -0
- package/bundled/dev-pipeline-windows/assets/feature-list-example.json +146 -0
- package/bundled/dev-pipeline-windows/assets/prizm-dev-team-integration.md +138 -0
- package/bundled/dev-pipeline-windows/launch-bugfix-daemon.ps1 +9 -0
- package/bundled/dev-pipeline-windows/launch-feature-daemon.ps1 +9 -0
- package/bundled/dev-pipeline-windows/launch-refactor-daemon.ps1 +9 -0
- package/bundled/dev-pipeline-windows/lib/common.ps1 +432 -0
- package/bundled/dev-pipeline-windows/lib/daemon.ps1 +140 -0
- package/bundled/dev-pipeline-windows/lib/pipeline.ps1 +446 -0
- package/bundled/dev-pipeline-windows/lib/reset.ps1 +87 -0
- package/bundled/dev-pipeline-windows/reset-bug.ps1 +9 -0
- package/bundled/dev-pipeline-windows/reset-feature.ps1 +9 -0
- package/bundled/dev-pipeline-windows/reset-refactor.ps1 +9 -0
- package/bundled/dev-pipeline-windows/run-bugfix.ps1 +9 -0
- package/bundled/dev-pipeline-windows/run-feature.ps1 +9 -0
- package/bundled/dev-pipeline-windows/run-recovery.ps1 +76 -0
- package/bundled/dev-pipeline-windows/run-refactor.ps1 +9 -0
- package/bundled/dev-pipeline-windows/scripts/check-session-status.py +228 -0
- package/bundled/dev-pipeline-windows/scripts/cleanup-logs.py +192 -0
- package/bundled/dev-pipeline-windows/scripts/detect-stuck.py +530 -0
- package/bundled/dev-pipeline-windows/scripts/generate-bootstrap-prompt.py +1737 -0
- package/bundled/dev-pipeline-windows/scripts/generate-bugfix-prompt.py +685 -0
- package/bundled/dev-pipeline-windows/scripts/generate-recovery-prompt.py +805 -0
- package/bundled/dev-pipeline-windows/scripts/generate-refactor-prompt.py +763 -0
- package/bundled/dev-pipeline-windows/scripts/init-bugfix-pipeline.py +316 -0
- package/bundled/dev-pipeline-windows/scripts/init-dev-team.py +134 -0
- package/bundled/dev-pipeline-windows/scripts/init-pipeline.py +380 -0
- package/bundled/dev-pipeline-windows/scripts/init-refactor-pipeline.py +399 -0
- package/bundled/dev-pipeline-windows/scripts/parse-stream-progress.py +388 -0
- package/bundled/dev-pipeline-windows/scripts/patch-completion-notes.py +191 -0
- package/bundled/dev-pipeline-windows/scripts/update-bug-status.py +864 -0
- package/bundled/dev-pipeline-windows/scripts/update-checkpoint.py +173 -0
- package/bundled/dev-pipeline-windows/scripts/update-feature-status.py +1501 -0
- package/bundled/dev-pipeline-windows/scripts/update-refactor-status.py +1073 -0
- package/bundled/dev-pipeline-windows/scripts/utils.py +542 -0
- package/bundled/dev-pipeline-windows/templates/agent-prompts/critic-plan-challenge.md +7 -0
- package/bundled/dev-pipeline-windows/templates/agent-prompts/dev-fix.md +7 -0
- package/bundled/dev-pipeline-windows/templates/agent-prompts/dev-implement.md +30 -0
- package/bundled/dev-pipeline-windows/templates/agent-prompts/dev-resume.md +5 -0
- package/bundled/dev-pipeline-windows/templates/agent-prompts/reviewer-review.md +7 -0
- package/bundled/dev-pipeline-windows/templates/bootstrap-prompt.md +46 -0
- package/bundled/dev-pipeline-windows/templates/bootstrap-tier1.md +43 -0
- package/bundled/dev-pipeline-windows/templates/bootstrap-tier2.md +43 -0
- package/bundled/dev-pipeline-windows/templates/bootstrap-tier3.md +43 -0
- package/bundled/dev-pipeline-windows/templates/bug-fix-list-schema.json +263 -0
- package/bundled/dev-pipeline-windows/templates/bugfix-bootstrap-prompt.md +320 -0
- package/bundled/dev-pipeline-windows/templates/feature-list-schema.json +237 -0
- package/bundled/dev-pipeline-windows/templates/refactor-bootstrap-prompt.md +331 -0
- package/bundled/dev-pipeline-windows/templates/refactor-list-schema.json +270 -0
- package/bundled/dev-pipeline-windows/templates/sections/ac-verification-checklist.md +13 -0
- package/bundled/dev-pipeline-windows/templates/sections/checkpoint-system.md +91 -0
- package/bundled/dev-pipeline-windows/templates/sections/context-budget-rules.md +33 -0
- package/bundled/dev-pipeline-windows/templates/sections/critical-paths-agent.md +10 -0
- package/bundled/dev-pipeline-windows/templates/sections/critical-paths-full.md +12 -0
- package/bundled/dev-pipeline-windows/templates/sections/critical-paths-lite.md +7 -0
- package/bundled/dev-pipeline-windows/templates/sections/directory-convention-agent.md +8 -0
- package/bundled/dev-pipeline-windows/templates/sections/directory-convention-full.md +9 -0
- package/bundled/dev-pipeline-windows/templates/sections/directory-convention-lite.md +6 -0
- package/bundled/dev-pipeline-windows/templates/sections/failure-capture.md +21 -0
- package/bundled/dev-pipeline-windows/templates/sections/feature-context.md +31 -0
- package/bundled/dev-pipeline-windows/templates/sections/phase-browser-verification-auto.md +72 -0
- package/bundled/dev-pipeline-windows/templates/sections/phase-browser-verification-opencli.md +63 -0
- package/bundled/dev-pipeline-windows/templates/sections/phase-browser-verification.md +62 -0
- package/bundled/dev-pipeline-windows/templates/sections/phase-commit-full.md +71 -0
- package/bundled/dev-pipeline-windows/templates/sections/phase-commit.md +64 -0
- package/bundled/dev-pipeline-windows/templates/sections/phase-context-snapshot-agent-suffix.md +23 -0
- package/bundled/dev-pipeline-windows/templates/sections/phase-context-snapshot-base.md +24 -0
- package/bundled/dev-pipeline-windows/templates/sections/phase-context-snapshot-lite-suffix.md +12 -0
- package/bundled/dev-pipeline-windows/templates/sections/phase-critic-plan-full.md +53 -0
- package/bundled/dev-pipeline-windows/templates/sections/phase-critic-plan.md +32 -0
- package/bundled/dev-pipeline-windows/templates/sections/phase-implement-agent.md +37 -0
- package/bundled/dev-pipeline-windows/templates/sections/phase-implement-full.md +50 -0
- package/bundled/dev-pipeline-windows/templates/sections/phase-implement-lite.md +52 -0
- package/bundled/dev-pipeline-windows/templates/sections/phase-plan-agent.md +27 -0
- package/bundled/dev-pipeline-windows/templates/sections/phase-plan-lite.md +27 -0
- package/bundled/dev-pipeline-windows/templates/sections/phase-review-agent.md +27 -0
- package/bundled/dev-pipeline-windows/templates/sections/phase-review-full.md +29 -0
- package/bundled/dev-pipeline-windows/templates/sections/phase-specify-plan-full.md +77 -0
- package/bundled/dev-pipeline-windows/templates/sections/phase0-init.md +13 -0
- package/bundled/dev-pipeline-windows/templates/sections/phase0-test-baseline.md +23 -0
- package/bundled/dev-pipeline-windows/templates/sections/session-context.md +5 -0
- package/bundled/dev-pipeline-windows/templates/sections/subagent-timeout-recovery.md +6 -0
- package/bundled/dev-pipeline-windows/templates/sections/test-failure-recovery-agent.md +67 -0
- package/bundled/dev-pipeline-windows/templates/sections/test-failure-recovery-lite.md +58 -0
- package/bundled/dev-pipeline-windows/templates/session-status-schema.json +83 -0
- package/bundled/skills/_metadata.json +1 -1
- package/bundled/skills/app-planner/SKILL.md +26 -18
- package/bundled/skills/app-planner/references/architecture-decisions.md +9 -5
- package/bundled/skills/app-planner/references/frontend-design-guide.md +1 -1
- package/bundled/skills/feature-planner/SKILL.md +9 -2
- package/bundled/skills/prizmkit-init/SKILL.md +7 -6
- package/bundled/skills/recovery-workflow/scripts/detect-recovery-state.py +2 -0
- package/bundled/skills-windows/app-planner/SKILL.md +639 -0
- package/bundled/skills-windows/app-planner/assets/app-design-guide.md +101 -0
- package/bundled/skills-windows/app-planner/references/architecture-decisions.md +52 -0
- package/bundled/skills-windows/app-planner/references/brainstorm-guide.md +101 -0
- package/bundled/skills-windows/app-planner/references/frontend-design-guide.md +71 -0
- package/bundled/skills-windows/app-planner/references/project-brief-guide.md +82 -0
- package/bundled/skills-windows/app-planner/references/red-team-checklist.md +40 -0
- package/bundled/skills-windows/app-planner/references/rules/backend/derivation-rules.md +609 -0
- package/bundled/skills-windows/app-planner/references/rules/backend/fixed-rules.md +285 -0
- package/bundled/skills-windows/app-planner/references/rules/backend/question-bank.md +249 -0
- package/bundled/skills-windows/app-planner/references/rules/backend/template.md +173 -0
- package/bundled/skills-windows/app-planner/references/rules/database/derivation-rules.md +373 -0
- package/bundled/skills-windows/app-planner/references/rules/database/fixed-rules.md +211 -0
- package/bundled/skills-windows/app-planner/references/rules/database/question-bank.md +184 -0
- package/bundled/skills-windows/app-planner/references/rules/database/template.md +158 -0
- package/bundled/skills-windows/app-planner/references/rules/frontend/derivation-rules.md +810 -0
- package/bundled/skills-windows/app-planner/references/rules/frontend/fixed-rules.md +188 -0
- package/bundled/skills-windows/app-planner/references/rules/frontend/question-bank.md +302 -0
- package/bundled/skills-windows/app-planner/references/rules/frontend/template.md +320 -0
- package/bundled/skills-windows/app-planner/references/rules/mobile/derivation-rules.md +639 -0
- package/bundled/skills-windows/app-planner/references/rules/mobile/fixed-rules.md +290 -0
- package/bundled/skills-windows/app-planner/references/rules/mobile/question-bank.md +232 -0
- package/bundled/skills-windows/app-planner/references/rules/mobile/template.md +175 -0
- package/bundled/skills-windows/bug-fix-workflow/SKILL.md +415 -0
- package/bundled/skills-windows/bug-planner/SKILL.md +395 -0
- package/bundled/skills-windows/bug-planner/assets/bug-confirmation-template.md +43 -0
- package/bundled/skills-windows/bug-planner/references/critic-and-verification.md +44 -0
- package/bundled/skills-windows/bug-planner/references/error-recovery.md +73 -0
- package/bundled/skills-windows/bug-planner/references/input-formats.md +53 -0
- package/bundled/skills-windows/bug-planner/references/schema-validation.md +25 -0
- package/bundled/skills-windows/bug-planner/references/severity-rules.md +16 -0
- package/bundled/skills-windows/bug-planner/scripts/validate-bug-list.py +322 -0
- package/bundled/skills-windows/bugfix-pipeline-launcher/SKILL.md +380 -0
- package/bundled/skills-windows/feature-pipeline-launcher/SKILL.md +441 -0
- package/bundled/skills-windows/feature-pipeline-launcher/scripts/preflight-check.py +462 -0
- package/bundled/skills-windows/feature-planner/SKILL.md +401 -0
- package/bundled/skills-windows/feature-planner/assets/evaluation-guide.md +64 -0
- package/bundled/skills-windows/feature-planner/assets/planning-guide.md +214 -0
- package/bundled/skills-windows/feature-planner/references/browser-interaction.md +59 -0
- package/bundled/skills-windows/feature-planner/references/completeness-review.md +57 -0
- package/bundled/skills-windows/feature-planner/references/decomposition-patterns.md +75 -0
- package/bundled/skills-windows/feature-planner/references/error-recovery.md +90 -0
- package/bundled/skills-windows/feature-planner/references/incremental-feature-planning.md +112 -0
- package/bundled/skills-windows/feature-planner/references/new-project-planning.md +85 -0
- package/bundled/skills-windows/feature-planner/scripts/validate-and-generate.py +1029 -0
- package/bundled/skills-windows/feature-workflow/SKILL.md +531 -0
- package/bundled/skills-windows/prizmkit-init/SKILL.md +356 -0
- package/bundled/skills-windows/prizmkit-init/assets/project-brief-template.md +82 -0
- package/bundled/skills-windows/prizmkit-init/references/config-schema.md +68 -0
- package/bundled/skills-windows/prizmkit-init/references/rules/layer-detection.md +41 -0
- package/bundled/skills-windows/prizmkit-init/references/tech-stack-catalog.md +13 -0
- package/bundled/skills-windows/prizmkit-init/references/update-supplement.md +9 -0
- package/bundled/skills-windows/recovery-workflow/SKILL.md +456 -0
- package/bundled/skills-windows/recovery-workflow/evals/evals.json +46 -0
- package/bundled/skills-windows/recovery-workflow/scripts/detect-recovery-state.py +544 -0
- package/bundled/skills-windows/refactor-pipeline-launcher/SKILL.md +406 -0
- package/bundled/skills-windows/refactor-planner/SKILL.md +540 -0
- package/bundled/skills-windows/refactor-planner/assets/planning-guide.md +292 -0
- package/bundled/skills-windows/refactor-planner/references/behavior-preservation.md +301 -0
- package/bundled/skills-windows/refactor-planner/references/refactor-scoping-guide.md +221 -0
- package/bundled/skills-windows/refactor-planner/scripts/validate-and-generate-refactor.py +858 -0
- package/bundled/skills-windows/refactor-workflow/SKILL.md +503 -0
- package/package.json +3 -2
- package/src/clean.js +73 -2
- package/src/config.js +159 -50
- package/src/detect-platform.js +16 -8
- package/src/external-skills.js +26 -19
- package/src/index.js +31 -9
- package/src/manifest.js +6 -2
- package/src/metadata.js +43 -5
- package/src/platforms.js +36 -0
- package/src/prompts.js +31 -6
- package/src/runtimes.js +20 -0
- package/src/scaffold.js +314 -110
- package/src/upgrade.js +81 -41
|
@@ -0,0 +1,401 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: "feature-planner"
|
|
3
|
+
description: "Plan and manage features for an existing project — add new features, reprioritize, split, and generate validated .prizmkit/plans/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 .prizmkit/plans/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 `.prizmkit/plans/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, 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 `.prizmkit/plans/feature-list.json`
|
|
39
|
+
|
|
40
|
+
**Your ONLY writable outputs are:**
|
|
41
|
+
1. `.prizmkit/plans/feature-list.json` (`.prizmkit/plans/`)
|
|
42
|
+
2. Draft backups in `.prizmkit/plans/` (e.g., `feature-list.draft.json`)
|
|
43
|
+
|
|
44
|
+
**After planning is complete**, you MUST:
|
|
45
|
+
1. Present the summary and recommended next step (invoking `feature-pipeline-launcher` )
|
|
46
|
+
2. **Ask the user explicitly** whether they want to proceed to execution
|
|
47
|
+
3. If the user wants to adjust → continue refining `.prizmkit/plans/feature-list.json`
|
|
48
|
+
4. **NEVER auto-execute** the pipeline, launcher, or any implementation step
|
|
49
|
+
|
|
50
|
+
## User-Provided Content Priority (Hard Rule)
|
|
51
|
+
|
|
52
|
+
When the user provides detailed specifications, rules, or implementation requirements:
|
|
53
|
+
|
|
54
|
+
1. **Verbatim preservation**: The user's exact wording MUST be preserved in `description` and `acceptance_criteria` fields. Do NOT paraphrase, summarize, abstract, or simplify.
|
|
55
|
+
2. **No autonomous simplification**: A 200-word user specification must NOT become a 30-word description. Match the detail level of the user's input.
|
|
56
|
+
3. **Clarify, don't assume**: If any user-provided rule is ambiguous or potentially conflicts with another, ASK the user to clarify. No limit on clarification rounds. Do NOT proceed with unresolved ambiguities.
|
|
57
|
+
4. **Populate `user_context`**: ALL user-provided materials (supplementary content, rules, file path references) MUST be written into the `user_context` array of each feature in the generated `.prizmkit/plans/feature-list.json`. Format:
|
|
58
|
+
- Supplementary content or rules → store as-is (verbatim text)
|
|
59
|
+
- File references → store as path string, e.g. `src/auth/login.ts:42-78` or `src/utils/validate.ts — focus on validateEmail function`
|
|
60
|
+
|
|
61
|
+
## When to Use
|
|
62
|
+
|
|
63
|
+
Trigger this skill for requests like:
|
|
64
|
+
- "Add features to existing system", "Continue planning"
|
|
65
|
+
- "Prepare .prizmkit/plans/feature-list.json", "Prepare dev-pipeline input"
|
|
66
|
+
- "Reprioritize features", "Split features"
|
|
67
|
+
- "Plan features for my project" (when the project already exists)
|
|
68
|
+
|
|
69
|
+
Do NOT use this skill when:
|
|
70
|
+
- The user wants to plan a new app from scratch → use `app-planner`
|
|
71
|
+
- The user only wants to run the pipeline → use `feature-pipeline-launcher`
|
|
72
|
+
- The user is debugging/refactoring or wants to write source code directly
|
|
73
|
+
|
|
74
|
+
## Resource Loading Rules (Mandatory)
|
|
75
|
+
|
|
76
|
+
1. **Planning reference** — load before writing feature descriptions:
|
|
77
|
+
- Read `${SKILL_DIR}/assets/planning-guide.md` for description writing standards, acceptance criteria patterns, complexity estimation, dependency rules, and session granularity
|
|
78
|
+
|
|
79
|
+
2. **Incremental planning reference** — load for incremental mode:
|
|
80
|
+
- Read `${SKILL_DIR}/references/incremental-feature-planning.md`
|
|
81
|
+
|
|
82
|
+
3. **Load on-demand references when triggered**:
|
|
83
|
+
- Validation errors or interrupted session → read `${SKILL_DIR}/references/error-recovery.md`
|
|
84
|
+
- Browser interaction fields needed → read `${SKILL_DIR}/references/browser-interaction.md`
|
|
85
|
+
- New feature set for a project (Route A) → read `${SKILL_DIR}/references/new-project-planning.md` for phase guide, quality rules, and delivery checklist
|
|
86
|
+
- Feature decomposition from scratch → read `${SKILL_DIR}/references/decomposition-patterns.md` for common app patterns (CRUD, SaaS, Social, E-commerce)
|
|
87
|
+
- Phase 6 completeness review → read `${SKILL_DIR}/references/completeness-review.md`
|
|
88
|
+
|
|
89
|
+
4. **Define the PowerShell Python helper before running validation scripts**:
|
|
90
|
+
```powershell
|
|
91
|
+
function Invoke-PrizmPython {
|
|
92
|
+
param([Parameter(ValueFromRemainingArguments = $true)][string[]]$Arguments)
|
|
93
|
+
$python = Get-Command python -ErrorAction SilentlyContinue
|
|
94
|
+
if ($python) {
|
|
95
|
+
& $python.Source -c 'import sys; raise SystemExit(0 if sys.version_info[0] == 3 else 1)' *> $null
|
|
96
|
+
if ($LASTEXITCODE -eq 0) {
|
|
97
|
+
& $python.Source @Arguments
|
|
98
|
+
return
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
$py = Get-Command py -ErrorAction SilentlyContinue
|
|
102
|
+
if ($py) {
|
|
103
|
+
& $py.Source -3 -c 'import sys; raise SystemExit(0 if sys.version_info[0] == 3 else 1)' *> $null
|
|
104
|
+
if ($LASTEXITCODE -eq 0) {
|
|
105
|
+
& $py.Source -3 @Arguments
|
|
106
|
+
return
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
throw "Python 3 is required. Install Python and ensure python or py is in PATH."
|
|
110
|
+
}
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
5. **Always validate output via script** — see §Output Rules for the validation command.
|
|
114
|
+
|
|
115
|
+
If the script is not available, perform these manual validation checks:
|
|
116
|
+
1. **ID sequence**: All feature IDs are sequential (F-001, F-002, F-003, ...)
|
|
117
|
+
2. **No circular dependencies**: No feature depends (directly or transitively) on itself
|
|
118
|
+
3. **Description length**: Minimum 15 words per description (error), recommended minimum 30/50/80/100+ for low/medium/high/critical (warning). No upper limit — more detail is always better
|
|
119
|
+
4. **Dependency references**: All referenced features in dependencies exist in features array
|
|
120
|
+
5. **Priority enums**: All priority values are exactly "critical", "high", "medium", or "low" (case-sensitive)
|
|
121
|
+
6. **Status enum**: All status values are one of: pending, in_progress, completed, failed, skipped, split, auto_skipped
|
|
122
|
+
7. **Acceptance criteria**: At least 1 criterion per feature, each is a concrete, measurable statement
|
|
123
|
+
8. **Browser interaction**: If present, has verify_steps array (optional — AI auto-detects dev server, URL, port at runtime)
|
|
124
|
+
9. **Complexity enum**: If present, is one of: low, medium, high, critical
|
|
125
|
+
10. **Model field**: If present, is a non-empty string
|
|
126
|
+
11. **Critic field**: If present, is boolean; if true, critic_count should be 1 or 3
|
|
127
|
+
12. **Root schema**: Has $schema='dev-pipeline-feature-list-v1', project_name, and non-empty features array
|
|
128
|
+
|
|
129
|
+
6. **Use script output as source of truth** — if validation fails, fix and re-run until pass
|
|
130
|
+
|
|
131
|
+
## Prerequisites
|
|
132
|
+
|
|
133
|
+
Before questions, check optional context files (never block if absent):
|
|
134
|
+
- `.prizmkit/prizm-docs/root.prizm` (architecture/project context — typically created by app-planner with captured decisions)
|
|
135
|
+
- `.prizmkit/config.json` (existing stack preferences and detected tech stack)
|
|
136
|
+
- `.prizmkit/plans/project-brief.md` (project context from app-planner, if available)
|
|
137
|
+
- existing `.prizmkit/plans/feature-list.json` (required for incremental mode)
|
|
138
|
+
- Platform instruction file: use the `platform` field in `.prizmkit/manifest.json` as source of truth when present (`codex` → `AGENTS.md`, `claude` → `CLAUDE.md`, `codebuddy` → `CODEBUDDY.md`; `both`/`all` → read every matching file)
|
|
139
|
+
- If `.prizmkit/prizm-docs/root.prizm` is absent and the project has existing source code, scan the directory structure to understand the codebase layout:
|
|
140
|
+
```powershell
|
|
141
|
+
Get-ChildItem -Path . -Directory -Recurse -Depth 2 -ErrorAction SilentlyContinue |
|
|
142
|
+
Where-Object { $_.FullName -notmatch '\\(node_modules|\.git|dist|build|__pycache__|vendor|\.agents|\.codex|\.claude|\.codebuddy|\.prizmkit)(\\|$)' } |
|
|
143
|
+
Select-Object -ExpandProperty FullName
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
**Tech stack from config.json:**
|
|
147
|
+
- If `.prizmkit/config.json` contains a `tech_stack` object, use it to pre-fill `global_context` fields in the generated `.prizmkit/plans/feature-list.json`.
|
|
148
|
+
- Map config fields to global_context: `language`, `runtime`, `frontend_framework`, `frontend_styling`, `backend_framework`, `database`, `orm`, `testing` → `testing_strategy`, `bundler`, `project_type`.
|
|
149
|
+
- Do NOT re-ask the user for tech stack info already present in config.json. Show detected stack and confirm.
|
|
150
|
+
|
|
151
|
+
## Global Context Population
|
|
152
|
+
|
|
153
|
+
The `global_context` object in `.prizmkit/plans/feature-list.json` provides technology stack information. Populate it from `.prizmkit/config.json` if available, or ask the user during Phase 1.
|
|
154
|
+
|
|
155
|
+
### Recommended Fields by Project Type
|
|
156
|
+
|
|
157
|
+
**Frontend-only projects:**
|
|
158
|
+
- `language` (required) — e.g., "TypeScript", "JavaScript"
|
|
159
|
+
- `frontend_framework` (required) — e.g., "React", "Vue", "Svelte"
|
|
160
|
+
- `frontend_styling` (recommended) — e.g., "Tailwind CSS", "styled-components"
|
|
161
|
+
- `testing_strategy` (recommended) — e.g., "Jest + React Testing Library"
|
|
162
|
+
|
|
163
|
+
**Backend-only projects:**
|
|
164
|
+
- `language` (required) — e.g., "TypeScript", "Python", "Go"
|
|
165
|
+
- `backend_framework` (required) — e.g., "Express", "Django", "FastAPI"
|
|
166
|
+
- `database` (required if applicable) — e.g., "PostgreSQL", "MongoDB"
|
|
167
|
+
- `testing_strategy` (recommended) — e.g., "Jest", "pytest"
|
|
168
|
+
|
|
169
|
+
**Full-stack projects (include both frontend AND backend fields):**
|
|
170
|
+
- `language`, `frontend_framework`, `backend_framework`, `database`, `testing_strategy` (all recommended)
|
|
171
|
+
- Additional: `frontend_styling`, `orm`, `bundler`, `runtime`
|
|
172
|
+
|
|
173
|
+
All `global_context` fields are optional — including recommended fields improves downstream code generation quality. See `.prizmkit/dev-pipeline/templates/feature-list-schema.json` for the full schema definition.
|
|
174
|
+
|
|
175
|
+
|
|
176
|
+
---
|
|
177
|
+
|
|
178
|
+
## Scenario Routing
|
|
179
|
+
|
|
180
|
+
Classify user intent first:
|
|
181
|
+
|
|
182
|
+
### Route A: New Feature Set (No Existing Plan)
|
|
183
|
+
Use when the project exists but has no `.prizmkit/plans/feature-list.json` yet.
|
|
184
|
+
|
|
185
|
+
Actions:
|
|
186
|
+
1. Understand the existing codebase and what's already implemented
|
|
187
|
+
2. Run interactive planning phases to identify needed features
|
|
188
|
+
3. Generate initial `.prizmkit/plans/feature-list.json`
|
|
189
|
+
|
|
190
|
+
### Route B: Incremental Feature Planning
|
|
191
|
+
Use when user already has a `.prizmkit/plans/feature-list.json` and wants to add or adjust features.
|
|
192
|
+
|
|
193
|
+
Actions:
|
|
194
|
+
1. Load `${SKILL_DIR}/references/incremental-feature-planning.md`
|
|
195
|
+
2. Read existing `.prizmkit/plans/feature-list.json` first (if missing, ask whether to start new plan)
|
|
196
|
+
3. Append features with next sequential `F-NNN` IDs
|
|
197
|
+
4. Preserve style/language/detail consistency with existing plan
|
|
198
|
+
|
|
199
|
+
## Core Workflow
|
|
200
|
+
|
|
201
|
+
Execute the planning workflow in conversation mode with mandatory checkpoints:
|
|
202
|
+
|
|
203
|
+
### Interactive Phases
|
|
204
|
+
1. Clarify scope and goals
|
|
205
|
+
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.
|
|
206
|
+
1.2 **Collect reference materials** — **Upfront Material Detection (Hard Rule)**: If the user has already provided materials (file paths, URLs, rules, specifications, code snippets) in the same message that invoked this skill: (a) Acknowledge what was received: "I received the following materials: [list]"; (b) Read/fetch all provided materials immediately; (c) You MUST still ask: "Are there any additional materials you'd like to provide?"; (d) NEVER skip this collection step just because the user already provided some materials.
|
|
207
|
+
|
|
208
|
+
If the user has NOT provided any materials upfront, explicitly ask whether they have any supplementary materials for you to review. Present this as a single prompt covering all material types:
|
|
209
|
+
> "Do you have any reference materials I should review before planning? This can include:
|
|
210
|
+
> - **Code paths** — files or directories I should read to understand existing implementation
|
|
211
|
+
> - **Documents** — design docs, PRDs, API specs, architecture proposals, or internal wiki pages
|
|
212
|
+
> - **Knowledge docs** — `.prizmkit/prizm-docs/` files, README files, or project-specific documentation
|
|
213
|
+
> - **Images** — wireframes, mockups, architecture diagrams, or screenshots
|
|
214
|
+
> - **Web links** — reference implementations, API documentation pages, or relevant articles
|
|
215
|
+
>
|
|
216
|
+
> If none, we'll proceed with what's available in the codebase."
|
|
217
|
+
|
|
218
|
+
If the user provides materials, read/fetch them all before proceeding to Phase 2. For web links, use web fetch to retrieve and analyze the content. For images, read and analyze them visually. Record what was reviewed for traceability.
|
|
219
|
+
2. Confirm constraints and existing architecture
|
|
220
|
+
3. Propose feature set with dependencies
|
|
221
|
+
4. Refine descriptions and acceptance criteria
|
|
222
|
+
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.
|
|
223
|
+
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.
|
|
224
|
+
5. Verify DAG/order/priorities
|
|
225
|
+
6. Pre-generation completeness review (see §Pre-Generation Completeness Review below)
|
|
226
|
+
7. Build or append `.prizmkit/plans/feature-list.json`
|
|
227
|
+
8. Apply default testing strategy (see §Testing Defaults below)
|
|
228
|
+
9. Validate and fix until pass
|
|
229
|
+
10. Summarize final feature table
|
|
230
|
+
|
|
231
|
+
### Checkpoints (Mandatory Gates)
|
|
232
|
+
|
|
233
|
+
Checkpoints catch cascading errors early — skipping one means the next phase builds on unvalidated assumptions, which compounds into much harder debugging later.
|
|
234
|
+
|
|
235
|
+
| Checkpoint | Artifact/State | Criteria | Phase |
|
|
236
|
+
|-----------|----------------|----------|-------|
|
|
237
|
+
| **CP-FP-1** | Scope Confirmed | User confirmed what features to plan and context understood | 1 |
|
|
238
|
+
| **CP-FP-2** | Feature Proposals | Feature set with titles+deps identified (pre-validation) | 3-5 |
|
|
239
|
+
| **CP-FP-3** | DAG Validity | No cycles, dependencies resolved (validation dry-run) | 5 |
|
|
240
|
+
| **CP-FP-3.1** | Browser Interaction Applied | Qualifying features have `browser_interaction` field; user confirmed or opted out | 4 |
|
|
241
|
+
| **CP-FP-3.2** | Testing Defaults Applied | All features have appropriate `critic`, `critic_count`, and testing expectations | 7 |
|
|
242
|
+
| **CP-FP-3.3** | Completeness Review Passed | All features reviewed for description adequacy and cross-feature gaps | 6 |
|
|
243
|
+
| **CP-FP-4** | `.prizmkit/plans/feature-list.json` Generated | Schema validates, all required keys present | 7-8 |
|
|
244
|
+
| **CP-FP-5** | Final Validation Pass | Python script returns `"valid": true` with zero errors | 9 |
|
|
245
|
+
|
|
246
|
+
**Resume Detection**: If existing artifacts are found, read `${SKILL_DIR}/references/error-recovery.md` §Resume Support for checkpoint-based resumption.
|
|
247
|
+
|
|
248
|
+
## Pre-Generation Completeness Review (Phase 6)
|
|
249
|
+
|
|
250
|
+
Before generating `.prizmkit/plans/feature-list.json`, review the full feature set holistically.
|
|
251
|
+
|
|
252
|
+
→ Read `${SKILL_DIR}/references/completeness-review.md` for the full review process (description adequacy scan, cross-feature completeness check, user presentation, and interactive supplementation).
|
|
253
|
+
|
|
254
|
+
This gate ensures all features are implementation-ready before output generation. Thin descriptions here cost minutes to fix; misimplemented features downstream cost hours.
|
|
255
|
+
|
|
256
|
+
## Fast Path (Simple Incremental)
|
|
257
|
+
|
|
258
|
+
For simple incremental planning, skip detailed Phase 2-3 analysis:
|
|
259
|
+
|
|
260
|
+
### Eligibility Criteria (ALL must apply)
|
|
261
|
+
- **Incremental mode only** — not new feature set
|
|
262
|
+
- **Adding 1-2 features max** to existing plan
|
|
263
|
+
- **Each feature**: ≤5 acceptance criteria, <100 words description
|
|
264
|
+
- **Dependencies**: depends on ≤2 existing features (no chains)
|
|
265
|
+
- **Complexity**: "low" or "medium" only
|
|
266
|
+
- **No architectural changes** to existing tech stack
|
|
267
|
+
|
|
268
|
+
### Fast Path Workflow
|
|
269
|
+
1. Read existing `.prizmkit/plans/feature-list.json` and confirm scope
|
|
270
|
+
2. **User confirmation (mandatory)** — Use `AskUserQuestion` to present interactive selectable options:
|
|
271
|
+
|
|
272
|
+
```
|
|
273
|
+
AskUserQuestion:
|
|
274
|
+
question: "This qualifies for fast-path (simple incremental addition). How would you like to proceed?"
|
|
275
|
+
header: "Approach"
|
|
276
|
+
options:
|
|
277
|
+
- label: "Fast-path"
|
|
278
|
+
description: "Skip detailed Phase 2-3 analysis, draft features directly and add to feature-list.json"
|
|
279
|
+
- label: "Full workflow"
|
|
280
|
+
description: "Use the complete planning workflow with detailed analysis"
|
|
281
|
+
- label: "Implement directly"
|
|
282
|
+
description: "Skip the task list entirely and implement the feature(s) right now using /prizmkit-plan + /prizmkit-implement"
|
|
283
|
+
```
|
|
284
|
+
|
|
285
|
+
- **Fast-path** → Continue with fast-path workflow below
|
|
286
|
+
- **Full workflow** → Exit fast path, use full workflow from Phase 2
|
|
287
|
+
- **Implement directly** → Invoke `/prizmkit-plan` directly to create spec + plan, then `/prizmkit-implement` to execute. Do NOT add to `.prizmkit/plans/feature-list.json`
|
|
288
|
+
|
|
289
|
+
**NEVER proceed without explicit user selection via `AskUserQuestion`. Do NOT render options as plain text — the user must be able to click/select.**
|
|
290
|
+
3. Generate next sequential feature IDs
|
|
291
|
+
4. Draft features (title + description + acceptance_criteria + dependencies)
|
|
292
|
+
5. Write draft to `.prizmkit/plans/feature-list.draft.json`, then call the generate script:
|
|
293
|
+
```powershell
|
|
294
|
+
Invoke-PrizmPython ${SKILL_DIR}/scripts/validate-and-generate.py generate --input .prizmkit/plans/feature-list.draft.json --output .prizmkit/plans/feature-list.json --mode incremental
|
|
295
|
+
```
|
|
296
|
+
6. If valid → summarize and recommend next step
|
|
297
|
+
7. If invalid → apply fixes to the draft, re-run generate (max 2 attempts, then escalate to full workflow)
|
|
298
|
+
|
|
299
|
+
## Browser Interaction Planning
|
|
300
|
+
|
|
301
|
+
For fullstack/frontend projects, qualifying features get `browser_interaction` **by default**.
|
|
302
|
+
|
|
303
|
+
### Auto-Detection Rule
|
|
304
|
+
|
|
305
|
+
A feature **qualifies** when ALL true:
|
|
306
|
+
1. `global_context.frontend_framework` exists
|
|
307
|
+
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
|
|
308
|
+
|
|
309
|
+
A feature is **exempt** when ANY true:
|
|
310
|
+
- Backend-only (API endpoints, database migrations, no UI criteria)
|
|
311
|
+
- Config/setup/infrastructure
|
|
312
|
+
- `status: "completed"` (already implemented)
|
|
313
|
+
|
|
314
|
+
### Default Behavior (Phase 4.2)
|
|
315
|
+
|
|
316
|
+
1. **Ask user for browser tool preference (Mandatory)**: Before generating any `browser_interaction` fields, use `AskUserQuestion` to ask which browser verification tool to use as the project default. Read `${SKILL_DIR}/references/browser-interaction.md` §Browser Tool Selection for the exact question format and options (`auto`/`playwright-cli`/`opencli`). Do NOT skip this step or assume a default without asking.
|
|
317
|
+
2. **Auto-generate** `browser_interaction` for ALL qualifying features. Read `${SKILL_DIR}/references/browser-interaction.md` for the object format, field rules, and per-feature `tool` override logic.
|
|
318
|
+
3. **Tool assignment per feature**: Use the user's chosen default. Override to `"opencli"` when the feature involves OAuth/SSO callbacks, third-party dashboard verification, or requires real login state. Override to `"playwright-cli"` when the feature is purely local UI (forms, components, routing). If user chose `"auto"`, AI assigns per-feature based on these rules.
|
|
319
|
+
4. **Present a summary** to the user showing which features received `browser_interaction` (including the `tool` value for each).
|
|
320
|
+
5. **User can opt-OUT** specific features or override the `tool` choice.
|
|
321
|
+
|
|
322
|
+
## Output Rules
|
|
323
|
+
|
|
324
|
+
`.prizmkit/plans/feature-list.json` must conform to `.prizmkit/dev-pipeline/templates/feature-list-schema.json` (`$schema` = `dev-pipeline-feature-list-v1`).
|
|
325
|
+
|
|
326
|
+
Key requirements:
|
|
327
|
+
- non-empty `features` array
|
|
328
|
+
- sequential feature IDs (`F-001`, `F-002`, ...)
|
|
329
|
+
- valid dependency DAG (no cycles, all referenced IDs exist)
|
|
330
|
+
- `priority`: `"critical"`, `"high"`, `"medium"`, or `"low"` (string, NOT numeric)
|
|
331
|
+
- new items default `status: "pending"`
|
|
332
|
+
- English feature titles for stable slug generation
|
|
333
|
+
- `critic` / `critic_count` defaults per Testing Defaults section
|
|
334
|
+
- `browser_interaction` auto-generated for qualifying frontend features (with `tool` selection: `auto`/`playwright-cli`/`opencli`)
|
|
335
|
+
- descriptions: minimum 15 words (error), recommended minimum 30/50/80/100+ for low/medium/high/critical (warning). No upper limit — more detail prevents AI guessing
|
|
336
|
+
- `estimated_complexity` determines pipeline execution tier:
|
|
337
|
+
- `low` / `medium` → **lite** (single agent, no subagents)
|
|
338
|
+
- `high` → **standard** (orchestrator + dev + reviewer, 3 agents)
|
|
339
|
+
- `critical` → **full** (full team + critic agents, 5 agents). Use for: architectural changes touching 10+ files, cross-module refactoring with API surface changes, features requiring multi-critic voting
|
|
340
|
+
|
|
341
|
+
**IMPORTANT: Do NOT hand-write the final JSON file.** Instead:
|
|
342
|
+
1. Write a draft JSON to a temporary path (e.g., `.prizmkit/plans/feature-list.draft.json`)
|
|
343
|
+
2. Call the generate script to validate and produce the final file:
|
|
344
|
+
```powershell
|
|
345
|
+
Invoke-PrizmPython ${SKILL_DIR}/scripts/validate-and-generate.py generate --input .prizmkit/plans/feature-list.draft.json --output .prizmkit/plans/feature-list.json --mode <new|incremental>
|
|
346
|
+
```
|
|
347
|
+
The script fills in defaults (`$schema`, `created_at`, `created_by`), validates all fields, and writes the final file only if validation passes. If validation fails, fix the draft and retry.
|
|
348
|
+
|
|
349
|
+
## Testing Defaults (Phase 8)
|
|
350
|
+
|
|
351
|
+
Set default testing-related fields for each feature. The user can opt out.
|
|
352
|
+
|
|
353
|
+
| Priority | `critic` | `critic_count` | Rationale |
|
|
354
|
+
|----------|----------|----------------|-----------|
|
|
355
|
+
| high | `true` | `3` | Multi-critic voting |
|
|
356
|
+
| medium | `true` | `1` | Single critic review |
|
|
357
|
+
| low | `false` | (omitted) | Skip critic |
|
|
358
|
+
|
|
359
|
+
For frontend features with `browser_interaction`, browser verification is enabled by default. The `tool` field uses the user's choice from the mandatory browser tool question in Phase 4.2 (see §Browser Interaction Planning → Default Behavior).
|
|
360
|
+
|
|
361
|
+
Present a consolidated testing summary table at Phase 8, then ask for confirmation.
|
|
362
|
+
|
|
363
|
+
## Next-Step Execution Policy (after planning)
|
|
364
|
+
|
|
365
|
+
Recommend invoking `feature-pipeline-launcher` to configure and launch the dev-pipeline. Do NOT recommend running shell scripts directly — that is the launcher's responsibility.
|
|
366
|
+
|
|
367
|
+
## Error Recovery & Resume
|
|
368
|
+
|
|
369
|
+
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.
|
|
370
|
+
|
|
371
|
+
Key behaviors:
|
|
372
|
+
- Warnings only → proceed with user approval
|
|
373
|
+
- Critical errors → group by type, auto-fix where possible, max 3 total attempts
|
|
374
|
+
- Interrupted session → detect checkpoint from existing artifacts, offer resume or restart
|
|
375
|
+
- `.prizmkit/plans/feature-list.json` MUST be written to `.prizmkit/plans/` (project root level: `./{root}/.prizmkit/plans/feature-list.json`)
|
|
376
|
+
|
|
377
|
+
## Session Exit Gate
|
|
378
|
+
|
|
379
|
+
Prevent accidental session exit without deliverable completion.
|
|
380
|
+
|
|
381
|
+
### Trigger Conditions
|
|
382
|
+
Activate when ALL true:
|
|
383
|
+
- User expressed intent to produce .prizmkit/plans/feature-list.json
|
|
384
|
+
- Current phase < Phase 7
|
|
385
|
+
- No valid `.prizmkit/plans/feature-list.json` written in this session
|
|
386
|
+
|
|
387
|
+
### Gate Behavior
|
|
388
|
+
When the session appears to be ending:
|
|
389
|
+
1. **Remind**: "You set out to produce `.prizmkit/plans/feature-list.json` but we haven't completed it yet."
|
|
390
|
+
2. **Offer 3 options**:
|
|
391
|
+
- **(a) Continue to completion**
|
|
392
|
+
- **(b) Save draft & exit** — write current progress as `feature-list.draft.json` to `.prizmkit/plans/`
|
|
393
|
+
- **(c) Abandon** — exit without saving
|
|
394
|
+
|
|
395
|
+
## Handoff Message Template
|
|
396
|
+
|
|
397
|
+
After successful validation, report:
|
|
398
|
+
1. Output file path
|
|
399
|
+
2. Total features + newly added features
|
|
400
|
+
3. Dependency and priority highlights
|
|
401
|
+
4. Recommended next action: `feature-pipeline-launcher`
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
# feature planner Evaluation Guide
|
|
2
|
+
|
|
3
|
+
This guide is for maintainers who evaluate and iterate on the `feature-planner` skill quality.
|
|
4
|
+
|
|
5
|
+
## Evaluation & Quality Gates (Optional but Recommended)
|
|
6
|
+
|
|
7
|
+
After multiple planning cycles or before committing refined skill logic, run standardized evaluation.
|
|
8
|
+
|
|
9
|
+
### One-Command Evaluation
|
|
10
|
+
|
|
11
|
+
Requires npm setup:
|
|
12
|
+
|
|
13
|
+
```powershell
|
|
14
|
+
function Invoke-PrizmPython {
|
|
15
|
+
param([Parameter(ValueFromRemainingArguments = $true)][string[]]$Arguments)
|
|
16
|
+
$python = Get-Command python -ErrorAction SilentlyContinue
|
|
17
|
+
if ($python) {
|
|
18
|
+
& $python.Source -c 'import sys; raise SystemExit(0 if sys.version_info[0] == 3 else 1)' *> $null
|
|
19
|
+
if ($LASTEXITCODE -eq 0) {
|
|
20
|
+
& $python.Source @Arguments
|
|
21
|
+
return
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
$py = Get-Command py -ErrorAction SilentlyContinue
|
|
25
|
+
if ($py) {
|
|
26
|
+
& $py.Source -3 -c 'import sys; raise SystemExit(0 if sys.version_info[0] == 3 else 1)' *> $null
|
|
27
|
+
if ($LASTEXITCODE -eq 0) {
|
|
28
|
+
& $py.Source -3 @Arguments
|
|
29
|
+
return
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
throw "Python 3 is required. Install Python and ensure python or py is in PATH."
|
|
33
|
+
}
|
|
34
|
+
npm run skill:review -- `
|
|
35
|
+
--workspace .prizmkit/skill-evals/feature-planner-workspace `
|
|
36
|
+
--iteration iteration-N `
|
|
37
|
+
--skill-name feature-planner `
|
|
38
|
+
--skill-path ${SKILL_DIR} `
|
|
39
|
+
--runs 3 `
|
|
40
|
+
--grader-cmd "Invoke-PrizmPython ${SKILL_DIR}/scripts/validate-and-generate.py grade --workspace {workspace} --iteration {iteration}"
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
Produces:
|
|
44
|
+
- `benchmark.json` — quantitative metrics (pass rate, feature quality, time)
|
|
45
|
+
- `benchmark.md` — human-readable summary
|
|
46
|
+
- `review.html` — interactive evaluation viewer
|
|
47
|
+
|
|
48
|
+
### Metrics Tracked
|
|
49
|
+
|
|
50
|
+
| Metric | Computation | Target | Interpretation |
|
|
51
|
+
|--------|-------------|--------|-----------------|
|
|
52
|
+
| `plan_validity` | % runs with validation pass | >95% | Higher = more robust planning |
|
|
53
|
+
| `avg_features_per_run` | avg feature count | ±20% consistency | Should be stable across runs |
|
|
54
|
+
| `avg_acceptance_criteria` | AC count per feature | 4-6 | Target sweet spot for test coverage |
|
|
55
|
+
| `dependency_complexity` | max DAG depth, cycle count | depth < 5 | Manageable dependency graph |
|
|
56
|
+
| `description_quality` | word count, keyword coverage | min 20 words | Sufficient AC detail |
|
|
57
|
+
| `latency_sec` | wall-clock execution time | <120s per run | UX acceptable |
|
|
58
|
+
|
|
59
|
+
### When to Run Evaluation
|
|
60
|
+
|
|
61
|
+
- After major SKILL.md revisions
|
|
62
|
+
- Before releasing new skill updates
|
|
63
|
+
- Quarterly quality assurance
|
|
64
|
+
- Post-optimization to measure improvement
|