prizmkit 1.1.111 → 1.1.113

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (119) hide show
  1. package/bundled/VERSION.json +3 -3
  2. package/bundled/adapters/codex/skill-adapter.js +4 -0
  3. package/bundled/agents/prizm-dev-team-reviewer.md +12 -1
  4. package/bundled/dev-pipeline/SCHEMA_ANALYSIS.md +10 -10
  5. package/bundled/dev-pipeline/prizmkit_runtime/interoperability.py +1 -0
  6. package/bundled/dev-pipeline/scripts/generate-bootstrap-prompt.py +20 -73
  7. package/bundled/dev-pipeline/scripts/generate-bugfix-prompt.py +290 -421
  8. package/bundled/dev-pipeline/scripts/generate-recovery-prompt.py +1 -1
  9. package/bundled/dev-pipeline/scripts/generate-refactor-prompt.py +259 -481
  10. package/bundled/dev-pipeline/scripts/init-bugfix-pipeline.py +34 -0
  11. package/bundled/dev-pipeline/scripts/init-pipeline.py +12 -0
  12. package/bundled/dev-pipeline/scripts/init-refactor-pipeline.py +24 -1
  13. package/bundled/dev-pipeline/scripts/prompt_framework.py +312 -0
  14. package/bundled/dev-pipeline/scripts/update-bug-status.py +87 -20
  15. package/bundled/dev-pipeline/scripts/update-feature-status.py +82 -16
  16. package/bundled/dev-pipeline/scripts/update-refactor-status.py +68 -28
  17. package/bundled/dev-pipeline/scripts/utils.py +171 -0
  18. package/bundled/dev-pipeline/templates/bootstrap-prompt.md +1 -1
  19. package/bundled/dev-pipeline/templates/bootstrap-tier1.md +7 -1
  20. package/bundled/dev-pipeline/templates/bootstrap-tier2.md +17 -19
  21. package/bundled/dev-pipeline/templates/bootstrap-tier3.md +21 -26
  22. package/bundled/dev-pipeline/templates/bug-fix-list-schema.json +9 -1
  23. package/bundled/dev-pipeline/templates/bugfix-bootstrap-prompt.md +11 -8
  24. package/bundled/dev-pipeline/templates/refactor-bootstrap-prompt.md +122 -182
  25. package/bundled/dev-pipeline/templates/sections/bugfix-artifacts.md +16 -0
  26. package/bundled/dev-pipeline/templates/sections/bugfix-critical-paths.md +12 -0
  27. package/bundled/dev-pipeline/templates/sections/bugfix-mission.md +9 -0
  28. package/bundled/dev-pipeline/templates/sections/bugfix-phase-commit-report.md +31 -0
  29. package/bundled/dev-pipeline/templates/sections/bugfix-phase-critic.md +22 -0
  30. package/bundled/dev-pipeline/templates/sections/bugfix-phase-diagnose-plan.md +23 -0
  31. package/bundled/dev-pipeline/templates/sections/bugfix-phase-implement.md +20 -0
  32. package/bundled/dev-pipeline/templates/sections/bugfix-phase-init.md +9 -0
  33. package/bundled/dev-pipeline/templates/sections/bugfix-phase-manual-verification.md +15 -0
  34. package/bundled/dev-pipeline/templates/sections/bugfix-phase-review.md +29 -0
  35. package/bundled/dev-pipeline/templates/sections/bugfix-reminders.md +11 -0
  36. package/bundled/dev-pipeline/templates/sections/bugfix-session-context.md +7 -0
  37. package/bundled/dev-pipeline/templates/sections/bugfix-session-status.md +31 -0
  38. package/bundled/dev-pipeline/templates/sections/bugfix-task-contract.md +40 -0
  39. package/bundled/dev-pipeline/templates/sections/failure-capture.md +2 -2
  40. package/bundled/dev-pipeline/templates/sections/phase-browser-verification-auto.md +8 -2
  41. package/bundled/dev-pipeline/templates/sections/phase-browser-verification-opencli.md +7 -1
  42. package/bundled/dev-pipeline/templates/sections/phase-browser-verification.md +7 -1
  43. package/bundled/dev-pipeline/templates/sections/refactor-artifacts.md +17 -0
  44. package/bundled/dev-pipeline/templates/sections/refactor-critical-paths.md +13 -0
  45. package/bundled/dev-pipeline/templates/sections/refactor-mission.md +9 -0
  46. package/bundled/dev-pipeline/templates/sections/refactor-phase-commit-report.md +37 -0
  47. package/bundled/dev-pipeline/templates/sections/refactor-phase-critic.md +22 -0
  48. package/bundled/dev-pipeline/templates/sections/refactor-phase-implement.md +16 -0
  49. package/bundled/dev-pipeline/templates/sections/refactor-phase-init.md +9 -0
  50. package/bundled/dev-pipeline/templates/sections/refactor-phase-plan.md +22 -0
  51. package/bundled/dev-pipeline/templates/sections/refactor-phase-review.md +19 -0
  52. package/bundled/dev-pipeline/templates/sections/refactor-reminders.md +11 -0
  53. package/bundled/dev-pipeline/templates/sections/refactor-session-context.md +7 -0
  54. package/bundled/dev-pipeline/templates/sections/refactor-session-status.md +28 -0
  55. package/bundled/dev-pipeline/templates/sections/refactor-task-contract.md +52 -0
  56. package/bundled/dev-pipeline/tests/test_generate_bootstrap_prompt.py +104 -26
  57. package/bundled/dev-pipeline/tests/test_generate_bugfix_prompt.py +14 -0
  58. package/bundled/dev-pipeline/tests/test_python_runner_parity.py +239 -0
  59. package/bundled/dev-pipeline/tests/test_unified_cli.py +6 -2
  60. package/bundled/dev-pipeline/tests/test_utils.py +66 -1
  61. package/bundled/skills/_metadata.json +1 -1
  62. package/bundled/skills/app-planner/SKILL.md +8 -7
  63. package/bundled/skills/app-planner/references/project-brief-guide.md +2 -2
  64. package/bundled/skills/app-planner/references/rules/backend/derivation-rules.md +1 -1
  65. package/bundled/skills/app-planner/references/rules/frontend/derivation-rules.md +1 -1
  66. package/bundled/skills/app-planner/references/rules-configuration.md +53 -26
  67. package/bundled/skills/bug-fix-workflow/SKILL.md +191 -336
  68. package/bundled/skills/bug-planner/SKILL.md +6 -5
  69. package/bundled/skills/bug-planner/references/critic-and-verification.md +3 -3
  70. package/bundled/skills/bug-planner/references/schema-validation.md +2 -1
  71. package/bundled/skills/bug-planner/scripts/validate-bug-list.py +70 -1
  72. package/bundled/skills/bugfix-pipeline-launcher/SKILL.md +21 -21
  73. package/bundled/skills/bugfix-pipeline-launcher/references/configuration.md +2 -2
  74. package/bundled/skills/feature-pipeline-launcher/SKILL.md +25 -26
  75. package/bundled/skills/feature-planner/SKILL.md +9 -11
  76. package/bundled/skills/feature-planner/assets/planning-guide.md +1 -1
  77. package/bundled/skills/feature-planner/references/decomposition-patterns.md +1 -1
  78. package/bundled/skills/feature-planner/references/error-recovery.md +2 -1
  79. package/bundled/skills/feature-planner/references/incremental-feature-planning.md +2 -2
  80. package/bundled/skills/feature-planner/references/new-project-planning.md +35 -39
  81. package/bundled/skills/feature-planner/scripts/validate-and-generate.py +1 -1
  82. package/bundled/skills/feature-workflow/SKILL.md +170 -298
  83. package/bundled/skills/prizmkit/SKILL.md +103 -57
  84. package/bundled/skills/prizmkit-code-review/SKILL.md +97 -116
  85. package/bundled/skills/prizmkit-code-review/references/review-report-template.md +1 -0
  86. package/bundled/skills/prizmkit-code-review/references/reviewer-agent-prompt.md +14 -3
  87. package/bundled/skills/prizmkit-committer/SKILL.md +59 -47
  88. package/bundled/skills/prizmkit-deploy/SKILL.md +162 -381
  89. package/bundled/skills/prizmkit-deploy/references/database-setup.md +12 -3
  90. package/bundled/skills/prizmkit-deploy/references/ssh-adapter-flow.md +220 -0
  91. package/bundled/skills/prizmkit-implement/SKILL.md +51 -40
  92. package/bundled/skills/prizmkit-init/SKILL.md +4 -3
  93. package/bundled/skills/prizmkit-plan/SKILL.md +85 -70
  94. package/bundled/skills/prizmkit-prizm-docs/SKILL.md +94 -73
  95. package/bundled/skills/prizmkit-prizm-docs/assets/prizm-docs-format.md +20 -18
  96. package/bundled/skills/prizmkit-prizm-docs/references/op-init.md +11 -13
  97. package/bundled/skills/prizmkit-prizm-docs/references/op-update.md +18 -14
  98. package/bundled/skills/prizmkit-retrospective/SKILL.md +56 -48
  99. package/bundled/skills/prizmkit-retrospective/references/structural-sync-steps.md +79 -27
  100. package/bundled/skills/prizmkit-test/SKILL.md +138 -141
  101. package/bundled/skills/prizmkit-test/references/boundary-coverage-protocol.md +1 -1
  102. package/bundled/skills/prizmkit-test/references/examples.md +11 -9
  103. package/bundled/skills/prizmkit-test/references/test-generation-steps.md +1 -1
  104. package/bundled/skills/prizmkit-test/references/test-report-template.md +2 -2
  105. package/bundled/skills/recovery-workflow/SKILL.md +195 -256
  106. package/bundled/skills/recovery-workflow/evals/evals.json +21 -13
  107. package/bundled/skills/recovery-workflow/references/detection.md +48 -39
  108. package/bundled/skills/recovery-workflow/scripts/detect-recovery-state.py +258 -322
  109. package/bundled/skills/refactor-pipeline-launcher/SKILL.md +32 -13
  110. package/bundled/skills/refactor-planner/SKILL.md +2 -2
  111. package/bundled/skills/refactor-planner/references/behavior-preservation.md +24 -19
  112. package/bundled/skills/refactor-planner/references/fast-path.md +2 -4
  113. package/bundled/skills/refactor-planner/references/planning-phases.md +2 -2
  114. package/bundled/skills/refactor-workflow/SKILL.md +174 -307
  115. package/package.json +1 -1
  116. package/src/scaffold.js +5 -0
  117. package/bundled/dev-pipeline/templates/agent-prompts/reviewer-review.md +0 -6
  118. package/bundled/skills/feature-workflow/references/brainstorm-guide.md +0 -137
  119. package/bundled/skills/refactor-workflow/references/brainstorm-guide.md +0 -116
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: "bug-planner"
3
- description: "Interactive bug planning that produces .prizmkit/plans/bug-fix-list.json for the Bug Fix Pipeline. Supports multiple input formats: error logs, stack traces, user reports, failed tests, monitoring alerts. Use this skill whenever the user has bugs to report, errors to parse, or test failures to organize. Trigger on: 'plan bug fixes', 'report bugs', 'I have some bugs', 'these tests are failing', 'here is an error log', 'parse these errors', 'generate bug list'."
3
+ description: "Interactive bug planning that produces, validates, appends, and summarizes .prizmkit/plans/bug-fix-list.json for the Bug Fix Pipeline. Supports error logs, stack traces, user reports, failed tests, monitoring alerts, existing bug-list validation, and bug-list summaries. Use whenever the user has bugs to report, errors to parse, test failures to organize, or asks to validate/list bugs. Trigger on: 'plan bug fixes', 'report bugs', 'these tests are failing', 'parse errors', 'generate bug list', 'validate bug list', 'show bug list', 'append bugs'."
4
4
  ---
