prizmkit 1.1.100 → 1.1.102

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 (317) hide show
  1. package/bin/create-prizmkit.js +4 -4
  2. package/bundled/VERSION.json +3 -3
  3. package/bundled/dev-pipeline/.env.example +3 -3
  4. package/bundled/dev-pipeline/README.md +110 -90
  5. package/bundled/dev-pipeline/assets/prizm-dev-team-integration.md +1 -1
  6. package/bundled/dev-pipeline/cli.py +27 -0
  7. package/bundled/dev-pipeline/prizmkit_runtime/__init__.py +13 -0
  8. package/bundled/dev-pipeline/prizmkit_runtime/__main__.py +9 -0
  9. package/bundled/dev-pipeline/prizmkit_runtime/cli.py +193 -0
  10. package/bundled/dev-pipeline/prizmkit_runtime/commands.py +313 -0
  11. package/bundled/dev-pipeline/prizmkit_runtime/compat.py +32 -0
  12. package/bundled/dev-pipeline/prizmkit_runtime/config.py +410 -0
  13. package/bundled/dev-pipeline/prizmkit_runtime/daemon.py +478 -0
  14. package/bundled/dev-pipeline/prizmkit_runtime/gitops.py +734 -0
  15. package/bundled/dev-pipeline/prizmkit_runtime/heartbeat.py +256 -0
  16. package/bundled/dev-pipeline/prizmkit_runtime/interoperability.py +109 -0
  17. package/bundled/dev-pipeline/prizmkit_runtime/paths.py +110 -0
  18. package/bundled/dev-pipeline/prizmkit_runtime/processes.py +373 -0
  19. package/bundled/dev-pipeline/prizmkit_runtime/reset.py +389 -0
  20. package/bundled/dev-pipeline/prizmkit_runtime/runner_bookkeeping.py +51 -0
  21. package/bundled/dev-pipeline/prizmkit_runtime/runner_classification.py +179 -0
  22. package/bundled/dev-pipeline/prizmkit_runtime/runner_models.py +355 -0
  23. package/bundled/dev-pipeline/prizmkit_runtime/runner_prompts.py +118 -0
  24. package/bundled/dev-pipeline/prizmkit_runtime/runner_recovery.py +187 -0
  25. package/bundled/dev-pipeline/prizmkit_runtime/runner_status.py +153 -0
  26. package/bundled/dev-pipeline/prizmkit_runtime/runners.py +425 -0
  27. package/bundled/dev-pipeline/prizmkit_runtime/sessions.py +560 -0
  28. package/bundled/dev-pipeline/prizmkit_runtime/status.py +71 -0
  29. package/bundled/dev-pipeline/scripts/generate-bootstrap-prompt.py +51 -36
  30. package/bundled/dev-pipeline/scripts/generate-bugfix-prompt.py +20 -5
  31. package/bundled/dev-pipeline/scripts/generate-recovery-prompt.py +2 -2
  32. package/bundled/dev-pipeline/scripts/parse-stream-progress.py +39 -0
  33. package/bundled/dev-pipeline/templates/agent-prompts/dev-implement.md +8 -2
  34. package/bundled/dev-pipeline/templates/agent-prompts/reviewer-review.md +1 -1
  35. package/bundled/dev-pipeline/templates/bootstrap-prompt.md +6 -2
  36. package/bundled/dev-pipeline/templates/bootstrap-tier1.md +14 -6
  37. package/bundled/dev-pipeline/templates/bootstrap-tier2.md +14 -4
  38. package/bundled/dev-pipeline/templates/bootstrap-tier3.md +14 -4
  39. package/bundled/dev-pipeline/templates/sections/context-budget-rules.md +2 -0
  40. package/bundled/dev-pipeline/templates/sections/log-size-awareness.md +9 -30
  41. package/bundled/dev-pipeline/templates/sections/phase-context-snapshot-agent-suffix.md +15 -7
  42. package/bundled/dev-pipeline/templates/sections/phase-implement-agent.md +42 -29
  43. package/bundled/dev-pipeline/templates/sections/phase-implement-full.md +41 -39
  44. package/bundled/dev-pipeline/templates/sections/phase-implement-lite.md +8 -17
  45. package/bundled/dev-pipeline/templates/sections/phase-prizmkit-test.md +2 -2
  46. package/bundled/dev-pipeline/templates/sections/phase-review-agent.md +1 -3
  47. package/bundled/dev-pipeline/templates/sections/phase-review-full.md +1 -3
  48. package/bundled/dev-pipeline/templates/sections/phase0-test-baseline.md +3 -8
  49. package/bundled/dev-pipeline/templates/sections/test-failure-recovery-agent.md +6 -2
  50. package/bundled/dev-pipeline/templates/sections/test-failure-recovery-lite.md +5 -1
  51. package/bundled/dev-pipeline/tests/test_auto_skip.py +436 -14
  52. package/bundled/dev-pipeline/tests/test_generate_bootstrap_prompt.py +115 -7
  53. package/bundled/dev-pipeline/tests/test_generate_bugfix_prompt.py +40 -0
  54. package/bundled/dev-pipeline/tests/test_python_runner_parity.py +1226 -0
  55. package/bundled/dev-pipeline/tests/test_unified_cli.py +1045 -0
  56. package/bundled/skills/_metadata.json +1 -1
  57. package/bundled/skills/bugfix-pipeline-launcher/SKILL.md +29 -34
  58. package/bundled/skills/bugfix-pipeline-launcher/references/configuration.md +6 -5
  59. package/bundled/skills/feature-pipeline-launcher/SKILL.md +29 -35
  60. package/bundled/skills/feature-pipeline-launcher/references/configuration.md +7 -6
  61. package/bundled/skills/feature-workflow/SKILL.md +3 -6
  62. package/bundled/skills/recovery-workflow/SKILL.md +23 -32
  63. package/bundled/skills/refactor-pipeline-launcher/SKILL.md +29 -35
  64. package/bundled/skills/refactor-pipeline-launcher/references/configuration.md +7 -6
  65. package/bundled/skills/refactor-workflow/SKILL.md +3 -6
  66. package/bundled/templates/hooks/commit-intent.json +2 -2
  67. package/bundled/templates/hooks/diff-prizm-docs.py +226 -0
  68. package/bundled/templates/hooks/prizm-pre-commit.py +45 -0
  69. package/bundled/templates/hooks/validate-prizm-docs.py +240 -0
  70. package/package.json +1 -1
  71. package/src/config.js +42 -19
  72. package/src/external-skills.js +14 -14
  73. package/src/index.js +3 -6
  74. package/src/manifest.js +11 -5
  75. package/src/metadata.js +7 -18
  76. package/src/platforms.js +25 -0
  77. package/src/prompts.js +0 -12
  78. package/src/runtimes.js +18 -11
  79. package/src/scaffold.js +144 -122
  80. package/src/upgrade.js +12 -3
  81. package/bundled/dev-pipeline/launch-bugfix-daemon.sh +0 -500
  82. package/bundled/dev-pipeline/launch-feature-daemon.sh +0 -657
  83. package/bundled/dev-pipeline/launch-refactor-daemon.sh +0 -502
  84. package/bundled/dev-pipeline/lib/branch.sh +0 -326
  85. package/bundled/dev-pipeline/lib/common.sh +0 -1476
  86. package/bundled/dev-pipeline/lib/heartbeat.sh +0 -469
  87. package/bundled/dev-pipeline/reset-bug.sh +0 -425
  88. package/bundled/dev-pipeline/reset-feature.sh +0 -436
  89. package/bundled/dev-pipeline/reset-refactor.sh +0 -423
  90. package/bundled/dev-pipeline/run-bugfix.sh +0 -1430
  91. package/bundled/dev-pipeline/run-feature.sh +0 -1718
  92. package/bundled/dev-pipeline/run-recovery.sh +0 -648
  93. package/bundled/dev-pipeline/run-refactor.sh +0 -1463
  94. package/bundled/dev-pipeline/tests/test-path-resolution.sh +0 -100
  95. package/bundled/dev-pipeline-windows/.env.example +0 -36
  96. package/bundled/dev-pipeline-windows/README.md +0 -30
  97. package/bundled/dev-pipeline-windows/SCHEMA_ANALYSIS.md +0 -533
  98. package/bundled/dev-pipeline-windows/assets/feature-list-example.json +0 -146
  99. package/bundled/dev-pipeline-windows/assets/prizm-dev-team-integration.md +0 -137
  100. package/bundled/dev-pipeline-windows/launch-bugfix-daemon.ps1 +0 -9
  101. package/bundled/dev-pipeline-windows/launch-feature-daemon.ps1 +0 -9
  102. package/bundled/dev-pipeline-windows/launch-refactor-daemon.ps1 +0 -9
  103. package/bundled/dev-pipeline-windows/lib/branch.ps1 +0 -235
  104. package/bundled/dev-pipeline-windows/lib/common.ps1 +0 -991
  105. package/bundled/dev-pipeline-windows/lib/daemon.ps1 +0 -140
  106. package/bundled/dev-pipeline-windows/lib/pipeline.ps1 +0 -1051
  107. package/bundled/dev-pipeline-windows/lib/reset.ps1 +0 -121
  108. package/bundled/dev-pipeline-windows/reset-bug.ps1 +0 -10
  109. package/bundled/dev-pipeline-windows/reset-feature.ps1 +0 -10
  110. package/bundled/dev-pipeline-windows/reset-refactor.ps1 +0 -10
  111. package/bundled/dev-pipeline-windows/run-bugfix.ps1 +0 -9
  112. package/bundled/dev-pipeline-windows/run-feature.ps1 +0 -9
  113. package/bundled/dev-pipeline-windows/run-recovery.ps1 +0 -179
  114. package/bundled/dev-pipeline-windows/run-refactor.ps1 +0 -9
  115. package/bundled/dev-pipeline-windows/scripts/check-session-status.py +0 -301
  116. package/bundled/dev-pipeline-windows/scripts/continuation.py +0 -374
  117. package/bundled/dev-pipeline-windows/scripts/detect-stuck.py +0 -530
  118. package/bundled/dev-pipeline-windows/scripts/generate-bootstrap-prompt.py +0 -2279
  119. package/bundled/dev-pipeline-windows/scripts/generate-bugfix-prompt.py +0 -763
  120. package/bundled/dev-pipeline-windows/scripts/generate-recovery-prompt.py +0 -805
  121. package/bundled/dev-pipeline-windows/scripts/generate-refactor-prompt.py +0 -841
  122. package/bundled/dev-pipeline-windows/scripts/init-bugfix-pipeline.py +0 -316
  123. package/bundled/dev-pipeline-windows/scripts/init-dev-team.py +0 -134
  124. package/bundled/dev-pipeline-windows/scripts/init-pipeline.py +0 -382
  125. package/bundled/dev-pipeline-windows/scripts/init-refactor-pipeline.py +0 -399
  126. package/bundled/dev-pipeline-windows/scripts/parse-stream-progress.py +0 -1362
  127. package/bundled/dev-pipeline-windows/scripts/patch-completion-notes.py +0 -191
  128. package/bundled/dev-pipeline-windows/scripts/prizmkit-test-gate.py +0 -446
  129. package/bundled/dev-pipeline-windows/scripts/update-bug-status.py +0 -1121
  130. package/bundled/dev-pipeline-windows/scripts/update-checkpoint.py +0 -173
  131. package/bundled/dev-pipeline-windows/scripts/update-feature-status.py +0 -1789
  132. package/bundled/dev-pipeline-windows/scripts/update-refactor-status.py +0 -1327
  133. package/bundled/dev-pipeline-windows/scripts/utils.py +0 -542
  134. package/bundled/dev-pipeline-windows/templates/agent-prompts/critic-plan-challenge.md +0 -7
  135. package/bundled/dev-pipeline-windows/templates/agent-prompts/dev-fix.md +0 -7
  136. package/bundled/dev-pipeline-windows/templates/agent-prompts/dev-implement.md +0 -65
  137. package/bundled/dev-pipeline-windows/templates/agent-prompts/dev-resume.md +0 -5
  138. package/bundled/dev-pipeline-windows/templates/agent-prompts/reviewer-review.md +0 -7
  139. package/bundled/dev-pipeline-windows/templates/bootstrap-prompt.md +0 -73
  140. package/bundled/dev-pipeline-windows/templates/bootstrap-tier1.md +0 -589
  141. package/bundled/dev-pipeline-windows/templates/bootstrap-tier2.md +0 -710
  142. package/bundled/dev-pipeline-windows/templates/bootstrap-tier3.md +0 -791
  143. package/bundled/dev-pipeline-windows/templates/bug-fix-list-schema.json +0 -263
  144. package/bundled/dev-pipeline-windows/templates/bugfix-bootstrap-prompt.md +0 -326
  145. package/bundled/dev-pipeline-windows/templates/feature-list-schema.json +0 -237
  146. package/bundled/dev-pipeline-windows/templates/refactor-bootstrap-prompt.md +0 -340
  147. package/bundled/dev-pipeline-windows/templates/refactor-list-schema.json +0 -270
  148. package/bundled/dev-pipeline-windows/templates/sections/ac-verification-checklist.md +0 -7
  149. package/bundled/dev-pipeline-windows/templates/sections/checkpoint-system.md +0 -91
  150. package/bundled/dev-pipeline-windows/templates/sections/context-budget-rules.md +0 -34
  151. package/bundled/dev-pipeline-windows/templates/sections/critical-paths-agent.md +0 -10
  152. package/bundled/dev-pipeline-windows/templates/sections/critical-paths-full.md +0 -12
  153. package/bundled/dev-pipeline-windows/templates/sections/critical-paths-lite.md +0 -7
  154. package/bundled/dev-pipeline-windows/templates/sections/directory-convention-agent.md +0 -8
  155. package/bundled/dev-pipeline-windows/templates/sections/directory-convention-full.md +0 -9
  156. package/bundled/dev-pipeline-windows/templates/sections/directory-convention-lite.md +0 -6
  157. package/bundled/dev-pipeline-windows/templates/sections/failure-capture.md +0 -21
  158. package/bundled/dev-pipeline-windows/templates/sections/feature-context.md +0 -21
  159. package/bundled/dev-pipeline-windows/templates/sections/log-size-awareness.md +0 -41
  160. package/bundled/dev-pipeline-windows/templates/sections/phase-browser-verification-auto.md +0 -283
  161. package/bundled/dev-pipeline-windows/templates/sections/phase-browser-verification-opencli.md +0 -112
  162. package/bundled/dev-pipeline-windows/templates/sections/phase-browser-verification.md +0 -168
  163. package/bundled/dev-pipeline-windows/templates/sections/phase-commit-full.md +0 -82
  164. package/bundled/dev-pipeline-windows/templates/sections/phase-commit.md +0 -75
  165. package/bundled/dev-pipeline-windows/templates/sections/phase-context-snapshot-agent-suffix.md +0 -23
  166. package/bundled/dev-pipeline-windows/templates/sections/phase-context-snapshot-base.md +0 -14
  167. package/bundled/dev-pipeline-windows/templates/sections/phase-context-snapshot-lite-suffix.md +0 -19
  168. package/bundled/dev-pipeline-windows/templates/sections/phase-critic-plan-full.md +0 -63
  169. package/bundled/dev-pipeline-windows/templates/sections/phase-critic-plan.md +0 -42
  170. package/bundled/dev-pipeline-windows/templates/sections/phase-implement-agent.md +0 -44
  171. package/bundled/dev-pipeline-windows/templates/sections/phase-implement-full.md +0 -59
  172. package/bundled/dev-pipeline-windows/templates/sections/phase-implement-lite.md +0 -39
  173. package/bundled/dev-pipeline-windows/templates/sections/phase-plan-agent.md +0 -27
  174. package/bundled/dev-pipeline-windows/templates/sections/phase-plan-lite.md +0 -27
  175. package/bundled/dev-pipeline-windows/templates/sections/phase-prizmkit-test.md +0 -39
  176. package/bundled/dev-pipeline-windows/templates/sections/phase-review-agent.md +0 -35
  177. package/bundled/dev-pipeline-windows/templates/sections/phase-review-full.md +0 -35
  178. package/bundled/dev-pipeline-windows/templates/sections/phase-specify-plan-full.md +0 -73
  179. package/bundled/dev-pipeline-windows/templates/sections/phase0-init.md +0 -13
  180. package/bundled/dev-pipeline-windows/templates/sections/phase0-test-baseline.md +0 -21
  181. package/bundled/dev-pipeline-windows/templates/sections/session-context.md +0 -5
  182. package/bundled/dev-pipeline-windows/templates/sections/subagent-timeout-recovery.md +0 -6
  183. package/bundled/dev-pipeline-windows/templates/sections/task-contract.md +0 -34
  184. package/bundled/dev-pipeline-windows/templates/sections/test-failure-recovery-agent.md +0 -48
  185. package/bundled/dev-pipeline-windows/templates/sections/test-failure-recovery-lite.md +0 -48
  186. package/bundled/dev-pipeline-windows/templates/session-status-schema.json +0 -83
  187. package/bundled/skills-windows/app-planner/SKILL.md +0 -296
  188. package/bundled/skills-windows/app-planner/assets/app-design-guide.md +0 -101
  189. package/bundled/skills-windows/app-planner/references/architecture-decisions.md +0 -52
  190. package/bundled/skills-windows/app-planner/references/brainstorm-guide.md +0 -101
  191. package/bundled/skills-windows/app-planner/references/frontend-design-guide.md +0 -71
  192. package/bundled/skills-windows/app-planner/references/infrastructure-convention-discovery.md +0 -108
  193. package/bundled/skills-windows/app-planner/references/project-brief-guide.md +0 -82
  194. package/bundled/skills-windows/app-planner/references/project-conventions-discovery.md +0 -59
  195. package/bundled/skills-windows/app-planner/references/project-state-detection.md +0 -90
  196. package/bundled/skills-windows/app-planner/references/red-team-checklist.md +0 -40
  197. package/bundled/skills-windows/app-planner/references/rules/backend/derivation-rules.md +0 -619
  198. package/bundled/skills-windows/app-planner/references/rules/backend/fixed-rules.md +0 -285
  199. package/bundled/skills-windows/app-planner/references/rules/backend/question-bank.md +0 -249
  200. package/bundled/skills-windows/app-planner/references/rules/backend/question-manifest.json +0 -46
  201. package/bundled/skills-windows/app-planner/references/rules/backend/template.md +0 -173
  202. package/bundled/skills-windows/app-planner/references/rules/database/derivation-rules.md +0 -382
  203. package/bundled/skills-windows/app-planner/references/rules/database/fixed-rules.md +0 -211
  204. package/bundled/skills-windows/app-planner/references/rules/database/question-bank.md +0 -184
  205. package/bundled/skills-windows/app-planner/references/rules/database/question-manifest.json +0 -39
  206. package/bundled/skills-windows/app-planner/references/rules/database/template.md +0 -158
  207. package/bundled/skills-windows/app-planner/references/rules/frontend/derivation-rules.md +0 -820
  208. package/bundled/skills-windows/app-planner/references/rules/frontend/fixed-rules.md +0 -188
  209. package/bundled/skills-windows/app-planner/references/rules/frontend/question-bank.md +0 -319
  210. package/bundled/skills-windows/app-planner/references/rules/frontend/question-manifest.json +0 -51
  211. package/bundled/skills-windows/app-planner/references/rules/frontend/template.md +0 -339
  212. package/bundled/skills-windows/app-planner/references/rules/mobile/derivation-rules.md +0 -649
  213. package/bundled/skills-windows/app-planner/references/rules/mobile/fixed-rules.md +0 -290
  214. package/bundled/skills-windows/app-planner/references/rules/mobile/question-bank.md +0 -232
  215. package/bundled/skills-windows/app-planner/references/rules/mobile/question-manifest.json +0 -47
  216. package/bundled/skills-windows/app-planner/references/rules/mobile/template.md +0 -175
  217. package/bundled/skills-windows/app-planner/references/rules-configuration.md +0 -46
  218. package/bundled/skills-windows/bug-fix-workflow/SKILL.md +0 -379
  219. package/bundled/skills-windows/bug-fix-workflow/references/bug-diagnosis.md +0 -41
  220. package/bundled/skills-windows/bug-planner/SKILL.md +0 -402
  221. package/bundled/skills-windows/bug-planner/assets/bug-confirmation-template.md +0 -43
  222. package/bundled/skills-windows/bug-planner/references/critic-and-verification.md +0 -44
  223. package/bundled/skills-windows/bug-planner/references/error-recovery.md +0 -73
  224. package/bundled/skills-windows/bug-planner/references/input-formats.md +0 -53
  225. package/bundled/skills-windows/bug-planner/references/schema-validation.md +0 -25
  226. package/bundled/skills-windows/bug-planner/references/severity-rules.md +0 -16
  227. package/bundled/skills-windows/bug-planner/scripts/validate-bug-list.py +0 -322
  228. package/bundled/skills-windows/bugfix-pipeline-launcher/SKILL.md +0 -304
  229. package/bundled/skills-windows/bugfix-pipeline-launcher/references/configuration.md +0 -84
  230. package/bundled/skills-windows/feature-pipeline-launcher/SKILL.md +0 -381
  231. package/bundled/skills-windows/feature-pipeline-launcher/references/configuration.md +0 -67
  232. package/bundled/skills-windows/feature-pipeline-launcher/scripts/preflight-check.py +0 -462
  233. package/bundled/skills-windows/feature-planner/SKILL.md +0 -397
  234. package/bundled/skills-windows/feature-planner/assets/evaluation-guide.md +0 -64
  235. package/bundled/skills-windows/feature-planner/assets/planning-guide.md +0 -214
  236. package/bundled/skills-windows/feature-planner/references/browser-interaction.md +0 -59
  237. package/bundled/skills-windows/feature-planner/references/completeness-review.md +0 -57
  238. package/bundled/skills-windows/feature-planner/references/decomposition-patterns.md +0 -75
  239. package/bundled/skills-windows/feature-planner/references/error-recovery.md +0 -90
  240. package/bundled/skills-windows/feature-planner/references/incremental-feature-planning.md +0 -112
  241. package/bundled/skills-windows/feature-planner/references/new-project-planning.md +0 -85
  242. package/bundled/skills-windows/feature-planner/scripts/validate-and-generate.py +0 -1020
  243. package/bundled/skills-windows/feature-workflow/SKILL.md +0 -374
  244. package/bundled/skills-windows/feature-workflow/references/brainstorm-guide.md +0 -137
  245. package/bundled/skills-windows/prizm-kit/SKILL.md +0 -93
  246. package/bundled/skills-windows/prizmkit-code-review/SKILL.md +0 -161
  247. package/bundled/skills-windows/prizmkit-code-review/references/dev-agent-prompt.md +0 -30
  248. package/bundled/skills-windows/prizmkit-code-review/references/review-report-template.md +0 -31
  249. package/bundled/skills-windows/prizmkit-code-review/references/reviewer-agent-prompt.md +0 -66
  250. package/bundled/skills-windows/prizmkit-code-review/scripts/check_loop.py +0 -186
  251. package/bundled/skills-windows/prizmkit-committer/SKILL.md +0 -89
  252. package/bundled/skills-windows/prizmkit-deploy/SKILL.md +0 -444
  253. package/bundled/skills-windows/prizmkit-deploy/references/ci-cd-workflows.md +0 -115
  254. package/bundled/skills-windows/prizmkit-deploy/references/cloud-platform-deploy.md +0 -93
  255. package/bundled/skills-windows/prizmkit-deploy/references/data-safety-examples.md +0 -120
  256. package/bundled/skills-windows/prizmkit-deploy/references/database-setup.md +0 -46
  257. package/bundled/skills-windows/prizmkit-deploy/references/deploy-config-schema.md +0 -148
  258. package/bundled/skills-windows/prizmkit-deploy/references/deploy-history-schema.md +0 -62
  259. package/bundled/skills-windows/prizmkit-deploy/references/deployment-modes.md +0 -50
  260. package/bundled/skills-windows/prizmkit-deploy/references/direct-upload.md +0 -26
  261. package/bundled/skills-windows/prizmkit-deploy/references/dns-setup.md +0 -42
  262. package/bundled/skills-windows/prizmkit-deploy/references/docker-deploy.md +0 -31
  263. package/bundled/skills-windows/prizmkit-deploy/references/firewall-setup.md +0 -37
  264. package/bundled/skills-windows/prizmkit-deploy/references/live-validation-notes.md +0 -21
  265. package/bundled/skills-windows/prizmkit-deploy/references/nginx-blue-green.md +0 -59
  266. package/bundled/skills-windows/prizmkit-deploy/references/ssh-bootstrap-flow.md +0 -49
  267. package/bundled/skills-windows/prizmkit-deploy/references/ssh-execution-flow.md +0 -41
  268. package/bundled/skills-windows/prizmkit-deploy/references/ssh-takeover.md +0 -20
  269. package/bundled/skills-windows/prizmkit-deploy/references/ssl-setup.md +0 -56
  270. package/bundled/skills-windows/prizmkit-implement/SKILL.md +0 -71
  271. package/bundled/skills-windows/prizmkit-init/SKILL.md +0 -356
  272. package/bundled/skills-windows/prizmkit-init/assets/project-brief-template.md +0 -82
  273. package/bundled/skills-windows/prizmkit-init/references/config-schema.md +0 -70
  274. package/bundled/skills-windows/prizmkit-init/references/rules/layer-detection.md +0 -41
  275. package/bundled/skills-windows/prizmkit-init/references/tech-stack-catalog.md +0 -13
  276. package/bundled/skills-windows/prizmkit-init/references/update-supplement.md +0 -9
  277. package/bundled/skills-windows/prizmkit-plan/SKILL.md +0 -102
  278. package/bundled/skills-windows/prizmkit-plan/assets/plan-template.md +0 -115
  279. package/bundled/skills-windows/prizmkit-plan/assets/spec-template.md +0 -73
  280. package/bundled/skills-windows/prizmkit-plan/references/clarify-guide.md +0 -67
  281. package/bundled/skills-windows/prizmkit-plan/references/examples.md +0 -85
  282. package/bundled/skills-windows/prizmkit-plan/references/verification-checklist.md +0 -60
  283. package/bundled/skills-windows/prizmkit-prizm-docs/SKILL.md +0 -129
  284. package/bundled/skills-windows/prizmkit-prizm-docs/assets/prizm-docs-format.md +0 -613
  285. package/bundled/skills-windows/prizmkit-prizm-docs/references/op-init.md +0 -45
  286. package/bundled/skills-windows/prizmkit-prizm-docs/references/op-rebuild.md +0 -15
  287. package/bundled/skills-windows/prizmkit-prizm-docs/references/op-status.md +0 -14
  288. package/bundled/skills-windows/prizmkit-prizm-docs/references/op-update.md +0 -19
  289. package/bundled/skills-windows/prizmkit-prizm-docs/references/op-validate.md +0 -17
  290. package/bundled/skills-windows/prizmkit-retrospective/SKILL.md +0 -87
  291. package/bundled/skills-windows/prizmkit-retrospective/references/knowledge-injection-steps.md +0 -50
  292. package/bundled/skills-windows/prizmkit-retrospective/references/structural-sync-steps.md +0 -43
  293. package/bundled/skills-windows/prizmkit-test/SKILL.md +0 -227
  294. package/bundled/skills-windows/prizmkit-test/references/boundary-coverage-protocol.md +0 -220
  295. package/bundled/skills-windows/prizmkit-test/references/examples.md +0 -143
  296. package/bundled/skills-windows/prizmkit-test/references/service-boundary-test-catalog.md +0 -225
  297. package/bundled/skills-windows/prizmkit-test/references/test-generation-steps.md +0 -109
  298. package/bundled/skills-windows/prizmkit-test/references/test-report-template.md +0 -111
  299. package/bundled/skills-windows/prizmkit-test/scripts/validate_boundary_report.py +0 -347
  300. package/bundled/skills-windows/recovery-workflow/SKILL.md +0 -355
  301. package/bundled/skills-windows/recovery-workflow/evals/evals.json +0 -46
  302. package/bundled/skills-windows/recovery-workflow/references/detection.md +0 -58
  303. package/bundled/skills-windows/recovery-workflow/scripts/detect-recovery-state.py +0 -544
  304. package/bundled/skills-windows/refactor-pipeline-launcher/SKILL.md +0 -346
  305. package/bundled/skills-windows/refactor-pipeline-launcher/references/configuration.md +0 -72
  306. package/bundled/skills-windows/refactor-planner/SKILL.md +0 -398
  307. package/bundled/skills-windows/refactor-planner/assets/planning-guide.md +0 -292
  308. package/bundled/skills-windows/refactor-planner/references/behavior-preservation.md +0 -301
  309. package/bundled/skills-windows/refactor-planner/references/fast-path.md +0 -59
  310. package/bundled/skills-windows/refactor-planner/references/planning-phases.md +0 -135
  311. package/bundled/skills-windows/refactor-planner/references/refactor-scoping-guide.md +0 -221
  312. package/bundled/skills-windows/refactor-planner/scripts/validate-and-generate-refactor.py +0 -858
  313. package/bundled/skills-windows/refactor-workflow/SKILL.md +0 -343
  314. package/bundled/skills-windows/refactor-workflow/references/brainstorm-guide.md +0 -116
  315. package/bundled/templates/hooks/diff-prizm-docs.sh +0 -158
  316. package/bundled/templates/hooks/prizm-pre-commit.sh +0 -108
  317. package/bundled/templates/hooks/validate-prizm-docs.sh +0 -139
