prizmkit 1.1.42 → 1.1.47
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundled/VERSION.json +3 -3
- package/bundled/adapters/claude/settings-adapter.js +4 -4
- package/bundled/adapters/codebuddy/settings-adapter.js +1 -1
- package/bundled/agents/prizm-dev-team-critic.md +9 -9
- package/bundled/agents/prizm-dev-team-dev.md +13 -13
- package/bundled/agents/prizm-dev-team-reviewer.md +2 -2
- package/bundled/dev-pipeline/.env.example +6 -6
- package/bundled/dev-pipeline/README.md +32 -32
- package/bundled/dev-pipeline/assets/prizm-dev-team-integration.md +1 -1
- package/bundled/dev-pipeline/launch-bugfix-daemon.sh +6 -3
- package/bundled/dev-pipeline/launch-feature-daemon.sh +6 -3
- package/bundled/dev-pipeline/launch-refactor-daemon.sh +6 -3
- package/bundled/dev-pipeline/lib/common.sh +36 -7
- package/bundled/dev-pipeline/reset-bug.sh +9 -7
- package/bundled/dev-pipeline/reset-feature.sh +9 -7
- package/bundled/dev-pipeline/reset-refactor.sh +9 -7
- package/bundled/dev-pipeline/run-bugfix.sh +25 -24
- package/bundled/dev-pipeline/run-feature.sh +29 -32
- package/bundled/dev-pipeline/run-recovery.sh +22 -4
- package/bundled/dev-pipeline/run-refactor.sh +27 -28
- package/bundled/dev-pipeline/scripts/generate-bootstrap-prompt.py +14 -14
- package/bundled/dev-pipeline/scripts/generate-bugfix-prompt.py +9 -4
- package/bundled/dev-pipeline/scripts/generate-recovery-prompt.py +18 -12
- package/bundled/dev-pipeline/scripts/generate-refactor-prompt.py +9 -4
- package/bundled/dev-pipeline/scripts/parse-stream-progress.py +1 -1
- package/bundled/dev-pipeline/scripts/update-bug-status.py +9 -1
- package/bundled/dev-pipeline/scripts/update-feature-status.py +13 -1
- package/bundled/dev-pipeline/scripts/update-refactor-status.py +9 -1
- package/bundled/dev-pipeline/templates/agent-prompts/critic-plan-challenge.md +1 -1
- package/bundled/dev-pipeline/templates/bootstrap-prompt.md +2 -2
- package/bundled/dev-pipeline/templates/bootstrap-tier1.md +8 -8
- package/bundled/dev-pipeline/templates/bootstrap-tier2.md +11 -11
- package/bundled/dev-pipeline/templates/bootstrap-tier3.md +9 -9
- package/bundled/dev-pipeline/templates/bugfix-bootstrap-prompt.md +6 -6
- package/bundled/dev-pipeline/templates/refactor-bootstrap-prompt.md +3 -3
- package/bundled/dev-pipeline/templates/sections/phase-commit-full.md +5 -5
- package/bundled/dev-pipeline/templates/sections/phase-commit.md +6 -6
- package/bundled/dev-pipeline/templates/sections/phase-context-snapshot-agent-suffix.md +1 -1
- package/bundled/dev-pipeline/templates/sections/phase-context-snapshot-base.md +1 -1
- package/bundled/dev-pipeline/templates/sections/phase-specify-plan-full.md +2 -2
- package/bundled/dev-pipeline/templates/sections/phase0-init.md +1 -1
- package/bundled/dev-pipeline/tests/test-path-resolution.sh +100 -0
- package/bundled/rules/USAGE.md +2 -2
- package/bundled/rules/_rules-metadata.json +1 -1
- package/bundled/rules/prizm/prizm-commit-workflow.md +1 -1
- package/bundled/rules/prizm/prizm-documentation.md +4 -4
- package/bundled/rules/prizm/prizm-progressive-loading.md +3 -3
- package/bundled/skills/_metadata.json +4 -4
- package/bundled/skills/app-planner/SKILL.md +35 -7
- package/bundled/skills/bug-fix-workflow/SKILL.md +6 -6
- package/bundled/skills/bug-planner/SKILL.md +5 -5
- package/bundled/skills/bugfix-pipeline-launcher/SKILL.md +21 -21
- package/bundled/skills/feature-pipeline-launcher/SKILL.md +21 -21
- package/bundled/skills/feature-planner/SKILL.md +5 -5
- package/bundled/skills/feature-workflow/SKILL.md +8 -8
- package/bundled/skills/prizm-kit/SKILL.md +10 -10
- package/bundled/skills/prizmkit-committer/SKILL.md +2 -2
- package/bundled/skills/prizmkit-implement/SKILL.md +2 -2
- package/bundled/skills/prizmkit-init/SKILL.md +17 -18
- package/bundled/skills/prizmkit-plan/SKILL.md +3 -3
- package/bundled/skills/prizmkit-plan/references/verification-checklist.md +2 -2
- package/bundled/skills/prizmkit-prizm-docs/SKILL.md +17 -17
- package/bundled/skills/prizmkit-prizm-docs/assets/prizm-docs-format.md +45 -45
- package/bundled/skills/prizmkit-prizm-docs/references/op-init.md +9 -9
- package/bundled/skills/prizmkit-prizm-docs/references/op-rebuild.md +1 -1
- package/bundled/skills/prizmkit-prizm-docs/references/op-status.md +2 -2
- package/bundled/skills/prizmkit-prizm-docs/references/op-update.md +3 -3
- package/bundled/skills/prizmkit-prizm-docs/references/op-validate.md +1 -1
- package/bundled/skills/prizmkit-retrospective/SKILL.md +10 -10
- package/bundled/skills/prizmkit-retrospective/references/knowledge-injection-steps.md +3 -3
- package/bundled/skills/prizmkit-retrospective/references/structural-sync-steps.md +1 -1
- package/bundled/skills/recovery-workflow/SKILL.md +15 -15
- package/bundled/skills/recovery-workflow/scripts/detect-recovery-state.py +0 -1
- package/bundled/skills/refactor-pipeline-launcher/SKILL.md +21 -21
- package/bundled/skills/refactor-planner/SKILL.md +6 -6
- package/bundled/skills/refactor-workflow/SKILL.md +9 -9
- package/bundled/team/prizm-dev-team.json +1 -1
- package/bundled/templates/hooks/commit-intent.json +2 -2
- package/bundled/templates/hooks/diff-prizm-docs.sh +8 -8
- package/bundled/templates/hooks/prizm-pre-commit.sh +4 -4
- package/bundled/templates/hooks/validate-prizm-docs.sh +4 -4
- package/bundled/templates/project-memory-template.md +4 -4
- package/package.json +1 -1
- package/src/clean.js +1 -3
- package/src/config.js +1 -1
- package/src/gitignore-template.js +4 -59
- package/src/scaffold.js +12 -11
- package/src/upgrade.js +3 -3
|
@@ -33,8 +33,12 @@ set -euo pipefail
|
|
|
33
33
|
# ============================================================
|
|
34
34
|
|
|
35
35
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
36
|
-
|
|
37
|
-
|
|
36
|
+
|
|
37
|
+
# Source shared common helpers (exports PIPELINE_DIR/PRIZMKIT_DIR/PROJECT_ROOT,
|
|
38
|
+
# CLI/platform detection, logs, deps)
|
|
39
|
+
source "$SCRIPT_DIR/lib/common.sh"
|
|
40
|
+
|
|
41
|
+
STATE_DIR="${PRIZMKIT_DIR}/state/refactor"
|
|
38
42
|
SCRIPTS_DIR="$SCRIPT_DIR/scripts"
|
|
39
43
|
|
|
40
44
|
# Configuration
|
|
@@ -55,7 +59,6 @@ STRICT_BEHAVIOR_CHECK=${STRICT_BEHAVIOR_CHECK:-1}
|
|
|
55
59
|
ENABLE_DEPLOY=${ENABLE_DEPLOY:-0}
|
|
56
60
|
|
|
57
61
|
# Source shared common helpers (CLI/platform detection + logs + deps)
|
|
58
|
-
source "$SCRIPT_DIR/lib/common.sh"
|
|
59
62
|
prizm_detect_cli_and_platform
|
|
60
63
|
|
|
61
64
|
# Source shared heartbeat library
|
|
@@ -192,7 +195,7 @@ spawn_and_wait_session() {
|
|
|
192
195
|
# ── Determine session outcome from observable signals ──────────────
|
|
193
196
|
local session_status
|
|
194
197
|
local project_root
|
|
195
|
-
project_root="$
|
|
198
|
+
project_root="$PROJECT_ROOT"
|
|
196
199
|
local default_branch="$base_branch"
|
|
197
200
|
|
|
198
201
|
if [[ $exit_code -eq 124 ]]; then
|
|
@@ -276,15 +279,13 @@ spawn_and_wait_session() {
|
|
|
276
279
|
|
|
277
280
|
# Validate key artifacts exist after successful session
|
|
278
281
|
if [[ "$session_status" == "success" ]]; then
|
|
279
|
-
local
|
|
280
|
-
_artifact_root="$(cd "$SCRIPT_DIR/.." && pwd)"
|
|
281
|
-
local plan_file="$_artifact_root/.prizmkit/refactor/$refactor_id/plan.md"
|
|
282
|
+
local plan_file="$PRIZMKIT_DIR/refactor/$refactor_id/plan.md"
|
|
282
283
|
if [[ ! -f "$plan_file" ]]; then
|
|
283
284
|
log_warn "ARTIFACT_MISSING: plan.md not found at $plan_file"
|
|
284
285
|
fi
|
|
285
286
|
|
|
286
287
|
# Validate checkpoint completeness
|
|
287
|
-
local checkpoint_file="$
|
|
288
|
+
local checkpoint_file="$PRIZMKIT_DIR/refactor/$refactor_id/workflow-checkpoint.json"
|
|
288
289
|
if [[ -f "$checkpoint_file" ]]; then
|
|
289
290
|
local checkpoint_result
|
|
290
291
|
checkpoint_result=$(python3 -c "
|
|
@@ -329,7 +330,7 @@ sys.exit(0)
|
|
|
329
330
|
|
|
330
331
|
# Propagate completion notes for dependency context (only on success)
|
|
331
332
|
if [[ "$session_status" == "success" ]]; then
|
|
332
|
-
local summary_path="$
|
|
333
|
+
local summary_path="$PRIZMKIT_DIR/refactor/$refactor_id/completion-summary.json"
|
|
333
334
|
if [[ -f "$summary_path" ]]; then
|
|
334
335
|
python3 "$SCRIPTS_DIR/patch-completion-notes.py" \
|
|
335
336
|
--refactor-list "$refactor_list" \
|
|
@@ -406,7 +407,7 @@ for item in data.get('refactors', []):
|
|
|
406
407
|
fi
|
|
407
408
|
|
|
408
409
|
# GUARANTEED: always return to original branch (save WIP on dev branch first)
|
|
409
|
-
branch_ensure_return "$
|
|
410
|
+
branch_ensure_return "$PROJECT_ROOT" "$_ORIGINAL_BRANCH" "$_DEV_BRANCH_NAME"
|
|
410
411
|
|
|
411
412
|
log_info "Refactor pipeline paused. Run './run-refactor.sh run' to resume."
|
|
412
413
|
exit 130
|
|
@@ -420,7 +421,7 @@ trap cleanup SIGINT SIGTERM
|
|
|
420
421
|
check_dependencies() {
|
|
421
422
|
prizm_check_common_dependencies "$CLI_CMD"
|
|
422
423
|
local _project_root
|
|
423
|
-
_project_root="$
|
|
424
|
+
_project_root="$PROJECT_ROOT"
|
|
424
425
|
prizm_ensure_git_repo "$_project_root"
|
|
425
426
|
}
|
|
426
427
|
|
|
@@ -493,7 +494,7 @@ run_one() {
|
|
|
493
494
|
fi
|
|
494
495
|
|
|
495
496
|
if [[ -z "$refactor_list" ]]; then
|
|
496
|
-
refactor_list="
|
|
497
|
+
refactor_list="$PRIZMKIT_DIR/plans/refactor-list.json"
|
|
497
498
|
fi
|
|
498
499
|
if [[ ! "$refactor_list" = /* ]]; then
|
|
499
500
|
refactor_list="$(pwd)/$refactor_list"
|
|
@@ -546,9 +547,9 @@ run_one() {
|
|
|
546
547
|
|
|
547
548
|
# Ensure state directory is gitignored
|
|
548
549
|
local _gitignore_path
|
|
549
|
-
_gitignore_path="$
|
|
550
|
+
_gitignore_path="$PROJECT_ROOT/.gitignore"
|
|
550
551
|
local _state_rel
|
|
551
|
-
_state_rel=$(python3 -c "import os; print(os.path.relpath('$STATE_DIR', '$
|
|
552
|
+
_state_rel=$(python3 -c "import os; print(os.path.relpath('$STATE_DIR', '$PROJECT_ROOT'))" 2>/dev/null || echo ".prizmkit/state/refactor")
|
|
552
553
|
if [[ -f "$_gitignore_path" ]]; then
|
|
553
554
|
if ! grep -qF "$_state_rel" "$_gitignore_path" 2>/dev/null; then
|
|
554
555
|
printf '\n# Pipeline runtime state (auto-added by dev-pipeline)\n%s/\n' "$_state_rel" >> "$_gitignore_path"
|
|
@@ -594,9 +595,9 @@ sys.exit(1)
|
|
|
594
595
|
log_info "Cleaning artifacts for $refactor_id..."
|
|
595
596
|
|
|
596
597
|
local project_root
|
|
597
|
-
project_root="$
|
|
598
|
+
project_root="$PROJECT_ROOT"
|
|
598
599
|
|
|
599
|
-
local refactor_dir="$
|
|
600
|
+
local refactor_dir="$PRIZMKIT_DIR/refactor/$refactor_id"
|
|
600
601
|
if [[ -d "$refactor_dir" ]]; then
|
|
601
602
|
rm -rf "$refactor_dir"
|
|
602
603
|
log_info "Removed $refactor_dir"
|
|
@@ -776,7 +777,7 @@ else:
|
|
|
776
777
|
fi
|
|
777
778
|
|
|
778
779
|
# GUARANTEED: always return to original branch (save WIP on dev branch first)
|
|
779
|
-
branch_ensure_return "$
|
|
780
|
+
branch_ensure_return "$PROJECT_ROOT" "$_ORIGINAL_BRANCH" "$_DEV_BRANCH_NAME"
|
|
780
781
|
exit 130
|
|
781
782
|
}
|
|
782
783
|
trap cleanup_single_refactor SIGINT SIGTERM
|
|
@@ -785,7 +786,7 @@ else:
|
|
|
785
786
|
|
|
786
787
|
# Branch lifecycle: create and checkout refactor branch
|
|
787
788
|
local _proj_root
|
|
788
|
-
_proj_root="$
|
|
789
|
+
_proj_root="$PROJECT_ROOT"
|
|
789
790
|
local _source_branch
|
|
790
791
|
_source_branch=$(git -C "$_proj_root" rev-parse --abbrev-ref HEAD 2>/dev/null || echo "main")
|
|
791
792
|
_ORIGINAL_BRANCH="$_source_branch"
|
|
@@ -853,7 +854,7 @@ else:
|
|
|
853
854
|
# ============================================================
|
|
854
855
|
|
|
855
856
|
main() {
|
|
856
|
-
local refactor_list="${1
|
|
857
|
+
local refactor_list="${1:-$PRIZMKIT_DIR/plans/refactor-list.json}"
|
|
857
858
|
|
|
858
859
|
if [[ ! "$refactor_list" = /* ]]; then
|
|
859
860
|
refactor_list="$(pwd)/$refactor_list"
|
|
@@ -908,9 +909,9 @@ main() {
|
|
|
908
909
|
|
|
909
910
|
# Ensure state directory is gitignored
|
|
910
911
|
local _gitignore_path
|
|
911
|
-
_gitignore_path="$
|
|
912
|
+
_gitignore_path="$PROJECT_ROOT/.gitignore"
|
|
912
913
|
local _state_rel
|
|
913
|
-
_state_rel=$(python3 -c "import os; print(os.path.relpath('$STATE_DIR', '$
|
|
914
|
+
_state_rel=$(python3 -c "import os; print(os.path.relpath('$STATE_DIR', '$PROJECT_ROOT'))" 2>/dev/null || echo ".prizmkit/state/refactor")
|
|
914
915
|
if [[ -f "$_gitignore_path" ]]; then
|
|
915
916
|
if ! grep -qF "$_state_rel" "$_gitignore_path" 2>/dev/null; then
|
|
916
917
|
printf '\n# Pipeline runtime state (auto-added by dev-pipeline)\n%s/\n' "$_state_rel" >> "$_gitignore_path"
|
|
@@ -951,7 +952,7 @@ main() {
|
|
|
951
952
|
|
|
952
953
|
# Branch lifecycle: per-refactor branches (like feature pipeline)
|
|
953
954
|
local _proj_root
|
|
954
|
-
_proj_root="$
|
|
955
|
+
_proj_root="$PROJECT_ROOT"
|
|
955
956
|
local _source_branch
|
|
956
957
|
_source_branch=$(git -C "$_proj_root" rev-parse --abbrev-ref HEAD 2>/dev/null || echo "main")
|
|
957
958
|
_ORIGINAL_BRANCH="$_source_branch"
|
|
@@ -1194,9 +1195,7 @@ DEPLOY_PROMPT_EOF
|
|
|
1194
1195
|
|
|
1195
1196
|
# Validate key artifacts after successful session
|
|
1196
1197
|
if [[ "$_SPAWN_RESULT" == "success" ]]; then
|
|
1197
|
-
local
|
|
1198
|
-
_artifact_root="$(cd "$SCRIPT_DIR/.." && pwd)"
|
|
1199
|
-
local plan_file="$_artifact_root/.prizmkit/refactor/$refactor_id/plan.md"
|
|
1198
|
+
local plan_file="$PRIZMKIT_DIR/refactor/$refactor_id/plan.md"
|
|
1200
1199
|
if [[ ! -f "$plan_file" ]]; then
|
|
1201
1200
|
log_warn "ARTIFACT_MISSING: plan.md not found at $plan_file"
|
|
1202
1201
|
else
|
|
@@ -1314,7 +1313,7 @@ case "${1:-run}" in
|
|
|
1314
1313
|
if [[ "${1:-}" =~ ^[Rr]-[0-9]+ ]]; then
|
|
1315
1314
|
run_one "$@"
|
|
1316
1315
|
else
|
|
1317
|
-
main "${1
|
|
1316
|
+
main "${1:-$PRIZMKIT_DIR/plans/refactor-list.json}"
|
|
1318
1317
|
fi
|
|
1319
1318
|
;;
|
|
1320
1319
|
status)
|
|
@@ -1324,7 +1323,7 @@ case "${1:-run}" in
|
|
|
1324
1323
|
exit 1
|
|
1325
1324
|
fi
|
|
1326
1325
|
python3 "$SCRIPTS_DIR/update-refactor-status.py" \
|
|
1327
|
-
--refactor-list "${2
|
|
1326
|
+
--refactor-list "${2:-$PRIZMKIT_DIR/plans/refactor-list.json}" \
|
|
1328
1327
|
--state-dir "$STATE_DIR" \
|
|
1329
1328
|
--action status
|
|
1330
1329
|
;;
|
|
@@ -1339,7 +1338,7 @@ case "${1:-run}" in
|
|
|
1339
1338
|
log_error "No refactor pipeline state found. Run './run-refactor.sh run' first."
|
|
1340
1339
|
exit 1
|
|
1341
1340
|
fi
|
|
1342
|
-
_unskip_refactor_list="
|
|
1341
|
+
_unskip_refactor_list="$PRIZMKIT_DIR/plans/refactor-list.json"
|
|
1343
1342
|
_unskip_refactor_id=""
|
|
1344
1343
|
shift || true
|
|
1345
1344
|
# Parse arguments: optional refactor-id and refactor-list path
|
|
@@ -416,17 +416,17 @@ def _read_project_brief(project_root):
|
|
|
416
416
|
|
|
417
417
|
|
|
418
418
|
def resolve_project_root(script_dir):
|
|
419
|
-
"""Resolve project root
|
|
419
|
+
"""Resolve project root from script_dir of the prompt-generator script.
|
|
420
420
|
|
|
421
|
-
|
|
422
|
-
|
|
421
|
+
Layout-aware:
|
|
422
|
+
<project>/.prizmkit/dev-pipeline/scripts/ → project root = <project>
|
|
423
|
+
<repo>/dev-pipeline/scripts/ → project root = <repo>
|
|
423
424
|
"""
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
return os.path.abspath(project_root)
|
|
425
|
+
pipeline_dir = os.path.dirname(script_dir)
|
|
426
|
+
pipeline_parent = os.path.dirname(pipeline_dir)
|
|
427
|
+
if os.path.basename(pipeline_parent) == ".prizmkit":
|
|
428
|
+
return os.path.abspath(os.path.dirname(pipeline_parent))
|
|
429
|
+
return os.path.abspath(pipeline_parent)
|
|
430
430
|
|
|
431
431
|
|
|
432
432
|
def process_conditional_blocks(content, resume_phase):
|
|
@@ -557,7 +557,7 @@ def process_mode_blocks(content, pipeline_mode, init_done, critic_enabled=False,
|
|
|
557
557
|
|
|
558
558
|
def detect_init_status(project_root):
|
|
559
559
|
"""Check if PrizmKit init has already been done."""
|
|
560
|
-
prizm_docs = os.path.join(project_root, ".prizm-docs", "root.prizm")
|
|
560
|
+
prizm_docs = os.path.join(project_root, ".prizmkit/prizm-docs", "root.prizm")
|
|
561
561
|
prizmkit_config = os.path.join(project_root, ".prizmkit", "config.json")
|
|
562
562
|
return os.path.isfile(prizm_docs) and os.path.isfile(prizmkit_config)
|
|
563
563
|
|
|
@@ -587,7 +587,7 @@ def determine_pipeline_mode(complexity):
|
|
|
587
587
|
Tier assignment rationale:
|
|
588
588
|
- low + medium → lite (single agent): most features don't benefit from
|
|
589
589
|
the orchestrator→dev→reviewer overhead. A single agent reading
|
|
590
|
-
.prizm-docs + implementing directly is faster and cheaper.
|
|
590
|
+
.prizmkit/prizm-docs + implementing directly is faster and cheaper.
|
|
591
591
|
- high → standard (orchestrator + dev + reviewer): complex features
|
|
592
592
|
need the spec→plan→analyze→implement→review pipeline.
|
|
593
593
|
- critical → full (full team + framework guardrails): architectural
|
|
@@ -612,7 +612,7 @@ def determine_pipeline_mode(complexity):
|
|
|
612
612
|
# merge_checkpoint_state() never collides.
|
|
613
613
|
SECTION_TO_SKILL = {
|
|
614
614
|
"phase0-init": ("prizmkit-init", "Project Bootstrap",
|
|
615
|
-
[".prizm-docs/root.prizm", ".prizmkit/config.json"]),
|
|
615
|
+
[".prizmkit/prizm-docs/root.prizm", ".prizmkit/config.json"]),
|
|
616
616
|
"phase0-test-baseline": ("test-baseline", "Test Baseline", []),
|
|
617
617
|
"phase-context-snapshot": ("context-snapshot", "Build Context Snapshot",
|
|
618
618
|
[".prizmkit/specs/{slug}/context-snapshot.md"]),
|
|
@@ -1239,8 +1239,8 @@ def build_replacements(args, feature, features, global_context, script_dir):
|
|
|
1239
1239
|
"Run `npx prizmkit install` to reinstall agent definitions.",
|
|
1240
1240
|
agent_path, agent_name,
|
|
1241
1241
|
)
|
|
1242
|
-
# Validator scripts - check if they exist in .codebuddy/scripts/, otherwise use dev-pipeline/scripts/
|
|
1243
|
-
validator_scripts_dir = os.path.join(project_root, "dev-pipeline", "scripts")
|
|
1242
|
+
# Validator scripts - check if they exist in .codebuddy/scripts/, otherwise use .prizmkit/dev-pipeline/scripts/
|
|
1243
|
+
validator_scripts_dir = os.path.join(project_root, ".prizmkit", "dev-pipeline", "scripts")
|
|
1244
1244
|
init_script_path = os.path.join(validator_scripts_dir, "init-dev-team.py")
|
|
1245
1245
|
|
|
1246
1246
|
# Session status path (relative to project root)
|
|
@@ -208,10 +208,15 @@ def get_prev_session_status(state_dir, bug_id):
|
|
|
208
208
|
|
|
209
209
|
|
|
210
210
|
def resolve_project_root(script_dir):
|
|
211
|
-
"""Resolve project root
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
211
|
+
"""Resolve project root. Layout-aware:
|
|
212
|
+
<project>/.prizmkit/dev-pipeline/scripts/ → <project>
|
|
213
|
+
<repo>/dev-pipeline/scripts/ → <repo>
|
|
214
|
+
"""
|
|
215
|
+
pipeline_dir = os.path.dirname(script_dir)
|
|
216
|
+
pipeline_parent = os.path.dirname(pipeline_dir)
|
|
217
|
+
if os.path.basename(pipeline_parent) == ".prizmkit":
|
|
218
|
+
return os.path.abspath(os.path.dirname(pipeline_parent))
|
|
219
|
+
return os.path.abspath(pipeline_parent)
|
|
215
220
|
|
|
216
221
|
|
|
217
222
|
def build_replacements(args, bug, global_context, script_dir):
|
|
@@ -57,7 +57,7 @@ Use whatever information is available:
|
|
|
57
57
|
- Read bug entry from `.prizmkit/plans/bug-fix-list.json` if bug ID is known
|
|
58
58
|
- Read any existing artifacts in `.prizmkit/bugfix/{bug_id}/`
|
|
59
59
|
- Read relevant source code and test files
|
|
60
|
-
- Read `.prizm-docs/` for affected modules
|
|
60
|
+
- Read `.prizmkit/prizm-docs/` for affected modules
|
|
61
61
|
|
|
62
62
|
Produce a bug summary with: symptom, reproduction steps, expected behavior,
|
|
63
63
|
affected files, and root cause hypothesis.""",
|
|
@@ -66,9 +66,9 @@ affected files, and root cause hypothesis.""",
|
|
|
66
66
|
"Triage",
|
|
67
67
|
"""\
|
|
68
68
|
Locate affected code and identify root cause:
|
|
69
|
-
1. Read `.prizm-docs/root.prizm` then relevant L1/L2 docs for affected modules
|
|
69
|
+
1. Read `.prizmkit/prizm-docs/root.prizm` then relevant L1/L2 docs for affected modules
|
|
70
70
|
2. Read files mentioned in the bug description or error/stack trace
|
|
71
|
-
3. Check `.prizm-docs/` TRAPS for known patterns
|
|
71
|
+
3. Check `.prizmkit/prizm-docs/` TRAPS for known patterns
|
|
72
72
|
4. Classify: root cause (confirmed/suspected), blast radius, fix complexity
|
|
73
73
|
5. Log your diagnosis (no need to ask for user confirmation in autonomous mode)""",
|
|
74
74
|
),
|
|
@@ -115,7 +115,7 @@ for manual user testing:
|
|
|
115
115
|
"""\
|
|
116
116
|
Commit the fix and finalize:
|
|
117
117
|
1. Run `/prizmkit-retrospective` (structural sync only — update file counts,
|
|
118
|
-
interfaces, dependencies in .prizm-docs/)
|
|
118
|
+
interfaces, dependencies in .prizmkit/prizm-docs/)
|
|
119
119
|
2. Stage all changed files explicitly (NEVER use `git add -A` or `git add .`)
|
|
120
120
|
3. Run `/prizmkit-committer --headless` with commit prefix `fix(<scope>): <description>`
|
|
121
121
|
4. Verify working tree is clean: `git status --short`
|
|
@@ -132,7 +132,7 @@ FEATURE_PHASES = {
|
|
|
132
132
|
"Brainstorm",
|
|
133
133
|
"""\
|
|
134
134
|
Since this is an autonomous recovery session, work with whatever context is
|
|
135
|
-
available. Read existing project files, `.prizm-docs/`, and any user-provided
|
|
135
|
+
available. Read existing project files, `.prizmkit/prizm-docs/`, and any user-provided
|
|
136
136
|
materials to understand the requirements. Skip interactive Q&A.
|
|
137
137
|
Produce a requirements summary if one doesn't already exist.""",
|
|
138
138
|
),
|
|
@@ -153,7 +153,7 @@ Invoke `/feature-pipeline-launcher` skill:
|
|
|
153
153
|
|
|
154
154
|
If `/feature-pipeline-launcher` is not available, run the pipeline directly:
|
|
155
155
|
```bash
|
|
156
|
-
|
|
156
|
+
./.prizmkit/dev-pipeline/run-feature.sh run .prizmkit/plans/feature-list.json
|
|
157
157
|
```""",
|
|
158
158
|
),
|
|
159
159
|
4: (
|
|
@@ -161,7 +161,7 @@ If `/feature-pipeline-launcher` is not available, run the pipeline directly:
|
|
|
161
161
|
"""\
|
|
162
162
|
Check pipeline status and report results:
|
|
163
163
|
```bash
|
|
164
|
-
python3 dev-pipeline/scripts/update-feature-status.py \\
|
|
164
|
+
python3 .prizmkit/dev-pipeline/scripts/update-feature-status.py \\
|
|
165
165
|
--feature-list .prizmkit/plans/feature-list.json \\
|
|
166
166
|
--state-dir .prizmkit/state/features \\
|
|
167
167
|
--action status
|
|
@@ -175,7 +175,7 @@ REFACTOR_PHASES = {
|
|
|
175
175
|
"Brainstorm",
|
|
176
176
|
"""\
|
|
177
177
|
Since this is an autonomous recovery session, work with whatever context is
|
|
178
|
-
available. Read existing project files, `.prizm-docs/`, and any materials
|
|
178
|
+
available. Read existing project files, `.prizmkit/prizm-docs/`, and any materials
|
|
179
179
|
to understand the refactoring goals. Skip interactive Q&A.
|
|
180
180
|
Produce a refactoring goals summary if one doesn't already exist.""",
|
|
181
181
|
),
|
|
@@ -196,7 +196,7 @@ Invoke `/refactor-pipeline-launcher` skill:
|
|
|
196
196
|
|
|
197
197
|
If `/refactor-pipeline-launcher` is not available, run the pipeline directly:
|
|
198
198
|
```bash
|
|
199
|
-
|
|
199
|
+
./.prizmkit/dev-pipeline/run-refactor.sh run .prizmkit/plans/refactor-list.json
|
|
200
200
|
```""",
|
|
201
201
|
),
|
|
202
202
|
4: (
|
|
@@ -204,7 +204,7 @@ If `/refactor-pipeline-launcher` is not available, run the pipeline directly:
|
|
|
204
204
|
"""\
|
|
205
205
|
Check pipeline status and report results:
|
|
206
206
|
```bash
|
|
207
|
-
python3 dev-pipeline/scripts/update-refactor-status.py \\
|
|
207
|
+
python3 .prizmkit/dev-pipeline/scripts/update-refactor-status.py \\
|
|
208
208
|
--refactor-list .prizmkit/plans/refactor-list.json \\
|
|
209
209
|
--state-dir .prizmkit/state/refactor \\
|
|
210
210
|
--action status
|
|
@@ -688,9 +688,15 @@ def resolve_project_root(given_root):
|
|
|
688
688
|
"""Resolve project root from argument or git."""
|
|
689
689
|
if given_root:
|
|
690
690
|
return os.path.abspath(given_root)
|
|
691
|
-
# Auto-detect
|
|
691
|
+
# Auto-detect across two layouts:
|
|
692
|
+
# <project>/.prizmkit/dev-pipeline/scripts/ → up 3 levels
|
|
693
|
+
# <repo>/dev-pipeline/scripts/ → up 2 levels
|
|
692
694
|
script_dir = os.path.dirname(os.path.abspath(__file__))
|
|
693
|
-
|
|
695
|
+
pipeline_dir = os.path.dirname(script_dir)
|
|
696
|
+
pipeline_parent = os.path.dirname(pipeline_dir)
|
|
697
|
+
if os.path.basename(pipeline_parent) == ".prizmkit":
|
|
698
|
+
return os.path.dirname(pipeline_parent)
|
|
699
|
+
return pipeline_parent
|
|
694
700
|
|
|
695
701
|
|
|
696
702
|
def emit_failure(message):
|
|
@@ -357,10 +357,15 @@ def get_prev_session_status(state_dir, refactor_id):
|
|
|
357
357
|
|
|
358
358
|
|
|
359
359
|
def resolve_project_root(script_dir):
|
|
360
|
-
"""Resolve project root
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
360
|
+
"""Resolve project root. Layout-aware:
|
|
361
|
+
<project>/.prizmkit/dev-pipeline/scripts/ → <project>
|
|
362
|
+
<repo>/dev-pipeline/scripts/ → <repo>
|
|
363
|
+
"""
|
|
364
|
+
pipeline_dir = os.path.dirname(script_dir)
|
|
365
|
+
pipeline_parent = os.path.dirname(pipeline_dir)
|
|
366
|
+
if os.path.basename(pipeline_parent) == ".prizmkit":
|
|
367
|
+
return os.path.abspath(os.path.dirname(pipeline_parent))
|
|
368
|
+
return os.path.abspath(pipeline_parent)
|
|
364
369
|
|
|
365
370
|
|
|
366
371
|
def build_replacements(args, refactor, refactors, global_context, script_dir):
|
|
@@ -50,7 +50,7 @@ PHASE_KEYWORDS = {
|
|
|
50
50
|
},
|
|
51
51
|
"retrospective": {
|
|
52
52
|
"strong": ["prizmkit-retrospective"],
|
|
53
|
-
"weak": ["retrospective", "structural sync", "architecture knowledge", ".prizm-docs/ sync"],
|
|
53
|
+
"weak": ["retrospective", "structural sync", "architecture knowledge", ".prizmkit/prizm-docs/ sync"],
|
|
54
54
|
},
|
|
55
55
|
"commit": {
|
|
56
56
|
"strong": ["prizmkit-committer"],
|
|
@@ -341,7 +341,15 @@ def action_update(args, bug_list_path, state_dir):
|
|
|
341
341
|
|
|
342
342
|
|
|
343
343
|
def _default_project_root():
|
|
344
|
-
|
|
344
|
+
env = os.environ.get("PROJECT_ROOT")
|
|
345
|
+
if env:
|
|
346
|
+
return os.path.abspath(env)
|
|
347
|
+
script_dir = os.path.dirname(os.path.abspath(__file__))
|
|
348
|
+
pipeline_dir = os.path.dirname(script_dir)
|
|
349
|
+
pipeline_parent = os.path.dirname(pipeline_dir)
|
|
350
|
+
if os.path.basename(pipeline_parent) == ".prizmkit":
|
|
351
|
+
return os.path.dirname(pipeline_parent)
|
|
352
|
+
return pipeline_parent
|
|
345
353
|
|
|
346
354
|
|
|
347
355
|
def cleanup_bug_artifacts(state_dir, bug_id, project_root=None):
|
|
@@ -236,7 +236,19 @@ def update_feature_in_list(feature_list_path, feature_id, new_status):
|
|
|
236
236
|
|
|
237
237
|
|
|
238
238
|
def _default_project_root():
|
|
239
|
-
|
|
239
|
+
# Script lives at <pipeline>/scripts/update-feature-status.py.
|
|
240
|
+
# Pipeline may be either <project>/.prizmkit/dev-pipeline (user install)
|
|
241
|
+
# or <repo>/dev-pipeline (framework source). Auto-detect by checking if
|
|
242
|
+
# the parent of dev-pipeline is named ".prizmkit".
|
|
243
|
+
env = os.environ.get("PROJECT_ROOT")
|
|
244
|
+
if env:
|
|
245
|
+
return os.path.abspath(env)
|
|
246
|
+
script_dir = os.path.dirname(os.path.abspath(__file__))
|
|
247
|
+
pipeline_dir = os.path.dirname(script_dir)
|
|
248
|
+
pipeline_parent = os.path.dirname(pipeline_dir)
|
|
249
|
+
if os.path.basename(pipeline_parent) == ".prizmkit":
|
|
250
|
+
return os.path.dirname(pipeline_parent)
|
|
251
|
+
return pipeline_parent
|
|
240
252
|
|
|
241
253
|
|
|
242
254
|
def _build_feature_slug(feature_id, title):
|
|
@@ -384,7 +384,15 @@ def action_update(args, refactor_list_path, state_dir):
|
|
|
384
384
|
|
|
385
385
|
|
|
386
386
|
def _default_project_root():
|
|
387
|
-
|
|
387
|
+
env = os.environ.get("PROJECT_ROOT")
|
|
388
|
+
if env:
|
|
389
|
+
return os.path.abspath(env)
|
|
390
|
+
script_dir = os.path.dirname(os.path.abspath(__file__))
|
|
391
|
+
pipeline_dir = os.path.dirname(script_dir)
|
|
392
|
+
pipeline_parent = os.path.dirname(pipeline_dir)
|
|
393
|
+
if os.path.basename(pipeline_parent) == ".prizmkit":
|
|
394
|
+
return os.path.dirname(pipeline_parent)
|
|
395
|
+
return pipeline_parent
|
|
388
396
|
|
|
389
397
|
|
|
390
398
|
def cleanup_refactor_artifacts(state_dir, refactor_id, project_root=None):
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"Read {{CRITIC_SUBAGENT_PATH}}. For feature {{FEATURE_ID}} (slug: {{FEATURE_SLUG}}):
|
|
2
2
|
**MODE: Plan Challenge**
|
|
3
3
|
1. Read `.prizmkit/specs/{{FEATURE_SLUG}}/context-snapshot.md` FIRST — Section 3 has project context, Section 4 has file manifest.
|
|
4
|
-
2. Read `.prizm-docs/root.prizm` and relevant L1/L2 docs for affected modules.
|
|
4
|
+
2. Read `.prizmkit/prizm-docs/root.prizm` and relevant L1/L2 docs for affected modules.
|
|
5
5
|
3. Read existing source files in the modules this plan touches.
|
|
6
6
|
4. Challenge plan.md against the project's existing architecture, patterns, and style.
|
|
7
7
|
Write `.prizmkit/specs/{{FEATURE_SLUG}}/challenge-report.md` with findings (or 'No significant challenges')."
|
|
@@ -24,7 +24,7 @@ Infer what needs to be done from the feature context above and follow the standa
|
|
|
24
24
|
|
|
25
25
|
### Execution Steps
|
|
26
26
|
|
|
27
|
-
1. **Read context**: Read `.prizm-docs/root.prizm` and relevant L1/L2 docs to understand the codebase.
|
|
27
|
+
1. **Read context**: Read `.prizmkit/prizm-docs/root.prizm` and relevant L1/L2 docs to understand the codebase.
|
|
28
28
|
|
|
29
29
|
2. **Plan**: Run `/prizmkit-plan` with `artifact_dir=.prizmkit/specs/{{FEATURE_SLUG}}/` to produce `spec.md` and `plan.md`.
|
|
30
30
|
|
|
@@ -34,7 +34,7 @@ Infer what needs to be done from the feature context above and follow the standa
|
|
|
34
34
|
|
|
35
35
|
5. **Review**: Run `/prizmkit-code-review` with `artifact_dir=.prizmkit/specs/{{FEATURE_SLUG}}/` to review and auto-fix changes against the spec (internal review-fix loop, max 3 rounds).
|
|
36
36
|
|
|
37
|
-
6. **Retrospective**: Run `/prizmkit-retrospective` to sync `.prizm-docs/` with code changes.
|
|
37
|
+
6. **Retrospective**: Run `/prizmkit-retrospective` to sync `.prizmkit/prizm-docs/` with code changes.
|
|
38
38
|
|
|
39
39
|
7. **Commit**: Run `/prizmkit-committer --headless` to commit all changes. Do NOT push.
|
|
40
40
|
|
|
@@ -69,7 +69,7 @@ You are running in **headless non-interactive mode** with a FINITE context windo
|
|
|
69
69
|
### Phase 0: Project Bootstrap
|
|
70
70
|
- Run `/prizmkit-init` (invoke the prizmkit-init skill)
|
|
71
71
|
- Run `python3 {{INIT_SCRIPT_PATH}} --project-root {{PROJECT_ROOT}} --feature-id {{FEATURE_ID}} --feature-slug {{FEATURE_SLUG}}`
|
|
72
|
-
- **CP-0**: Verify `.prizm-docs/root.prizm`, `.prizmkit/config.json` exist
|
|
72
|
+
- **CP-0**: Verify `.prizmkit/prizm-docs/root.prizm`, `.prizmkit/config.json` exist
|
|
73
73
|
{{END_IF_INIT_NEEDED}}
|
|
74
74
|
{{IF_INIT_DONE}}
|
|
75
75
|
### Phase 0: SKIP (already initialized)
|
|
@@ -82,7 +82,7 @@ ls .prizmkit/specs/{{FEATURE_SLUG}}/context-snapshot.md 2>/dev/null && echo "EXI
|
|
|
82
82
|
```
|
|
83
83
|
|
|
84
84
|
If MISSING — build it now:
|
|
85
|
-
1. Read `.prizm-docs/root.prizm` and relevant L1 prizm docs
|
|
85
|
+
1. Read `.prizmkit/prizm-docs/root.prizm` and relevant L1 prizm docs
|
|
86
86
|
2. Detect source code directories: read KEY_FILES and STRUCTURE sections from `root.prizm` to identify where source code lives (e.g. `src/`, `app/`, `lib/`, `cmd/`, `packages/`, or project root). If `root.prizm` is missing, scan the project tree:
|
|
87
87
|
```bash
|
|
88
88
|
find . -maxdepth 2 -type f \( -name "*.js" -o -name "*.ts" -o -name "*.py" -o -name "*.go" -o -name "*.java" -o -name "*.rb" -o -name "*.rs" \) -not -path '*/node_modules/*' -not -path '*/.git/*' -not -path '*/dist/*' -not -path '*/build/*' -not -path '*/vendor/*' | head -30
|
|
@@ -344,22 +344,22 @@ If verification fails, log the failure details but continue to commit. Failures
|
|
|
344
344
|
|
|
345
345
|
### Phase 4: Architecture Sync & Commit (SINGLE COMMIT)
|
|
346
346
|
|
|
347
|
-
**4a.** Run `/prizmkit-retrospective` — maintains `.prizm-docs/` (architecture index):
|
|
348
|
-
1. **Structural sync**: Use `git diff --cached --name-status` to locate changed modules, update KEY_FILES/INTERFACES/DEPENDENCIES/file counts in affected `.prizm-docs/` files
|
|
349
|
-
2. **Architecture knowledge** (feature sessions only): Extract TRAPS/RULES/DECISIONS from completed work into `.prizm-docs/`
|
|
347
|
+
**4a.** Run `/prizmkit-retrospective` — maintains `.prizmkit/prizm-docs/` (architecture index):
|
|
348
|
+
1. **Structural sync**: Use `git diff --cached --name-status` to locate changed modules, update KEY_FILES/INTERFACES/DEPENDENCIES/file counts in affected `.prizmkit/prizm-docs/` files
|
|
349
|
+
2. **Architecture knowledge** (feature sessions only): Extract TRAPS/RULES/DECISIONS from completed work into `.prizmkit/prizm-docs/`
|
|
350
350
|
3. **L2 coverage check**: For any module/sub-module with source files created or significantly modified in this session but no L2 `.prizm` doc — evaluate whether L2 is warranted and create if so. The current session has the best context for accurate KEY_FILES, TRAPS, and DECISIONS.
|
|
351
|
-
4. Stage doc changes: `git add .prizm-docs/`
|
|
351
|
+
4. Stage doc changes: `git add .prizmkit/prizm-docs/`
|
|
352
352
|
⚠️ Do NOT commit here. Only stage.
|
|
353
353
|
|
|
354
354
|
**4b.** Stage all feature code explicitly (NEVER use `git add -A` or `git add .`):
|
|
355
355
|
```bash
|
|
356
356
|
git add <specific-files-created-or-modified>
|
|
357
|
-
git add .prizm-docs/
|
|
357
|
+
git add .prizmkit/prizm-docs/
|
|
358
358
|
```
|
|
359
359
|
|
|
360
360
|
**4c.** Run `/prizmkit-committer` → THE ONLY commit for this feature:
|
|
361
361
|
`feat({{FEATURE_ID}}): {{FEATURE_TITLE}}`
|
|
362
|
-
This single commit includes: feature code + tests + .prizm-docs/ updates. Do NOT push.
|
|
362
|
+
This single commit includes: feature code + tests + .prizmkit/prizm-docs/ updates. Do NOT push.
|
|
363
363
|
- MANDATORY: commit must be done via `/prizmkit-committer` skill. Do NOT run manual `git add`/`git commit` as a substitute.
|
|
364
364
|
- Do NOT run `update-feature-status.py` here — the pipeline runner handles feature-list.json updates automatically after session exit.
|
|
365
365
|
|
|
@@ -80,7 +80,7 @@ If any agent times out:
|
|
|
80
80
|
### Phase 0: Project Bootstrap
|
|
81
81
|
- Run `/prizmkit-init` (invoke the prizmkit-init skill)
|
|
82
82
|
- Run `python3 {{INIT_SCRIPT_PATH}} --project-root {{PROJECT_ROOT}} --feature-id {{FEATURE_ID}} --feature-slug {{FEATURE_SLUG}}`
|
|
83
|
-
- **CP-0**: Verify `.prizm-docs/root.prizm`, `.prizmkit/config.json` exist
|
|
83
|
+
- **CP-0**: Verify `.prizmkit/prizm-docs/root.prizm`, `.prizmkit/config.json` exist
|
|
84
84
|
{{END_IF_INIT_NEEDED}}
|
|
85
85
|
{{IF_INIT_DONE}}
|
|
86
86
|
### Phase 0: SKIP (already initialized)
|
|
@@ -104,7 +104,7 @@ cat .prizmkit/specs/{{FEATURE_SLUG}}/failure-log.md 2>/dev/null || echo "NO_PREV
|
|
|
104
104
|
```
|
|
105
105
|
If failure-log.md exists:
|
|
106
106
|
- Read ROOT_CAUSE and SUGGESTION — adjust your approach accordingly
|
|
107
|
-
- Read DISCOVERED_TRAPS — if any are genuine, inject into .prizm-docs/ during Phase 6 retrospective
|
|
107
|
+
- Read DISCOVERED_TRAPS — if any are genuine, inject into .prizmkit/prizm-docs/ during Phase 6 retrospective
|
|
108
108
|
- Do NOT delete failure-log.md until this session completes all phases and commits successfully
|
|
109
109
|
|
|
110
110
|
```bash
|
|
@@ -112,7 +112,7 @@ ls .prizmkit/specs/{{FEATURE_SLUG}}/context-snapshot.md 2>/dev/null && echo "EXI
|
|
|
112
112
|
```
|
|
113
113
|
|
|
114
114
|
If MISSING — build it now:
|
|
115
|
-
1. Read `.prizm-docs/root.prizm` and relevant L1/L2 prizm docs
|
|
115
|
+
1. Read `.prizmkit/prizm-docs/root.prizm` and relevant L1/L2 prizm docs
|
|
116
116
|
2. Detect source code directories: read KEY_FILES and STRUCTURE sections from `root.prizm` to identify where source code lives (e.g. `src/`, `app/`, `lib/`, `cmd/`, `packages/`, or project root). If `root.prizm` is missing, scan the project tree:
|
|
117
117
|
```bash
|
|
118
118
|
find . -maxdepth 2 -type f \( -name "*.js" -o -name "*.ts" -o -name "*.py" -o -name "*.go" -o -name "*.java" -o -name "*.rb" -o -name "*.rs" \) -not -path '*/node_modules/*' -not -path '*/.git/*' -not -path '*/dist/*' -not -path '*/build/*' -not -path '*/vendor/*' | head -30
|
|
@@ -137,7 +137,7 @@ If MISSING — build it now:
|
|
|
137
137
|
|------|-----------|----------------|
|
|
138
138
|
| `<source-dir>/security/permission-guard.js` | Permission check integration | `checkCommandPermission(userId, cmd)` |
|
|
139
139
|
|
|
140
|
-
### Known TRAPS (from .prizm-docs/)
|
|
140
|
+
### Known TRAPS (from .prizmkit/prizm-docs/)
|
|
141
141
|
- <trap entries extracted from L1/L2 docs>
|
|
142
142
|
|
|
143
143
|
### Phase 2: Plan & Tasks (you, the orchestrator)
|
|
@@ -190,7 +190,7 @@ Prompt:
|
|
|
190
190
|
> "Read {{CRITIC_SUBAGENT_PATH}}. For feature {{FEATURE_ID}} (slug: {{FEATURE_SLUG}}):
|
|
191
191
|
> **MODE: Plan Challenge**
|
|
192
192
|
> 1. Read `.prizmkit/specs/{{FEATURE_SLUG}}/context-snapshot.md` FIRST — Section 3 has project context, Section 4 has file manifest.
|
|
193
|
-
> 2. Read `.prizm-docs/root.prizm` and relevant L1/L2 docs for affected modules.
|
|
193
|
+
> 2. Read `.prizmkit/prizm-docs/root.prizm` and relevant L1/L2 docs for affected modules.
|
|
194
194
|
> 3. Read existing source files in the modules this plan touches.
|
|
195
195
|
> 4. Challenge plan.md against the project's existing architecture, patterns, and style.
|
|
196
196
|
> Write `.prizmkit/specs/{{FEATURE_SLUG}}/challenge-report.md` with findings (or 'No significant challenges')."
|
|
@@ -437,22 +437,22 @@ If verification fails, log the failure details but continue to commit. Failures
|
|
|
437
437
|
|
|
438
438
|
### Phase 6: Architecture Sync & Commit (SINGLE COMMIT)
|
|
439
439
|
|
|
440
|
-
**6a.** Run `/prizmkit-retrospective` — maintains `.prizm-docs/` (architecture index):
|
|
441
|
-
1. **Structural sync**: Use `git diff --cached --name-status` to locate changed modules, update KEY_FILES/INTERFACES/DEPENDENCIES/file counts in affected `.prizm-docs/` files
|
|
442
|
-
2. **Architecture knowledge** (feature sessions only): Extract TRAPS/RULES/DECISIONS from completed work into `.prizm-docs/`
|
|
440
|
+
**6a.** Run `/prizmkit-retrospective` — maintains `.prizmkit/prizm-docs/` (architecture index):
|
|
441
|
+
1. **Structural sync**: Use `git diff --cached --name-status` to locate changed modules, update KEY_FILES/INTERFACES/DEPENDENCIES/file counts in affected `.prizmkit/prizm-docs/` files
|
|
442
|
+
2. **Architecture knowledge** (feature sessions only): Extract TRAPS/RULES/DECISIONS from completed work into `.prizmkit/prizm-docs/`
|
|
443
443
|
3. **L2 coverage check**: For any module/sub-module with source files created or significantly modified in this session but no L2 `.prizm` doc — evaluate whether L2 is warranted and create if so. The current session has the best context for accurate KEY_FILES, TRAPS, and DECISIONS.
|
|
444
|
-
4. Stage doc changes: `git add .prizm-docs/`
|
|
444
|
+
4. Stage doc changes: `git add .prizmkit/prizm-docs/`
|
|
445
445
|
⚠️ Do NOT commit here. Only stage.
|
|
446
446
|
|
|
447
447
|
**6b.** Stage all feature code explicitly (NEVER use `git add -A` or `git add .`):
|
|
448
448
|
```bash
|
|
449
449
|
git add <specific-files-created-or-modified>
|
|
450
|
-
git add .prizm-docs/
|
|
450
|
+
git add .prizmkit/prizm-docs/
|
|
451
451
|
```
|
|
452
452
|
|
|
453
453
|
**6c.** Run `/prizmkit-committer` → THE ONLY commit for this feature:
|
|
454
454
|
`feat({{FEATURE_ID}}): {{FEATURE_TITLE}}`
|
|
455
|
-
This single commit includes: feature code + tests + .prizm-docs/ updates. Do NOT push.
|
|
455
|
+
This single commit includes: feature code + tests + .prizmkit/prizm-docs/ updates. Do NOT push.
|
|
456
456
|
- MANDATORY: commit must be done via `/prizmkit-committer` skill. Do NOT run manual `git add`/`git commit` as a substitute.
|
|
457
457
|
- Do NOT run `update-feature-status.py` here — the pipeline runner handles feature-list.json updates automatically after session exit.
|
|
458
458
|
|