5
5
 
6
6
  # Bug Planner
@@ -346,7 +346,7 @@ Checkpoints catch cascading errors early — skipping one means the next phase b
346
346
 
347
347
  Triggers: "parse this error log", "here's a stack trace", "parse these errors".
348
348
 
349
- Batch-parse error logs to generate bug entries without interactive prompts:
349
+ Batch-parse error logs with minimal interaction: parse automatically, then require final user confirmation before generating the final list:
350
350
 
351
351
  1. Accept log file path or piped content
352
352
  2. Parse all unique errors (deduplicate by error message pattern)
@@ -376,7 +376,8 @@ Batch-parse failed test output:
376
376
  3. Auto-populate `failed_test_path`, `error_message`
377
377
  4. Set verification_type to `automated` (test already exists)
378
378
  5. Write draft to `.prizmkit/plans/bug-fix-list.draft.json`
379
- 6. After user confirms, call the generate script:
379
+ 6. Present parsed failed-test bug entries for confirmation; allow edits, merges, or removals
380
+ 7. After user confirms, call the generate script:
380
381
  ```bash
381
382
  python3 ${SKILL_DIR}/scripts/validate-bug-list.py generate --input .prizmkit/plans/bug-fix-list.draft.json --output .prizmkit/plans/bug-fix-list.json
382
383
  ```