@@ -84,6 +84,11 @@ def parse_args():
84
84
  required=True,
85
85
  help="Output path for the rendered prompt",
86
86
  )
87
+ parser.add_argument(
88
+ "--project-root",
89
+ default=None,
90
+ help="AI-visible project root used for rendered prompt paths",
91
+ )
87
92
  parser.add_argument(
88
93
  "--template",
89
94
  default=None,
@@ -479,6 +484,14 @@ def resolve_project_root(script_dir):
479
484
  return os.path.abspath(pipeline_parent)
480
485
 
481
486
 
487
+ def _args_project_root(args, script_dir):
488
+ """Return explicit AI-visible project root or script-layout default."""
489
+ explicit = getattr(args, "project_root", None)
490
+ if explicit:
491
+ return os.path.abspath(explicit)
492
+ return resolve_project_root(script_dir)
493
+
494
+
482
495
  def process_conditional_blocks(content, resume_phase):
483
496
  """Handle conditional blocks based on resume_phase.
484
497
 
@@ -663,7 +676,7 @@ def determine_pipeline_mode(complexity):
663
676
  SECTION_TO_SKILL = {
664
677
  "phase0-init": ("prizmkit-init", "Project Bootstrap",
665
678
  [".prizmkit/prizm-docs/root.prizm", ".prizmkit/config.json"]),
666
- "phase0-test-baseline": ("test-baseline", "Test Baseline", []),
679
+ "phase0-test-baseline": ("test-baseline", "Detect Test Commands", []),
667
680
  "phase-context-snapshot": ("context-snapshot", "Build Context Snapshot",
668
681
  [".prizmkit/specs/{slug}/context-snapshot.md"]),
669
682
  "phase-specify-plan": ("context-snapshot-and-plan", "Specify & Plan",
@@ -1324,10 +1337,12 @@ def _tier_header(pipeline_mode):
1324
1337
  "No normal work subagents. No TeamCreate.\n",
1325
1338
  ),
1326
1339
  "standard": (
1327
- "# Dev-Pipeline Session Bootstrap — Tier 2 (Dual Agent)\n",
1328
- "**Tier 2 — Dual Agent**: You handle context + planning "
1329
- "directly. Then spawn Dev and Reviewer subagents. Spawn Dev "
1330
- "and Reviewer agents via the Agent tool.\n",
1340
+ "# Dev-Pipeline Session Bootstrap — Tier 2 "
1341
+ "(Orchestrator + Critic/Reviewer)\n",
1342
+ "**Tier 2 Orchestrator + Critic/Reviewer**: You handle "
1343
+ "context + planning + implementation directly. Critic challenges "
1344
+ "plan (if enabled), Reviewer reviews. No Dev subagent — "
1345
+ "orchestrator implements directly (P0-6).\n",
1331
1346
  ),
1332
1347
  "full": (
1333
1348
  "# Dev-Pipeline Session Bootstrap — Tier 3 (Full Team)\n",
@@ -1363,16 +1378,14 @@ def _tier_reminders(pipeline_mode, critic_enabled=False):
1363
1378
  ]
1364
1379
  elif pipeline_mode == "standard":
1365
1380
  specific = [
1366
- "- Tier 2: orchestrator builds context+plan, Analyzer checks "
1367
- "consistency, Dev implements, Reviewer reviews+tests use "
1368
- "direct Agent spawn for agents",
1381
+ "- Tier 2: orchestrator builds context+plan, Critic challenges "
1382
+ "plan (if enabled), orchestrator implements directly (no Dev "
1383
+ "subagent), Reviewer reviews see P0-6",
1369
1384
  "- context-snapshot.md is append-only: orchestrator writes "
1370
- "Sections 1-4, Dev appends Implementation Log, Reviewer "
1371
- "appends Review Notes",
1372
- "- Gate checks enforce Implementation Log and Review Notes are "
1373
- "written before proceeding",
1374
- "- Do NOT use `run_in_background=true` when spawning normal work "
1375
- "subagents",
1385
+ "Sections 1-4 + Implementation Log, Reviewer appends Review Notes",
1386
+ "- Gate checks enforce Implementation Log (with Gate Evidence) "
1387
+ "and Review Notes are written before proceeding",
1388
+ "- Do NOT use `run_in_background=true` when spawning Reviewer",
1376
1389
  "- On timeout: check snapshot + git diff HEAD → model:lite → "
1377
1390
  "remaining steps only → max 2 retries per phase → "
1378
1391
  "orchestrator fallback",
@@ -1546,6 +1559,18 @@ def assemble_sections(pipeline_mode, sections_dir, init_done, is_resume,
1546
1559
  load_section(sections_dir,
1547
1560
  "phase-implement-agent.md")))
1548
1561
 
1562
+ # Verification Gates are included in Task Contract. Keep AC in one place so
1563
+ # background context and implementation prompts cannot redefine scope.
1564
+ # --- Review ---
1565
+ if pipeline_mode == "full":
1566
+ sections.append(("phase-review",
1567
+ load_section(sections_dir,
1568
+ "phase-review-full.md")))
1569
+ else:
1570
+ sections.append(("phase-review",
1571
+ load_section(sections_dir,
1572
+ "phase-review-agent.md")))
1573
+
1549
1574
  # --- Test Failure Recovery Protocol (tier-specific) ---
1550
1575
  if pipeline_mode == "lite":
1551
1576
  sections.append(("test-failure-recovery",
@@ -1561,18 +1586,6 @@ def assemble_sections(pipeline_mode, sections_dir, init_done, is_resume,
1561
1586
  load_section(sections_dir,
1562
1587
  "phase-prizmkit-test.md")))
1563
1588
 
1564
- # Verification Gates are included in Task Contract. Keep AC in one place so
1565
- # background context and implementation prompts cannot redefine scope.
1566
- # --- Review (only for agent tiers) ---
1567
- if pipeline_mode == "full":
1568
- sections.append(("phase-review",
1569
- load_section(sections_dir,
1570
- "phase-review-full.md")))
1571
- elif pipeline_mode == "standard":
1572
- sections.append(("phase-review",
1573
- load_section(sections_dir,
1574
- "phase-review-agent.md")))
1575
-
1576
1589
  # --- Browser Verification (conditional, tool-aware) ---
1577
1590
  if browser_enabled:
1578
1591
  if browser_tool == "opencli":
@@ -1697,7 +1710,7 @@ def validate_rendered(content):
1697
1710
 
1698
1711
  def build_replacements(args, feature, features, global_context, script_dir):
1699
1712
  """Build the full dict of placeholder -> replacement value."""
1700
- project_root = resolve_project_root(script_dir)
1713
+ project_root = _args_project_root(args, script_dir)
1701
1714
 
1702
1715
  # Resolve paths - platform-aware agent/team resolution
1703
1716
  platform = os.environ.get("PRIZMKIT_PLATFORM", "")
@@ -1768,13 +1781,17 @@ def build_replacements(args, feature, features, global_context, script_dir):
1768
1781
  validator_scripts_dir = os.path.join(project_root, ".prizmkit", "dev-pipeline", "scripts")
1769
1782
  init_script_path = os.path.join(validator_scripts_dir, "init-dev-team.py")
1770
1783
 
1771
- # Session status path (relative to project root)
1772
- session_status_path = os.path.join(
1773
- ".prizmkit", "state", "features", args.feature_id,
1774
- "sessions", args.session_id, "session-status.json",
1784
+ # Session status is controlled by the main runner state dir, even when
1785
+ # rendered project paths are AI-visible worktree paths.
1786
+ state_dir = (
1787
+ os.path.abspath(args.state_dir)
1788
+ if args.state_dir
1789
+ else os.path.join(project_root, ".prizmkit", "state", "features")
1790
+ )
1791
+ session_status_abs = os.path.join(
1792
+ state_dir, args.feature_id, "sessions", args.session_id,
1793
+ "session-status.json",
1775
1794
  )
1776
- # Make it absolute from project root
1777
- session_status_abs = os.path.join(project_root, session_status_path)
1778
1795
 
1779
1796
  # Compute feature slug for per-feature directory naming
1780
1797
  feature_slug = compute_feature_slug(
@@ -2147,9 +2164,7 @@ def main():
2147
2164
  emit_failure(err)
2148
2165
 
2149
2166
  # ── Generate checkpoint file ──────────────────────────────────────
2150
- project_root = resolve_project_root(
2151
- os.path.dirname(os.path.abspath(__file__))
2152
- )
2167
+ project_root = _args_project_root(args, script_dir)
2153
2168
  feature_slug = replacements.get("{{FEATURE_SLUG}}", "")
2154
2169
  checkpoint_path = ""
2155
2170
  checkpoint = {}
@@ -44,6 +44,7 @@ def parse_args():
44
44
  parser.add_argument("--resume-phase", required=True, help='Phase to resume from, or "null" for fresh start')
45
45
  parser.add_argument("--state-dir", default=None, help="State directory (default: .prizmkit/state/bugfix)")
46
46
  parser.add_argument("--output", required=True, help="Output path for the rendered prompt")
47
+ parser.add_argument("--project-root", default=None, help="AI-visible project root used for rendered prompt paths")
47
48
  parser.add_argument("--template", default=None, help="Custom template path. Defaults to {script_dir}/../templates/bugfix-bootstrap-prompt.md")
48
49
  parser.add_argument("--mode", default=None, help="Pipeline execution mode override: lite, standard, full")
49
50
  parser.add_argument("--critic", default=None, help="Enable critic agent: true/false")
@@ -273,9 +274,17 @@ def resolve_project_root(script_dir):
273
274
  return os.path.abspath(pipeline_parent)
274
275
 
275
276
 
277
+ def _args_project_root(args, script_dir):
278
+ """Return explicit AI-visible project root or script-layout default."""
279
+ explicit = getattr(args, "project_root", None)
280
+ if explicit:
281
+ return os.path.abspath(explicit)
282
+ return resolve_project_root(script_dir)
283
+
284
+
276
285
  def build_replacements(args, bug, global_context, script_dir):
277
286
  """Build the full dict of placeholder -> replacement value."""
278
- project_root = resolve_project_root(script_dir)
287
+ project_root = _args_project_root(args, script_dir)
279
288
 
280
289
  # Platform-aware agent/team path resolution
281
290
  platform = os.environ.get("PRIZMKIT_PLATFORM", "")
@@ -305,10 +314,16 @@ def build_replacements(args, bug, global_context, script_dir):
305
314
  dev_subagent = os.path.join(agents_dir, f"prizm-dev-team-dev{agent_ext}")
306
315
  reviewer_subagent = os.path.join(agents_dir, f"prizm-dev-team-reviewer{agent_ext}")
307
316
 
308
- # Session status path
317
+ # Session status is controlled by the main runner state dir, even when
318
+ # rendered project paths are AI-visible worktree paths.
319
+ state_dir = (
320
+ os.path.abspath(args.state_dir)
321
+ if args.state_dir
322
+ else os.path.join(project_root, ".prizmkit", "state", "bugfix")
323
+ )
309
324
  session_status_path = os.path.join(
310
- project_root, ".prizmkit", "state", "bugfix", args.bug_id,
311
- "sessions", args.session_id, "session-status.json"
325
+ state_dir, args.bug_id, "sessions", args.session_id,
326
+ "session-status.json",
312
327
  )
313
328
 
314
329
  # Error source
@@ -662,7 +677,7 @@ def main():
662
677
  emit_failure(err)
663
678
 
664
679
  # Generate checkpoint file
665
- project_root = resolve_project_root(script_dir)
680
+ project_root = _args_project_root(args, script_dir)
666
681
  checkpoint_path = os.path.join(project_root, checkpoint_rel)
667
682
  checkpoint_dir = os.path.dirname(checkpoint_path)
668
683
  os.makedirs(checkpoint_dir, exist_ok=True)
@@ -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
- ./.prizmkit/dev-pipeline/run-feature.sh run .prizmkit/plans/feature-list.json
156
+ python3 ./.prizmkit/dev-pipeline/cli.py feature run .prizmkit/plans/feature-list.json
157
157
  ```""",
158
158
  ),
