prizmkit 1.1.8 → 1.1.9
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/codebuddy/skill-adapter.js +21 -7
- package/bundled/agents/prizm-dev-team-reviewer.md +53 -173
- package/bundled/dev-pipeline/.env.example +45 -0
- package/bundled/dev-pipeline/SCHEMA_ANALYSIS.md +535 -0
- package/bundled/dev-pipeline/assets/feature-list-example.json +0 -1
- package/bundled/dev-pipeline/launch-bugfix-daemon.sh +57 -12
- package/bundled/dev-pipeline/launch-feature-daemon.sh +3 -1
- package/bundled/dev-pipeline/launch-refactor-daemon.sh +57 -12
- package/bundled/dev-pipeline/lib/branch.sh +6 -1
- package/bundled/dev-pipeline/lib/common.sh +71 -0
- package/bundled/dev-pipeline/lib/heartbeat.sh +2 -2
- package/bundled/dev-pipeline/retry-bugfix.sh +60 -23
- package/bundled/dev-pipeline/retry-feature.sh +47 -12
- package/bundled/dev-pipeline/retry-refactor.sh +105 -23
- package/bundled/dev-pipeline/run-bugfix.sh +265 -44
- package/bundled/dev-pipeline/run-feature.sh +35 -1
- package/bundled/dev-pipeline/run-refactor.sh +376 -51
- package/bundled/dev-pipeline/scripts/check-session-status.py +24 -1
- package/bundled/dev-pipeline/scripts/detect-stuck.py +195 -85
- package/bundled/dev-pipeline/scripts/generate-bootstrap-prompt.py +31 -19
- package/bundled/dev-pipeline/scripts/generate-bugfix-prompt.py +19 -3
- package/bundled/dev-pipeline/scripts/generate-refactor-prompt.py +98 -11
- package/bundled/dev-pipeline/scripts/init-bugfix-pipeline.py +30 -5
- package/bundled/dev-pipeline/scripts/init-pipeline.py +3 -3
- package/bundled/dev-pipeline/scripts/init-refactor-pipeline.py +15 -4
- package/bundled/dev-pipeline/scripts/parse-stream-progress.py +1 -5
- package/bundled/dev-pipeline/scripts/patch-completion-notes.py +191 -0
- package/bundled/dev-pipeline/scripts/update-bug-status.py +159 -14
- package/bundled/dev-pipeline/scripts/update-feature-status.py +79 -37
- package/bundled/dev-pipeline/scripts/update-refactor-status.py +343 -13
- package/bundled/dev-pipeline/templates/agent-prompts/dev-fix.md +1 -1
- package/bundled/dev-pipeline/templates/agent-prompts/reviewer-review.md +7 -11
- package/bundled/dev-pipeline/templates/bootstrap-prompt.md +41 -7
- package/bundled/dev-pipeline/templates/bootstrap-tier1.md +27 -3
- package/bundled/dev-pipeline/templates/bootstrap-tier2.md +43 -19
- package/bundled/dev-pipeline/templates/bootstrap-tier3.md +54 -26
- package/bundled/dev-pipeline/templates/bug-fix-list-schema.json +5 -14
- package/bundled/dev-pipeline/templates/bugfix-bootstrap-prompt.md +36 -25
- package/bundled/dev-pipeline/templates/feature-list-schema.json +23 -11
- package/bundled/dev-pipeline/templates/refactor-bootstrap-prompt.md +270 -0
- package/bundled/dev-pipeline/templates/refactor-list-schema.json +10 -2
- package/bundled/dev-pipeline/templates/sections/context-budget-rules.md +3 -1
- package/bundled/dev-pipeline/templates/sections/critical-paths-agent.md +1 -0
- package/bundled/dev-pipeline/templates/sections/feature-context.md +2 -0
- package/bundled/dev-pipeline/templates/sections/phase-commit-full.md +29 -2
- package/bundled/dev-pipeline/templates/sections/phase-commit.md +22 -0
- package/bundled/dev-pipeline/templates/sections/phase-deploy-verification.md +2 -2
- package/bundled/dev-pipeline/templates/sections/phase-review-agent.md +8 -6
- package/bundled/dev-pipeline/templates/sections/phase-review-full.md +7 -5
- package/bundled/dev-pipeline/templates/sections/phase-specify-plan-full.md +3 -3
- package/bundled/skills/_metadata.json +5 -22
- package/bundled/skills/app-planner/SKILL.md +92 -66
- package/bundled/skills/app-planner/assets/app-design-guide.md +1 -1
- package/bundled/skills/app-planner/references/architecture-decisions.md +1 -1
- package/bundled/skills/app-planner/references/project-brief-guide.md +69 -66
- package/bundled/skills/bug-fix-workflow/SKILL.md +47 -4
- package/bundled/skills/bug-planner/SKILL.md +130 -188
- package/bundled/skills/bug-planner/assets/bug-confirmation-template.md +43 -0
- package/bundled/skills/bug-planner/references/critic-and-verification.md +44 -0
- package/bundled/skills/bug-planner/references/error-recovery.md +73 -0
- package/bundled/skills/bug-planner/references/input-formats.md +53 -0
- package/bundled/skills/bug-planner/references/schema-validation.md +25 -0
- package/bundled/skills/bug-planner/references/severity-rules.md +16 -0
- package/bundled/skills/bug-planner/scripts/validate-bug-list.py +1 -5
- package/bundled/skills/bugfix-pipeline-launcher/SKILL.md +5 -10
- package/bundled/skills/feature-pipeline-launcher/SKILL.md +16 -3
- package/bundled/skills/feature-planner/SKILL.md +33 -122
- package/bundled/skills/feature-planner/assets/evaluation-guide.md +1 -1
- package/bundled/skills/feature-planner/assets/planning-guide.md +21 -5
- package/bundled/skills/feature-planner/references/browser-interaction.md +2 -4
- package/bundled/skills/feature-planner/references/completeness-review.md +57 -0
- package/bundled/skills/feature-planner/references/error-recovery.md +15 -34
- package/bundled/skills/feature-planner/references/incremental-feature-planning.md +1 -1
- package/bundled/skills/feature-planner/references/new-project-planning.md +2 -2
- package/bundled/skills/feature-planner/scripts/validate-and-generate.py +1 -2
- package/bundled/skills/feature-workflow/SKILL.md +3 -4
- package/bundled/skills/prizm-kit/SKILL.md +39 -49
- package/bundled/skills/prizmkit-code-review/SKILL.md +51 -64
- package/bundled/skills/prizmkit-code-review/rules/dimensions.md +85 -0
- package/bundled/skills/prizmkit-code-review/rules/fix-strategy.md +11 -11
- package/bundled/skills/prizmkit-committer/SKILL.md +3 -31
- package/bundled/skills/prizmkit-deploy/SKILL.md +34 -31
- package/bundled/skills/prizmkit-deploy/assets/deploy-template.md +1 -1
- package/bundled/skills/prizmkit-implement/SKILL.md +35 -68
- package/bundled/skills/prizmkit-init/SKILL.md +112 -65
- package/bundled/skills/prizmkit-init/assets/project-brief-template.md +82 -0
- package/bundled/skills/prizmkit-plan/SKILL.md +120 -79
- package/bundled/skills/prizmkit-plan/assets/plan-template.md +28 -18
- package/bundled/skills/prizmkit-plan/assets/spec-template.md +28 -11
- package/bundled/skills/prizmkit-plan/references/clarify-guide.md +3 -3
- package/bundled/skills/prizmkit-plan/references/verification-checklist.md +60 -0
- package/bundled/skills/prizmkit-prizm-docs/SKILL.md +10 -81
- package/bundled/skills/prizmkit-prizm-docs/assets/{PRIZM-SPEC.md → prizm-docs-format.md} +41 -526
- package/bundled/skills/prizmkit-prizm-docs/references/op-init.md +46 -0
- package/bundled/skills/prizmkit-prizm-docs/references/op-rebuild.md +16 -0
- package/bundled/skills/prizmkit-prizm-docs/references/op-status.md +14 -0
- package/bundled/skills/prizmkit-prizm-docs/references/op-update.md +19 -0
- package/bundled/skills/prizmkit-prizm-docs/references/op-validate.md +17 -0
- package/bundled/skills/prizmkit-retrospective/SKILL.md +27 -65
- package/bundled/skills/prizmkit-retrospective/references/knowledge-injection-steps.md +3 -4
- package/bundled/skills/prizmkit-retrospective/references/structural-sync-steps.md +7 -25
- package/bundled/skills/recovery-workflow/SKILL.md +8 -8
- package/bundled/skills/refactor-pipeline-launcher/SKILL.md +17 -9
- package/bundled/skills/refactor-planner/SKILL.md +23 -41
- package/bundled/skills/refactor-workflow/SKILL.md +1 -2
- package/bundled/team/prizm-dev-team.json +1 -1
- package/bundled/{skills/prizm-kit/assets → templates}/project-memory-template.md +1 -1
- package/package.json +1 -1
- package/src/clean.js +0 -1
- package/src/gitignore-template.js +0 -1
- package/src/scaffold.js +10 -3
- package/bundled/dev-pipeline/templates/agent-prompts/reviewer-analyze.md +0 -5
- package/bundled/dev-pipeline/templates/sections/phase-analyze-agent.md +0 -19
- package/bundled/dev-pipeline/templates/sections/phase-analyze-full.md +0 -19
- package/bundled/skills/app-planner/references/project-conventions.md +0 -93
- package/bundled/skills/prizmkit-analyze/SKILL.md +0 -207
- package/bundled/skills/prizmkit-code-review/rules/dimensions-bugfix.md +0 -25
- package/bundled/skills/prizmkit-code-review/rules/dimensions-feature.md +0 -43
- package/bundled/skills/prizmkit-code-review/rules/dimensions-refactor.md +0 -25
- package/bundled/skills/prizmkit-implement/references/deploy-guide-protocol.md +0 -69
- package/bundled/skills/prizmkit-verify/SKILL.md +0 -281
- package/bundled/skills/prizmkit-verify/scripts/verify-light.py +0 -402
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
# Bug Input Format Detection & Extraction
|
|
2
|
+
|
|
3
|
+
Auto-detect the user's input format and extract structured bug information accordingly.
|
|
4
|
+
|
|
5
|
+
## Format A: Stack Trace / Error Log
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
TypeError: Cannot read property 'token' of null
|
|
9
|
+
at AuthService.handleLogin (src/services/auth.ts:42)
|
|
10
|
+
at LoginPage.onSubmit (src/pages/login.tsx:28)
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
Extract: `error_source.type="stack_trace"`, `error_message`, `stack_trace`, `affected_modules`
|
|
14
|
+
|
|
15
|
+
## Format B: Natural Language User Report
|
|
16
|
+
|
|
17
|
+
```
|
|
18
|
+
When I click the login button with correct credentials, the page turns white.
|
|
19
|
+
Expected: redirect to home page.
|
|
20
|
+
Actual: white screen with no error message visible.
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
Extract: `error_source.type="user_report"`, `reproduction_steps`, `description` (expected vs actual)
|
|
24
|
+
|
|
25
|
+
## Format C: Failed Test Output
|
|
26
|
+
|
|
27
|
+
```
|
|
28
|
+
FAIL src/services/__tests__/auth.test.ts
|
|
29
|
+
● AuthService > handleLogin > should return token on success
|
|
30
|
+
Expected: "abc123"
|
|
31
|
+
Received: null
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
Extract: `error_source.type="failed_test"`, `failed_test_path`, `error_message`
|
|
35
|
+
|
|
36
|
+
## Format D: Log Pattern
|
|
37
|
+
|
|
38
|
+
```
|
|
39
|
+
[2026-03-07 10:23:45] ERROR [auth-service] Connection timeout after 30000ms
|
|
40
|
+
[2026-03-07 10:23:45] ERROR [auth-service] Failed to authenticate user: ETIMEDOUT
|
|
41
|
+
[2026-03-07 10:23:46] ERROR [auth-service] Connection timeout after 30000ms
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
Extract: `error_source.type="log_pattern"`, `log_snippet`, `affected_modules`
|
|
45
|
+
|
|
46
|
+
## Format E: Monitoring Alert
|
|
47
|
+
|
|
48
|
+
```
|
|
49
|
+
ALERT: CPU usage > 95% for auth-service pod (5min avg)
|
|
50
|
+
ALERT: Error rate spike: 500 errors/min on /api/login endpoint
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
Extract: `error_source.type="monitoring_alert"`, `error_message`, `affected_modules`
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# Schema Validation Checklist
|
|
2
|
+
|
|
3
|
+
Use this checklist for manual validation when `validate-bug-list.py` is not available. The script is the source of truth — this checklist mirrors its logic.
|
|
4
|
+
|
|
5
|
+
## Required Top-Level Fields
|
|
6
|
+
|
|
7
|
+
- [ ] `$schema`: must be `"dev-pipeline-bug-fix-list-v1"`
|
|
8
|
+
- [ ] `project_name`: non-empty string
|
|
9
|
+
- [ ] `bugs`: non-empty array
|
|
10
|
+
|
|
11
|
+
## Per-Bug Required Fields
|
|
12
|
+
|
|
13
|
+
- [ ] `id`: matches pattern `B-NNN` (e.g., `B-001`)
|
|
14
|
+
- [ ] `title`: non-empty string
|
|
15
|
+
- [ ] `description`: non-empty string
|
|
16
|
+
- [ ] `severity`: one of `critical`, `high`, `medium`, `low`
|
|
17
|
+
- [ ] `error_source.type`: one of `stack_trace`, `user_report`, `failed_test`, `log_pattern`, `monitoring_alert`
|
|
18
|
+
- [ ] `verification_type`: one of `automated`, `manual`, `hybrid`
|
|
19
|
+
- [ ] `acceptance_criteria`: non-empty array of strings
|
|
20
|
+
- [ ] `status`: must be `pending` for new bugs
|
|
21
|
+
|
|
22
|
+
## Consistency Checks
|
|
23
|
+
|
|
24
|
+
- [ ] No duplicate bug IDs
|
|
25
|
+
- [ ] If `priority` is set, must be one of `high`, `medium`, `low`
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# Severity Auto-Classification Rules
|
|
2
|
+
|
|
3
|
+
When extracting bugs, apply these rules to auto-suggest severity:
|
|
4
|
+
|
|
5
|
+
| Severity | Indicators | Examples |
|
|
6
|
+
|----------|------------|----------|
|
|
7
|
+
| **critical** | System crash, data loss, security breach, OOM, unrecoverable error | `Segmentation fault`, `OutOfMemoryError`, `SQL injection vulnerability`, `Database corrupted` |
|
|
8
|
+
| **high** | Core feature broken, authentication failure, data integrity issue, timeout | `Auth token invalid`, `Payment failed`, `Connection timeout`, `500 Internal Server Error` |
|
|
9
|
+
| **medium** | Feature partially broken, workaround exists, incorrect output | `CSV encoding issue`, `Pagination not working`, `Wrong date format`, `Missing validation` |
|
|
10
|
+
| **low** | Cosmetic issue, minor inconvenience, edge case | `UI misalignment`, `Typo in error message`, `Slow loading (non-critical page)`, `Non-breaking warning` |
|
|
11
|
+
|
|
12
|
+
## Special Cases
|
|
13
|
+
|
|
14
|
+
- Failed test → medium (unless test covers critical path, then high)
|
|
15
|
+
- User report with "cannot use app" → high
|
|
16
|
+
- User report with "annoying but works" → low
|
|
@@ -19,7 +19,7 @@ import re
|
|
|
19
19
|
VALID_SEVERITIES = {"critical", "high", "medium", "low"}
|
|
20
20
|
VALID_SOURCE_TYPES = {"stack_trace", "user_report", "failed_test", "log_pattern", "monitoring_alert"}
|
|
21
21
|
VALID_VERIFICATION_TYPES = {"automated", "manual", "hybrid"}
|
|
22
|
-
VALID_STATUSES = {"pending", "
|
|
22
|
+
VALID_STATUSES = {"pending", "triaging", "reproducing", "fixing", "verifying", "completed", "failed", "needs_info", "skipped"}
|
|
23
23
|
BUG_ID_PATTERN = re.compile(r"^B-\d{3}$")
|
|
24
24
|
SCHEMA_VERSION = "dev-pipeline-bug-fix-list-v1"
|
|
25
25
|
|
|
@@ -117,10 +117,6 @@ def validate(bug_list_path, feature_list_path=None):
|
|
|
117
117
|
if priority not in ("high", "medium", "low"):
|
|
118
118
|
errors.append(f"{prefix} ({bug_id}): invalid priority '{priority}' — must be one of 'high', 'medium', 'low'")
|
|
119
119
|
|
|
120
|
-
# Cross-reference affected_feature
|
|
121
|
-
affected_feature = bug.get("affected_feature")
|
|
122
|
-
if affected_feature and feature_ids and affected_feature not in feature_ids:
|
|
123
|
-
warnings.append(f"{prefix} ({bug_id}): affected_feature '{affected_feature}' not found in feature-list.json")
|
|
124
120
|
|
|
125
121
|
# Output results
|
|
126
122
|
if errors:
|
|
@@ -117,20 +117,16 @@ Detect user intent from their message, then follow the corresponding workflow:
|
|
|
117
117
|
|
|
118
118
|
Use `AskUserQuestion` to present the following configuration choices. Each question is a separate selectable option:
|
|
119
119
|
|
|
120
|
-
**Question 1 —
|
|
121
|
-
- Off (default) — Skip adversarial review
|
|
122
|
-
- On — Enable critic review after bug fix (+2-5 min/bug for critical/high severity)
|
|
123
|
-
|
|
124
|
-
**Question 2 — Verbose logging** (multiSelect: false):
|
|
120
|
+
**Question 1 — Verbose logging** (multiSelect: false):
|
|
125
121
|
- On (default) — Detailed AI session logs including tool calls and subagent activity
|
|
126
122
|
- Off — Minimal logging
|
|
127
123
|
|
|
128
|
-
**Question
|
|
124
|
+
**Question 2 — Max retries** (multiSelect: false):
|
|
129
125
|
- 3 (default)
|
|
130
126
|
- 1
|
|
131
127
|
- 5
|
|
132
128
|
|
|
133
|
-
**Question
|
|
129
|
+
**Question 3 — Session timeout** (multiSelect: false):
|
|
134
130
|
- None (default) — No timeout
|
|
135
131
|
- 30 min — `SESSION_TIMEOUT=1800`
|
|
136
132
|
- 1 hour — `SESSION_TIMEOUT=3600`
|
|
@@ -142,7 +138,6 @@ Detect user intent from their message, then follow the corresponding workflow:
|
|
|
142
138
|
|
|
143
139
|
| Config choice | Environment variable |
|
|
144
140
|
|-----------|---------------------|
|
|
145
|
-
| Critic: On | `ENABLE_CRITIC=true` |
|
|
146
141
|
| Verbose: Off | `VERBOSE=0` |
|
|
147
142
|
| Verbose: On | `VERBOSE=1` |
|
|
148
143
|
| Max retries: N | `MAX_RETRIES=N` |
|
|
@@ -208,7 +203,7 @@ Detect user intent from their message, then follow the corresponding workflow:
|
|
|
208
203
|
|
|
209
204
|
**If foreground**: Pipeline runs to completion in the terminal. After it finishes:
|
|
210
205
|
- Summarize results: total bugs, fixed, failed, skipped
|
|
211
|
-
- If all fixed: each bug session has already run `prizmkit-retrospective` (structural sync)
|
|
206
|
+
- If all fixed: each bug session has already run `prizmkit-retrospective` internally (structural sync by default; full retrospective when the fix changed interfaces, dependencies, or observable behavior). Ask user what's next.
|
|
212
207
|
- If some failed: show failed bug IDs and suggest `retry-bugfix.sh <B-XXX>` or `dev-pipeline/reset-bug.sh <B-XXX> --clean --run`
|
|
213
208
|
|
|
214
209
|
**If background daemon**:
|
|
@@ -303,7 +298,7 @@ When user says "retry B-001":
|
|
|
303
298
|
dev-pipeline/retry-bugfix.sh B-001 .prizmkit/plans/bug-fix-list.json
|
|
304
299
|
```
|
|
305
300
|
|
|
306
|
-
**Note:** `retry-bugfix.sh`
|
|
301
|
+
**Note:** `retry-bugfix.sh` runs exactly one bug session and exits. It **preserves prior session artifacts and checkpoint state** — reads `retry_count` and `resume_from_phase` from `status.json` so the AI session can resume from where it left off. For a full clean retry, use `dev-pipeline/reset-bug.sh <B-XXX> --clean --run`.
|
|
307
302
|
|
|
308
303
|
Environment variables (optional):
|
|
309
304
|
```bash
|
|
@@ -170,6 +170,20 @@ Detect user intent from their message, then follow the corresponding workflow:
|
|
|
170
170
|
| Max retries: N | `MAX_RETRIES=N` |
|
|
171
171
|
| Timeout: value | `SESSION_TIMEOUT=<seconds>` |
|
|
172
172
|
|
|
173
|
+
**Advanced environment variables** (not exposed in interactive menu, pass via `--env`):
|
|
174
|
+
|
|
175
|
+
| Variable | Default | Purpose |
|
|
176
|
+
|----------|---------|---------|
|
|
177
|
+
| `MODEL` | (none) | AI model override (e.g. `claude-opus-4.6`) |
|
|
178
|
+
| `AUTO_PUSH` | `0` | Auto-push to remote after successful feature (`1` to enable) |
|
|
179
|
+
| `DEV_BRANCH` | auto-generated | Custom dev branch name (default: `dev/{feature_id}-YYYYMMDDHHmm`) |
|
|
180
|
+
| `HEARTBEAT_INTERVAL` | `30` | Heartbeat log interval in seconds |
|
|
181
|
+
| `HEARTBEAT_STALE_THRESHOLD` | `600` | Max seconds without heartbeat before marking stale |
|
|
182
|
+
| `PIPELINE_MODE` | (none) | Override mode for all features: `lite`\|`standard`\|`full` |
|
|
183
|
+
| `LOG_CLEANUP_ENABLED` | `1` | Run periodic log cleanup (`0` to disable) |
|
|
184
|
+
| `LOG_RETENTION_DAYS` | `14` | Delete logs older than N days |
|
|
185
|
+
| `LOG_MAX_TOTAL_MB` | `1024` | Keep total logs under N MB via oldest-first cleanup |
|
|
186
|
+
|
|
173
187
|
⚠️ STOP HERE and wait for user response before continuing to step 7.
|
|
174
188
|
|
|
175
189
|
7. **Show final command**: After user confirms configuration in step 6, assemble the complete command from execution mode + user-confirmed configuration, and present it to the user.
|
|
@@ -324,9 +338,8 @@ SESSION_TIMEOUT=3600 dev-pipeline/retry-feature.sh F-003 .prizmkit/plans/feature
|
|
|
324
338
|
```
|
|
325
339
|
|
|
326
340
|
Notes:
|
|
327
|
-
- `retry-feature.sh` runs exactly one feature session and exits.
|
|
328
|
-
- `reset-feature.sh --clean --run`
|
|
329
|
-
- For a lighter retry that preserves prior session artifacts, use `run-feature.sh run <F-XXX> --no-reset` instead.
|
|
341
|
+
- `retry-feature.sh` runs exactly one feature session and exits. It **preserves prior session artifacts and checkpoint state** — reads `retry_count` and `resume_from_phase` from `status.json` so the AI session can resume from where it left off rather than starting from scratch.
|
|
342
|
+
- `reset-feature.sh --clean --run` performs a full clean (deletes session history and artifacts) before retrying — use this for a fresh start when checkpoint recovery is not desired.
|
|
330
343
|
- Keep pipeline daemon mode for main run management (`launch-feature-daemon.sh`).
|
|
331
344
|
|
|
332
345
|
---
|
|
@@ -22,7 +22,7 @@ For planning a **new application from scratch** (vision, tech stack, decompositi
|
|
|
22
22
|
|
|
23
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
24
|
|
|
25
|
-
If you believe the task is better suited for a different workflow
|
|
25
|
+
If you believe the task is better suited for a different workflow, you MUST:
|
|
26
26
|
1. **Explain why** you think a different path is more appropriate
|
|
27
27
|
2. **Ask the user explicitly** whether they want to switch or continue with feature-planner
|
|
28
28
|
3. **Only switch if the user confirms** — otherwise proceed with feature-planner as invoked
|
|
@@ -39,14 +39,13 @@ The user chose this skill intentionally. Respect that choice.
|
|
|
39
39
|
|
|
40
40
|
**Your ONLY writable outputs are:**
|
|
41
41
|
1. `.prizmkit/plans/feature-list.json` (`.prizmkit/plans/`)
|
|
42
|
-
2. Draft backups in `.prizmkit/
|
|
42
|
+
2. Draft backups in `.prizmkit/plans/` (e.g., `feature-list.draft.json`)
|
|
43
43
|
|
|
44
44
|
**After planning is complete**, you MUST:
|
|
45
|
-
1. Present the summary and recommended next step
|
|
45
|
+
1. Present the summary and recommended next step (invoking `feature-pipeline-launcher` )
|
|
46
46
|
2. **Ask the user explicitly** whether they want to proceed to execution
|
|
47
|
-
3. If the user
|
|
48
|
-
4.
|
|
49
|
-
5. **NEVER auto-execute** the pipeline, launcher, or any implementation step
|
|
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
|
|
50
49
|
|
|
51
50
|
## When to Use
|
|
52
51
|
|
|
@@ -74,18 +73,16 @@ Do NOT use this skill when:
|
|
|
74
73
|
- Browser interaction fields needed → read `${SKILL_DIR}/references/browser-interaction.md`
|
|
75
74
|
- 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
75
|
- Feature decomposition from scratch → read `${SKILL_DIR}/references/decomposition-patterns.md` for common app patterns (CRUD, SaaS, Social, E-commerce)
|
|
76
|
+
- Phase 6 completeness review → read `${SKILL_DIR}/references/completeness-review.md`
|
|
77
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
|
-
```
|
|
78
|
+
4. **Always validate output via script** — see §Output Rules for the validation command.
|
|
82
79
|
|
|
83
80
|
If the script is not available, perform these manual validation checks:
|
|
84
81
|
1. **ID sequence**: All feature IDs are sequential (F-001, F-002, F-003, ...)
|
|
85
82
|
2. **No circular dependencies**: No feature depends (directly or transitively) on itself
|
|
86
83
|
3. **Description length**: Minimum 15 words per description (error), 30/50/80 recommended
|
|
87
84
|
4. **Dependency references**: All referenced features in dependencies exist in features array
|
|
88
|
-
5. **Priority enums**: All priority values are exactly "high", "medium", or "low" (case-sensitive)
|
|
85
|
+
5. **Priority enums**: All priority values are exactly "critical", "high", "medium", or "low" (case-sensitive)
|
|
89
86
|
6. **Status enum**: All status values are one of: pending, in_progress, completed, failed, skipped, split, auto_skipped
|
|
90
87
|
7. **Acceptance criteria**: At least 1 criterion per feature, each is a concrete, measurable statement
|
|
91
88
|
8. **Browser interaction**: If present, has url, verify_steps array, and optional setup_command
|
|
@@ -103,7 +100,7 @@ Before questions, check optional context files (never block if absent):
|
|
|
103
100
|
- `.prizmkit/config.json` (existing stack preferences and detected tech stack)
|
|
104
101
|
- `.prizmkit/plans/project-brief.md` (project context from app-planner, if available)
|
|
105
102
|
- existing `.prizmkit/plans/feature-list.json` (required for incremental mode)
|
|
106
|
-
-
|
|
103
|
+
- `CLAUDE.md` / `CODEBUDDY.md` `### Project Conventions` section (project conventions from app-planner, if available)
|
|
107
104
|
- If `.prizm-docs/root.prizm` is absent and the project has existing source code, scan the directory structure to understand the codebase layout:
|
|
108
105
|
```bash
|
|
109
106
|
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'
|
|
@@ -116,7 +113,7 @@ Before questions, check optional context files (never block if absent):
|
|
|
116
113
|
|
|
117
114
|
## Global Context Population
|
|
118
115
|
|
|
119
|
-
The `global_context` object in `.prizmkit/plans/feature-list.json` provides technology stack information
|
|
116
|
+
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.
|
|
120
117
|
|
|
121
118
|
### Recommended Fields by Project Type
|
|
122
119
|
|
|
@@ -136,37 +133,8 @@ The `global_context` object in `.prizmkit/plans/feature-list.json` provides tech
|
|
|
136
133
|
- `language`, `frontend_framework`, `backend_framework`, `database`, `testing_strategy` (all recommended)
|
|
137
134
|
- Additional: `frontend_styling`, `orm`, `bundler`, `runtime`
|
|
138
135
|
|
|
139
|
-
|
|
136
|
+
All `global_context` fields are optional — including recommended fields improves downstream code generation quality. See `dev-pipeline/templates/feature-list-schema.json` for the full schema definition.
|
|
140
137
|
|
|
141
|
-
If the project was planned with `app-planner`, `feature-planner` will automatically read:
|
|
142
|
-
- `.prizmkit/config.json` (tech stack detected by app-planner)
|
|
143
|
-
- `.prizmkit/plans/project-brief.md` (tech choices made during planning)
|
|
144
|
-
- `.prizm-docs/root.prizm` (architecture decisions)
|
|
145
|
-
|
|
146
|
-
**Recommendation**: Always run `app-planner` before `feature-planner` to ensure `global_context` is pre-populated correctly. This reduces planning time and improves code generation consistency.
|
|
147
|
-
|
|
148
|
-
### Manual Population (if no app-planner context)
|
|
149
|
-
|
|
150
|
-
If planning features directly without app-planner:
|
|
151
|
-
1. During Phase 1 (Scope Clarification), identify the project's tech stack
|
|
152
|
-
2. Ask user or read from existing `package.json` / `pyproject.toml` / `go.mod`
|
|
153
|
-
3. Populate `global_context` in `.prizmkit/plans/feature-list.json` with detected values
|
|
154
|
-
4. Confirm with user: "Using tech stack: [language] + [frameworks]. Correct?"
|
|
155
|
-
|
|
156
|
-
### Pipeline Behavior with Missing Fields
|
|
157
|
-
|
|
158
|
-
| Missing Field | Pipeline Behavior |
|
|
159
|
-
|---------------|-------------------|
|
|
160
|
-
| `language` | Uses generic pseudocode patterns; code generation may be generic |
|
|
161
|
-
| `frontend_framework` | Frontend features generate generic HTML/JavaScript; no framework-specific patterns |
|
|
162
|
-
| `backend_framework` | Backend features generate generic API patterns; no framework-specific scaffolding |
|
|
163
|
-
| `database` | Assumes no persistent storage; generates unit tests only with mocks |
|
|
164
|
-
| `testing_strategy` | Defaults to Jest (if JavaScript/TypeScript); pytest (if Python) |
|
|
165
|
-
| All fields empty | Pipeline still works but code quality/consistency may suffer; recommend re-running with app-planner |
|
|
166
|
-
|
|
167
|
-
### Note
|
|
168
|
-
|
|
169
|
-
**global_context fields are all optional** — pipeline can execute without them. However, including the recommended fields dramatically improves code generation quality and framework-specific best practices.
|
|
170
138
|
|
|
171
139
|
---
|
|
172
140
|
|
|
@@ -229,46 +197,11 @@ Checkpoints catch cascading errors early — skipping one means the next phase b
|
|
|
229
197
|
|
|
230
198
|
## Pre-Generation Completeness Review (Phase 6)
|
|
231
199
|
|
|
232
|
-
Before generating `.prizmkit/plans/feature-list.json`, review the full feature set holistically.
|
|
233
|
-
|
|
234
|
-
### Step 1: Description Adequacy Scan
|
|
200
|
+
Before generating `.prizmkit/plans/feature-list.json`, review the full feature set holistically.
|
|
235
201
|
|
|
236
|
-
|
|
237
|
-
- Does the description cover: what to build, key behaviors, integration points, data model (if applicable), error/edge cases?
|
|
238
|
-
- Is the description specific enough for an AI coding session to implement without guessing?
|
|
239
|
-
- Flag any feature below the recommended word count for its complexity level (30/50/80 words for low/medium/high).
|
|
240
|
-
|
|
241
|
-
### Step 2: Cross-Feature Completeness Check
|
|
242
|
-
|
|
243
|
-
Look at the feature set as a whole:
|
|
244
|
-
- **Implied functionality gaps**: Does feature A's acceptance criteria assume a capability that no other feature provides?
|
|
245
|
-
- **Missing integration seams**: If two features share data or interact at runtime, is the interface specified?
|
|
246
|
-
- **Scope leaks**: Does any feature's description reference functionality outside the agreed scope?
|
|
247
|
-
|
|
248
|
-
### Step 3: Present Review to User
|
|
249
|
-
|
|
250
|
-
Show a structured summary table:
|
|
251
|
-
|
|
252
|
-
```
|
|
253
|
-
Feature | Description | Cross-Feature | Recommendation
|
|
254
|
-
| Adequacy | Issues |
|
|
255
|
-
F-001 | ✓ (65 words)| — | Ready
|
|
256
|
-
F-002 | ⚠ (28 words)| — | Expand: add API endpoints, error handling
|
|
257
|
-
F-003 | ✓ (52 words)| Assumes email from | Clarify: who sends the notification?
|
|
258
|
-
| | F-006 (not yet defined)|
|
|
259
|
-
```
|
|
202
|
+
→ Read `${SKILL_DIR}/references/completeness-review.md` for the full review process (description adequacy scan, cross-feature completeness check, user presentation, and interactive supplementation).
|
|
260
203
|
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
### Step 4: Interactive Supplementation
|
|
264
|
-
|
|
265
|
-
For each feature the user wants to discuss:
|
|
266
|
-
1. Ask targeted questions about the unclear aspects
|
|
267
|
-
2. Propose concrete description supplements
|
|
268
|
-
3. Update the feature description with agreed details
|
|
269
|
-
4. Re-check: does the supplement resolve the gap?
|
|
270
|
-
|
|
271
|
-
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.
|
|
204
|
+
This gate ensures all features are implementation-ready before output generation. Thin descriptions here cost minutes to fix; misimplemented features downstream cost hours.
|
|
272
205
|
|
|
273
206
|
## Fast Path (Simple Incremental)
|
|
274
207
|
|
|
@@ -314,39 +247,27 @@ A feature is **exempt** when ANY true:
|
|
|
314
247
|
|
|
315
248
|
## Output Rules
|
|
316
249
|
|
|
317
|
-
`.prizmkit/plans/feature-list.json` must
|
|
318
|
-
|
|
319
|
-
|
|
250
|
+
`.prizmkit/plans/feature-list.json` must conform to `dev-pipeline/templates/feature-list-schema.json` (`$schema` = `dev-pipeline-feature-list-v1`).
|
|
251
|
+
|
|
252
|
+
Key requirements:
|
|
253
|
+
- non-empty `features` array
|
|
320
254
|
- sequential feature IDs (`F-001`, `F-002`, ...)
|
|
321
|
-
- valid dependency DAG
|
|
322
|
-
- `priority`
|
|
255
|
+
- valid dependency DAG (no cycles, all referenced IDs exist)
|
|
256
|
+
- `priority`: `"critical"`, `"high"`, `"medium"`, or `"low"` (string, NOT numeric)
|
|
323
257
|
- new items default `status: "pending"`
|
|
324
258
|
- English feature titles for stable slug generation
|
|
325
|
-
- `
|
|
326
|
-
- `
|
|
327
|
-
-
|
|
328
|
-
- `browser_interaction` field auto-generated for qualifying frontend features
|
|
329
|
-
- 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.
|
|
330
|
-
|
|
331
|
-
## Testing Defaults (Phase 8)
|
|
332
|
-
|
|
333
|
-
All three testing mechanisms are enabled by default. The user can opt out.
|
|
259
|
+
- `critic` / `critic_count` defaults per Testing Defaults section
|
|
260
|
+
- `browser_interaction` auto-generated for qualifying frontend features
|
|
261
|
+
- descriptions: minimum 15 words (error), recommended 30/50/80 for low/medium/high complexity (warning)
|
|
334
262
|
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
| Complexity | Default Testing Expectation |
|
|
340
|
-
|------------|----------------------------|
|
|
341
|
-
| low | Unit tests for core logic |
|
|
342
|
-
| medium | Unit tests + integration tests for key flows |
|
|
343
|
-
| high | Unit tests + integration tests + edge case coverage |
|
|
344
|
-
|
|
345
|
-
### 2. Browser Verification (Playwright)
|
|
263
|
+
Run the validation script after generation:
|
|
264
|
+
```bash
|
|
265
|
+
python3 ${SKILL_DIR}/scripts/validate-and-generate.py validate --input <output-path> --mode <new|incremental>
|
|
266
|
+
```
|
|
346
267
|
|
|
347
|
-
|
|
268
|
+
## Testing Defaults (Phase 8)
|
|
348
269
|
|
|
349
|
-
|
|
270
|
+
Set default testing-related fields for each feature. The user can opt out.
|
|
350
271
|
|
|
351
272
|
| Priority | `critic` | `critic_count` | Rationale |
|
|
352
273
|
|----------|----------|----------------|-----------|
|
|
@@ -354,23 +275,13 @@ Default ON for all qualifying frontend features.
|
|
|
354
275
|
| medium | `true` | `1` | Single critic review |
|
|
355
276
|
| low | `false` | (omitted) | Skip critic |
|
|
356
277
|
|
|
278
|
+
For frontend features with `browser_interaction`, Playwright verification is enabled by default.
|
|
279
|
+
|
|
357
280
|
Present a consolidated testing summary table at Phase 8, then ask for confirmation.
|
|
358
281
|
|
|
359
282
|
## Next-Step Execution Policy (after planning)
|
|
360
283
|
|
|
361
|
-
Recommend
|
|
362
|
-
|
|
363
|
-
1. **Preferred**: invoke `feature-pipeline-launcher` skill
|
|
364
|
-
2. **Fallback A**: run daemon wrapper
|
|
365
|
-
```bash
|
|
366
|
-
./dev-pipeline/launch-feature-daemon.sh start .prizmkit/plans/feature-list.json
|
|
367
|
-
./dev-pipeline/launch-feature-daemon.sh status
|
|
368
|
-
```
|
|
369
|
-
3. **Fallback B**: run direct foreground script
|
|
370
|
-
```bash
|
|
371
|
-
./dev-pipeline/run-feature.sh run
|
|
372
|
-
./dev-pipeline/run-feature.sh status
|
|
373
|
-
```
|
|
284
|
+
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.
|
|
374
285
|
|
|
375
286
|
## Error Recovery & Resume
|
|
376
287
|
|
|
@@ -397,7 +308,7 @@ When the session appears to be ending:
|
|
|
397
308
|
1. **Remind**: "You set out to produce `.prizmkit/plans/feature-list.json` but we haven't completed it yet."
|
|
398
309
|
2. **Offer 3 options**:
|
|
399
310
|
- **(a) Continue to completion**
|
|
400
|
-
- **(b) Save draft & exit** — write current progress as draft
|
|
311
|
+
- **(b) Save draft & exit** — write current progress as `feature-list.draft.json` to `.prizmkit/plans/`
|
|
401
312
|
- **(c) Abandon** — exit without saving
|
|
402
313
|
|
|
403
314
|
## Handoff Message Template
|
|
@@ -12,7 +12,7 @@ Requires npm setup:
|
|
|
12
12
|
|
|
13
13
|
```bash
|
|
14
14
|
npm run skill:review -- \
|
|
15
|
-
--workspace
|
|
15
|
+
--workspace .prizmkit/skill-evals/feature-planner-workspace \
|
|
16
16
|
--iteration iteration-N \
|
|
17
17
|
--skill-name feature-planner \
|
|
18
18
|
--skill-path ${SKILL_DIR} \
|
|
@@ -6,7 +6,7 @@ For app-level design references (vision templates, tech stack matrix), see `app-
|
|
|
6
6
|
|
|
7
7
|
---
|
|
8
8
|
|
|
9
|
-
##
|
|
9
|
+
## Feature Description Writing Guide
|
|
10
10
|
|
|
11
11
|
Feature descriptions are the **primary input** for autonomous pipeline sessions. A thin description forces the AI to guess — producing worse code. Invest in rich descriptions upfront.
|
|
12
12
|
|
|
@@ -52,9 +52,25 @@ Every description should cover these aspects (adapt per feature type):
|
|
|
52
52
|
"Build a dashboard page at /dashboard as the post-login landing screen. Display: (1) summary cards showing total projects count, active tasks count, and recent activity count; (2) a recent activity feed listing the last 10 actions across all projects with timestamps; (3) a quick-access project list showing the 5 most recently updated projects. Fetch data via GET /api/dashboard/summary. Show loading skeleton on initial load, empty state when user has no projects."
|
|
53
53
|
```
|
|
54
54
|
|
|
55
|
+
### Headless Execution Requirements
|
|
56
|
+
|
|
57
|
+
Feature descriptions are consumed by **autonomous AI sessions running in headless mode** — no human is available to clarify ambiguities. This raises the bar for description quality:
|
|
58
|
+
|
|
59
|
+
**Must include for headless readiness:**
|
|
60
|
+
1. **Concrete deliverables** — specific files, endpoints, components, or models to create
|
|
61
|
+
2. **Integration points** — which existing APIs to call, which models to import, which modules to extend
|
|
62
|
+
3. **Key behaviors** — validation rules, state transitions, error codes, edge cases
|
|
63
|
+
|
|
64
|
+
**Dependency descriptions:**
|
|
65
|
+
When a feature depends on others, explicitly state what it needs from them:
|
|
66
|
+
- ✅ "Uses the User model (id, email, display_name) from F-001 to create a foreign key user_id on the Project model"
|
|
67
|
+
- ❌ "depends on F-001" — the AI won't know what F-001 built
|
|
68
|
+
|
|
69
|
+
**Self-test:** Read the description as if you have no other context. Could you implement it without asking a single question? If not, add more detail.
|
|
70
|
+
|
|
55
71
|
---
|
|
56
72
|
|
|
57
|
-
##
|
|
73
|
+
## Acceptance Criteria Writing Guide
|
|
58
74
|
|
|
59
75
|
Acceptance criteria define what "done" means for a feature. They should be specific, testable, and unambiguous.
|
|
60
76
|
|
|
@@ -95,7 +111,7 @@ Then [expected outcome]
|
|
|
95
111
|
|
|
96
112
|
---
|
|
97
113
|
|
|
98
|
-
##
|
|
114
|
+
## Complexity Estimation Guide
|
|
99
115
|
|
|
100
116
|
| Complexity | Characteristics | Typical Scope |
|
|
101
117
|
|------------|----------------|---------------|
|
|
@@ -122,7 +138,7 @@ Consider splitting a feature if it exhibits any of the following:
|
|
|
122
138
|
|
|
123
139
|
---
|
|
124
140
|
|
|
125
|
-
##
|
|
141
|
+
## Dependency Graph Rules
|
|
126
142
|
|
|
127
143
|
These rules ensure the feature dependency graph is valid and buildable.
|
|
128
144
|
|
|
@@ -150,7 +166,7 @@ These rules ensure the feature dependency graph is valid and buildable.
|
|
|
150
166
|
|
|
151
167
|
---
|
|
152
168
|
|
|
153
|
-
##
|
|
169
|
+
## Session Granularity Decision Rules
|
|
154
170
|
|
|
155
171
|
Session granularity determines whether a feature is implemented in a single coding session or split across multiple sub-feature sessions.
|
|
156
172
|
|
|
@@ -4,11 +4,9 @@ For web apps with UI, features that involve user-facing pages or interactive flo
|
|
|
4
4
|
|
|
5
5
|
## How to Capture
|
|
6
6
|
|
|
7
|
-
During Phase 4 (
|
|
7
|
+
During Phase 4.2, auto-generate `browser_interaction` for all qualifying features (see SKILL.md §Browser Interaction Planning for auto-detection rules). Present a **batch summary** to the user showing which features received `browser_interaction` — do NOT ask per-feature. The user can opt out specific features from the summary.
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
If yes, generate the `browser_interaction` object:
|
|
9
|
+
For each qualifying feature, generate the `browser_interaction` object:
|
|
12
10
|
|
|
13
11
|
```json
|
|
14
12
|
{
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
# Pre-Generation Completeness Review
|
|
2
|
+
|
|
3
|
+
Before generating `.prizmkit/plans/feature-list.json`, review the full feature set holistically. Individual features may look fine in isolation but have gaps when viewed together.
|
|
4
|
+
|
|
5
|
+
## Step 1: Description Adequacy Scan
|
|
6
|
+
|
|
7
|
+
For each feature, evaluate against the word-count thresholds in `planning-guide.md`:
|
|
8
|
+
- Does the description cover: what to build, key behaviors, integration points, data model (if applicable), error/edge cases?
|
|
9
|
+
- Is the description specific enough for an AI coding session to implement without guessing?
|
|
10
|
+
- Flag any feature below the recommended word count for its complexity level (30/50/80 words for low/medium/high).
|
|
11
|
+
|
|
12
|
+
**Implementation clarity check** — Every feature description will be consumed by an autonomous AI session. Verify each description specifies:
|
|
13
|
+
1. Concrete deliverables (files to create, endpoints to build, components to implement, models to define)
|
|
14
|
+
2. Key behaviors and business rules (validation, state transitions, error handling)
|
|
15
|
+
3. Integration points with other modules (which APIs to call, which models to use)
|
|
16
|
+
|
|
17
|
+
**Dependency context check** — If the feature depends on others, the description should reference what it needs from them:
|
|
18
|
+
- Good: "Uses User model from F-001 to link projects to users via userId foreign key"
|
|
19
|
+
- Bad: "depends on F-001" (too vague)
|
|
20
|
+
|
|
21
|
+
**Ambiguity check** — Flag vague phrases:
|
|
22
|
+
- Bad: "Create a nice dashboard" (what components? what data? what layout?)
|
|
23
|
+
- Good: "Create dashboard at /dashboard with: (1) summary cards showing total projects count, active tasks count; (2) recent activity feed (last 10 items); (3) quick-access project list (5 most recent). Fetch data via GET /api/dashboard/summary."
|
|
24
|
+
|
|
25
|
+
If any feature description is unclear, **expand it now** before generating the output file.
|
|
26
|
+
|
|
27
|
+
## Step 2: Cross-Feature Completeness Check
|
|
28
|
+
|
|
29
|
+
Look at the feature set as a whole:
|
|
30
|
+
- **Implied functionality gaps**: Does feature A's acceptance criteria assume a capability that no other feature provides?
|
|
31
|
+
- **Missing integration seams**: If two features share data or interact at runtime, is the interface specified?
|
|
32
|
+
- **Scope leaks**: Does any feature's description reference functionality outside the agreed scope?
|
|
33
|
+
|
|
34
|
+
## Step 3: Present Review to User
|
|
35
|
+
|
|
36
|
+
Show a structured summary table:
|
|
37
|
+
|
|
38
|
+
```
|
|
39
|
+
Feature | Description | Cross-Feature | Recommendation
|
|
40
|
+
| Adequacy | Issues |
|
|
41
|
+
F-001 | ✓ (65 words)| — | Ready
|
|
42
|
+
F-002 | ⚠ (28 words)| — | Expand: add API endpoints, error handling
|
|
43
|
+
F-003 | ✓ (52 words)| Assumes email from | Clarify: who sends the notification?
|
|
44
|
+
| | F-006 (not yet defined)|
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
Then ask if any features need further discussion.
|
|
48
|
+
|
|
49
|
+
## Step 4: Interactive Supplementation
|
|
50
|
+
|
|
51
|
+
For each feature the user wants to discuss:
|
|
52
|
+
1. Ask targeted questions about the unclear aspects
|
|
53
|
+
2. Propose concrete description supplements
|
|
54
|
+
3. Update the feature description with agreed details
|
|
55
|
+
4. Re-check: does the supplement resolve the gap?
|
|
56
|
+
|
|
57
|
+
Continue until the user confirms all features are implementation-ready. Fixing thin descriptions here costs minutes; fixing misimplemented features downstream costs hours.
|