@@ -425,7 +426,7 @@ When configuring critic settings or browser verification for bugs, read `${SKILL
425
426
  Key points:
426
427
  - Critic is enabled by default for critical/high severity, disabled for medium/low
427
428
  - Users can override critic settings per-bug during Phase 2 or Phase 3
428
- - Browser verification is feature-pipeline only bug fixes use `verification_type` field (automated/manual/hybrid)
429
+ - `browser_interaction` is supported for UI-reproducible bugs; `verification_type` still declares whether verification is automated, manual, or hybrid.
429
430
 
430
431
  ---
431
432
 
@@ -451,7 +452,7 @@ Common errors handled inline:
451
452
  | Ambiguous severity classification | Present options, ask user to choose |
452
453
  | Duplicate bug detected | Warn user, suggest merging or keeping separate |
453
454
  | No bugs provided | Prompt with examples of supported input formats |
454
- | Invalid feature reference | Warn and ask user to correct or remove reference |
455
+ | Invalid dependency reference | Warn and ask user to correct or remove the dependency |
455
456
  | Schema validation failure | Show specific errors, offer to fix interactively |
456
457
 
457
458
  ## Output
@@ -2,7 +2,7 @@
2
2
 
3
3
  ## Adversarial Critic Review (Testing Defaults)
4
4
 
5
- All bug fixes support optional critic review for additional quality assurance. The critic mechanism is disabled by default but can be enabled per-bug based on severity and complexity.
5
+ All bug fixes support optional critic review for additional quality assurance. The planner enables critic review by default for critical/high severity bugs and leaves it disabled for medium/low bugs; users can override per bug.
6
6
 
7
7
  ### Default Critic Behavior
8
8
 
@@ -21,13 +21,13 @@ All bug fixes support optional critic review for additional quality assurance. T
21
21
 
22
22
  ## Browser Verification
23
23
 
24
- **Browser verification is a feature-pipeline capability only.** Bug fixes use the `verification_type` field instead:
24
+ Bug fixes can use `browser_interaction` when the bug is reproducible through a UI. The `verification_type` field still declares the overall verification mode:
25
25
 
26
26
  - `verification_type: automated` — Use unit/integration tests to verify the fix
27
27
  - `verification_type: manual` — Describe manual testing steps in acceptance criteria (including any browser verification steps)
28
28
  - `verification_type: hybrid` — Combine automated tests with manual browser verification steps
29
29
 
30
- For UI-related bugs that require visual verification (e.g., "Button doesn't show error message"), describe the verification steps in acceptance criteria.
30
+ For UI-related bugs, add `browser_interaction.verify_steps` when concrete browser goals are known. Also keep acceptance criteria measurable so the bugfix session can verify the fix without asking the user.
31
31
 
32
32
  ### Example
33
33
 
@@ -17,7 +17,8 @@ Use this checklist for manual validation when `validate-bug-list.py` is not avai
17
17
  - [ ] `error_source.type`: one of `stack_trace`, `user_report`, `failed_test`, `log_pattern`, `monitoring_alert`
18
18
  - [ ] `verification_type`: one of `automated`, `manual`, `hybrid`
19
19
  - [ ] `acceptance_criteria`: non-empty array of strings
20
- - [ ] `status`: must be `pending` for new bugs
20
+ - [ ] `status`: one of `pending`, `in_progress`, `completed`, `failed`, `skipped`, `needs_info`; new bugs should start as `pending`
21
+ - [ ] `dependencies` if present: array of existing `B-NNN` IDs; no self-dependencies
21
22
 
22
23
  ## Consistency Checks
23
24
 
@@ -29,11 +29,43 @@ from datetime import datetime, timezone
29
29
  VALID_SEVERITIES = {"critical", "high", "medium", "low"}
30
30
  VALID_SOURCE_TYPES = {"stack_trace", "user_report", "failed_test", "log_pattern", "monitoring_alert"}
31
31
  VALID_VERIFICATION_TYPES = {"automated", "manual", "hybrid"}
32
- VALID_STATUSES = {"pending", "triaging", "reproducing", "fixing", "verifying", "completed", "failed", "needs_info", "skipped"}
32
+ VALID_STATUSES = {"pending", "in_progress", "completed", "failed", "skipped", "needs_info"}
33
33
  BUG_ID_PATTERN = re.compile(r"^B-\d{3}$")
34
34
  SCHEMA_VERSION = "dev-pipeline-bug-fix-list-v1"
35
35
 
36
36
 
37
+ def _find_dependency_cycle(dep_map, item_ids):
38
+ """Return one dependency cycle as a list of bug IDs, or an empty list."""
39
+ visiting = set()
40
+ visited = set()
41
+ stack = []
42
+
43
+ def visit(node):
44
+ visiting.add(node)
45
+ stack.append(node)
46
+ for dep in dep_map.get(node, []):
47
+ if dep not in item_ids:
48
+ continue
49
+ if dep in visiting:
50
+ start = stack.index(dep)
51
+ return stack[start:] + [dep]
52
+ if dep not in visited:
53
+ cycle = visit(dep)
54
+ if cycle:
55
+ return cycle
56
+ stack.pop()
57
+ visiting.remove(node)
58
+ visited.add(node)
59
+ return []
60
+
61
+ for bug_id in sorted(item_ids):
62
+ if bug_id not in visited:
63
+ cycle = visit(bug_id)
64
+ if cycle:
65
+ return cycle
66
+ return []
67
+
68
+
37
69
  def _err(msg):
38
70
  """Print an error message to stderr."""
39
71
  print("ERROR: {}".format(msg), file=sys.stderr)
@@ -162,6 +194,43 @@ def validate(data, feature_ids=None):
162
194
  errors.append("{} ({}): invalid priority '{}' — must be one of 'high', 'medium', 'low'".format(
163
195
  prefix, bug_id, priority))
164
196
 
197
+ # dependencies (optional field)
198
+ deps = bug.get("dependencies", [])
199
+ if deps is None:
200
+ deps = []
201
+ if not isinstance(deps, list):
202
+ errors.append("{} ({}): dependencies must be an array".format(prefix, bug_id))
203
+ else:
204
+ for dep in deps:
205
+ if not isinstance(dep, str) or not BUG_ID_PATTERN.match(dep):
206
+ errors.append("{} ({}): invalid dependency '{}' — must match B-NNN".format(
207
+ prefix, bug_id, dep))
208
+ elif dep == bug_id:
209
+ errors.append("{} ({}): bug cannot depend on itself".format(prefix, bug_id))
210
+
211
+ known_ids = {
212
+ bug.get("id")
213
+ for bug in bugs
214
+ if BUG_ID_PATTERN.match(str(bug.get("id", "")))
215
+ }
216
+ dep_map = {bug_id: [] for bug_id in known_ids}
217
+ for i, bug in enumerate(bugs):
218
+ bug_id = bug.get("id", "")
219
+ deps = bug.get("dependencies", []) or []
220
+ if not isinstance(deps, list):
221
+ continue
222
+ for dep in deps:
223
+ if isinstance(dep, str) and BUG_ID_PATTERN.match(dep):
224
+ if dep not in known_ids:
225
+ errors.append("bugs[{}] ({}): dependency '{}' does not exist".format(
226
+ i, bug_id, dep))
227
+ elif BUG_ID_PATTERN.match(str(bug_id)):
228
+ dep_map.setdefault(bug_id, []).append(dep)
229
+
230
+ cycle = _find_dependency_cycle(dep_map, known_ids)
231
+ if cycle:
232
+ errors.append("Dependency cycle detected: {}".format(" -> ".join(cycle)))
233
+
165
234
  return {
166
235
  "valid": len(errors) == 0,
167
236
  "errors": errors,
@@ -5,7 +5,7 @@ description: "Launch and manage the bugfix pipeline from within an AI CLI sessio
5
5
 
6
6
  # Bugfix-Pipeline Launcher
7
7
 
8
- Launch the autonomous bug fix pipeline from within an AI CLI conversation. Supports foreground and background execution modes.
8
+ Launch the autonomous bug fix pipeline from within an AI CLI conversation. Only Background daemon mode is fully detached and survives AI CLI session closure; Foreground runs in the current session, and Manual prints commands without launching.
9
9
 
10
10
  ### Execution Mode
11
11
 
@@ -15,10 +15,7 @@ Three execution modes are available. The user chooses one before configuring oth
15
15
  2. **Background daemon** — `python3 ./.prizmkit/dev-pipeline/cli.py daemon bugfix start .prizmkit/plans/bug-fix-list.json`. 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
- **Background mode documentation**: When the user chooses background/daemon mode, record the choice and PID in `.prizmkit/bugfix-pipeline-run.log` (append-only) with timestamp, so the decision is traceable:
19
- ```
20
- [2026-03-26T10:30:00] MODE=daemon PID=12345 BUG_LIST=.prizmkit/plans/bug-fix-list.json BUGS=3
21
- ```
18
+ **Background mode traceability**: Daemon mode metadata and logs are written by the Python runtime (`daemon bugfix start/status/logs`). Do not create any extra launcher-managed audit file.
22
19
 
23
20
  ### When to Use
24
21
 
@@ -72,7 +69,7 @@ Detect user intent from their message, then follow the corresponding workflow:
72
69
 
73
70
  #### Intent A: Start Bugfix Pipeline
74
71
 
75
- > **Execution model**: The pipeline processes bugs **sequentially** (one at a time, in severity/priority order). The `dependencies` field in bug-fix-list.json is reserved for future parallel execution support and does NOT affect current execution order.
72
+ > **Execution model**: The pipeline processes eligible bugs one at a time. The `dependencies` field is active: dependencies must complete before dependents are selected. Among unrelated eligible bugs, stable list order determines selection.
76
73
 
77
74
  1. **Check prerequisites**:
78
75
  ```bash