159
159
  4: (
@@ -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
- ./.prizmkit/dev-pipeline/run-refactor.sh run .prizmkit/plans/refactor-list.json
199
+ python3 ./.prizmkit/dev-pipeline/cli.py refactor run .prizmkit/plans/refactor-list.json
200
200
  ```""",
201
201
  ),
202
202
  4: (
@@ -175,6 +175,7 @@ class ProgressTracker:
175
175
  def __init__(self, session_log=None):
176
176
  self.session_log_path = Path(session_log).expanduser() if session_log else None
177
177
  self.message_count = 0
178
+ self.event_type_counts = Counter()
178
179
  self.current_tool = None
179
180
  self.current_tool_input_summary = ""
180
181
  self.current_phase = None
@@ -196,6 +197,10 @@ class ProgressTracker:
196
197
  self._subagent_spawn_count = 0
197
198
  self.codex_child_thread_ids = set()
198
199
  self.cb_session_id = ""
200
+ self.result_subtype = ""
201
+ self.stop_reason = ""
202
+ self.has_usage = False
203
+ self.permission_denials = []
199
204
  self.cb_cwd = ""
200
205
  self.claude_session_id = ""
201
206
  self.claude_cwd = ""
@@ -227,7 +232,10 @@ class ProgressTracker:
227
232
  with sessionId/cwd metadata, function_call for tool invocations).
228
233
  """
229
234
  event_type = event.get("type", "")
235
+ if event_type:
236
+ self.event_type_counts[str(event_type)] += 1
230
237
  self._detect_structured_terminal_fields(event)
238
+ self._record_usage_and_permission_metadata(event)
231
239
 
232
240
  # ── Codex exec --json JSONL format ──────────────────────────
233
241
  if event_type in (
@@ -529,6 +537,8 @@ class ProgressTracker:
529
537
  self._update_claude_subagent_status_counts()
530
538
 
531
539
  elif event_type == "result":
540
+ self.result_subtype = str(event.get("subtype") or event.get("result_subtype") or "")
541
+ self.stop_reason = str(event.get("stop_reason") or "")
532
542
  self.event_format = self.event_format or "stream-json"
533
543
  self.is_active = False
534
544
  result_text = event.get("result") or event.get("message") or ""
@@ -638,6 +648,27 @@ class ProgressTracker:
638
648
  pass
639
649
 
640
650
 
651
+ def _record_usage_and_permission_metadata(self, event):
652
+ """Record additive metadata required by Python runtime parity tests."""
653
+ if not isinstance(event, dict):
654
+ return
655
+ if event.get("usage") not in (None, "", {}):
656
+ self.has_usage = True
657
+ denial_text = json.dumps(event, ensure_ascii=False).lower()
658
+ if any(
659
+ marker in denial_text
660
+ for marker in (
661
+ "permission denied",
662
+ "permission_denied",
663
+ "permission denial",
664
+ "denied by user",
665
+ "user denied",
666
+ "not permitted",
667
+ )
668
+ ):
669
+ self.permission_denials.append(json.dumps(event, ensure_ascii=False)[:500])
670
+ self.permission_denials = self.permission_denials[-10:]
671
+
641
672
  def _detect_structured_terminal_fields(self, event):
642
673
  """Detect provider-neutral terminal/context errors before format routing."""
643
674
  if not isinstance(event, dict):
@@ -1201,6 +1232,13 @@ class ProgressTracker:
1201
1232
  return {
1202
1233
  "updated_at": datetime.now(timezone.utc).strftime("%Y-%m-%dT%H:%M:%SZ"),
1203
1234
  "event_format": self.event_format,
1235
+ "event_type_counts": dict(self.event_type_counts),
1236
+ "claude_session_id": self.claude_session_id,
1237
+ "result_subtype": self.result_subtype,
1238
+ "stop_reason": self.stop_reason,
1239
+ "has_usage": self.has_usage,
1240
+ "permission_denial_count": len(self.permission_denials),
1241
+ "permission_denials": self.permission_denials[-10:],
1204
1242
  "message_count": self.message_count,
1205
1243
  "current_tool": self.current_tool,
1206
1244
  "current_tool_input_summary": self.current_tool_input_summary,
@@ -1257,6 +1295,7 @@ def tail_and_parse(session_log, progress_file, poll_interval=0.5):
1257
1295
  def state_key(state):
1258
1296
  return (
1259
1297
  state["message_count"],
1298
+ tuple(sorted(state.get("event_type_counts", {}).items())),
1260
1299
  state["current_tool"],
1261
1300
  state["current_phase"],
1262
1301
  state["total_tool_calls"],
@@ -1,4 +1,10 @@
1
- "Read {{DEV_SUBAGENT_PATH}}. Implement feature {{FEATURE_ID}} (slug: {{FEATURE_SLUG}}).
1
+ "<!-- DEPRECATED (P0-6): This prompt was injected into a Dev subagent spawn.
2
+ The orchestrator now implements directly (see phase-implement-agent.md / phase-implement-full.md).
3
+ This file is retained only so load_agent_prompts() does not break; it is no longer referenced
4
+ by any phase section. Do not add new rules here — add them to the phase-implement-* sections instead.
5
+ The rules below are the legacy Dev-subagent version, kept for reference only. -->
6
+
7
+ Read {{DEV_SUBAGENT_PATH}}. Implement feature {{FEATURE_ID}} (slug: {{FEATURE_SLUG}}).
2
8
 
3
9
  ## Task Summary Card
4
10
 
@@ -55,7 +61,7 @@ Before returning, append `## Implementation Log` to `context-snapshot.md` with:
55
61
  - Do not run git commands; staging and commit are handled by the orchestrator.
56
62
  - **Edit safety**: If an Edit fails with 'String to replace not found', grep for the target text before retrying. Never guess file offsets — verify them with a Read or grep first.
57
63
  - **Read safety**: If 3 consecutive Reads to the same file return 'shorter than offset' or 'Wasted call', STOP and report BLOCKED.
58
- - **Test early**: Run `{{TEST_CMD}}` after every 3 successful Edit operations. Capture output to /tmp/test-out.txt and grep for failures.
64
+ - **Test gate placement**: Do not run mandatory periodic or full-suite tests here. The scoped/full test gate runs after code review; only use tiny targeted checks when needed for local debugging.
59
65
 
60
66
  Do not return success unless:
61
67
  1. implementation tasks are complete;
@@ -2,6 +2,6 @@
2
2
  1. Read `.prizmkit/specs/{{FEATURE_SLUG}}/spec.md` (if it exists) for goals and Verification Gates; if spec.md does not exist, read `.prizmkit/specs/{{FEATURE_SLUG}}/context-snapshot.md` Section 1 Task Contract instead
3
3
  2. Read `.prizmkit/specs/{{FEATURE_SLUG}}/plan.md` for architecture decisions and completed tasks
4
4
  3. Run /prizmkit-code-review with artifact_dir=.prizmkit/specs/{{FEATURE_SLUG}}/. The skill will run its internal review-fix loop (Reviewer → filter → Dev fix, max 3 rounds) and write review-report.md.
5
- 4. Run the full test suite using `{{TEST_CMD}}`. When running tests: `({{TEST_CMD}}) 2>&1 | tee /tmp/review-test-out.txt | tail -20`, then grep `/tmp/review-test-out.txt` for details — do NOT re-run the suite multiple times.
5
+ 4. Do not run test suites here. The orchestrator runs `/prizmkit-test` after review completes and then fixes code/tests until the scoped gate passes.
6
6
  5. review-report.md will be written to .prizmkit/specs/{{FEATURE_SLUG}}/ by prizmkit-code-review.
7
7
  Report: verdict (PASS/NEEDS_FIXES), number of rounds, findings fixed/rejected."
@@ -30,9 +30,9 @@ Infer what needs to be done from the feature context above and follow the standa
30
30
 
31
31
  3. **Implement**: Run `/prizmkit-implement` with `artifact_dir=.prizmkit/specs/{{FEATURE_SLUG}}/` to execute the plan using TDD (write tests first, then implement).
32
32
 
33
- 4. **Test**: Run `/prizmkit-test scope=this-change artifact_dir=.prizmkit/specs/{{FEATURE_SLUG}}/` to generate and verify tests only for this feature's changed scope. Do not use bugfix/refactor artifact directories for this gate.
33
+ 4. **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).
34
34
 
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).
35
+ 5. **Test**: Run `/prizmkit-test scope=this-change artifact_dir=.prizmkit/specs/{{FEATURE_SLUG}}/` to generate and verify tests only for this feature's changed scope after review. Do not use bugfix/refactor artifact directories for this gate.
36
36
 
