prizmkit 1.1.113 → 1.1.115
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/dev-pipeline/.env.example +0 -1
- package/bundled/dev-pipeline/README.md +4 -6
- package/bundled/dev-pipeline/SCHEMA_ANALYSIS.md +40 -518
- package/bundled/dev-pipeline/assets/prizm-dev-team-integration.md +27 -99
- package/bundled/dev-pipeline/prizmkit_runtime/checkpoint_state.py +283 -0
- package/bundled/dev-pipeline/prizmkit_runtime/daemon.py +3 -13
- package/bundled/dev-pipeline/prizmkit_runtime/heartbeat.py +0 -1
- package/bundled/dev-pipeline/prizmkit_runtime/runner_classification.py +25 -31
- package/bundled/dev-pipeline/prizmkit_runtime/runner_models.py +0 -8
- package/bundled/dev-pipeline/prizmkit_runtime/runner_prompts.py +0 -3
- package/bundled/dev-pipeline/prizmkit_runtime/runners.py +13 -7
- package/bundled/dev-pipeline/prizmkit_runtime/sessions.py +13 -1
- package/bundled/dev-pipeline/scripts/continuation.py +8 -40
- package/bundled/dev-pipeline/scripts/generate-bootstrap-prompt.py +76 -261
- package/bundled/dev-pipeline/scripts/generate-bugfix-prompt.py +16 -35
- package/bundled/dev-pipeline/scripts/generate-refactor-prompt.py +15 -34
- package/bundled/dev-pipeline/scripts/init-bugfix-pipeline.py +6 -0
- package/bundled/dev-pipeline/scripts/init-pipeline.py +6 -0
- package/bundled/dev-pipeline/scripts/init-refactor-pipeline.py +6 -0
- package/bundled/dev-pipeline/scripts/parse-stream-progress.py +1 -1
- package/bundled/dev-pipeline/scripts/prompt_framework.py +114 -63
- package/bundled/dev-pipeline/scripts/update-bug-status.py +3 -7
- package/bundled/dev-pipeline/scripts/update-checkpoint.py +54 -22
- package/bundled/dev-pipeline/scripts/update-feature-status.py +3 -7
- package/bundled/dev-pipeline/scripts/update-refactor-status.py +3 -7
- package/bundled/dev-pipeline/scripts/utils.py +14 -40
- package/bundled/dev-pipeline/templates/bootstrap-prompt.md +1 -1
- package/bundled/dev-pipeline/templates/bootstrap-tier1.md +1 -1
- package/bundled/dev-pipeline/templates/bootstrap-tier2.md +9 -91
- package/bundled/dev-pipeline/templates/bootstrap-tier3.md +9 -66
- package/bundled/dev-pipeline/templates/bug-fix-list-schema.json +10 -16
- package/bundled/dev-pipeline/templates/feature-list-schema.json +32 -17
- package/bundled/dev-pipeline/templates/refactor-bootstrap-prompt.md +0 -16
- package/bundled/dev-pipeline/templates/refactor-list-schema.json +10 -16
- package/bundled/dev-pipeline/templates/sections/bugfix-session-context.md +1 -1
- package/bundled/dev-pipeline/templates/sections/context-budget-rules.md +1 -1
- package/bundled/dev-pipeline/templates/sections/critical-paths-agent.md +0 -1
- package/bundled/dev-pipeline/templates/sections/critical-paths-full.md +0 -1
- package/bundled/dev-pipeline/templates/sections/phase-implement-agent.md +1 -1
- package/bundled/dev-pipeline/templates/sections/phase-implement-full.md +1 -1
- package/bundled/dev-pipeline/templates/sections/refactor-session-context.md +1 -1
- package/bundled/dev-pipeline/tests/conftest.py +1 -0
- package/bundled/dev-pipeline/tests/test_checkpoint_state.py +164 -0
- package/bundled/dev-pipeline/tests/test_generate_bootstrap_prompt.py +48 -76
- package/bundled/dev-pipeline/tests/test_generate_bugfix_prompt.py +25 -3
- package/bundled/dev-pipeline/tests/test_generate_refactor_prompt.py +25 -5
- package/bundled/dev-pipeline/tests/test_python_runner_parity.py +128 -10
- package/bundled/dev-pipeline/tests/test_runtime_helper.py +23 -0
- package/bundled/dev-pipeline/tests/test_unified_cli.py +40 -9
- package/bundled/skills/_metadata.json +1 -1
- package/bundled/skills/app-planner/SKILL.md +18 -2
- package/bundled/skills/app-planner/references/generated-plan-review.md +67 -0
- package/bundled/skills/bug-planner/SKILL.md +24 -28
- package/bundled/skills/bug-planner/references/generated-plan-review.md +63 -0
- package/bundled/skills/bug-planner/references/verification.md +29 -0
- package/bundled/skills/bug-planner/scripts/validate-bug-list.py +8 -0
- package/bundled/skills/bugfix-pipeline-launcher/SKILL.md +2 -2
- package/bundled/skills/bugfix-pipeline-launcher/references/configuration.md +1 -6
- package/bundled/skills/feature-pipeline-launcher/SKILL.md +6 -12
- package/bundled/skills/feature-pipeline-launcher/references/configuration.md +0 -1
- package/bundled/skills/feature-planner/SKILL.md +30 -34
- package/bundled/skills/feature-planner/assets/planning-guide.md +2 -2
- package/bundled/skills/feature-planner/references/generated-plan-review.md +63 -0
- package/bundled/skills/feature-planner/scripts/validate-and-generate.py +8 -11
- package/bundled/skills/prizmkit-init/SKILL.md +2 -2
- package/bundled/skills/prizmkit-plan/SKILL.md +15 -1
- package/bundled/skills/prizmkit-plan/references/review-plan-spec-loop.md +101 -0
- package/bundled/skills/prizmkit-prizm-docs/references/op-init.md +1 -1
- package/bundled/skills/refactor-pipeline-launcher/SKILL.md +5 -5
- package/bundled/skills/refactor-pipeline-launcher/references/configuration.md +2 -7
- package/bundled/skills/refactor-planner/SKILL.md +30 -34
- package/bundled/skills/refactor-planner/references/fast-path.md +2 -2
- package/bundled/skills/refactor-planner/references/generated-plan-review.md +63 -0
- package/bundled/skills/refactor-planner/scripts/validate-and-generate-refactor.py +9 -0
- package/bundled/team/prizm-dev-team.json +2 -9
- package/package.json +1 -1
- package/src/clean.js +60 -7
- package/src/config.js +61 -20
- package/src/gitignore-template.js +6 -3
- package/src/manifest.js +6 -2
- package/src/platforms.js +14 -0
- package/src/scaffold.js +198 -34
- package/src/upgrade.js +5 -2
- package/bundled/agents/prizm-dev-team-critic.md +0 -179
- package/bundled/dev-pipeline/templates/agent-prompts/critic-plan-challenge.md +0 -8
- package/bundled/dev-pipeline/templates/sections/bugfix-phase-critic.md +0 -22
- package/bundled/dev-pipeline/templates/sections/phase-critic-plan-full.md +0 -61
- package/bundled/dev-pipeline/templates/sections/phase-critic-plan.md +0 -38
- package/bundled/dev-pipeline/templates/sections/refactor-phase-critic.md +0 -22
- package/bundled/skills/bug-planner/references/critic-and-verification.md +0 -44
|
@@ -99,6 +99,29 @@ class TestPlatformExecutableAndPortHelpers:
|
|
|
99
99
|
assert payload["platform"] == "codex"
|
|
100
100
|
assert payload["path"].endswith(".agents/skills/playwright-cli")
|
|
101
101
|
|
|
102
|
+
def test_read_platform_conventions_uses_resolved_main_memory_file(self, tmp_path, monkeypatch):
|
|
103
|
+
from scripts.utils import read_platform_conventions
|
|
104
|
+
|
|
105
|
+
project = tmp_path / "project"
|
|
106
|
+
(project / ".prizmkit").mkdir(parents=True)
|
|
107
|
+
(project / ".prizmkit" / "config.json").write_text(
|
|
108
|
+
json.dumps({"platform": "codex", "ai_cli": "codex"}), encoding="utf-8"
|
|
109
|
+
)
|
|
110
|
+
(project / "AGENTS.md").write_text("### Project Conventions\n", encoding="utf-8")
|
|
111
|
+
(project / "AGENTS.private.md").write_text("framework protocol\n", encoding="utf-8")
|
|
112
|
+
monkeypatch.delenv("PRIZMKIT_PLATFORM", raising=False)
|
|
113
|
+
|
|
114
|
+
assert read_platform_conventions(project) == "`AGENTS.md`"
|
|
115
|
+
|
|
116
|
+
(project / ".prizmkit" / "config.json").write_text(
|
|
117
|
+
json.dumps({"platform": "codebuddy", "ai_cli": "cbc"}), encoding="utf-8"
|
|
118
|
+
)
|
|
119
|
+
(project / "CODEBUDDY.md").write_text("### Infrastructure\n", encoding="utf-8")
|
|
120
|
+
(project / "CODEBUDDY.private.md").write_text("framework protocol\n", encoding="utf-8")
|
|
121
|
+
|
|
122
|
+
assert read_platform_conventions(project) == "`CODEBUDDY.md`"
|
|
123
|
+
assert ".private.md" not in read_platform_conventions(project)
|
|
124
|
+
|
|
102
125
|
def test_codebuddy_cli_env_wins_over_filesystem_markers(self, tmp_path, monkeypatch):
|
|
103
126
|
from prizmkit_runtime.platform_detection import resolve_platform
|
|
104
127
|
|
|
@@ -793,9 +793,6 @@ def test_session_preamble_writes_redacted_start_command_for_all_launch_profiles(
|
|
|
793
793
|
|
|
794
794
|
def test_headless_subagent_prompt_guidance_keeps_no_worktree_boundary_visible():
|
|
795
795
|
guidance_files = [
|
|
796
|
-
REPO_ROOT / "dev-pipeline" / "templates" / "sections" / "phase-critic-plan.md",
|
|
797
|
-
REPO_ROOT / "dev-pipeline" / "templates" / "sections" / "phase-critic-plan-full.md",
|
|
798
|
-
REPO_ROOT / "dev-pipeline" / "templates" / "agent-prompts" / "critic-plan-challenge.md",
|
|
799
796
|
REPO_ROOT / "dev-pipeline" / "templates" / "bootstrap-tier2.md",
|
|
800
797
|
REPO_ROOT / "dev-pipeline" / "templates" / "bootstrap-tier3.md",
|
|
801
798
|
REPO_ROOT / "core" / "skills" / "prizmkit-skill" / "prizmkit-code-review" / "SKILL.md",
|
|
@@ -1029,12 +1026,13 @@ def test_compact_progress_line_hides_stale_until_no_progress(tmp_path):
|
|
|
1029
1026
|
|
|
1030
1027
|
session_log = tmp_path / "session.log"
|
|
1031
1028
|
progress = tmp_path / "progress.json"
|
|
1029
|
+
checkpoint = tmp_path / "workflow-checkpoint.json"
|
|
1032
1030
|
progress.write_text(
|
|
1033
1031
|
json.dumps(
|
|
1034
1032
|
{
|
|
1035
1033
|
"child_total_bytes": 2 * 1024 * 1024,
|
|
1036
1034
|
"subagent_spawn_count": 5,
|
|
1037
|
-
"current_phase": "
|
|
1035
|
+
"current_phase": "stream-derived-phase",
|
|
1038
1036
|
"current_tool": "Read",
|
|
1039
1037
|
"message_count": 465,
|
|
1040
1038
|
"total_tool_calls": 412,
|
|
@@ -1042,20 +1040,28 @@ def test_compact_progress_line_hides_stale_until_no_progress(tmp_path):
|
|
|
1042
1040
|
),
|
|
1043
1041
|
encoding="utf-8",
|
|
1044
1042
|
)
|
|
1043
|
+
checkpoint.write_text(
|
|
1044
|
+
json.dumps({"steps": [
|
|
1045
|
+
{"id": "S01", "skill": "plan", "name": "Plan", "status": "completed"},
|
|
1046
|
+
{"id": "S02", "skill": "retro", "name": "Retrospective", "status": "pending", "depends_on": "S01"},
|
|
1047
|
+
]}),
|
|
1048
|
+
encoding="utf-8",
|
|
1049
|
+
)
|
|
1045
1050
|
running = HeartbeatState(last_seen_epoch=1.0, stale=False, details="progress", stale_seconds=0, log_size=4 * 1024 * 1024)
|
|
1046
1051
|
brief_pause = HeartbeatState(last_seen_epoch=1.0, stale=False, details="no progress", stale_seconds=125, log_size=4 * 1024 * 1024)
|
|
1047
1052
|
paused = HeartbeatState(last_seen_epoch=1.0, stale=True, details="no progress", stale_seconds=15 * 60, log_size=4 * 1024 * 1024)
|
|
1048
1053
|
resumed = HeartbeatState(last_seen_epoch=3.0, stale=False, details="progress", stale_seconds=0, log_size=5 * 1024 * 1024)
|
|
1049
1054
|
|
|
1050
|
-
running_line = _compact_progress_line(0, session_log, progress, running, stale_threshold_seconds=15 * 60)
|
|
1051
|
-
brief_pause_line = _compact_progress_line(0, session_log, progress, brief_pause, stale_threshold_seconds=15 * 60)
|
|
1052
|
-
paused_line = _compact_progress_line(0, session_log, progress, paused, stale_threshold_seconds=15 * 60)
|
|
1053
|
-
resumed_line = _compact_progress_line(0, session_log, progress, resumed, stale_threshold_seconds=15 * 60)
|
|
1055
|
+
running_line = _compact_progress_line(0, session_log, progress, running, checkpoint_path=checkpoint, stale_threshold_seconds=15 * 60)
|
|
1056
|
+
brief_pause_line = _compact_progress_line(0, session_log, progress, brief_pause, checkpoint_path=checkpoint, stale_threshold_seconds=15 * 60)
|
|
1057
|
+
paused_line = _compact_progress_line(0, session_log, progress, paused, checkpoint_path=checkpoint, stale_threshold_seconds=15 * 60)
|
|
1058
|
+
resumed_line = _compact_progress_line(0, session_log, progress, resumed, checkpoint_path=checkpoint, stale_threshold_seconds=15 * 60)
|
|
1054
1059
|
|
|
1055
1060
|
assert "▶ [HEARTBEAT]" in running_line
|
|
1056
1061
|
assert "log: 4MB" in running_line
|
|
1057
1062
|
assert "child: 2MB/5" in running_line
|
|
1058
|
-
assert "phase:
|
|
1063
|
+
assert "phase: Retrospective" in running_line
|
|
1064
|
+
assert "stream-derived-phase" not in running_line
|
|
1059
1065
|
assert "tool: Read" in running_line
|
|
1060
1066
|
assert "msgs: 465" in running_line
|
|
1061
1067
|
assert "412 tool calls" in running_line
|
|
@@ -1068,6 +1074,31 @@ def test_compact_progress_line_hides_stale_until_no_progress(tmp_path):
|
|
|
1068
1074
|
assert "log: 5MB" in resumed_line
|
|
1069
1075
|
assert "stale:" not in resumed_line
|
|
1070
1076
|
|
|
1077
|
+
def test_compact_progress_line_omits_phase_without_valid_checkpoint(tmp_path):
|
|
1078
|
+
from prizmkit_runtime.heartbeat import HeartbeatState
|
|
1079
|
+
from prizmkit_runtime.sessions import _compact_progress_line
|
|
1080
|
+
|
|
1081
|
+
session_log = tmp_path / "session.log"
|
|
1082
|
+
progress = tmp_path / "progress.json"
|
|
1083
|
+
malformed = tmp_path / "bad-checkpoint.json"
|
|
1084
|
+
invalid = tmp_path / "invalid-checkpoint.json"
|
|
1085
|
+
progress.write_text(
|
|
1086
|
+
json.dumps({"current_phase": "legacy-plan", "current_tool": "Edit"}),
|
|
1087
|
+
encoding="utf-8",
|
|
1088
|
+
)
|
|
1089
|
+
malformed.write_text("{bad", encoding="utf-8")
|
|
1090
|
+
invalid.write_text(json.dumps({"steps": [{"id": "S01", "skill": "x", "name": "X", "status": "done"}]}), encoding="utf-8")
|
|
1091
|
+
state = HeartbeatState(last_seen_epoch=1.0, stale=False, details="progress", stale_seconds=0, log_size=12)
|
|
1092
|
+
|
|
1093
|
+
missing_line = _compact_progress_line(0, session_log, progress, state, checkpoint_path=tmp_path / "missing.json")
|
|
1094
|
+
malformed_line = _compact_progress_line(0, session_log, progress, state, checkpoint_path=malformed)
|
|
1095
|
+
invalid_line = _compact_progress_line(0, session_log, progress, state, checkpoint_path=invalid)
|
|
1096
|
+
|
|
1097
|
+
for line in (missing_line, malformed_line, invalid_line):
|
|
1098
|
+
assert "phase:" not in line
|
|
1099
|
+
assert "legacy-plan" not in line
|
|
1100
|
+
assert "tool: Edit" in line
|
|
1101
|
+
|
|
1071
1102
|
|
|
1072
1103
|
def test_heartbeat_observation_stale_accumulates_by_elapsed_time_and_resets_on_progress(tmp_path, monkeypatch):
|
|
1073
1104
|
import prizmkit_runtime.heartbeat as heartbeat
|
|
@@ -180,7 +180,7 @@ Route by answer:
|
|
|
180
180
|
- Proactively scan the project (same as brownfield behavior)
|
|
181
181
|
- Generate project-brief.md from inferred context
|
|
182
182
|
- Skip extensive brainstorming and constraint phases
|
|
183
|
-
- Present brief for user confirmation → write →
|
|
183
|
+
- Present brief for user confirmation → write → run CP-AP-6 Generated App-Plan Review Gate → completion summary
|
|
184
184
|
|
|
185
185
|
Session goal tracking: Track the intent (`produce`, `explore`, or `quick_context`) throughout the session. If `explore`, always re-prompt before ending.
|
|
186
186
|
|
|
@@ -240,6 +240,21 @@ Checkpoints catch cascading errors early — skipping one means the next phase b
|
|
|
240
240
|
| **CP-AP-3** | Frontend Design Evaluated | For frontend projects: checked for existing UI/UX design system; user was asked if missing. **Auto-pass** for backend-only or non-UI projects. | 2 |
|
|
241
241
|
| **CP-AP-4** | Project Brief Accumulated | `.prizmkit/plans/project-brief.md` exists at `.prizmkit/plans/` with at least 3 ideas listed. For brownfield: already-implemented items marked `[x]` count toward this total. | 3 |
|
|
242
242
|
| **CP-AP-5** | Planning Complete | All project-level context captured: conventions, infrastructure config, tech stack, architecture decisions, project brief finalized | 4 |
|
|
243
|
+
| **CP-AP-6** | Local Plan Review Passed | Local generated-plan review loaded `${SKILL_DIR}/references/generated-plan-review.md`, directly reviewed current-session final app-planning artifacts, applied accepted fixes through source/writer paths, and rechecked changed sections | 4 |
|
|
244
|
+
|
|
245
|
+
## Generated App-Plan Review Gate
|
|
246
|
+
|
|
247
|
+
User requirement preserved verbatim: `Add generated-plan review in app-planner also .`
|
|
248
|
+
|
|
249
|
+
Run this gate before any final handoff whenever the current `app-planner` session wrote or rewrote final app-level planning content. In full produce mode this runs after CP-AP-5; in Quick Context Mode it runs after the confirmed `.prizmkit/plans/project-brief.md` write; in conventions, infrastructure, architecture-decision, or rules-only final-write flows it runs after those writes and before the completion summary. This gate reviews generated planning artifacts directly, not implementation diffs.
|
|
250
|
+
|
|
251
|
+
1. **Load the local reference**: read `${SKILL_DIR}/references/generated-plan-review.md` and follow it as the source of truth for app-planner generated content review.
|
|
252
|
+
2. **Read actual planning artifacts directly**: inspect current-session final outputs such as `.prizmkit/plans/project-brief.md`, selected `AGENTS.md` / `CLAUDE.md` / `CODEBUDDY.md` sections, `.prizmkit/rules/<layer>-rules.md`, and `.prizmkit/prizm-docs/root.prizm` `RULES:` pointer line. Do not rely on `git status`, `git diff`, or `git diff --cached`, because `.prizmkit` planning artifacts are often gitignored or untracked.
|
|
253
|
+
3. **Scope to new/changed app-planning content**: compare against pre-session snapshots or in-memory drafts when available. Preserve unchanged historical brief items, instruction-file sections, rules files, and Prizm doc content. For explore-only sessions, draft-save exits, or flows with no new final planning content, report: `Local generated-plan review: not applicable — no new final planning content written.`
|
|
254
|
+
4. **Run the local checklist** from the reference: project brief completeness, consistency of conventions/infrastructure/architecture decisions, rules pointer consistency, user-provided wording preservation, app-planner writable-boundary compliance, and downstream `feature-planner` readiness to produce `.prizmkit/plans/feature-list.json` without guessing.
|
|
255
|
+
5. **Apply accepted fixes through the source/writer path**: project brief fixes go through the draft/checklist source, instruction-file section fixes go through the selected platform instruction file section source with user confirmation when changing approved wording, rules fixes re-render from rules configuration answers/templates when available, and `root.prizm` fixes are limited to the `RULES:` pointer line.
|
|
256
|
+
6. **Recheck changed sections directly** after every accepted fix batch.
|
|
257
|
+
7. **Report CP-AP-6** in the completion summary: include local generated-plan review verdict, reviewed app-planning artifacts/sections, accepted fixes (or "none"), and final writer/validation result.
|
|
243
258
|
|
|
244
259
|
## Architecture Decision Capture
|
|
245
260
|
|
|
@@ -277,7 +292,7 @@ When the session appears to be ending:
|
|
|
277
292
|
|
|
278
293
|
## Completion Summary
|
|
279
294
|
|
|
280
|
-
After
|
|
295
|
+
After CP-AP-6 passes or is reported not applicable, present a summary and end the session:
|
|
281
296
|
|
|
282
297
|
1. **Summary** (as text): List all project-level artifacts produced:
|
|
283
298
|
- Project conventions → `AGENTS.md` / `CLAUDE.md` / `CODEBUDDY.md` `### Project Conventions`
|
|
@@ -286,6 +301,7 @@ After all checkpoints pass, present a summary and end the session:
|
|
|
286
301
|
- Architecture decisions (if any) → `AGENTS.md` / `CLAUDE.md` / `CODEBUDDY.md` `### Architecture Decisions`
|
|
287
302
|
- Dev rules (if configured) → `.prizmkit/rules/<layer>-rules.md` (with `root.prizm` `RULES:` pointer)
|
|
288
303
|
- Project brief → `.prizmkit/plans/project-brief.md`
|
|
304
|
+
- Local generated-plan review → verdict, reviewed app-planning artifacts/sections, accepted fixes (or "none"), and final writer/validation result
|
|
289
305
|
|
|
290
306
|
2. **Suggest possible next steps** (as text, NOT auto-invoked):
|
|
291
307
|
> Project-level planning is complete. When you're ready, here are some possible next steps:
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
# Generated Plan Review — App Planner
|
|
2
|
+
|
|
3
|
+
Use this local review loop before app-planner presents the final completion summary for current-session final planning artifacts. This is a planner-output review, not an implementation/code-diff review.
|
|
4
|
+
|
|
5
|
+
## Trigger
|
|
6
|
+
|
|
7
|
+
Run only when the current `app-planner` session wrote or rewrote final app-level planning content. This includes project brief finalization, project conventions, infrastructure configuration, architecture decisions, rules files, or a `root.prizm` `RULES:` pointer update.
|
|
8
|
+
|
|
9
|
+
For explore-only sessions, draft-save exits, validate-only checks, or other flows with no new final planning content, report: `Local generated-plan review: not applicable — no new final planning content written.`
|
|
10
|
+
|
|
11
|
+
## Direct Artifact Reads
|
|
12
|
+
|
|
13
|
+
Planning artifacts may be gitignored, untracked, or absent from staged and unstaged diffs. Read the actual files and source sections directly when they were produced or changed in the current session:
|
|
14
|
+
|
|
15
|
+
- Project brief: `.prizmkit/plans/project-brief.md`
|
|
16
|
+
- Draft brief when present: `.prizmkit/plans/project-brief.draft.md`
|
|
17
|
+
- Project instruction files selected by `.prizmkit/manifest.json`: `AGENTS.md`, `CLAUDE.md`, `CODEBUDDY.md`
|
|
18
|
+
- Generated rule files: `.prizmkit/rules/<layer>-rules.md`
|
|
19
|
+
- Prizm docs root pointer: `.prizmkit/prizm-docs/root.prizm` `RULES:` line only
|
|
20
|
+
- In-memory answers, draft brief data, rules configuration answers, or section snapshots captured before writes
|
|
21
|
+
|
|
22
|
+
Do not rely on `git status`, `git diff`, or `git diff --cached` to decide whether app-planner output exists or changed. Do not invoke `/prizmkit-code-review` for this planner-output gate; `/prizmkit-code-review` remains the implementation/code-diff review gate after `/prizmkit-implement`.
|
|
23
|
+
|
|
24
|
+
## Review Scope
|
|
25
|
+
|
|
26
|
+
1. Compare current final artifacts with pre-session snapshots or in-memory drafts when available.
|
|
27
|
+
2. Review only newly added or changed app-planning sections from the current session.
|
|
28
|
+
3. Preserve unchanged historical project brief ideas, instruction-file sections, rules files, and Prizm doc content.
|
|
29
|
+
4. For `.prizmkit/prizm-docs/root.prizm`, review only the `RULES:` pointer line managed by rules configuration.
|
|
30
|
+
5. If no snapshot exists, review only the artifacts the current app-planner session reports as produced.
|
|
31
|
+
|
|
32
|
+
## Source-of-Truth Map
|
|
33
|
+
|
|
34
|
+
- `project-brief.md` fixes go through the draft/checklist project brief source representation described in `project-brief-guide.md`, then rewrite the final brief through the existing project brief writer path.
|
|
35
|
+
- Project conventions, infrastructure, and architecture decisions are source sections in `AGENTS.md`, `CLAUDE.md`, or `CODEBUDDY.md`. If a fix changes user-approved wording or meaning, ask for user confirmation before rewriting.
|
|
36
|
+
- `.prizmkit/rules/<layer>-rules.md` fixes should re-render from the rules configuration answers and template inputs when available. If no structured source remains, update the source rule section explicitly and report that source path.
|
|
37
|
+
- `root.prizm` fixes are limited to correcting or adding the `RULES:` pointer line; do not rewrite unrelated root content.
|
|
38
|
+
|
|
39
|
+
## Review Checklist
|
|
40
|
+
|
|
41
|
+
For every reviewed app-planning artifact or section, check:
|
|
42
|
+
|
|
43
|
+
- Project brief completeness: goal, users, differentiators, constraints, tech stack assumptions, and at least three actionable ideas when producing a final brief
|
|
44
|
+
- Consistency among conventions, infrastructure, architecture decisions, and project brief content
|
|
45
|
+
- Infrastructure completeness or explicit deferral for database, deployment, and cloud services topics when those flows ran
|
|
46
|
+
- Rules pointer consistency: generated `.prizmkit/rules/<layer>-rules.md` files are referenced by the `root.prizm` `RULES:` line when rules were configured
|
|
47
|
+
- User-provided wording preservation in project brief ideas, conventions, infrastructure notes, architecture decisions, and rules
|
|
48
|
+
- Downstream readiness: `feature-planner` has enough context to produce `.prizmkit/plans/feature-list.json` without guessing core app purpose, stack, constraints, or implementation conventions
|
|
49
|
+
- No implementation/scaffolding actions are introduced by the app plan; outputs stay within app-planner's writable boundary
|
|
50
|
+
|
|
51
|
+
## Fix Loop
|
|
52
|
+
|
|
53
|
+
1. Present findings with artifact path, section name, severity, evidence, and suggested source change.
|
|
54
|
+
2. Accept only findings that improve planner correctness, consistency, user wording preservation, or downstream feature-planner readiness.
|
|
55
|
+
3. Apply accepted fixes to the source representation first: brief draft/checklist, instruction-file section source, rules answer/template source, or `root.prizm` `RULES:` pointer source.
|
|
56
|
+
4. Regenerate or rewrite final artifacts through the same writer path used by app-planner. Do not hand-patch final artifacts as a shortcut when a draft/source representation exists.
|
|
57
|
+
5. Re-read the changed final artifacts directly and re-run the local review only for changed sections.
|
|
58
|
+
|
|
59
|
+
## Report Format
|
|
60
|
+
|
|
61
|
+
Report in the final completion summary:
|
|
62
|
+
|
|
63
|
+
- `Local generated-plan review: PASS` or `NEEDS_FIXES`
|
|
64
|
+
- Reviewed app-planning sections/artifacts
|
|
65
|
+
- Accepted fixes, or `none`
|
|
66
|
+
- Final writer/validation result for each changed artifact
|
|
67
|
+
- Note when review was not applicable because no new final planning content was written
|
|
@@ -283,42 +283,37 @@ Only proceed to Phase 5 after user confirms.
|
|
|
283
283
|
```
|
|
284
284
|
The script fills in defaults (`$schema`, `created_at`, `created_by`), validates all fields, and writes the final file only if validation passes.
|
|
285
285
|
3. **If validation fails**: Fix the draft and retry (max 3 attempts). If the script is unavailable, use the checklist in `${SKILL_DIR}/references/schema-validation.md`.
|
|
286
|
-
4. **Run the mandatory
|
|
287
|
-
5. **Output**: File path, summary, review result, validation outcome, and next steps
|
|
286
|
+
4. **Run the mandatory Local Generated-Plan Review Gate** (see §Local Generated-Plan Review Gate below): load `${SKILL_DIR}/references/generated-plan-review.md` and review only newly added/changed bug entries after validation passes and before success output.
|
|
287
|
+
5. **Output**: File path, summary, local generated-plan review result, validation outcome, and next steps
|
|
288
288
|
|
|
289
289
|
**Gate → CP-BP-5**: `bug-fix-list.json` passes validation script with zero errors.
|
|
290
290
|
|
|
291
|
-
**Gate → CP-BP-6**:
|
|
291
|
+
**Gate → CP-BP-6**: Local generated-plan review loaded `${SKILL_DIR}/references/generated-plan-review.md`, reviewed only newly added/changed bug entries, applied accepted fixes through draft/source data, regenerated, and revalidated.
|
|
292
292
|
|
|
293
|
-
##
|
|
293
|
+
## Local Generated-Plan Review Gate
|
|
294
294
|
|
|
295
|
-
User requirement preserved verbatim:
|
|
295
|
+
User requirement preserved verbatim: `there is a litter bug for prizm-code-review will to check git diff in working space and staged space , however the .prizmkit will be gitignored in most situation. so do you think the content should be change to inline a new reference file instead of use prizmkit-code-review`
|
|
296
296
|
|
|
297
|
-
Run this gate **after** `.prizmkit/plans/bug-fix-list.json` passes the validation/generate script and **before** any success output or next-step summary recommends `bugfix-pipeline-launcher`. This gate applies to Interactive Planning, From Log, From Tests, and
|
|
297
|
+
Run this gate **after** `.prizmkit/plans/bug-fix-list.json` passes the validation/generate script and **before** any success output or next-step summary recommends `bugfix-pipeline-launcher`. This gate applies to Interactive Planning, From Log, From Tests, and append-to-existing bug list flows when the current session generated, appended, or rewrote final bug planning content. For Validate, Summary, or draft-save flows with no new final planning content, report: `Local generated-plan review: not applicable — no new final planning content written.`
|
|
298
298
|
|
|
299
|
-
1. **
|
|
300
|
-
2. **
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
- preservation of user-provided wording in `description`, `acceptance_criteria`, and `user_context`
|
|
306
|
-
- task-scoped `user_context` isolation: no unrelated sibling bug descriptions, logs, stack traces, reproduction steps, or supplementary materials, and shared context appears on multiple items only when explicitly global
|
|
307
|
-
- severity/priority calibration: every reviewed bug has a short severity rationale and priority rationale, the preserved severity-to-priority mapping is followed, and high priority is not used without core outage, data loss/integrity, security/auth, timeout/crash, or no-workaround indicators
|
|
308
|
-
3. **Keep the review planning-only**: do NOT start `bugfix-pipeline-launcher`, do NOT run the bugfix pipeline, do NOT run tests/builds/installs, and do NOT implement source-code fixes.
|
|
309
|
-
4. **Apply accepted review fixes through the draft/source plan**: when a finding is accepted, update `.prizmkit/plans/bug-fix-list.draft.json` or the in-memory draft representation first, then regenerate the final file with:
|
|
299
|
+
1. **Load the local reference**: read `${SKILL_DIR}/references/generated-plan-review.md` and follow it as the source of truth for this planner-output review loop.
|
|
300
|
+
2. **Read actual planning artifacts directly**: inspect `.prizmkit/plans/bug-fix-list.json`, `.prizmkit/plans/bug-fix-list.draft.json` when present, and any pre-session or in-memory draft snapshot. Do not rely on `git status`, `git diff`, or `git diff --cached`, because `.prizmkit` planning artifacts are often gitignored or untracked.
|
|
301
|
+
3. **Identify review scope**: compare by stable bug IDs and item fields against the pre-session list when one existed. Ignore root generator metadata such as `$schema`, `created_at`, and `created_by`. Review only newly added or changed bug entries; preserve unchanged historical entries except when needed to verify duplicate/root-cause overlap or dependency references.
|
|
302
|
+
4. **Run the local checklist** from the reference: schema compatibility, dependency/DAG consistency, duplicate handling, root-cause overlap, description completeness, expected vs actual behavior, reproduction path, code-location hints, acceptance criteria measurability, user-provided wording preservation, task-scoped `user_context` isolation, and severity/priority calibration.
|
|
303
|
+
5. **Keep the review planning-only**: do NOT start `bugfix-pipeline-launcher`, do NOT run the bugfix pipeline, do NOT run tests/builds/installs, and do NOT implement source-code fixes.
|
|
304
|
+
6. **Apply accepted review fixes through the draft/source plan**: when a finding is accepted, update `.prizmkit/plans/bug-fix-list.draft.json` or the in-memory draft representation first, then regenerate the final file with:
|
|
310
305
|
```bash
|
|
311
306
|
python3 ${SKILL_DIR}/scripts/validate-bug-list.py generate --input .prizmkit/plans/bug-fix-list.draft.json --output .prizmkit/plans/bug-fix-list.json
|
|
312
307
|
```
|
|
313
308
|
Do not hand-patch the final JSON as the source of truth; map final-output findings back to draft entries before regeneration.
|
|
314
|
-
|
|
315
|
-
|
|
309
|
+
7. **Revalidate after every accepted fix batch**: the generate script must pass again before the planner can proceed. If validation fails, fix the draft and rerun until pass.
|
|
310
|
+
8. **Report the gate outcome** in the final summary: include local generated-plan review verdict, reviewed bug IDs, accepted fixes (or "none"), and final validation result.
|
|
316
311
|
|
|
317
312
|
#### Success Output
|
|
318
313
|
|
|
319
314
|
```
|
|
320
315
|
.prizmkit/plans/bug-fix-list.json generated with 3 bugs (1 critical, 1 medium, 1 low)
|
|
321
|
-
|
|
316
|
+
Local generated-plan review: PASS, reviewed B-001..B-003, accepted fixes: none, final validation: PASS
|
|
322
317
|
|
|
323
318
|
Next steps:
|
|
324
319
|
- Review: cat .prizmkit/plans/bug-fix-list.json
|
|
@@ -336,7 +331,7 @@ Checkpoints catch cascading errors early — skipping one means the next phase b
|
|
|
336
331
|
| **CP-BP-3** | Priorities Set | Severity/priority assigned, duplicates resolved | 3 |
|
|
337
332
|
| **CP-BP-4** | Completeness Passed | All bugs pass headless execution readiness check | 4 |
|
|
338
333
|
| **CP-BP-5** | File Generated | `bug-fix-list.json` passes validation script | 5 |
|
|
339
|
-
| **CP-BP-6** | Plan Review Passed |
|
|
334
|
+
| **CP-BP-6** | Local Plan Review Passed | Local generated-plan review loaded `${SKILL_DIR}/references/generated-plan-review.md`, reviewed only newly added/changed bug entries, applied accepted fixes through draft/source data, regenerated, and revalidated | 5 |
|
|
340
335
|
|
|
341
336
|
**Resume Detection**: If existing `.prizmkit/plans/bug-fix-list.json` or draft found, read `${SKILL_DIR}/references/error-recovery.md` §Resume Support for checkpoint-based resumption.
|
|
342
337
|
|
|
@@ -363,7 +358,7 @@ Batch-parse error logs with minimal interaction: parse automatically, then requi
|
|
|
363
358
|
```bash
|
|
364
359
|
python3 ${SKILL_DIR}/scripts/validate-bug-list.py generate --input .prizmkit/plans/bug-fix-list.draft.json --output .prizmkit/plans/bug-fix-list.json
|
|
365
360
|
```
|
|
366
|
-
7. If validation passes, run the mandatory
|
|
361
|
+
7. If validation passes, run the mandatory Local Generated-Plan Review Gate before summarizing or recommending `bugfix-pipeline-launcher`.
|
|
367
362
|
|
|
368
363
|
## Operation: From Tests
|
|
369
364
|
|
|
@@ -381,7 +376,7 @@ Batch-parse failed test output:
|
|
|
381
376
|
```bash
|
|
382
377
|
python3 ${SKILL_DIR}/scripts/validate-bug-list.py generate --input .prizmkit/plans/bug-fix-list.draft.json --output .prizmkit/plans/bug-fix-list.json
|
|
383
378
|
```
|
|
384
|
-
7. If validation passes, run the mandatory
|
|
379
|
+
7. If validation passes, run the mandatory Local Generated-Plan Review Gate before summarizing or recommending `bugfix-pipeline-launcher`.
|
|
385
380
|
|
|
386
381
|
## Operation: Validate
|
|
387
382
|
|
|
@@ -419,14 +414,15 @@ Bug List (by priority):
|
|
|
419
414
|
|
|
420
415
|
---
|
|
421
416
|
|
|
422
|
-
##
|
|
417
|
+
## Verification Defaults
|
|
423
418
|
|
|
424
|
-
When configuring
|
|
419
|
+
When configuring bug verification, read `${SKILL_DIR}/references/verification.md` for verification type and browser verification guidance.
|
|
425
420
|
|
|
426
421
|
Key points:
|
|
427
|
-
-
|
|
428
|
-
-
|
|
422
|
+
- Critical/high severity bugs require clear automated, manual, or hybrid verification evidence.
|
|
423
|
+
- Medium/low severity bugs use the smallest verification that proves the fix and guards against regression.
|
|
429
424
|
- `browser_interaction` is supported for UI-reproducible bugs; `verification_type` still declares whether verification is automated, manual, or hybrid.
|
|
425
|
+
- Do not generate `critic` or `critic_count`; those fields are fully removed and validators reject them.
|
|
430
426
|
|
|
431
427
|
---
|
|
432
428
|
|
|
@@ -436,7 +432,7 @@ Recommend invoking `bugfix-pipeline-launcher` to configure and launch the pipeli
|
|
|
436
432
|
|
|
437
433
|
After `.prizmkit/plans/bug-fix-list.json` is generated, validated, and reviewed, present:
|
|
438
434
|
1. Summary of generated bugs (count, severity breakdown)
|
|
439
|
-
2.
|
|
435
|
+
2. Local generated-plan review result: verdict, reviewed bug IDs, accepted fixes (or "none"), and final validation result
|
|
440
436
|
3. Recommend: "Say 'start fixing' to launch the bugfix pipeline via `bugfix-pipeline-launcher`"
|
|
441
437
|
4. Alternative: fix a single bug interactively via `bug-fix-workflow`
|
|
442
438
|
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
# Generated Plan Review — Bug Planner
|
|
2
|
+
|
|
3
|
+
Use this local review loop after `.prizmkit/plans/bug-fix-list.json` has been generated and validated. This is a planner-output review, not an implementation/code-diff review.
|
|
4
|
+
|
|
5
|
+
## Trigger
|
|
6
|
+
|
|
7
|
+
Run only when the current `bug-planner` session generated, appended, or rewrote final bug planning content. For validate-only, summary-only, or draft-save flows with no new final planning content, report: `Local generated-plan review: not applicable — no new final planning content written.`
|
|
8
|
+
|
|
9
|
+
## Direct Artifact Reads
|
|
10
|
+
|
|
11
|
+
Planning artifacts may be gitignored, untracked, or absent from staged and unstaged diffs. Read the actual files directly:
|
|
12
|
+
|
|
13
|
+
- Final list: `.prizmkit/plans/bug-fix-list.json`
|
|
14
|
+
- Draft/source list when present: `.prizmkit/plans/bug-fix-list.draft.json`
|
|
15
|
+
- Pre-session final list snapshot if captured in memory before edits
|
|
16
|
+
- In-memory draft object if the session has not written a draft file yet
|
|
17
|
+
|
|
18
|
+
Do not rely on `git status`, `git diff`, or `git diff --cached` to decide whether planner output exists or changed. Do not invoke `/prizmkit-code-review` for this planner-output gate; `/prizmkit-code-review` remains the implementation/code-diff review gate after `/prizmkit-implement`.
|
|
19
|
+
|
|
20
|
+
## Review Scope
|
|
21
|
+
|
|
22
|
+
1. If a pre-session final list exists, compare by stable bug IDs (`B-*`).
|
|
23
|
+
2. Treat bugs as changed only when item fields changed. Ignore root generator metadata and formatting-only differences such as `$schema`, `created_at`, and `created_by`.
|
|
24
|
+
3. Review newly added bug IDs and changed bug IDs.
|
|
25
|
+
4. Preserve unchanged historical bugs. Read unchanged entries only when needed to verify dependency references, duplicate handling, or root-cause overlap with reviewed bugs.
|
|
26
|
+
5. If no snapshot exists, review all bug entries produced by the current generation flow.
|
|
27
|
+
|
|
28
|
+
## Review Checklist
|
|
29
|
+
|
|
30
|
+
For every reviewed bug entry, check:
|
|
31
|
+
|
|
32
|
+
- Schema compatibility with `dev-pipeline-bug-fix-list-v1` and `.prizmkit/dev-pipeline/templates/bug-fix-list-schema.json`
|
|
33
|
+
- Dependency/DAG consistency, duplicate handling, and root-cause overlap
|
|
34
|
+
- Description completeness: expected vs actual behavior, reproduction path, code-location hints, affected environment, and headless execution readiness
|
|
35
|
+
- Acceptance criteria specificity and measurable verification method
|
|
36
|
+
- User-provided wording preservation in `description`, `acceptance_criteria`, and `user_context`
|
|
37
|
+
- Task-scoped `user_context` isolation: no unrelated sibling bug descriptions, logs, stack traces, reproduction steps, expected/actual behavior notes, or supplementary materials; shared context appears on multiple bugs only when explicitly global
|
|
38
|
+
- Severity/priority calibration: every reviewed bug has a short severity rationale and priority rationale, the preserved severity-to-priority mapping is followed, and high priority is not used without core outage, data loss/integrity, security/auth, timeout/crash, or no-workaround indicators
|
|
39
|
+
- Browser interaction and verification fields for UI-reproducible bugs when applicable
|
|
40
|
+
|
|
41
|
+
## Fix Loop
|
|
42
|
+
|
|
43
|
+
1. Present findings with IDs, severity, evidence, and suggested draft/source changes.
|
|
44
|
+
2. Accept only findings that improve planner correctness, completeness, or downstream bug-fix execution readiness.
|
|
45
|
+
3. Apply accepted fixes to `.prizmkit/plans/bug-fix-list.draft.json` or the in-memory draft object first.
|
|
46
|
+
4. Regenerate the final list through the existing generator:
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
python3 ${SKILL_DIR}/scripts/validate-bug-list.py generate --input .prizmkit/plans/bug-fix-list.draft.json --output .prizmkit/plans/bug-fix-list.json
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
5. Re-run validation/generation until valid. Do not hand-patch `.prizmkit/plans/bug-fix-list.json` as the source of truth.
|
|
53
|
+
6. Repeat the local review only for entries changed by accepted fixes.
|
|
54
|
+
|
|
55
|
+
## Report Format
|
|
56
|
+
|
|
57
|
+
Report in the final handoff summary:
|
|
58
|
+
|
|
59
|
+
- `Local generated-plan review: PASS` or `NEEDS_FIXES`
|
|
60
|
+
- Reviewed bug IDs
|
|
61
|
+
- Accepted fixes, or `none`
|
|
62
|
+
- Final validation result
|
|
63
|
+
- Note when review was not applicable because no new final planning content was written
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# Bug Verification Guidance
|
|
2
|
+
|
|
3
|
+
## Verification Defaults
|
|
4
|
+
|
|
5
|
+
All bug fixes need verification that matches severity, reproduction clarity, and risk.
|
|
6
|
+
|
|
7
|
+
| Severity | Default verification expectation | Rationale |
|
|
8
|
+
|---|---|---|
|
|
9
|
+
| critical | Automated or hybrid verification with explicit regression coverage | Crash/data-loss/security bugs need durable proof. |
|
|
10
|
+
| high | Automated or hybrid verification for the broken core path | Core-feature failures need regression protection. |
|
|
11
|
+
| medium | Focused automated or manual verification | Workaround cases need proof without over-scoping. |
|
|
12
|
+
| low | Smallest meaningful check | Cosmetic or minor edge cases should stay lightweight. |
|
|
13
|
+
|
|
14
|
+
## Verification Type
|
|
15
|
+
|
|
16
|
+
- `automated`: use when a unit, integration, or E2E test can reliably reproduce the bug and prove the fix.
|
|
17
|
+
- `manual`: use when reproduction needs external state or human judgment and no stable automated check is practical.
|
|
18
|
+
- `hybrid`: use when automated regression coverage is possible but final confidence needs manual/browser confirmation.
|
|
19
|
+
|
|
20
|
+
## Browser Verification
|
|
21
|
+
|
|
22
|
+
Use `browser_interaction` for UI-reproducible bugs.
|
|
23
|
+
|
|
24
|
+
- `tool: auto` lets the runtime choose the best browser tool.
|
|
25
|
+
- `tool: playwright-cli` is best for local dev-server verification in an isolated browser.
|
|
26
|
+
- `tool: opencli` is best when an existing Chrome login/session or third-party integration cookies are needed.
|
|
27
|
+
- `verify_steps` should describe what to prove, not low-level click scripts.
|
|
28
|
+
|
|
29
|
+
Do not emit `critic` or `critic_count`; those fields are retired and validators reject them.
|
|
@@ -139,6 +139,14 @@ def validate(data, feature_ids=None):
|
|
|
139
139
|
for i, bug in enumerate(bugs):
|
|
140
140
|
prefix = "bugs[{}]".format(i)
|
|
141
141
|
|
|
142
|
+
for retired_field in ("critic", "critic_count"):
|
|
143
|
+
if retired_field in bug:
|
|
144
|
+
errors.append(
|
|
145
|
+
"{}: '{}' field is retired; remove it from bug-fix-list data".format(
|
|
146
|
+
prefix, retired_field
|
|
147
|
+
)
|
|
148
|
+
)
|
|
149
|
+
|
|
142
150
|
# Required fields
|
|
143
151
|
bug_id = bug.get("id", "")
|
|
144
152
|
if not bug_id:
|
|
@@ -123,7 +123,7 @@ Detect user intent from their message, then follow the corresponding workflow:
|
|
|
123
123
|
```
|
|
124
124
|
Selected-options example:
|
|
125
125
|
```bash
|
|
126
|
-
VERBOSE=1
|
|
126
|
+
VERBOSE=1 MAX_RETRIES=5 STOP_ON_FAILURE=1 ENABLE_DEPLOY=1 PRIZMKIT_EFFORT=high \
|
|
127
127
|
python3 ./.prizmkit/dev-pipeline/cli.py bugfix run .prizmkit/plans/bug-fix-list.json
|
|
128
128
|
```
|
|
129
129
|
|
|
@@ -134,7 +134,7 @@ Detect user intent from their message, then follow the corresponding workflow:
|
|
|
134
134
|
Selected-options example:
|
|
135
135
|
```bash
|
|
136
136
|
python3 ./.prizmkit/dev-pipeline/cli.py daemon bugfix start .prizmkit/plans/bug-fix-list.json \
|
|
137
|
-
--env "VERBOSE=1
|
|
137
|
+
--env "VERBOSE=1 MAX_RETRIES=5 STOP_ON_FAILURE=1 ENABLE_DEPLOY=1 PRIZMKIT_EFFORT=high"
|
|
138
138
|
```
|
|
139
139
|
|
|
140
140
|
**Manual mode**: Print the assembled command(s) and **stop here**. Do not execute anything. Do not proceed to step 7.
|
|
@@ -11,7 +11,6 @@ Translating user responses to env vars:
|
|
|
11
11
|
| Verbose: Off | `VERBOSE=0` |
|
|
12
12
|
| Verbose: On | `VERBOSE=1` |
|
|
13
13
|
| Max retries: N | `MAX_RETRIES=N` |
|
|
14
|
-
| Critic: On | `ENABLE_CRITIC=1` |
|
|
15
14
|
| Stop on failure: On | `STOP_ON_FAILURE=1` |
|
|
16
15
|
| Deploy: Yes | `ENABLE_DEPLOY=1` |
|
|
17
16
|
| Effort: value | `PRIZMKIT_EFFORT=<value>` |
|
|
@@ -43,15 +42,11 @@ Present these via `AskUserQuestion` in step 5. Round 1 is one `AskUserQuestion`
|
|
|
43
42
|
- 1
|
|
44
43
|
- 5
|
|
45
44
|
|
|
46
|
-
**Question 3 — Critic review** (multiSelect: false):
|
|
47
|
-
- Off (default) — Skip adversarial review (`ENABLE_CRITIC=0`)
|
|
48
|
-
- On — Enable adversarial critic review (`ENABLE_CRITIC=1`): an independent AI agent reviews the diagnosis/plan for completeness and the fix for defects, edge cases, and regression risks. Adds ~5-10 min per bug.
|
|
49
|
-
|
|
50
45
|
**Question 4 — Advanced config?** (multiSelect: false):
|
|
51
46
|
- No (default) — Use defaults for failure behavior
|
|
52
47
|
- Yes — Configure stop-on-failure, deploy, and reasoning effort options
|
|
53
48
|
|
|
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.
|
|
49
|
+
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. If the user selects "Other" on any option, handle their custom input.
|
|
55
50
|
|
|
56
51
|
### Round 2 (only if Advanced config = Yes)
|
|
57
52
|
|
|
@@ -133,27 +133,21 @@ Detect user intent from their message, then follow the corresponding workflow:
|
|
|
133
133
|
|
|
134
134
|
6. **Ask configuration options** — MANDATORY INTERACTIVE STEP, applies to ALL execution modes (Foreground, Background, AND Manual). This is a SEPARATE `AskUserQuestion` call from step 5 (see the RULE above). You MUST call `AskUserQuestion` with the 4 questions below and WAIT for the user's response before proceeding to step 7. Do NOT assume defaults, do NOT show the command as text and ask "ready?", and do NOT merge step 6 and step 7. If you find yourself writing the final command before the user has answered these 4 questions, STOP — you are violating this rule.
|
|
135
135
|
|
|
136
|
-
Use `AskUserQuestion` to present ALL
|
|
136
|
+
Use `AskUserQuestion` to present ALL 3 configuration choices:
|
|
137
137
|
|
|
138
|
-
**Question 1 —
|
|
139
|
-
- Off (default) — Skip adversarial review
|
|
140
|
-
- On — Enable adversarial critic review: an independent AI agent reviews the spec/plan for completeness and the implementation for defects, edge cases, and missed requirements. Adds ~5-10 min per feature.
|
|
141
|
-
|
|
142
|
-
**Question 2 — Verbose logging** (multiSelect: false):
|
|
138
|
+
**Question 1 — Verbose logging** (multiSelect: false):
|
|
143
139
|
- On (default) — Detailed AI session logs including tool calls and subagent activity
|
|
144
140
|
- Off — Minimal logging
|
|
145
141
|
|
|
146
|
-
**Question
|
|
142
|
+
**Question 2 — Max retries** (multiSelect: false):
|
|
147
143
|
- 3 (default)
|
|
148
144
|
- 1
|
|
149
145
|
- 5
|
|
150
146
|
|
|
151
|
-
**Question
|
|
147
|
+
**Question 3 — Advanced config?** (multiSelect: false):
|
|
152
148
|
- No (default) — Use defaults for failure behavior
|
|
153
149
|
- Yes — Configure stop-on-failure, deploy-after-completion, and reasoning effort options
|
|
154
150
|
|
|
155
|
-
Default Critic to Off unless features have `estimated_complexity: "high"` or above (in which case default to On).
|
|
156
|
-
|
|
157
151
|
**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`.
|
|
158
152
|
|
|
159
153
|
Read `${SKILL_DIR}/references/configuration.md` for the current environment-variable mapping and advanced environment-variable tables.
|
|
@@ -167,7 +161,7 @@ Detect user intent from their message, then follow the corresponding workflow:
|
|
|
167
161
|
```
|
|
168
162
|
Selected-options example:
|
|
169
163
|
```bash
|
|
170
|
-
VERBOSE=1
|
|
164
|
+
VERBOSE=1 MAX_RETRIES=5 STOP_ON_FAILURE=1 ENABLE_DEPLOY=1 PRIZMKIT_EFFORT=high \
|
|
171
165
|
python3 ./.prizmkit/dev-pipeline/cli.py feature run .prizmkit/plans/feature-list.json --features F-001:F-005
|
|
172
166
|
```
|
|
173
167
|
|
|
@@ -178,7 +172,7 @@ Detect user intent from their message, then follow the corresponding workflow:
|
|
|
178
172
|
Selected-options example:
|
|
179
173
|
```bash
|
|
180
174
|
python3 ./.prizmkit/dev-pipeline/cli.py daemon feature start .prizmkit/plans/feature-list.json --features F-001:F-005 \
|
|
181
|
-
--env "VERBOSE=1
|
|
175
|
+
--env "VERBOSE=1 MAX_RETRIES=5 STOP_ON_FAILURE=1 ENABLE_DEPLOY=1 PRIZMKIT_EFFORT=high"
|
|
182
176
|
```
|
|
183
177
|
|
|
184
178
|
**Manual mode**: Print the assembled command(s) and **stop here**. Do not execute anything. Do not proceed to step 8.
|
|
@@ -28,7 +28,6 @@ Translating user responses to env vars:
|
|
|
28
28
|
|
|
29
29
|
| Config choice | Environment variable |
|
|
30
30
|
|-----------|---------------------|
|
|
31
|
-
| Critic: On | `ENABLE_CRITIC=true` |
|
|
32
31
|
| Verbose: Off | `VERBOSE=0` |
|
|
33
32
|
| Verbose: On | `VERBOSE=1` |
|
|
34
33
|
| Max retries: N | `MAX_RETRIES=N` |
|