@@ -93,7 +90,6 @@ Detect user intent from their message, then follow the corresponding workflow:
93
90
  data = json.load(f)
94
91
  bugs = data.get('bugs', [])
95
92
  severity_order = {'critical': 0, 'high': 1, 'medium': 2, 'low': 3}
96
- bugs_sorted = sorted(bugs, key=lambda b: (severity_order.get(b.get('severity', 'medium'), 2), b.get('priority', 99)))
97
93
  print(f'Total bugs: {len(bugs)}')
98
94
  sev_counts = {}
99
95
  for b in bugs:
@@ -101,7 +97,7 @@ Detect user intent from their message, then follow the corresponding workflow:
101
97
  sev_counts[s] = sev_counts.get(s, 0) + 1
102
98
  print(f'By severity: {dict(sorted(sev_counts.items(), key=lambda x: severity_order.get(x[0], 2)))}')
103
99
  print()
104
- for b in bugs_sorted:
100
+ for b in bugs:
105
101
  print(f\" {b['id']}: [{b.get('severity','?').upper()}] {b.get('title', 'untitled')}\")
106
102
  "
107
103
  ```
@@ -125,9 +121,9 @@ Detect user intent from their message, then follow the corresponding workflow:
125
121
  ```bash
126
122
  VERBOSE=1 python3 ./.prizmkit/dev-pipeline/cli.py bugfix run .prizmkit/plans/bug-fix-list.json
127
123
  ```
128
- With all options:
124
+ Selected-options example:
129
125
  ```bash
130
- VERBOSE=1 MAX_RETRIES=5 ENABLE_DEPLOY=1 PRIZMKIT_EFFORT=high \
126
+ VERBOSE=1 ENABLE_CRITIC=1 MAX_RETRIES=5 STOP_ON_FAILURE=1 ENABLE_DEPLOY=1 PRIZMKIT_EFFORT=high \
131
127
  python3 ./.prizmkit/dev-pipeline/cli.py bugfix run .prizmkit/plans/bug-fix-list.json
132
128
  ```
133
129
 
@@ -135,10 +131,10 @@ Detect user intent from their message, then follow the corresponding workflow:
135
131
  ```bash
136
132
  python3 ./.prizmkit/dev-pipeline/cli.py daemon bugfix start .prizmkit/plans/bug-fix-list.json --env "VERBOSE=1"
137
133
  ```
138
- With all options:
134
+ Selected-options example:
139
135
  ```bash
140
136
  python3 ./.prizmkit/dev-pipeline/cli.py daemon bugfix start .prizmkit/plans/bug-fix-list.json \
141
- --env "VERBOSE=1 MAX_RETRIES=5 ENABLE_DEPLOY=1"
137
+ --env "VERBOSE=1 ENABLE_CRITIC=1 MAX_RETRIES=5 STOP_ON_FAILURE=1 ENABLE_DEPLOY=1 PRIZMKIT_EFFORT=high"
142
138
  ```
143
139
 
144
140
  **Manual mode**: Print the assembled command(s) and **stop here**. Do not execute anything. Do not proceed to step 7.
@@ -155,7 +151,10 @@ Detect user intent from their message, then follow the corresponding workflow:
155
151
 
156
152
  7. **Confirm and launch** (Foreground and Background only — Manual mode ends at step 6):
157
153
 
158
- Ask: "Ready to launch the bugfix pipeline with the above command?"
154
+ Use a separate `AskUserQuestion` call: "Ready to launch the bugfix pipeline with the above command?"
155
+ Options:
156
+ - Launch now (Recommended)
157
+ - Cancel
159
158
 
160
159
  After user confirms, execute the command from step 6.
161
160
 
@@ -165,6 +164,7 @@ Detect user intent from their message, then follow the corresponding workflow:
165
164
  - Summarize results: total bugs, fixed, failed, skipped
166
165
  - 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.
167
166
  - If some failed: show failed bug IDs and suggest `python3 ./.prizmkit/dev-pipeline/cli.py reset bugfix <B-XXX> --clean --run` for a fresh retry
167
+ - **Browser verification**: Bug sessions with `browser_interaction` perform their own verification attempts during execution. After completion, use `python3 ./.prizmkit/dev-pipeline/cli.py bugfix status .prizmkit/plans/bug-fix-list.json` and per-bug session logs as the source of truth before summarizing browser verification results.
168
168
 
169
169
  **If background daemon**:
170
170
  1. Verify launch:
@@ -200,7 +200,7 @@ Detect user intent from their message, then follow the corresponding workflow:
200
200
  python3 ./.prizmkit/dev-pipeline/cli.py daemon bugfix logs --lines 20
201
201
  ```
202
202
 
203
- 4. **Summarize** to user: total bugs, completed, in-progress, failed, pending, needs-info.
203
+ 4. **Summarize** to user: total bugs, completed, in_progress, failed, pending, needs_info.
204
204
 
205
205
  ---
206
206
 
@@ -259,15 +259,15 @@ python3 ./.prizmkit/dev-pipeline/cli.py reset bugfix B-001 --clean --run .prizmk
259
259
 
260
260
  ### Error Handling
261
261
 
262
- Read `${SKILL_DIR}/references/configuration.md` for the full error handling table (11 entries).
262
+ Read `${SKILL_DIR}/references/configuration.md` for the full error handling table.
263
263
 
264
264
  ### Integration Notes
265
265
 
266
266
  - **After bug-planner**: This is the natural next step. When user finishes bug planning and has `.prizmkit/plans/bug-fix-list.json`, suggest launching the bugfix pipeline.
267
- - **Session independence**: In daemon mode, the bugfix pipeline runs completely detached. User can close the AI CLI, open a new session later, and use this skill to check progress or stop the pipeline.
268
- - **Single instance**: Only one bugfix pipeline can run at a time. The PID file prevents duplicates.
269
- - **Feature pipeline coexistence**: Bugfix and feature pipelines use separate state directories (`.prizmkit/state/bugfix/` vs `.prizmkit/state/features/`), so they can run simultaneously without conflict.
267
+ - **Session independence**: Only Background daemon mode runs detached. Foreground runs in the current AI CLI session, and Manual mode prints commands without launching.
268
+ - **Single instance per family**: Only one bugfix pipeline can run at a time. Different pipeline families may coexist because they use separate daemon metadata and state directories.
269
+ - **Pipeline coexistence**: Bugfix, feature, and refactor pipelines use separate state directories (`.prizmkit/state/bugfix/`, `.prizmkit/state/features/`, `.prizmkit/state/refactor/`), so all three can run simultaneously without conflict.
270
270
  - **State preservation**: Stopping and restarting the bugfix pipeline resumes from where it left off -- completed bugs are not re-fixed.
271
- - **Bug ordering**: Bugs are processed by severity (critical high medium low), then by priority number within the same severity.
272
- - **Background mode traceability**: When daemon mode is chosen, the decision is logged to `.prizmkit/bugfix-pipeline-run.log` with timestamp, PID, and bug count for auditability.
273
- - **HANDOFF**: After pipeline completes all bugs, suggest running `prizmkit-retrospective` to capture lessons learned, or checking the fix reports in `.prizmkit/bugfix/`.
271
+ - **Bug ordering**: Dependencies are active. Runtime selects eligible bugs in stable list order after dependencies are completed; planners should order unrelated bugs by severity/priority before launch.
272
+ - **Background mode traceability**: Daemon mode metadata/logging is runtime-owned; use `daemon bugfix status` and `daemon bugfix logs`.
273
+ - **HANDOFF**: After pipeline completes all bugs, summarize results and ask what the user wants next. Individual sessions already run retrospective according to the bug-fix documentation policy.
@@ -51,7 +51,7 @@ Present these via `AskUserQuestion` in step 5. Round 1 is one `AskUserQuestion`
51
51
  - No (default) — Use defaults for failure behavior
52
52
  - Yes — Configure stop-on-failure, deploy, and reasoning effort options
53
53
 
54
- Note: Bug filter defaults to all bugs (by severity order). Default Critic to Off unless bugs have `severity: "critical"` or `severity: "high"` (in which case default to On). If the user selects "Other" on any option, handle their custom input.
54
+ Note: Bug filter defaults to all bugs. Runtime selects eligible bugs in stable list order after dependencies are completed; planners should order unrelated bugs by severity/priority before launch. Default Critic to Off unless bugs have `severity: "critical"` or `severity: "high"` (in which case default to On). If the user selects "Other" on any option, handle their custom input.
55
55
 
56
56
  ### Round 2 (only if Advanced config = Yes)
57
57
 
@@ -82,7 +82,7 @@ Note: Bug filter defaults to all bugs (by severity order). Default Critic to Off
82
82
  | Bugfix pipeline already running | Show status, ask if user wants to stop and restart |
83
83
  | PID file stale (process dead) | `python3 ./.prizmkit/dev-pipeline/cli.py daemon bugfix start .prizmkit/plans/bug-fix-list.json` auto-cleans, retry start |
84
84
  | Launch failed (process died immediately) | Show last 20 lines of log: `python3 ./.prizmkit/dev-pipeline/cli.py daemon bugfix logs --lines 20` |
85
- | All bugs blocked/failed/needs-info | Show status, suggest retrying with `python3 ./.prizmkit/dev-pipeline/cli.py reset bugfix <B-XXX> --clean --run .prizmkit/plans/bug-fix-list.json` or providing more info |
85
+ | All bugs blocked/failed/needs_info | Show status, suggest retrying with `python3 ./.prizmkit/dev-pipeline/cli.py reset bugfix <B-XXX> --clean --run .prizmkit/plans/bug-fix-list.json` or providing more info |
86
86
  | `playwright-cli` not installed | Browser verification skipped for playwright bugs (non-blocking). Suggest: `npm install -g @playwright/cli@latest && playwright-cli install --skills` |
87
87
  | `opencli` not installed | Browser verification skipped for opencli bugs (non-blocking). Install opencli for Chrome session-based browser verification |
88
88
  | Deploy session failed | Pipeline completed but deploy session exited non-zero. Check `.prizmkit/state/bugfix/deploy/<session_id>/logs/session.log`. Retry manually: `/prizmkit-deploy`. |
@@ -5,7 +5,7 @@ description: "Launch and manage the dev-pipeline from within an AI CLI session.
5
5
 
6
6
  # Dev-Pipeline Launcher
7
7
 
8
- Launch the autonomous development pipeline from within an AI CLI conversation. The pipeline runs as a fully detached background process -- closing the AI CLI session does NOT stop the pipeline.
8
+ Launch the autonomous development pipeline from within an AI CLI conversation. Only Background daemon mode is fully detached and survives AI CLI session closure; Foreground runs in the current session, and Manual prints commands without launching.
9
9
 
10
10
  Three execution modes are available (Foreground / Background daemon / Manual); they are defined authoritatively in **Intent A, step 5** below.
11
11
 
@@ -63,7 +63,7 @@ Detect user intent from their message, then follow the corresponding workflow:
63
63
 
64
64
  #### Intent A: Start Pipeline
65
65
 
66
- > **Execution model**: The pipeline processes features **sequentially** (one at a time, in order). The `dependencies` field in feature-list.json is reserved for future parallel execution support and does NOT affect current execution order.
66
+ > **Execution model**: The pipeline processes eligible features one at a time. The `dependencies` field is active: dependencies must complete before dependents are selected, and unrelated eligible items preserve stable list order.
67
67
 
68
68
  1. **Check prerequisites**:
69
69
  ```bash
@@ -97,9 +97,11 @@ Detect user intent from their message, then follow the corresponding workflow:
97
97
 
98
98
  Run the preflight script to auto-detect the database type, verify env vars, test connectivity, and check migration status:
99
99
  ```bash
100
- python3 ${SKILL_DIR}/scripts/preflight-check.py .prizmkit/plans/feature-list.json
100
+ python3 <feature-pipeline-launcher-skill-dir>/scripts/preflight-check.py .prizmkit/plans/feature-list.json
101
101
  ```
102
102
 
103
+ Replace `<feature-pipeline-launcher-skill-dir>` with the resolved skill directory path before running. Do not execute a literal unresolved `${SKILL_DIR}` shell variable.
104
+
103
105
  The script:
104
106
  - Reads `global_context.database` from `.prizmkit/plans/feature-list.json` and `.prizmkit/config.json`
105
107
  - Scans `.env.local` / `.env` for connection variables (supports Supabase, PostgreSQL, MySQL, MongoDB, Firebase, and generic `DATABASE_URL`)
@@ -154,7 +156,7 @@ Detect user intent from their message, then follow the corresponding workflow:
154
156
 
155
157
  **If user chose "Yes" to Advanced config**, ask a second round of `AskUserQuestion` — see the advanced config questions (stop-on-failure, deploy-after-completion, reasoning effort) in `${SKILL_DIR}/references/configuration.md`.
156
158
 
157
- **Environment variable mapping** and **advanced environment variables** tables — read `${SKILL_DIR}/references/configuration.md` for the full translation tables (8 config→env mappings + 9 advanced variables).
159
+ Read `${SKILL_DIR}/references/configuration.md` for the current environment-variable mapping and advanced environment-variable tables.
158
160
 
159
161
 
160
162
  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.
@@ -163,9 +165,9 @@ Detect user intent from their message, then follow the corresponding workflow:
163
165
  ```bash
164
166
  VERBOSE=1 python3 ./.prizmkit/dev-pipeline/cli.py feature run .prizmkit/plans/feature-list.json
165
167
  ```
166
- With all options:
168
+ Selected-options example:
167
169
  ```bash
168
- VERBOSE=1 ENABLE_CRITIC=true MAX_RETRIES=5 ENABLE_DEPLOY=1 PRIZMKIT_EFFORT=high \
170
+ VERBOSE=1 ENABLE_CRITIC=true MAX_RETRIES=5 STOP_ON_FAILURE=1 ENABLE_DEPLOY=1 PRIZMKIT_EFFORT=high \
169
171
  python3 ./.prizmkit/dev-pipeline/cli.py feature run .prizmkit/plans/feature-list.json --features F-001:F-005
170
172
  ```
171
173
 
@@ -173,10 +175,10 @@ Detect user intent from their message, then follow the corresponding workflow:
173
175
  ```bash
174
176
  python3 ./.prizmkit/dev-pipeline/cli.py daemon feature start .prizmkit/plans/feature-list.json --env "VERBOSE=1"
175
177
  ```
176
- With all options:
178
+ Selected-options example:
177
179
  ```bash
178
180
  python3 ./.prizmkit/dev-pipeline/cli.py daemon feature start .prizmkit/plans/feature-list.json --features F-001:F-005 \
179
- --env "VERBOSE=1 ENABLE_CRITIC=true MAX_RETRIES=5 ENABLE_DEPLOY=1 PRIZMKIT_EFFORT=high"
181
+ --env "VERBOSE=1 ENABLE_CRITIC=true MAX_RETRIES=5 STOP_ON_FAILURE=1 ENABLE_DEPLOY=1 PRIZMKIT_EFFORT=high"
180
182
  ```
181
183
 
182
184
  **Manual mode**: Print the assembled command(s) and **stop here**. Do not execute anything. Do not proceed to step 8.
@@ -193,7 +195,10 @@ Detect user intent from their message, then follow the corresponding workflow:
193
195
 
194
196
  8. **Confirm and launch** (Foreground and Background only — Manual mode ends at step 7):
195
197
 
196
- Ask: "Ready to launch the pipeline with the above command?"
198
+ Use a separate `AskUserQuestion` call: "Ready to launch the pipeline with the above command?"
199
+ Options:
200
+ - Launch now (Recommended)
201
+ - Cancel
197
202
 
198
203
  After user confirms, execute the command from step 7.
199
204
 
@@ -304,19 +309,13 @@ Notes:
304
309
 
305
310
  After pipeline completion, if features have `browser_interaction` fields and the corresponding browser tool (`playwright-cli` or `opencli`) is installed:
306
311
 
307
- 1. **Check which features qualify**:
308
- ```bash
309
- python3 -c "
310
- import json
311
- with open('.prizmkit/plans/feature-list.json') as f:
312
- data = json.load(f)
313
- for feat in data.get('features', []):
314
- bi = feat.get('browser_interaction')
315
- if bi and feat.get('status') == 'completed':
316
- tool = bi.get('tool', 'auto') if isinstance(bi, dict) else 'auto'
317
- print(f\" {feat['id']}: {feat.get('title','')} (tool: {tool})\")
318
- " 2>/dev/null
319
- ```
312
+ If list status may be stale, use the runtime status command as the source of truth for completion state:
313
+ `python3 ./.prizmkit/dev-pipeline/cli.py feature status .prizmkit/plans/feature-list.json`.
314
+
315
+ 1. **Check which completed features have browser verification configured**:
316
+ - Read `browser_interaction` configuration from `.prizmkit/plans/feature-list.json`.
317
+ - Use the runtime status command output to decide which configured features are actually completed.
318
+ - Do not rely on list-file `status` alone when runtime state exists, because daemon/foreground bookkeeping may be newer than the plan file.
320
319
 
321
320
  2. **Ask user**: "N features have browser verification configured. Run browser verification now? (Y/n)"
322
321
 
@@ -339,13 +338,13 @@ After pipeline completion, if features have `browser_interaction` fields and the
339
338
 
340
339
  ### Error Handling
341
340
 
342
- Read `${SKILL_DIR}/references/configuration.md` for the full error handling table (16 entries covering feature-list not found, dependency checks, pipeline state, browser tooling, permission, and deploy failures).
341
+ Read `${SKILL_DIR}/references/configuration.md` for the full error handling table covering feature-list, dependency checks, pipeline state, browser tooling, permission, and deploy failures.
343
342
 
344
343
  ### Integration Notes
345
344
 
346
345
  - **After feature-planner**: This is the natural next step. When user finishes planning and has `.prizmkit/plans/feature-list.json`, suggest launching the pipeline.
347
- - **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.
348
- - **Single instance**: Only one pipeline can run at a time. The PID file prevents duplicates.
349
- - **Pipeline coexistence**: Feature and bugfix pipelines use separate state directories (`.prizmkit/state/features/` vs `.prizmkit/state/bugfix/`), so they can run simultaneously without conflict.
346
+ - **Session independence**: Only Background daemon mode runs detached. Foreground runs in the current AI CLI session, and Manual mode prints commands without launching.
347
+ - **Single instance per family**: Only one feature pipeline can run at a time. Different pipeline families may coexist because they use separate daemon metadata and state directories.
348
+ - **Pipeline coexistence**: Feature, bugfix, and refactor pipelines use separate state directories (`.prizmkit/state/features/`, `.prizmkit/state/bugfix/`, `.prizmkit/state/refactor/`), so all three can run simultaneously without conflict.
350
349
  - **State preservation**: Stopping and restarting the pipeline resumes from where it left off -- completed features are not re-run.
351
350
  - **HANDOFF**: After pipeline completes all features, each session has already run `prizmkit-retrospective` internally. Ask user what's next.
@@ -1,6 +1,6 @@
1
1
  ---
2
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."
3
+ description: "Plan, validate, and manage features for an existing project — add or append features, reprioritize, split, summarize, and generate validated .prizmkit/plans/feature-list.json for dev-pipeline execution. Use this skill for feature scoping, incremental planning, continuing a feature plan, checking feature-list.json, or preparing pipeline input. For planning a new app from scratch, use app-planner instead."
4
4
  ---
5
5
 
6
6
  # feature planner
@@ -103,7 +103,7 @@ Trigger conditions are covered by the frontmatter `description`. Do NOT use this
103
103
  5. **Priority enums**: All priority values are exactly "critical", "high", "medium", or "low" (case-sensitive)
104
104
  6. **Status enum**: All status values are one of: pending, in_progress, completed, failed, skipped, split, auto_skipped
105
105
  7. **Acceptance criteria**: At least 1 criterion per feature, each is a concrete, measurable statement
106
- 8. **Browser interaction**: If present, has verify_steps array (optional AI auto-detects dev server, URL, port at runtime)
106
+ 8. **Browser interaction**: If present, may include `tool` and `verify_steps`; planner should add concrete `verify_steps` when known, but the schema permits an empty object for AI runtime exploration.
107
107
  9. **Complexity enum**: If present, is one of: low, medium, high, critical
108
108
  10. **Model field**: If present, is a non-empty string
109
109
  11. **Critic field**: If present, is boolean; if true, critic_count should be 1 or 3
@@ -206,8 +206,8 @@ Anti-pattern rule: do not assign every generated item `Priority: high` and `Comp
206
206
 
207
207
  Classify user intent first:
208
208
 
209
- ### Route A: New Feature Set (No Existing Plan)
210
- Use when the project exists but has no `.prizmkit/plans/feature-list.json` yet.
209
+ ### Route A: Initial Feature Set for Existing/App-Planned Project
210
+ Use when source code or app-level context already exists but no `.prizmkit/plans/feature-list.json` exists yet. If the user is still defining vision, stack, or product brief from scratch, switch to `app-planner` only after confirmation.
211
211
 
212
212
  Actions:
213
213
  1. Understand the existing codebase and what's already implemented
@@ -307,13 +307,11 @@ For simple incremental planning, skip detailed Phase 2-3 analysis:
307
307
  description: "Skip detailed Phase 2-3 analysis, draft features directly and add to feature-list.json"
308
308
  - label: "Full workflow"
309
309
  description: "Use the complete planning workflow with detailed analysis"
310
- - label: "Implement directly"
311
- description: "Skip the task list entirely and implement the feature(s) right now using /prizmkit-plan + /prizmkit-implement"
312
310
  ```
313
311
 
314
312
  - **Fast-path** → Continue with fast-path workflow below
315
313
  - **Full workflow** → Exit fast path, use full workflow from Phase 2
316
- - **Implement directly** Invoke `/prizmkit-plan` directly to create spec + plan, then `/prizmkit-implement` to execute. Do NOT add to `.prizmkit/plans/feature-list.json`
314
+ - If the user wants direct implementation instead of planning, exit the planner flow after explicit confirmation and recommend `/prizmkit-plan`; do not invoke implementation from inside `feature-planner`.
317
315
 
318
316
  **NEVER proceed without explicit user selection via `AskUserQuestion`. Do NOT render options as plain text — the user must be able to click/select.**
319
317
  3. Generate next sequential feature IDs
@@ -440,10 +438,10 @@ Activate when ALL true:
440
438
  ### Gate Behavior
441
439
  When the session appears to be ending:
442
440
  1. **Remind**: "You set out to produce `.prizmkit/plans/feature-list.json` but we haven't completed it yet."
443
- 2. **Offer 3 options**:
444
- - **(a) Continue to completion**
445
- - **(b) Save draft & exit** — write current progress as `feature-list.draft.json` to `.prizmkit/plans/`
446
- - **(c) Abandon** — exit without saving
441
+ 2. Use `AskUserQuestion` with one question:
442
+ - **Continue to completion (Recommended)** — resume from current phase
443
+ - **Save draft & exit** — write current progress as `.prizmkit/plans/feature-list.draft.json`
444
+ - **Abandon** — exit without saving
447
445
 
448
446
  ## Handoff Message Template
449
447
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  This guide provides structured templates and patterns for writing high-quality feature descriptions, acceptance criteria, complexity estimates, dependency graphs, and session granularity decisions. Use during feature-planner sessions.
4
4
 
5
- For app-level design references (vision templates, tech stack matrix), see `app-planner/assets/app-design-guide.md`. For feature decomposition patterns (CRUD, SaaS, Social, E-commerce), see `${SKILL_DIR}/references/decomposition-patterns.md`.
5
+ For app-level design references (vision templates, tech stack matrix), see `app-planner/references/app-design-guide.md`. For feature decomposition patterns (CRUD, SaaS, Social, E-commerce), see `${SKILL_DIR}/references/decomposition-patterns.md`.
6
6
 
7
7
  ---
8
8
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  Use these patterns as starting points when breaking an app into features. Adapt them to the specific project.
4
4
 
5
- For app-level design references (vision templates, tech stack decision matrix), see `app-planner/assets/app-design-guide.md`.
5
+ For app-level design references (vision templates, tech stack decision matrix), see `app-planner/references/app-design-guide.md`.
6
6
 
7
7
  ## Pattern A: CRUD-Based App
8
8
 
@@ -25,7 +25,8 @@ Group errors by type and apply targeted fixes:
25
25
  | **Feature ID issues** | Invalid format (not `F-NNN`), duplicate IDs, undefined refs | "Suggest corrected IDs, show duplicates" | Yes |
26
26
  | **Dependency errors** | Circular dependency, undefined target features | "Show cycle chain (e.g., `F-003 → F-005 → F-003`), suggest break point" | No |
27
27
  | **Missing fields** | Feature missing required keys (title, description, AC) | "List each feature + missing keys, guide patch" | Partial |
28
- | **Insufficient AC** | Feature has <2 acceptance criteria | "Show feature, suggest AC examples" | No |
28
+ | **Insufficient AC** | Feature has 0 acceptance criteria | "Show feature, require at least one measurable criterion" | No |
29
+ | **Thin AC quality** | Feature has 1-2 acceptance criteria | "Warn that planner quality is weak; suggest additional criteria" | No |
29
30
  | **Invalid values** | complexity not in [low/medium/high/critical], status not pending | "Show field, valid values" | Yes |
30
31
 
31
32
  ### Execution
@@ -81,9 +81,9 @@ Allow priority updates for both old and new features if user requests reprioriti
81
81
  Keep dependency correctness as first constraint.
82
82
 
83
83
  ### Step 5: Validate
84
- Run:
84
+ Write a draft and generate the final list:
85
85
  ```bash
86
- python3 ${SKILL_DIR}/scripts/validate-and-generate.py validate --input feature-list.json
86
+ python3 ${SKILL_DIR}/scripts/validate-and-generate.py generate --input .prizmkit/plans/feature-list.draft.json --output .prizmkit/plans/feature-list.json
87
87
  ```
88
88
 
89
89
  Fix and re-run until pass.