37
37
  6. **Retrospective**: Run `/prizmkit-retrospective` to sync `.prizmkit/prizm-docs/` with code changes.
38
38
 
@@ -44,3 +44,7 @@ Infer what needs to be done from the feature context above and follow the standa
44
44
  - Do NOT push to remote — the user will push manually.
45
45
  - Write all artifacts to `.prizmkit/specs/{{FEATURE_SLUG}}/`.
46
46
  - If a step fails after 3 attempts, write a status report and stop.
47
+ - **Anti re-read**: once you read a file into context, do NOT read it again — use `grep -n`/`sed -n` for specific lines. 3 full Reads of same file → report BLOCKED.
48
+ - **Read offset safety**: if Read returns "shorter than offset"/"empty" — run `wc -l` then `sed -n`, do NOT retry same offset.
49
+ - **Hard Round Cap**: after 6 total test-fix rounds, STOP trial-and-error. Switch to read-once-then-rewrite. Do NOT exceed 7 rounds.
50
+ - **Layered test**: debug with single-file tests, only run full suite as gate when single-file is green.
@@ -51,6 +51,11 @@ You are running in **headless non-interactive mode** with a FINITE context windo
51
51
  5. **Minimize tool output** — Never load full command output into context. First capture to a temp file (`cmd 2>&1 | tee /tmp/out.txt | tail -20`), then scan the head/tail to identify relevant fields, and use targeted filtering (`grep`, `sed`, `awk`) to extract only the information needed for the current task. Only read the filtered result — never the raw full output.
52
52
  6. **No intermediate commits** — Do NOT run `git add`/`git commit` during Phase 1-3. All changes are committed once at the end in Phase 4 via `/prizmkit-committer`.
53
53
  7. **Capture test output once** — When running test suites, always use `($TEST_CMD) 2>&1 | tee /tmp/test-out.txt | tail -20`. Then grep `/tmp/test-out.txt` for details. Never re-run the suite just to apply a different filter.
54
+ 8. **Scaffold / generated file awareness** — Files created by scaffolding tools (`npm init`, `npx create-*`, etc.) are boilerplate. Tag them, record in context-snapshot.md, and NEVER re-read them. If you need to modify one, edit directly without reading first.
55
+ 9. **Package version verification (BLOCKING)** — Before writing ANY dependency version, verify it exists via registry query (`npm view <pkg> dist-tags.latest`, `pip index versions <pkg>`, etc.). NEVER guess version numbers.
56
+ 10. **Build artifact hygiene** — After build/compile, ensure output is in `.gitignore`. Never commit binaries/build output.
57
+ 11. **Anti re-read hard rule (BLOCKING)** — Once you have read a file into context, do NOT read the full file again. Use `grep -n '<pattern>' <file>` or `sed -n '<start>,<end>p' <file>` for specific lines. **20-step window**: full Read forbidden within 20 tool calls of last read. **3-strike**: 3 full Reads of same file → report BLOCKED. Applies to orchestrator AND subagents.
58
+ 12. **Read offset safety (BLOCKING)** — If Read returns "shorter than offset"/"File is empty"/"Wasted call" — do NOT retry same offset. Run `wc -l <file>` to get real line count, then `sed -n` for exact range. 2 consecutive offset errors → STOP Reading that file. Never guess offsets — `grep -n '<anchor>'` first.
54
59
 
55
60
  ---
56
61
 
@@ -140,18 +145,19 @@ You know this project's tech stack. Identify ALL test commands that apply (e.g.,
140
145
  **3b.** Run `/prizmkit-implement` — this handles the full implementation cycle:
141
146
  - Reads plan.md Tasks section from `.prizmkit/specs/{{FEATURE_SLUG}}/`
142
147
  - Reads context from `context-snapshot.md` (Prizm docs, TRAPS, file manifest)
143
- - Implements task-by-task with TDD, marking each `[x]` immediately
148
+ - Implements task-by-task, marking each `[x]` immediately
144
149
  - Creates/updates L2 `.prizm` docs when creating new modules or significantly modifying existing ones — AI selectively decides which modules warrant L2 based on complexity and importance
145
- - Runs tests using `TEST_CMD` after each task
150
+ - Defers scoped/full test execution until after review
146
151
  - Writes '## Implementation Log' to `context-snapshot.md`
147
152
 
148
153
  **3b-checkpoint.** Context management — if plan.md has more than 5 tasks, update durable checkpoints/artifacts after every 3 tasks, minimize output, and continue. If context overflow occurs in a headless run, the runner starts a fresh continuation session from those checkpoints and artifacts. In an interactive Claude Code session operated manually outside the headless pipeline, `/compact` may be used as an optional convenience only.
149
154
 
150
155
  **3c.** After implement completes, verify:
151
156
  1. All tasks in plan.md are `[x]`
152
- 2. Run the full test suite to ensure nothing is broken
153
- 3. Verify each acceptance criterion from Section 1 of context-snapshot.md is met check mentally, do NOT re-read files you already wrote
154
- 4. If any criterion is not met, fix it now using the convergence-based recovery loop below
157
+ 2. **Verification Gate Self-Check**: for each acceptance criterion, write one line of evidence (test name / file:line / fixture path). Any gate without evidence is BLOCKED, not success.
158
+ 3. **Layered test strategy**: do not run mandatory periodic/full-suite tests during implementation. Use only tiny targeted checks when needed for local debugging; the scoped feature test gate runs after review.
159
+ 4. Verify each acceptance criterion from Section 1 of context-snapshot.md is met check mentally, do NOT re-read files you already wrote
160
+ 5. If any criterion is not met, fix it now using the convergence-based recovery loop below
155
161
 
156
162
  **CP-2**: All acceptance criteria met, all tests pass.
157
163
 
@@ -165,10 +171,12 @@ When tests fail, use convergence recovery — keep fixing while progress is bein
165
171
 
166
172
  **Key rule**: If failures decrease (even by 1), plateau counter resets. Do NOT block commit for unresolved failures — document and defer to next session.
167
173
 
174
+ **Hard Round Cap (BLOCKING)**: After **6 total test-fix rounds**, STOP trial-and-error. Write failure-log listing all hypotheses tried. Switch to: read full relevant source section ONCE (via `grep -n`+`sed -n`, never full Read), understand control flow, rewrite failing block in one shot. Do NOT exceed 7 total rounds.
175
+
168
176
 
169
177
  ### Scoped Feature Test Gate — PrizmKit Test
170
178
 
171
- Run `/prizmkit-test scope=this-change artifact_dir=.prizmkit/specs/{{FEATURE_SLUG}}/` after implementation and before review/commit.
179
+ Run `/prizmkit-test scope=this-change artifact_dir=.prizmkit/specs/{{FEATURE_SLUG}}/` after review and before commit.
172
180
 
173
181
  Before invoking the skill, create `.prizmkit/specs/{{FEATURE_SLUG}}/.prizmkit-test-started` so stale reports are ignored.
174
182
 
@@ -57,6 +57,11 @@ You are running in **headless non-interactive mode** with a FINITE context windo
57
57
  5. **Minimize tool output** — Never load full command output into context. First capture to a temp file (`cmd 2>&1 | tee /tmp/out.txt | tail -20`), then scan the head/tail to identify relevant fields, and use targeted filtering (`grep`, `sed`, `awk`) to extract only the information needed for the current task. Only read the filtered result — never the raw full output.
58
58
  6. **No intermediate commits** — Do NOT run `git add`/`git commit` during Phase 1-5. All changes are committed once at the end in Phase 6 via `/prizmkit-committer`.
59
59
  7. **Capture test output once** — When running test suites, always use `($TEST_CMD) 2>&1 | tee /tmp/test-out.txt | tail -20`. Then grep `/tmp/test-out.txt` for details. Never re-run the suite just to apply a different filter.
60
+ 8. **Scaffold / generated file awareness** — Files created by scaffolding tools are boilerplate. Tag them, record in context-snapshot.md, NEVER re-read. Edit directly without reading first.
61
+ 9. **Package version verification (BLOCKING)** — Verify dependency versions via registry query before writing them. NEVER guess.
62
+ 10. **Build artifact hygiene** — After build/compile, ensure output is in `.gitignore`.
63
+ 11. **Anti re-read hard rule (BLOCKING)** — Once you have read a file into context, do NOT read the full file again. Use `grep -n '<pattern>' <file>` or `sed -n '<start>,<end>p' <file>` for specific lines. **20-step window**: full Read forbidden within 20 tool calls of last read. **3-strike**: 3 full Reads of same file → report BLOCKED. Applies to orchestrator AND subagents — subagents re-reading files in context-snapshot.md Section 4 are wasting context.
64
+ 12. **Read offset safety (BLOCKING)** — If Read returns "shorter than offset"/"File is empty"/"Wasted call" — do NOT retry same offset. Run `wc -l <file>` to get real line count, then `sed -n` for exact range. 2 consecutive offset errors → STOP Reading that file. Never guess offsets — `grep -n '<anchor>'` first.
60
65
 
61
66
  ---
62
67
 
@@ -277,9 +282,14 @@ Prompt:
277
282
  > 1. Read `.prizmkit/specs/{{FEATURE_SLUG}}/context-snapshot.md` for full context.
278
283
  > 2. Run `/prizmkit-implement` to execute the tasks in plan.md. Run tests with: `{{TEST_CMD}}`. Known baseline failures (pre-existing, not your fault): `{{BASELINE_FAILURES}}`.
279
284
  > 3. If plan.md has more than 5 tasks: update durable checkpoints/artifacts after every 3 tasks, minimize output, and rely on runner continuation if context overflow occurs. In an interactive Claude Code session operated manually outside the headless pipeline, `/compact` may be used as an optional convenience only.
280
- > 4. After implement completes, verify the '## Implementation Log' section was written to context-snapshot.md.
281
- > 5. Do NOT execute any git commands (no git add/commit/reset/push).
282
- > Do NOT exit until all tasks are [x] and the '## Implementation Log' section is written in context-snapshot.md."
285
+ > 4. **Verification Gate Self-Check (BLOCKING)**: before returning, write a `### Gate Evidence` section to Implementation Log one evidence line per gate (test name / file:line / fixture path). Any gate without evidence is BLOCKED, not success.
286
+ > 5. **Layered test strategy**: debug with single-file tests (`npx vitest run <file> -t '<name>'`), only run full suite as gate when single-file is green. Never run full suite while a single-file test is still red.
287
+ > 6. **Anti re-read**: 20-step window (full Read forbidden within 20 tool calls of last read), 3-strike (3 full Reads same file → BLOCKED). Use `grep -n`+`sed -n` for specific lines.
288
+ > 7. **Read offset safety**: if Read returns "shorter than offset"/"empty"/"wasted" — run `wc -l` then `sed -n`, do NOT retry same offset. 2 consecutive → STOP Reading that file.
289
+ > 8. **Hard Round Cap**: after 6 total test-fix rounds, STOP trial-and-error. Write failure-log. Switch to read-once-then-rewrite strategy. Do NOT exceed 7 rounds.
290
+ > 9. After implement completes, verify the '## Implementation Log' section (with Gate Evidence) was written to context-snapshot.md.
291
+ > 10. Do NOT execute any git commands (no git add/commit/reset/push).
292
+ > Do NOT exit until all tasks are [x] and the '## Implementation Log' section (with Gate Evidence) is written in context-snapshot.md."
283
293
 
284
294
  Wait for Dev to return. All tasks must be `[x]`, tests pass.
285
295
 
@@ -292,7 +302,7 @@ If GATE:MISSING — send message to Dev (re-spawn if needed): "Write the '## Imp
292
302
 
293
303
  ### Scoped Feature Test Gate — PrizmKit Test
294
304
 
295
- Run `/prizmkit-test scope=this-change artifact_dir=.prizmkit/specs/{{FEATURE_SLUG}}/` after implementation and before review/commit.
305
+ Run `/prizmkit-test scope=this-change artifact_dir=.prizmkit/specs/{{FEATURE_SLUG}}/` after review and before commit.
296
306
 
297
307
  Before invoking the skill, create `.prizmkit/specs/{{FEATURE_SLUG}}/.prizmkit-test-started` so stale reports are ignored.
298
308
 
@@ -57,6 +57,11 @@ You are running in **headless non-interactive mode** with a FINITE context windo
57
57
  5. **Minimize tool output** — Never load full command output into context. First capture to a temp file (`cmd 2>&1 | tee /tmp/out.txt | tail -20`), then scan the head/tail to identify relevant fields, and use targeted filtering (`grep`, `sed`, `awk`) to extract only the information needed for the current task. Only read the filtered result — never the raw full output.
58
58
  6. **No intermediate commits** — Do NOT run `git add`/`git commit` during Phase 1-5. All changes are committed once at the end in Phase 6 via `/prizmkit-committer`.
59
59
  7. **Batch independent operations** — Issue multiple independent `Write`/`Read` calls in a single message turn when they have no dependencies. Combine multiple `mkdir -p` into one command. Never run `npm test` twice just to apply a different grep filter — capture output to `/tmp/test-out.txt` once and grep the file.
60
+ 8. **Scaffold / generated file awareness** — Files created by scaffolding tools are boilerplate. Tag them, record in context-snapshot.md, NEVER re-read. Edit directly without reading first.
61
+ 9. **Package version verification (BLOCKING)** — Verify dependency versions via registry query before writing them. NEVER guess.
62
+ 10. **Build artifact hygiene** — After build/compile, ensure output is in `.gitignore`.
63
+ 11. **Anti re-read hard rule (BLOCKING)** — Once you have read a file into context, do NOT read the full file again. Use `grep -n '<pattern>' <file>` or `sed -n '<start>,<end>p' <file>` for specific lines. **20-step window**: full Read forbidden within 20 tool calls of last read. **3-strike**: 3 full Reads of same file → report BLOCKED. Applies to orchestrator AND subagents.
64
+ 12. **Read offset safety (BLOCKING)** — If Read returns "shorter than offset"/"File is empty"/"Wasted call" — do NOT retry same offset. Run `wc -l <file>` to get real line count, then `sed -n` for exact range. 2 consecutive offset errors → STOP Reading that file. Never guess offsets — `grep -n '<anchor>'` first.
60
65
 
61
66
  ---
62
67
 
@@ -285,9 +290,14 @@ Prompt:
285
290
  > 1. Read `.prizmkit/specs/{{FEATURE_SLUG}}/context-snapshot.md` for full context.
286
291
  > 2. Run `/prizmkit-implement` to execute the tasks in plan.md. Run tests with: `{{TEST_CMD}}`. Known baseline failures (pre-existing, not your fault): `{{BASELINE_FAILURES}}`.
287
292
  > 3. If plan.md has more than 5 tasks: update durable checkpoints/artifacts after every 3 tasks, minimize output, and rely on runner continuation if context overflow occurs. In an interactive Claude Code session operated manually outside the headless pipeline, `/compact` may be used as an optional convenience only.
288
- > 4. After implement completes, verify the '## Implementation Log' section was written to context-snapshot.md.
289
- > 5. Do NOT execute any git commands (no git add/commit/reset/push).
290
- > Do NOT exit until all tasks are [x] and the '## Implementation Log' section is written in context-snapshot.md."
293
+ > 4. **Verification Gate Self-Check (BLOCKING)**: before returning, write a `### Gate Evidence` section to Implementation Log one evidence line per gate (test name / file:line / fixture path). Any gate without evidence is BLOCKED, not success.
294
+ > 5. **Layered test strategy**: debug with single-file tests (`npx vitest run <file> -t '<name>'`), only run full suite as gate when single-file is green. Never run full suite while a single-file test is still red.
295
+ > 6. **Anti re-read**: 20-step window (full Read forbidden within 20 tool calls of last read), 3-strike (3 full Reads same file → BLOCKED). Use `grep -n`+`sed -n` for specific lines.
296
+ > 7. **Read offset safety**: if Read returns "shorter than offset"/"empty"/"wasted" — run `wc -l` then `sed -n`, do NOT retry same offset. 2 consecutive → STOP Reading that file.
297
+ > 8. **Hard Round Cap**: after 6 total test-fix rounds, STOP trial-and-error. Write failure-log. Switch to read-once-then-rewrite strategy. Do NOT exceed 7 rounds.
298
+ > 9. After implement completes, verify the '## Implementation Log' section (with Gate Evidence) was written to context-snapshot.md.
299
+ > 10. Do NOT execute any git commands (no git add/commit/reset/push).
300
+ > Do NOT exit until all tasks are [x] and the '## Implementation Log' section (with Gate Evidence) is written in context-snapshot.md."
291
301
 
292
302
  **Gate Check — Implementation Log**:
293
303
  After Dev agent returns, verify the Implementation Log was written:
@@ -310,7 +320,7 @@ All tasks `[x]`, tests pass.
310
320
 
311
321
  ### Scoped Feature Test Gate — PrizmKit Test
312
322
 
313
- Run `/prizmkit-test scope=this-change artifact_dir=.prizmkit/specs/{{FEATURE_SLUG}}/` after implementation and before review/commit.
323
+ Run `/prizmkit-test scope=this-change artifact_dir=.prizmkit/specs/{{FEATURE_SLUG}}/` after review and before commit.
314
324
 
315
325
  Before invoking the skill, create `.prizmkit/specs/{{FEATURE_SLUG}}/.prizmkit-test-started` so stale reports are ignored.
316
326
 
@@ -32,3 +32,5 @@ You are running in **headless non-interactive mode** with a FINITE context windo
32
32
  - **This is a BLOCKING gate**: do NOT run `npm install` / `pip install` / `cargo build` / `go mod tidy` until ALL versions in the manifest have been verified or use open constraints
33
33
  - Batch version lookups: query multiple packages in parallel to save time (e.g., run multiple `npm view` commands concurrently)
34
34
  10. **Build artifact hygiene** — After any build/compile command (`go build`, `npm run build`, `tsc`, etc.), ensure the output binary, build directory, generated bundle, or cache directory is ignored by git before the commit phase. Never commit compiled binaries, build output, or generated artifacts.
35
+ 11. **Anti re-read hard rule (BLOCKING)** — Re-reading the same file is the #1 context burner in long sessions. Once you have read a file into context (directly or via context-snapshot.md Section 4), do NOT read the full file again. Instead use `grep -n '<pattern>' <file>` or `sed -n '<start>,<end>p' <file>` for specific lines. **20-step window**: full Read forbidden within 20 tool calls of last read. **3-strike**: 3 full Reads of same file → report BLOCKED. Never full-file Read a file already summarized in context-snapshot.md Section 4.
36
+ 12. **Read offset safety (BLOCKING)** — If Read returns "shorter than offset"/"File is empty"/"Wasted call" — do NOT retry same offset. Run `wc -l <file>` to get real line count, then `sed -n` for exact range. 2 consecutive offset errors → STOP Reading that file. Never guess offsets — `grep -n '<anchor>'` first.
@@ -1,41 +1,20 @@
1
1
  ## Session Log Budget Awareness (CHECKPOINT GUIDANCE)
2
2
 
3
- Your session log grows with every tool call and agent interaction. Use this
4
- section as passive checkpoint guidance only; do not spawn a background helper for
5
- log-size checks.
3
+ This section provides passive checkpoint guidance for checkpoint/continuation only. Context-saving rules (anti re-read, output filtering) live in Context Budget Rules above — do not duplicate.
6
4
 
7
5
  ### Checkpoint Before Large Work Batches
8
6
 
9
- - `MAX_LOG_SIZE` controls whether this advisory section is included. It is not a
10
- runtime recovery mechanism.
11
- - Before major phases or large task batches, update durable artifacts that a
12
- continuation session can trust: plan/task checkboxes, context snapshots,
13
- implementation or review notes, workflow checkpoints, session status, and test
14
- reports where applicable.
15
- - Keep command output small. Capture large outputs to temporary files and read
16
- only filtered summaries needed for the current decision.
17
- - Prefer already-built context snapshots and manifests over broad source-file
18
- re-reads.
7
+ - `MAX_LOG_SIZE` controls whether this advisory section is included.
8
+ - Before major phases or large task batches, update durable artifacts: plan/task checkboxes, context snapshots, implementation/review notes, workflow checkpoints, session status, test reports.
9
+ - Checkpoint often so automatic continuation can resume from durable state.
19
10
 
20
11
  ### Headless Recovery Source of Truth
21
12
 
22
- - Headless recovery must rely on durable checkpoints and artifacts, not an
23
- interactive slash command.
24
- - If context overflow still occurs, the runner detects the overflow and starts a
25
- fresh continuation session from checkpoint files and durable artifacts.
26
- - Durable checkpoint files and artifacts are the source of truth for what was
27
- completed, what remains, and the tests or review gates already run.
13
+ - Headless recovery must rely on durable checkpoints and artifacts, not interactive slash commands.
14
+ - If context overflow occurs, the runner detects it and starts a fresh continuation session from checkpoint files and durable artifacts.
15
+ - Durable checkpoint files are the source of truth for what was completed, what remains, and which gates were already run.
28
16
 
29
17
  ### Interactive Claude Code Note
30
18
 
31
- - `/compact` may help when a human is manually operating an interactive Claude
32
- Code session.
33
- - `/compact` is optional interactive convenience only. It must not be required
34
- for headless recovery and must not be delegated to a background helper.
35
-
36
- ### Log Growth Reduction Tips
37
-
38
- - Reuse context-snapshot.md instead of re-reading files already summarized there.
39
- - Filter command output before loading it into context.
40
- - Keep agent prompts focused and avoid unnecessary transcript expansion.
41
- - Checkpoint often so automatic continuation can resume from durable state.
19
+ - `/compact` may help when a human is manually operating an interactive Claude Code session.
20
+ - `/compact` is optional interactive convenience only — not required for headless recovery.
@@ -1,14 +1,22 @@
1
1
  - **Section 3 — Key TRAPS & RULES**: extract only relevant TRAPS/RULES from prizm-docs. Do NOT copy full L0/L1/L2 content — the orchestrator already loaded them.
2
- - **Section 4 — File Manifest**: For each file relevant to this feature, list: file path, why it's needed (modify/reference/test), key interface signatures (function names + params + return types). Do NOT include full file content agents read files on-demand. Format:
2
+ - **Section 4 — File Manifest**: For each file, list: path, why needed, and a **key-content summary** so you do NOT need to re-read the file. Format depends on file type:
3
+ - **Code files** (JS/TS/Python/Go): function signatures. Example: `config` (Zod object), `loadConfig(path)→Config`.
4
+ - **Shell scripts** (`.sh`): command-line args, key behavior branches, sourced libs, critical line ranges. Example: `args: --feature-id; sources lib/common.sh; lines 120-180 worktree logic`.
5
+ - **Config/manifest** (`package.json`, `tsconfig.json`, `.env`): key scripts/fields/deps/env vars. Example: `scripts:{dev,test}, deps:{vitest}, env:USE_WORKTREE`.
6
+ - **Docs/README**: section headings + 2-3 relevant sections only.
7
+ - **Test files**: test names + what each tests (1 line each).
8
+ Format:
3
9
  ### Files to Modify
4
- | File | Why Needed | Key Interfaces |
5
- |------|-----------|----------------|
6
- | `<source-dir>/config.js` | Add runtime config layer | `config` (Zod object), `configSchema` |
10
+ | File | Why Needed | Key Content Summary |
11
+ |------|-----------|---------------------|
12
+ | `<src>/config.js` | Add config layer | `config`, `configSchema`, `loadConfig(p)→Config` |
13
+ | `dev-pipeline/run-feature.sh` | Remove shell entry | args:--feature-id; lines 120-180 worktree |
7
14
 
8
15
  ### Files for Reference
9
- | File | Why Needed | Key Interfaces |
10
- |------|-----------|----------------|
11
- | `<source-dir>/security/permission-guard.js` | Permission check integration | `checkCommandPermission(userId, cmd)` |
16
+ | File | Why Needed | Key Content Summary |
17
+ |------|-----------|---------------------|
18
+ | `<src>/permission-guard.js` | Perm check | `checkPermission(uid,cmd)→bool` |
19
+ | `package.json` | Test cmd+deps | scripts:{test:vitest}, deps:{vitest} |
12
20
 
13
21
  ### Known TRAPS (from .prizmkit/prizm-docs/)
14
22
  - <trap entries extracted from L1/L2 docs>