@playcraft/cli 0.0.44 → 0.0.46

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 (984) hide show
  1. package/dist/atom-tree/build-skeleton.js +180 -0
  2. package/dist/atom-tree/fusion-hints.js +86 -0
  3. package/dist/atom-tree/selection.js +402 -0
  4. package/dist/commands/build-all.js +33 -5
  5. package/dist/commands/build.js +7 -1
  6. package/dist/commands/create.js +774 -50
  7. package/dist/commands/image.js +11 -0
  8. package/dist/commands/prad.js +61 -0
  9. package/dist/commands/remix.js +20 -0
  10. package/dist/commands/skills.js +961 -185
  11. package/dist/commands/tools-detect.js +56 -0
  12. package/dist/commands/tools-generation.js +21 -0
  13. package/dist/commands/tools-video-review.js +100 -0
  14. package/dist/commands/tools.js +4 -0
  15. package/dist/index.js +2 -0
  16. package/dist/prad/atom-ref.js +23 -0
  17. package/dist/prad/check.js +377 -0
  18. package/dist/prad/check.test.js +49 -0
  19. package/dist/prad/explain.js +109 -0
  20. package/dist/prad/load-spec.js +23 -0
  21. package/dist/prad/paths.js +83 -0
  22. package/dist/prad/skills-index.js +60 -0
  23. package/dist/remix/init-template.js +80 -0
  24. package/dist/scaffold/compose.js +211 -0
  25. package/engine-packs/phaser/game/adapters/phaser.ts +52 -0
  26. package/engine-packs/phaser/game/config/game-config.ts +46 -0
  27. package/engine-packs/phaser/game/contract/publish.ts +141 -0
  28. package/engine-packs/phaser/game/contract/types.ts +34 -0
  29. package/engine-packs/phaser/game/index.ts +81 -0
  30. package/engine-packs/phaser/game/runtime-contract.ts +28 -0
  31. package/engine-packs/phaser/manifest.json +1 -0
  32. package/engine-packs/phaser/package.deps.json +1 -0
  33. package/engine-packs/threejs/game/config/.gitkeep +0 -0
  34. package/engine-packs/threejs/game/config/game-config.ts +46 -0
  35. package/engine-packs/threejs/game/contract/publish.ts +141 -0
  36. package/engine-packs/threejs/game/contract/types.ts +34 -0
  37. package/engine-packs/threejs/game/gameplay/.gitkeep +0 -0
  38. package/engine-packs/threejs/game/index.ts +76 -0
  39. package/engine-packs/threejs/game/runtime-contract.ts +15 -0
  40. package/engine-packs/threejs/game/scenes/.gitkeep +0 -0
  41. package/engine-packs/threejs/manifest.json +1 -0
  42. package/engine-packs/threejs/package.deps.json +8 -0
  43. package/package.json +17 -3
  44. package/project-template/.claude/agents/artist.md +101 -0
  45. package/project-template/.claude/agents/developer.md +90 -93
  46. package/project-template/.claude/agents/game-designer.md +192 -0
  47. package/project-template/.claude/agents/refs/README.md +57 -51
  48. package/project-template/.claude/agents/refs/{designer-color-audio-recipes.md → artist-color-audio-recipes.md} +2 -2
  49. package/project-template/.claude/agents/refs/{designer-deliverable-spec.md → artist-deliverable-spec.md} +57 -57
  50. package/project-template/.claude/agents/refs/{designer-dimension-axis.md → artist-dimension-axis.md} +5 -5
  51. package/project-template/.claude/agents/refs/{designer-handoff-v2-checklist.md → artist-handoff-v2-checklist.md} +15 -15
  52. package/project-template/.claude/agents/refs/artist-legacy-fallback.md +14 -0
  53. package/project-template/.claude/agents/refs/{designer-master-composite-recipes.md → artist-master-composite-recipes.md} +3 -3
  54. package/project-template/.claude/agents/refs/artist-style-exploration-flow.md +55 -0
  55. package/project-template/.claude/agents/refs/developer-dev-handoff.md +83 -40
  56. package/project-template/.claude/agents/refs/developer-impl-cookbook.md +365 -67
  57. package/project-template/.claude/agents/refs/developer-legacy-fallback.md +15 -0
  58. package/project-template/.claude/agents/refs/developer-phase1-flow.md +131 -85
  59. package/project-template/.claude/agents/refs/framework-5-component-filter.md +252 -0
  60. package/project-template/.claude/agents/refs/framework-game-feel-juice.md +266 -0
  61. package/project-template/.claude/agents/refs/framework-mda.md +147 -0
  62. package/project-template/.claude/agents/refs/game-designer-gameplay-sufficiency.md +123 -0
  63. package/project-template/.claude/agents/refs/game-designer-legacy-fallback.md +15 -0
  64. package/project-template/.claude/agents/refs/game-designer-workflow-detail.md +69 -0
  65. package/project-template/.claude/agents/refs/implementation-plan-guide.md +316 -0
  66. package/project-template/.claude/agents/refs/reviewer-convergence-eval.md +247 -33
  67. package/project-template/.claude/agents/refs/reviewer-legacy-fallback.md +14 -0
  68. package/project-template/.claude/agents/refs/skill-selector-guide.md +465 -0
  69. package/project-template/.claude/agents/refs/skill-value-layers.md +145 -0
  70. package/project-template/.claude/agents/refs/storyboard-generation-guide.md +110 -0
  71. package/project-template/.claude/agents/refs/ta-atlas-deliverable-standard.md +4 -4
  72. package/project-template/.claude/agents/refs/ta-pipeline-cookbook.md +101 -104
  73. package/project-template/.claude/agents/refs/technical-artist-legacy-fallback.md +14 -0
  74. package/project-template/.claude/agents/reviewer.md +81 -95
  75. package/project-template/.claude/agents/technical-artist.md +71 -95
  76. package/project-template/.claude/hooks/README.md +83 -35
  77. package/project-template/.claude/hooks/asr-coverage-validate.mjs +19 -19
  78. package/project-template/.claude/hooks/block-developer-preflight.mjs +185 -0
  79. package/project-template/.claude/hooks/block-ring1-tasklist.mjs +95 -0
  80. package/project-template/.claude/hooks/gate-dispatcher.mjs +78 -0
  81. package/project-template/.claude/hooks/gate-runner.mjs +557 -0
  82. package/project-template/.claude/hooks/gate.mjs +170 -0
  83. package/project-template/.claude/hooks/snapshot-milestone.mjs +246 -0
  84. package/project-template/.claude/hooks/user-prompt.mjs +193 -0
  85. package/project-template/.claude/hooks/validate-atom-tree-selection.mjs +281 -0
  86. package/project-template/.claude/hooks/validate-workflow-stop.mjs +1535 -95
  87. package/project-template/.claude/settings.json +54 -9
  88. package/project-template/.claude/skills/brainstorming/SKILL.md +161 -0
  89. package/project-template/.claude/skills/brainstorming/scripts/frame-template.html +270 -0
  90. package/project-template/.claude/skills/brainstorming/scripts/helper.js +177 -0
  91. package/project-template/.claude/skills/brainstorming/scripts/server.cjs +354 -0
  92. package/project-template/.claude/skills/brainstorming/scripts/start-server.sh +148 -0
  93. package/project-template/.claude/skills/brainstorming/scripts/stop-server.sh +56 -0
  94. package/project-template/.claude/skills/brainstorming/scripts/wait-for-selection.sh +62 -0
  95. package/project-template/.claude/skills/brainstorming/spec-document-reviewer-prompt.md +49 -0
  96. package/project-template/.claude/skills/brainstorming/visual-companion.md +309 -0
  97. package/project-template/.claude/skills/playcraft-ad-psychology/SKILL.md +3 -3
  98. package/project-template/.claude/skills/playcraft-art-style-guide/SKILL.md +3 -3
  99. package/project-template/.claude/skills/playcraft-asset-state-sheet/SKILL.md +35 -25
  100. package/project-template/.claude/skills/playcraft-audio-generation/SKILL.md +15 -15
  101. package/project-template/.claude/skills/playcraft-build-optimizer/SKILL.md +5 -5
  102. package/project-template/.claude/skills/playcraft-image-generation/SKILL.md +5 -5
  103. package/project-template/.claude/skills/playcraft-image-generation/reference/compare-style.template.mjs +5 -5
  104. package/project-template/.claude/skills/playcraft-image-generation/reference/gen-batch-sprite.template.mjs +116 -27
  105. package/project-template/.claude/skills/playcraft-image-generation/reference/prompt-cookbook.md +1 -1
  106. package/project-template/.claude/skills/playcraft-image-processing/SKILL.md +219 -0
  107. package/project-template/.claude/skills/playcraft-playable-optimization/SKILL.md +161 -0
  108. package/project-template/.claude/skills/playcraft-research/SKILL.md +24 -21
  109. package/project-template/.claude/skills/playcraft-skill-recommender/SKILL.md +331 -0
  110. package/project-template/.claude/skills/playcraft-sprite-generation/SKILL.md +48 -48
  111. package/project-template/.claude/skills/playcraft-sprite-remix/SKILL.md +158 -0
  112. package/project-template/.claude/skills/playcraft-sprite-sheet/SKILL.md +100 -0
  113. package/project-template/.claude/skills/playcraft-storyboard/SKILL.md +4 -4
  114. package/project-template/.claude/skills/playcraft-style-qa/SKILL.md +45 -45
  115. package/project-template/.claude/skills/playcraft-text-rendering/SKILL.md +27 -27
  116. package/project-template/.claude/skills/session-analyzer/SKILL.md +386 -0
  117. package/project-template/.claude/skills/session-analyzer/scripts/execution-breakdown.mjs +182 -0
  118. package/project-template/.claude/skills/session-analyzer/scripts/find-turns.mjs +72 -0
  119. package/project-template/.claude/skills/session-analyzer/scripts/heavy-output.mjs +121 -0
  120. package/project-template/.claude/skills/session-analyzer/scripts/resolve-session.mjs +103 -0
  121. package/project-template/.claude/skills/session-analyzer/scripts/subagent-stats.mjs +127 -0
  122. package/project-template/.claude/skills/session-analyzer/scripts/subagent-tool-timeline.mjs +106 -0
  123. package/project-template/.claude/skills/session-analyzer/scripts/time-gaps.mjs +128 -0
  124. package/project-template/.claude/skills/session-analyzer/scripts/turn-timeline.mjs +67 -0
  125. package/project-template/.claude/snapshot.mjs +350 -0
  126. package/project-template/.codebuddy/settings.json +53 -0
  127. package/project-template/.cursor/hooks.json +1 -1
  128. package/project-template/.cursor/rules/playcraft-orchestrator.mdc +91 -86
  129. package/project-template/.cursor/rules/playcraft-subagent-boundary.mdc +16 -5
  130. package/project-template/CHANGELOG.md +105 -0
  131. package/project-template/CLAUDE.md +58 -254
  132. package/project-template/docs/DESIGN.md +65 -0
  133. package/project-template/docs/intent-clarifications.md +58 -0
  134. package/project-template/docs/pipeline-overview.md +69 -0
  135. package/project-template/docs/project-state.md +211 -0
  136. package/project-template/docs/team/agent-conduct.md +51 -105
  137. package/project-template/docs/team/agent-runtime-matrix.md +60 -74
  138. package/project-template/docs/team/atom-tree-format.md +169 -0
  139. package/project-template/docs/team/collaboration.md +319 -225
  140. package/project-template/docs/team/core-model.md +80 -46
  141. package/project-template/docs/team/game-designer-migration-todo.md +8 -0
  142. package/project-template/docs/team/harness-legacy-deprecation.md +23 -0
  143. package/project-template/docs/team/platform-capabilities.md +16 -13
  144. package/project-template/docs/team/workflow-changelog.md +95 -23
  145. package/project-template/docs/team/workflow-consistency-checklist.md +93 -45
  146. package/project-template/focus-lab/.gitkeep +0 -0
  147. package/project-template/game/.playcraft-scaffold-pending +0 -0
  148. package/project-template/game/index.ts +18 -0
  149. package/project-template/globals.d.ts +51 -0
  150. package/project-template/index.css +34 -0
  151. package/project-template/index.html +18 -0
  152. package/project-template/main.ts +9 -0
  153. package/project-template/package.json +79 -0
  154. package/project-template/skills/README.md +52 -0
  155. package/project-template/skills/_shared/agent-prep.md +136 -0
  156. package/project-template/skills/_shared/requirements.txt +1 -0
  157. package/project-template/skills/_shared/scripts/build-evidence-gate.mjs +87 -0
  158. package/project-template/skills/_shared/scripts/context-budget.mjs +215 -0
  159. package/project-template/skills/_shared/scripts/create-playable.mjs +140 -0
  160. package/project-template/skills/_shared/scripts/dev-start.mjs +151 -0
  161. package/project-template/skills/_shared/scripts/disclosure-config.mjs +480 -0
  162. package/project-template/skills/_shared/scripts/ensure-project.mjs +532 -0
  163. package/project-template/skills/_shared/scripts/gen-placeholder-audio.py +345 -0
  164. package/project-template/skills/_shared/scripts/gen-placeholder.py +244 -0
  165. package/project-template/skills/_shared/scripts/harness-smoke.mjs +257 -0
  166. package/project-template/skills/_shared/scripts/lib/validator-artifacts.mjs +129 -0
  167. package/project-template/skills/_shared/scripts/placeholder-pack-sheet.mjs +67 -0
  168. package/project-template/skills/_shared/scripts/placeholder_audio_lib.py +142 -0
  169. package/project-template/skills/_shared/scripts/placeholder_lib.py +993 -0
  170. package/project-template/skills/_shared/scripts/render-project-state.mjs +278 -0
  171. package/project-template/skills/_shared/scripts/ring-config.mjs +252 -0
  172. package/project-template/skills/_shared/scripts/skills-check.mjs +176 -0
  173. package/project-template/skills/_shared/scripts/slice-set.mjs +77 -0
  174. package/project-template/skills/_shared/scripts/state-advance-ring.mjs +63 -0
  175. package/project-template/skills/_shared/scripts/state-get.mjs +215 -0
  176. package/project-template/skills/_shared/scripts/state-handoff.mjs +120 -0
  177. package/project-template/skills/_shared/scripts/state-set.mjs +113 -0
  178. package/project-template/skills/_shared/scripts/state-store.mjs +893 -0
  179. package/project-template/skills/_shared/scripts/sync-template-skills.mjs +112 -0
  180. package/project-template/skills/_shared/scripts/verify-asset-code-sync.mjs +265 -0
  181. package/project-template/skills/_shared/scripts/verify-atom-conformance.mjs +181 -0
  182. package/project-template/skills/_shared/scripts/verify-env.mjs +285 -0
  183. package/project-template/skills/_shared/scripts/verify-placeholders.mjs +161 -0
  184. package/project-template/skills/_shared/scripts/workflow-doctor.mjs +348 -0
  185. package/project-template/skills/playable-animate/SKILL.md +52 -0
  186. package/project-template/skills/playable-animate/agents/openai.yaml +4 -0
  187. package/project-template/skills/playable-animate/references/board-refresh.md +30 -0
  188. package/project-template/skills/playable-animate/references/diagnosis-checklist.md +25 -0
  189. package/project-template/skills/playable-animate/references/entrance-sequencing.md +33 -0
  190. package/project-template/skills/playable-animate/references/interaction-timing.md +23 -0
  191. package/project-template/skills/playable-art/SKILL.md +203 -0
  192. package/project-template/skills/playable-art/agents/openai.yaml +4 -0
  193. package/project-template/skills/playable-art/references/alpha-postprocess.md +46 -0
  194. package/project-template/skills/playable-art/references/cta-art-spec.md +59 -0
  195. package/project-template/skills/playable-art/references/layout-proportions.md +30 -0
  196. package/project-template/skills/playable-art/references/prompt-patterns.md +83 -0
  197. package/project-template/skills/playable-art/references/reference-comparison.md +30 -0
  198. package/project-template/skills/playable-art/references/sheet-import-v2.md +91 -0
  199. package/project-template/skills/playable-art/scripts/build-atlas.py +332 -0
  200. package/project-template/skills/playable-art/scripts/chroma-key.py +50 -0
  201. package/project-template/skills/playable-art/scripts/extract-alpha-split.py +65 -0
  202. package/project-template/skills/playable-art/scripts/extract-dual-bg-alpha.py +118 -0
  203. package/project-template/skills/playable-art/scripts/import-gpt-art-sheets-v2.py +403 -0
  204. package/project-template/skills/playable-art/scripts/import-gpt-art-sheets.py +280 -0
  205. package/project-template/skills/playable-art/scripts/import-gpt-tile-sheet.py +114 -0
  206. package/project-template/skills/playable-art/scripts/import_gpt_art_pipeline.py +321 -0
  207. package/project-template/skills/playable-art/scripts/import_gpt_art_sheets_v2_test.py +126 -0
  208. package/project-template/skills/playable-art/scripts/placeholder_common.py +98 -0
  209. package/project-template/skills/playable-art/scripts/remove-bg.py +91 -0
  210. package/project-template/skills/playable-art/scripts/review-processed-assets.py +468 -0
  211. package/project-template/skills/playable-art/scripts/review_processed_assets_test.py +116 -0
  212. package/project-template/skills/playable-art/scripts/verify-alpha-clean.py +105 -0
  213. package/project-template/skills/playable-debug/SKILL.md +116 -0
  214. package/project-template/skills/playable-debug/agents/openai.yaml +4 -0
  215. package/project-template/skills/playable-debug/references/debug-config.md +40 -0
  216. package/project-template/skills/playable-focus/SKILL.md +148 -0
  217. package/project-template/skills/playable-focus/scripts/bootstrap-playground.mjs +84 -0
  218. package/project-template/skills/playable-focus/scripts/extract-focus-frames.mjs +87 -0
  219. package/project-template/skills/playable-focus/scripts/generate-focus-reports.mjs +121 -0
  220. package/project-template/skills/playable-focus/scripts/playground.mjs +390 -0
  221. package/project-template/skills/playable-focus/templates/focus-lab/frame.html +39 -0
  222. package/project-template/skills/playable-focus/templates/focus-lab/harness/clean-stage.js +114 -0
  223. package/project-template/skills/playable-focus/templates/focus-lab/harness/frame-lab-scene.js +94 -0
  224. package/project-template/skills/playable-focus/templates/focus-lab/harness/particle-lab-scene.js +224 -0
  225. package/project-template/skills/playable-focus/templates/focus-lab/model.html +16 -0
  226. package/project-template/skills/playable-focus/templates/focus-lab/particle.html +38 -0
  227. package/project-template/skills/playable-focus/templates/focus-lab/shatter.html +47 -0
  228. package/project-template/skills/playable-focus/templates/playground/registry.template.json +55 -0
  229. package/project-template/skills/playable-focus/templates/playground/vfx-catalog.template.json +280 -0
  230. package/project-template/skills/playable-fx-decompose/SKILL.md +212 -0
  231. package/project-template/skills/playable-fx-decompose/examples.md +89 -0
  232. package/project-template/skills/playable-fx-decompose/reference.md +201 -0
  233. package/project-template/skills/playable-fx-decompose/requirements.txt +2 -0
  234. package/project-template/skills/playable-fx-decompose/scripts/build-blank-tile-crack.py +192 -0
  235. package/project-template/skills/playable-fx-decompose/scripts/fix-shard-debris-frames.py +60 -0
  236. package/project-template/skills/playable-fx-decompose/scripts/generate-shard-debris.py +276 -0
  237. package/project-template/skills/playable-fx-peak/SKILL.md +237 -0
  238. package/project-template/skills/playable-fx-peak/requirements.txt +2 -0
  239. package/project-template/skills/playable-fx-peak/scripts/fix-frame-edges.py +70 -0
  240. package/project-template/skills/playable-fx-peak/scripts/repack-frame-sequence.py +526 -0
  241. package/project-template/skills/playable-fx-peak/scripts/validate-frame-anchors.py +130 -0
  242. package/project-template/skills/playable-placeholder/SKILL.md +239 -0
  243. package/project-template/skills/playable-record/SKILL.md +166 -0
  244. package/project-template/skills/playable-record/scripts/lib/build-artifact.mjs +92 -0
  245. package/project-template/skills/playable-record/scripts/lib/dev-server.mjs +104 -0
  246. package/project-template/skills/playable-record/scripts/lib/record-audio-bridge.js +141 -0
  247. package/project-template/skills/playable-record/scripts/lib/slice-structure-verify.mjs +199 -0
  248. package/project-template/skills/playable-record/scripts/record-playable.mjs +583 -0
  249. package/project-template/skills/playable-record/scripts/verify-build.mjs +185 -0
  250. package/project-template/skills/playable-record/scripts/verify-contract.mjs +261 -0
  251. package/project-template/skills/playable-record/scripts/verify-firstwin.mjs +398 -0
  252. package/project-template/skills/playable-record/scripts/verify-fusion.mjs +320 -0
  253. package/project-template/skills/playable-record/scripts/verify-lifecycle.mjs +78 -0
  254. package/project-template/skills/playable-record/scripts/verify-slice-artist.mjs +53 -0
  255. package/project-template/skills/playable-record/scripts/verify-slice-ta.mjs +53 -0
  256. package/project-template/skills/playable-record/scripts/verify-slice.mjs +142 -0
  257. package/project-template/skills/playable-record/scripts/verify-visual-ring.mjs +250 -0
  258. package/project-template/skills/playable-record/scripts/verify-visual-ring1.mjs +190 -0
  259. package/project-template/skills/playable-record/scripts/verify-vlm-video.mjs +227 -0
  260. package/project-template/skills/playable-validate/SKILL.md +260 -0
  261. package/project-template/skills/playable-validate/references/checklist-detail.md +36 -0
  262. package/project-template/skills/playable-validate/references/single-html-bundle.md +76 -0
  263. package/project-template/skills/playable-validate/validation-rules.md +200 -0
  264. package/project-template/skills/playable-verify-ui/SKILL.md +295 -0
  265. package/project-template/skills/playable-verify-ui/examples/asset-manifest.example.json +36 -0
  266. package/project-template/skills/playable-verify-ui/examples/mahjong-match.profile.yaml +334 -0
  267. package/project-template/skills/playable-verify-ui/profiles/template.profile.yaml +84 -0
  268. package/project-template/skills/playable-verify-ui/reference.md +165 -0
  269. package/project-template/skills/playable-verify-ui/references/phaser-patterns.md +67 -0
  270. package/project-template/skills/playable-verify-ui/references/scaling-decision-tree.md +51 -0
  271. package/project-template/skills/playable-verify-ui/requirements.txt +7 -0
  272. package/project-template/skills/playable-verify-ui/schema/asset-manifest.schema.json +68 -0
  273. package/project-template/skills/playable-verify-ui/schema/playable-ui-profile.schema.json +171 -0
  274. package/project-template/skills/playable-verify-ui/scripts/asset_manifest.py +231 -0
  275. package/project-template/skills/playable-verify-ui/scripts/lib/__init__.py +1 -0
  276. package/project-template/skills/playable-verify-ui/scripts/lib/config_expr.js +218 -0
  277. package/project-template/skills/playable-verify-ui/scripts/lib/node_utils.js +51 -0
  278. package/project-template/skills/playable-verify-ui/scripts/lib/profile_loader.py +59 -0
  279. package/project-template/skills/playable-verify-ui/scripts/lib/report.py +106 -0
  280. package/project-template/skills/playable-verify-ui/scripts/lib/runtime_contract.js +116 -0
  281. package/project-template/skills/playable-verify-ui/scripts/measure_frame_content.py +77 -0
  282. package/project-template/skills/playable-verify-ui/scripts/run_all.py +265 -0
  283. package/project-template/skills/playable-verify-ui/scripts/verify_asset_sizes.py +77 -0
  284. package/project-template/skills/playable-verify-ui/scripts/verify_assets_present.py +62 -0
  285. package/project-template/skills/playable-verify-ui/scripts/verify_atlas_budget.py +84 -0
  286. package/project-template/skills/playable-verify-ui/scripts/verify_atlas_frames.py +79 -0
  287. package/project-template/skills/playable-verify-ui/scripts/verify_bg_clean.py +365 -0
  288. package/project-template/skills/playable-verify-ui/scripts/verify_doc_asset_sync.py +90 -0
  289. package/project-template/skills/playable-verify-ui/scripts/verify_fetch_antipatterns.py +59 -0
  290. package/project-template/skills/playable-verify-ui/scripts/verify_game_config_load.js +54 -0
  291. package/project-template/skills/playable-verify-ui/scripts/verify_hardcoded_layout.js +64 -0
  292. package/project-template/skills/playable-verify-ui/scripts/verify_layout_regions.js +110 -0
  293. package/project-template/skills/playable-verify-ui/scripts/verify_profile_schema.py +37 -0
  294. package/project-template/skills/playable-verify-ui/scripts/verify_ring1_visual.py +211 -0
  295. package/project-template/skills/playable-verify-ui/scripts/verify_runtime_contract.js +58 -0
  296. package/project-template/skills/playable-verify-ui/scripts/verify_script_load_order.js +73 -0
  297. package/project-template/skills/playable-verify-ui/scripts/verify_slice_plan.py +238 -0
  298. package/project-template/skills/playable-verify-ui/scripts/verify_slice_plan_test.py +125 -0
  299. package/project-template/skills/playable-verify-ui/scripts/verify_text_overlap.py +333 -0
  300. package/project-template/skills/playable-verify-ui/scripts/verify_tile_consistency.py +323 -0
  301. package/project-template/skills/playable-verify-ui/scripts/verify_vision_evidence.py +894 -0
  302. package/project-template/skills/playable-verify-ui/scripts/verify_vision_evidence_test.py +122 -0
  303. package/project-template/skills/playable-verify-ui/scripts/verify_visual.py +422 -0
  304. package/project-template/templates/{designer-log.template.md → artist-log.template.md} +26 -31
  305. package/project-template/templates/atom-tree.template.json +133 -0
  306. package/project-template/templates/design-brief.template.md +59 -162
  307. package/project-template/templates/design-lens-checklist.reference.md +14 -14
  308. package/project-template/templates/design-methodology.md +25 -25
  309. package/project-template/templates/design.template.md +50 -0
  310. package/project-template/templates/developer-log.template.md +187 -63
  311. package/project-template/templates/five-axis-framework.md +89 -44
  312. package/project-template/templates/gen-placeholder-audio.template.mjs +63 -0
  313. package/project-template/templates/gen-placeholders.template.mjs +81 -0
  314. package/project-template/templates/intent-clarifications.template.md +7 -7
  315. package/project-template/templates/layout-spec.template.md +32 -20
  316. package/project-template/templates/plan.template.md +80 -0
  317. package/project-template/templates/project-state.template.md +90 -191
  318. package/project-template/templates/review-report.template.md +208 -24
  319. package/project-template/templates/style-exploration.template.md +8 -8
  320. package/project-template/templates/ta-log.template.md +58 -35
  321. package/project-template/tsconfig.json +20 -0
  322. package/project-template/vite.config.ts +27 -0
  323. package/project-templates/phaser/.claude/agents/artist.md +101 -0
  324. package/project-templates/phaser/.claude/agents/developer.md +123 -0
  325. package/project-templates/phaser/.claude/agents/game-designer.md +192 -0
  326. package/project-templates/phaser/.claude/agents/refs/README.md +77 -0
  327. package/project-templates/phaser/.claude/agents/refs/artist-art-style-catalog.md +533 -0
  328. package/project-templates/phaser/.claude/agents/refs/artist-color-audio-recipes.md +153 -0
  329. package/project-templates/phaser/.claude/agents/refs/artist-deliverable-spec.md +230 -0
  330. package/project-templates/phaser/.claude/agents/refs/artist-dimension-axis.md +27 -0
  331. package/project-templates/phaser/.claude/agents/refs/artist-handoff-v2-checklist.md +76 -0
  332. package/project-templates/phaser/.claude/agents/refs/artist-legacy-fallback.md +14 -0
  333. package/project-templates/phaser/.claude/agents/refs/artist-master-composite-recipes.md +208 -0
  334. package/project-templates/phaser/.claude/agents/refs/artist-style-exploration-flow.md +55 -0
  335. package/project-templates/phaser/.claude/agents/refs/developer-dev-handoff.md +152 -0
  336. package/project-templates/phaser/.claude/agents/refs/developer-impl-cookbook.md +432 -0
  337. package/project-templates/phaser/.claude/agents/refs/developer-legacy-fallback.md +15 -0
  338. package/project-templates/phaser/.claude/agents/refs/developer-phase1-flow.md +404 -0
  339. package/project-templates/phaser/.claude/agents/refs/framework-5-component-filter.md +252 -0
  340. package/project-templates/phaser/.claude/agents/refs/framework-game-feel-juice.md +266 -0
  341. package/project-templates/phaser/.claude/agents/refs/framework-mda.md +147 -0
  342. package/project-templates/phaser/.claude/agents/refs/game-designer-gameplay-sufficiency.md +123 -0
  343. package/project-templates/phaser/.claude/agents/refs/game-designer-legacy-fallback.md +15 -0
  344. package/project-templates/phaser/.claude/agents/refs/game-designer-workflow-detail.md +69 -0
  345. package/project-templates/phaser/.claude/agents/refs/implementation-plan-guide.md +309 -0
  346. package/project-templates/phaser/.claude/agents/refs/reviewer-convergence-eval.md +350 -0
  347. package/project-templates/phaser/.claude/agents/refs/reviewer-legacy-fallback.md +14 -0
  348. package/project-templates/phaser/.claude/agents/refs/reviewer-six-dimension-eval.md +6 -0
  349. package/project-templates/phaser/.claude/agents/refs/skill-selector-guide.md +465 -0
  350. package/project-templates/phaser/.claude/agents/refs/skill-value-layers.md +145 -0
  351. package/project-templates/phaser/.claude/agents/refs/storyboard-generation-guide.md +110 -0
  352. package/project-templates/phaser/.claude/agents/refs/ta-3d-flip-recipe.md +88 -0
  353. package/project-templates/phaser/.claude/agents/refs/ta-atlas-deliverable-standard.md +67 -0
  354. package/project-templates/phaser/.claude/agents/refs/ta-batch-pipeline-recipes.md +120 -0
  355. package/project-templates/phaser/.claude/agents/refs/ta-image-generation-detail.md +300 -0
  356. package/project-templates/phaser/.claude/agents/refs/ta-image-ops-reference.md +495 -0
  357. package/project-templates/phaser/.claude/agents/refs/ta-pipeline-cookbook.md +1141 -0
  358. package/project-templates/phaser/.claude/agents/refs/ta-tools-reference.md +111 -0
  359. package/project-templates/phaser/.claude/agents/refs/ta-vfx-preset-catalog.md +365 -0
  360. package/project-templates/phaser/.claude/agents/refs/technical-artist-legacy-fallback.md +14 -0
  361. package/project-templates/phaser/.claude/agents/reviewer.md +116 -0
  362. package/project-templates/phaser/.claude/agents/technical-artist.md +100 -0
  363. package/project-templates/phaser/.claude/hooks/README.md +120 -0
  364. package/project-templates/phaser/.claude/hooks/asr-coverage-validate.mjs +381 -0
  365. package/project-templates/phaser/.claude/hooks/block-developer-preflight.mjs +185 -0
  366. package/project-templates/phaser/.claude/hooks/block-ring1-tasklist.mjs +95 -0
  367. package/project-templates/phaser/.claude/hooks/gate-dispatcher.mjs +78 -0
  368. package/project-templates/phaser/.claude/hooks/gate-runner.mjs +557 -0
  369. package/project-templates/phaser/.claude/hooks/gate.mjs +171 -0
  370. package/project-templates/phaser/.claude/hooks/snapshot-milestone.mjs +247 -0
  371. package/project-templates/phaser/.claude/hooks/user-prompt.mjs +194 -0
  372. package/project-templates/phaser/.claude/hooks/validate-atom-tree-selection.mjs +281 -0
  373. package/project-templates/phaser/.claude/hooks/validate-workflow-stop.mjs +1889 -0
  374. package/project-templates/phaser/.claude/settings.json +81 -0
  375. package/project-templates/phaser/.claude/skills/brainstorming/SKILL.md +161 -0
  376. package/project-templates/phaser/.claude/skills/brainstorming/scripts/frame-template.html +270 -0
  377. package/project-templates/phaser/.claude/skills/brainstorming/scripts/helper.js +177 -0
  378. package/project-templates/phaser/.claude/skills/brainstorming/scripts/server.cjs +354 -0
  379. package/project-templates/phaser/.claude/skills/brainstorming/scripts/start-server.sh +148 -0
  380. package/project-templates/phaser/.claude/skills/brainstorming/scripts/stop-server.sh +56 -0
  381. package/project-templates/phaser/.claude/skills/brainstorming/scripts/wait-for-selection.sh +62 -0
  382. package/project-templates/phaser/.claude/skills/brainstorming/spec-document-reviewer-prompt.md +49 -0
  383. package/project-templates/phaser/.claude/skills/brainstorming/visual-companion.md +309 -0
  384. package/project-templates/phaser/.claude/skills/playcraft-ad-psychology/SKILL.md +182 -0
  385. package/project-templates/phaser/.claude/skills/playcraft-art-style-guide/SKILL.md +123 -0
  386. package/project-templates/phaser/.claude/skills/playcraft-asset-state-sheet/SKILL.md +205 -0
  387. package/project-templates/phaser/.claude/skills/playcraft-audio-generation/SKILL.md +280 -0
  388. package/project-templates/phaser/.claude/skills/playcraft-batch-pipeline/SKILL.md +184 -0
  389. package/project-templates/phaser/.claude/skills/playcraft-build-optimizer/SKILL.md +306 -0
  390. package/project-templates/phaser/.claude/skills/playcraft-image-generation/SKILL.md +298 -0
  391. package/project-templates/phaser/.claude/skills/playcraft-image-generation/reference/build-sprite-sheet.template.mjs +123 -0
  392. package/project-templates/phaser/.claude/skills/playcraft-image-generation/reference/compare-style.template.mjs +254 -0
  393. package/project-templates/phaser/.claude/skills/playcraft-image-generation/reference/gen-batch-sprite.template.mjs +324 -0
  394. package/project-templates/phaser/.claude/skills/playcraft-image-generation/reference/gen-batch.template.mjs +97 -0
  395. package/project-templates/phaser/.claude/skills/playcraft-image-generation/reference/gen-edit-variants.template.mjs +118 -0
  396. package/project-templates/phaser/.claude/skills/playcraft-image-generation/reference/process-batch.template.mjs +137 -0
  397. package/project-templates/phaser/.claude/skills/playcraft-image-generation/reference/prompt-cookbook.md +397 -0
  398. package/project-templates/phaser/.claude/skills/playcraft-image-generation/reference/validate-sprite-sheet.template.mjs +296 -0
  399. package/project-templates/phaser/.claude/skills/playcraft-image-ops/SKILL.md +122 -0
  400. package/project-templates/phaser/.claude/skills/playcraft-image-processing/SKILL.md +219 -0
  401. package/project-templates/phaser/.claude/skills/playcraft-masking/SKILL.md +373 -0
  402. package/project-templates/phaser/.claude/skills/playcraft-playable-optimization/SKILL.md +161 -0
  403. package/project-templates/phaser/.claude/skills/playcraft-research/SKILL.md +215 -0
  404. package/project-templates/phaser/.claude/skills/playcraft-skill-recommender/SKILL.md +331 -0
  405. package/project-templates/phaser/.claude/skills/playcraft-sprite-generation/SKILL.md +423 -0
  406. package/project-templates/phaser/.claude/skills/playcraft-sprite-remix/SKILL.md +158 -0
  407. package/project-templates/phaser/.claude/skills/playcraft-sprite-sheet/SKILL.md +100 -0
  408. package/project-templates/phaser/.claude/skills/playcraft-storyboard/SKILL.md +167 -0
  409. package/project-templates/phaser/.claude/skills/playcraft-style-qa/SKILL.md +270 -0
  410. package/project-templates/phaser/.claude/skills/playcraft-text-rendering/SKILL.md +236 -0
  411. package/project-templates/phaser/.claude/skills/playcraft-vfx-animation/SKILL.md +130 -0
  412. package/project-templates/phaser/.claude/skills/playwright-cli/SKILL.md +390 -0
  413. package/project-templates/phaser/.claude/skills/playwright-cli/references/element-attributes.md +23 -0
  414. package/project-templates/phaser/.claude/skills/playwright-cli/references/playwright-tests.md +39 -0
  415. package/project-templates/phaser/.claude/skills/playwright-cli/references/request-mocking.md +87 -0
  416. package/project-templates/phaser/.claude/skills/playwright-cli/references/running-code.md +240 -0
  417. package/project-templates/phaser/.claude/skills/playwright-cli/references/session-management.md +226 -0
  418. package/project-templates/phaser/.claude/skills/playwright-cli/references/spec-driven-testing.md +308 -0
  419. package/project-templates/phaser/.claude/skills/playwright-cli/references/storage-state.md +275 -0
  420. package/project-templates/phaser/.claude/skills/playwright-cli/references/test-generation.md +134 -0
  421. package/project-templates/phaser/.claude/skills/playwright-cli/references/tracing.md +142 -0
  422. package/project-templates/phaser/.claude/skills/playwright-cli/references/video-recording.md +153 -0
  423. package/project-templates/phaser/.claude/skills/session-analyzer/SKILL.md +386 -0
  424. package/project-templates/phaser/.claude/skills/session-analyzer/scripts/execution-breakdown.mjs +182 -0
  425. package/project-templates/phaser/.claude/skills/session-analyzer/scripts/find-turns.mjs +72 -0
  426. package/project-templates/phaser/.claude/skills/session-analyzer/scripts/heavy-output.mjs +121 -0
  427. package/project-templates/phaser/.claude/skills/session-analyzer/scripts/resolve-session.mjs +103 -0
  428. package/project-templates/phaser/.claude/skills/session-analyzer/scripts/subagent-stats.mjs +127 -0
  429. package/project-templates/phaser/.claude/skills/session-analyzer/scripts/subagent-tool-timeline.mjs +106 -0
  430. package/project-templates/phaser/.claude/skills/session-analyzer/scripts/time-gaps.mjs +128 -0
  431. package/project-templates/phaser/.claude/skills/session-analyzer/scripts/turn-timeline.mjs +67 -0
  432. package/project-templates/phaser/.claude/snapshot.mjs +257 -0
  433. package/project-templates/phaser/.cursor/hooks.json +17 -0
  434. package/project-templates/phaser/.cursor/rules/playcraft-orchestrator.mdc +142 -0
  435. package/project-templates/phaser/.cursor/rules/playcraft-subagent-boundary.mdc +29 -0
  436. package/project-templates/phaser/.playcraft-engine +1 -0
  437. package/project-templates/phaser/CHANGELOG.md +105 -0
  438. package/project-templates/phaser/CLAUDE.md +84 -0
  439. package/project-templates/phaser/assets/audio/bgm/.gitkeep +0 -0
  440. package/project-templates/phaser/assets/audio/sfx/.gitkeep +0 -0
  441. package/project-templates/phaser/assets/bundles/.gitkeep +0 -0
  442. package/project-templates/phaser/assets/images/bg/.gitkeep +0 -0
  443. package/project-templates/phaser/assets/images/reference/.gitkeep +0 -0
  444. package/project-templates/phaser/assets/images/storyboard/.gitkeep +0 -0
  445. package/project-templates/phaser/assets/images/tiles/.gitkeep +0 -0
  446. package/project-templates/phaser/assets/images/ui/.gitkeep +0 -0
  447. package/project-templates/phaser/assets/images/vfx/.gitkeep +0 -0
  448. package/project-templates/phaser/assets/models/.gitkeep +0 -0
  449. package/project-templates/phaser/docs/DESIGN.md +65 -0
  450. package/project-templates/phaser/docs/intent-clarifications.md +58 -0
  451. package/project-templates/phaser/docs/pipeline-overview.md +69 -0
  452. package/project-templates/phaser/docs/project-state.md +211 -0
  453. package/project-templates/phaser/docs/scaffold-manifest.md +10 -0
  454. package/project-templates/phaser/docs/team/agent-conduct.md +67 -0
  455. package/project-templates/phaser/docs/team/agent-runtime-matrix.md +80 -0
  456. package/project-templates/phaser/docs/team/atom-tree-format.md +114 -0
  457. package/project-templates/phaser/docs/team/collaboration.md +391 -0
  458. package/project-templates/phaser/docs/team/core-model.md +85 -0
  459. package/project-templates/phaser/docs/team/game-designer-migration-todo.md +8 -0
  460. package/project-templates/phaser/docs/team/harness-legacy-deprecation.md +23 -0
  461. package/project-templates/phaser/docs/team/platform-capabilities.md +18 -0
  462. package/project-templates/phaser/docs/team/workflow-changelog.md +137 -0
  463. package/project-templates/phaser/docs/team/workflow-consistency-checklist.md +240 -0
  464. package/project-templates/phaser/focus-lab/.gitkeep +0 -0
  465. package/project-templates/phaser/game/adapters/phaser.ts +52 -0
  466. package/project-templates/phaser/game/config/.gitkeep +0 -0
  467. package/project-templates/phaser/game/config/game-config.ts +46 -0
  468. package/project-templates/phaser/game/contract/publish.ts +141 -0
  469. package/project-templates/phaser/game/contract/types.ts +34 -0
  470. package/project-templates/phaser/game/gameplay/.gitkeep +0 -0
  471. package/project-templates/phaser/game/index.ts +81 -0
  472. package/project-templates/phaser/game/runtime-contract.ts +28 -0
  473. package/project-templates/phaser/game/scenes/.gitkeep +0 -0
  474. package/project-templates/phaser/globals.d.ts +51 -0
  475. package/project-templates/phaser/index.css +34 -0
  476. package/project-templates/phaser/index.html +18 -0
  477. package/project-templates/phaser/main.ts +9 -0
  478. package/project-templates/phaser/package.json +79 -0
  479. package/project-templates/phaser/skills/README.md +52 -0
  480. package/project-templates/phaser/skills/_shared/agent-prep.md +136 -0
  481. package/project-templates/phaser/skills/_shared/requirements.txt +1 -0
  482. package/project-templates/phaser/skills/_shared/scripts/build-evidence-gate.mjs +87 -0
  483. package/project-templates/phaser/skills/_shared/scripts/context-budget.mjs +215 -0
  484. package/project-templates/phaser/skills/_shared/scripts/create-playable.mjs +140 -0
  485. package/project-templates/phaser/skills/_shared/scripts/dev-start.mjs +151 -0
  486. package/project-templates/phaser/skills/_shared/scripts/disclosure-config.mjs +480 -0
  487. package/project-templates/phaser/skills/_shared/scripts/ensure-project.mjs +532 -0
  488. package/project-templates/phaser/skills/_shared/scripts/gen-placeholder-audio.py +345 -0
  489. package/project-templates/phaser/skills/_shared/scripts/gen-placeholder.py +244 -0
  490. package/project-templates/phaser/skills/_shared/scripts/harness-smoke.mjs +257 -0
  491. package/project-templates/phaser/skills/_shared/scripts/lib/validator-artifacts.mjs +129 -0
  492. package/project-templates/phaser/skills/_shared/scripts/placeholder-pack-sheet.mjs +67 -0
  493. package/project-templates/phaser/skills/_shared/scripts/placeholder_audio_lib.py +142 -0
  494. package/project-templates/phaser/skills/_shared/scripts/placeholder_lib.py +993 -0
  495. package/project-templates/phaser/skills/_shared/scripts/render-project-state.mjs +278 -0
  496. package/project-templates/phaser/skills/_shared/scripts/ring-config.mjs +252 -0
  497. package/project-templates/phaser/skills/_shared/scripts/skills-check.mjs +176 -0
  498. package/project-templates/phaser/skills/_shared/scripts/slice-set.mjs +77 -0
  499. package/project-templates/phaser/skills/_shared/scripts/state-advance-ring.mjs +63 -0
  500. package/project-templates/phaser/skills/_shared/scripts/state-get.mjs +215 -0
  501. package/project-templates/phaser/skills/_shared/scripts/state-handoff.mjs +120 -0
  502. package/project-templates/phaser/skills/_shared/scripts/state-set.mjs +113 -0
  503. package/project-templates/phaser/skills/_shared/scripts/state-store.mjs +893 -0
  504. package/project-templates/phaser/skills/_shared/scripts/sync-template-skills.mjs +112 -0
  505. package/project-templates/phaser/skills/_shared/scripts/verify-asset-code-sync.mjs +265 -0
  506. package/project-templates/phaser/skills/_shared/scripts/verify-atom-conformance.mjs +181 -0
  507. package/project-templates/phaser/skills/_shared/scripts/verify-env.mjs +285 -0
  508. package/project-templates/phaser/skills/_shared/scripts/verify-placeholders.mjs +161 -0
  509. package/project-templates/phaser/skills/_shared/scripts/workflow-doctor.mjs +348 -0
  510. package/project-templates/phaser/skills/playable-animate/SKILL.md +52 -0
  511. package/project-templates/phaser/skills/playable-animate/agents/openai.yaml +4 -0
  512. package/project-templates/phaser/skills/playable-animate/references/board-refresh.md +30 -0
  513. package/project-templates/phaser/skills/playable-animate/references/diagnosis-checklist.md +25 -0
  514. package/project-templates/phaser/skills/playable-animate/references/entrance-sequencing.md +33 -0
  515. package/project-templates/phaser/skills/playable-animate/references/interaction-timing.md +23 -0
  516. package/project-templates/phaser/skills/playable-art/SKILL.md +203 -0
  517. package/project-templates/phaser/skills/playable-art/agents/openai.yaml +4 -0
  518. package/project-templates/phaser/skills/playable-art/references/alpha-postprocess.md +46 -0
  519. package/project-templates/phaser/skills/playable-art/references/cta-art-spec.md +59 -0
  520. package/project-templates/phaser/skills/playable-art/references/layout-proportions.md +30 -0
  521. package/project-templates/phaser/skills/playable-art/references/prompt-patterns.md +83 -0
  522. package/project-templates/phaser/skills/playable-art/references/reference-comparison.md +30 -0
  523. package/project-templates/phaser/skills/playable-art/references/sheet-import-v2.md +91 -0
  524. package/project-templates/phaser/skills/playable-art/scripts/build-atlas.py +332 -0
  525. package/project-templates/phaser/skills/playable-art/scripts/chroma-key.py +50 -0
  526. package/project-templates/phaser/skills/playable-art/scripts/extract-alpha-split.py +65 -0
  527. package/project-templates/phaser/skills/playable-art/scripts/extract-dual-bg-alpha.py +118 -0
  528. package/project-templates/phaser/skills/playable-art/scripts/import-gpt-art-sheets-v2.py +403 -0
  529. package/project-templates/phaser/skills/playable-art/scripts/import-gpt-art-sheets.py +280 -0
  530. package/project-templates/phaser/skills/playable-art/scripts/import-gpt-tile-sheet.py +114 -0
  531. package/project-templates/phaser/skills/playable-art/scripts/import_gpt_art_pipeline.py +321 -0
  532. package/project-templates/phaser/skills/playable-art/scripts/import_gpt_art_sheets_v2_test.py +126 -0
  533. package/project-templates/phaser/skills/playable-art/scripts/placeholder_common.py +98 -0
  534. package/project-templates/phaser/skills/playable-art/scripts/remove-bg.py +91 -0
  535. package/project-templates/phaser/skills/playable-art/scripts/review-processed-assets.py +468 -0
  536. package/project-templates/phaser/skills/playable-art/scripts/review_processed_assets_test.py +116 -0
  537. package/project-templates/phaser/skills/playable-art/scripts/verify-alpha-clean.py +105 -0
  538. package/project-templates/phaser/skills/playable-debug/SKILL.md +116 -0
  539. package/project-templates/phaser/skills/playable-debug/agents/openai.yaml +4 -0
  540. package/project-templates/phaser/skills/playable-debug/references/debug-config.md +40 -0
  541. package/project-templates/phaser/skills/playable-focus/SKILL.md +148 -0
  542. package/project-templates/phaser/skills/playable-focus/scripts/bootstrap-playground.mjs +84 -0
  543. package/project-templates/phaser/skills/playable-focus/scripts/extract-focus-frames.mjs +87 -0
  544. package/project-templates/phaser/skills/playable-focus/scripts/generate-focus-reports.mjs +121 -0
  545. package/project-templates/phaser/skills/playable-focus/scripts/playground.mjs +390 -0
  546. package/project-templates/phaser/skills/playable-focus/templates/focus-lab/frame.html +39 -0
  547. package/project-templates/phaser/skills/playable-focus/templates/focus-lab/harness/clean-stage.js +114 -0
  548. package/project-templates/phaser/skills/playable-focus/templates/focus-lab/harness/frame-lab-scene.js +94 -0
  549. package/project-templates/phaser/skills/playable-focus/templates/focus-lab/harness/particle-lab-scene.js +224 -0
  550. package/project-templates/phaser/skills/playable-focus/templates/focus-lab/model.html +16 -0
  551. package/project-templates/phaser/skills/playable-focus/templates/focus-lab/particle.html +38 -0
  552. package/project-templates/phaser/skills/playable-focus/templates/focus-lab/shatter.html +47 -0
  553. package/project-templates/phaser/skills/playable-fx-decompose/SKILL.md +212 -0
  554. package/project-templates/phaser/skills/playable-fx-decompose/examples.md +89 -0
  555. package/project-templates/phaser/skills/playable-fx-decompose/reference.md +201 -0
  556. package/project-templates/phaser/skills/playable-fx-decompose/requirements.txt +2 -0
  557. package/project-templates/phaser/skills/playable-fx-decompose/scripts/build-blank-tile-crack.py +192 -0
  558. package/project-templates/phaser/skills/playable-fx-decompose/scripts/fix-shard-debris-frames.py +60 -0
  559. package/project-templates/phaser/skills/playable-fx-decompose/scripts/generate-shard-debris.py +276 -0
  560. package/project-templates/phaser/skills/playable-fx-peak/SKILL.md +237 -0
  561. package/project-templates/phaser/skills/playable-fx-peak/requirements.txt +2 -0
  562. package/project-templates/phaser/skills/playable-fx-peak/scripts/fix-frame-edges.py +70 -0
  563. package/project-templates/phaser/skills/playable-fx-peak/scripts/repack-frame-sequence.py +526 -0
  564. package/project-templates/phaser/skills/playable-fx-peak/scripts/validate-frame-anchors.py +130 -0
  565. package/project-templates/phaser/skills/playable-placeholder/SKILL.md +239 -0
  566. package/project-templates/phaser/skills/playable-record/SKILL.md +166 -0
  567. package/project-templates/phaser/skills/playable-record/scripts/lib/build-artifact.mjs +92 -0
  568. package/project-templates/phaser/skills/playable-record/scripts/lib/dev-server.mjs +104 -0
  569. package/project-templates/phaser/skills/playable-record/scripts/lib/record-audio-bridge.js +141 -0
  570. package/project-templates/phaser/skills/playable-record/scripts/lib/slice-structure-verify.mjs +199 -0
  571. package/project-templates/phaser/skills/playable-record/scripts/record-playable.mjs +583 -0
  572. package/project-templates/phaser/skills/playable-record/scripts/verify-build.mjs +185 -0
  573. package/project-templates/phaser/skills/playable-record/scripts/verify-contract.mjs +261 -0
  574. package/project-templates/phaser/skills/playable-record/scripts/verify-firstwin.mjs +398 -0
  575. package/project-templates/phaser/skills/playable-record/scripts/verify-fusion.mjs +320 -0
  576. package/project-templates/phaser/skills/playable-record/scripts/verify-lifecycle.mjs +78 -0
  577. package/project-templates/phaser/skills/playable-record/scripts/verify-slice-artist.mjs +53 -0
  578. package/project-templates/phaser/skills/playable-record/scripts/verify-slice-ta.mjs +53 -0
  579. package/project-templates/phaser/skills/playable-record/scripts/verify-slice.mjs +142 -0
  580. package/project-templates/phaser/skills/playable-record/scripts/verify-visual-ring.mjs +250 -0
  581. package/project-templates/phaser/skills/playable-record/scripts/verify-visual-ring1.mjs +190 -0
  582. package/project-templates/phaser/skills/playable-record/scripts/verify-vlm-video.mjs +227 -0
  583. package/project-templates/phaser/skills/playable-validate/SKILL.md +260 -0
  584. package/project-templates/phaser/skills/playable-validate/references/checklist-detail.md +36 -0
  585. package/project-templates/phaser/skills/playable-validate/references/single-html-bundle.md +76 -0
  586. package/project-templates/phaser/skills/playable-validate/validation-rules.md +200 -0
  587. package/project-templates/phaser/skills/playable-verify-ui/SKILL.md +295 -0
  588. package/project-templates/phaser/skills/playable-verify-ui/examples/asset-manifest.example.json +36 -0
  589. package/project-templates/phaser/skills/playable-verify-ui/examples/mahjong-match.profile.yaml +334 -0
  590. package/project-templates/phaser/skills/playable-verify-ui/profiles/template.profile.yaml +84 -0
  591. package/project-templates/phaser/skills/playable-verify-ui/reference.md +165 -0
  592. package/project-templates/phaser/skills/playable-verify-ui/references/phaser-patterns.md +67 -0
  593. package/project-templates/phaser/skills/playable-verify-ui/references/scaling-decision-tree.md +51 -0
  594. package/project-templates/phaser/skills/playable-verify-ui/requirements.txt +7 -0
  595. package/project-templates/phaser/skills/playable-verify-ui/schema/asset-manifest.schema.json +68 -0
  596. package/project-templates/phaser/skills/playable-verify-ui/schema/playable-ui-profile.schema.json +171 -0
  597. package/project-templates/phaser/skills/playable-verify-ui/scripts/asset_manifest.py +231 -0
  598. package/project-templates/phaser/skills/playable-verify-ui/scripts/lib/__init__.py +1 -0
  599. package/project-templates/phaser/skills/playable-verify-ui/scripts/lib/config_expr.js +218 -0
  600. package/project-templates/phaser/skills/playable-verify-ui/scripts/lib/node_utils.js +51 -0
  601. package/project-templates/phaser/skills/playable-verify-ui/scripts/lib/profile_loader.py +59 -0
  602. package/project-templates/phaser/skills/playable-verify-ui/scripts/lib/report.py +106 -0
  603. package/project-templates/phaser/skills/playable-verify-ui/scripts/lib/runtime_contract.js +116 -0
  604. package/project-templates/phaser/skills/playable-verify-ui/scripts/measure_frame_content.py +77 -0
  605. package/project-templates/phaser/skills/playable-verify-ui/scripts/run_all.py +265 -0
  606. package/project-templates/phaser/skills/playable-verify-ui/scripts/verify_asset_sizes.py +77 -0
  607. package/project-templates/phaser/skills/playable-verify-ui/scripts/verify_assets_present.py +62 -0
  608. package/project-templates/phaser/skills/playable-verify-ui/scripts/verify_atlas_budget.py +84 -0
  609. package/project-templates/phaser/skills/playable-verify-ui/scripts/verify_atlas_frames.py +79 -0
  610. package/project-templates/phaser/skills/playable-verify-ui/scripts/verify_bg_clean.py +365 -0
  611. package/project-templates/phaser/skills/playable-verify-ui/scripts/verify_doc_asset_sync.py +90 -0
  612. package/project-templates/phaser/skills/playable-verify-ui/scripts/verify_fetch_antipatterns.py +59 -0
  613. package/project-templates/phaser/skills/playable-verify-ui/scripts/verify_game_config_load.js +54 -0
  614. package/project-templates/phaser/skills/playable-verify-ui/scripts/verify_hardcoded_layout.js +64 -0
  615. package/project-templates/phaser/skills/playable-verify-ui/scripts/verify_layout_regions.js +110 -0
  616. package/project-templates/phaser/skills/playable-verify-ui/scripts/verify_profile_schema.py +37 -0
  617. package/project-templates/phaser/skills/playable-verify-ui/scripts/verify_ring1_visual.py +211 -0
  618. package/project-templates/phaser/skills/playable-verify-ui/scripts/verify_runtime_contract.js +58 -0
  619. package/project-templates/phaser/skills/playable-verify-ui/scripts/verify_script_load_order.js +73 -0
  620. package/project-templates/phaser/skills/playable-verify-ui/scripts/verify_slice_plan.py +238 -0
  621. package/project-templates/phaser/skills/playable-verify-ui/scripts/verify_slice_plan_test.py +125 -0
  622. package/project-templates/phaser/skills/playable-verify-ui/scripts/verify_text_overlap.py +333 -0
  623. package/project-templates/phaser/skills/playable-verify-ui/scripts/verify_tile_consistency.py +323 -0
  624. package/project-templates/phaser/skills/playable-verify-ui/scripts/verify_vision_evidence.py +894 -0
  625. package/project-templates/phaser/skills/playable-verify-ui/scripts/verify_vision_evidence_test.py +122 -0
  626. package/project-templates/phaser/skills/playable-verify-ui/scripts/verify_visual.py +422 -0
  627. package/project-templates/phaser/ta-workspace/scripts/.gitkeep +0 -0
  628. package/project-templates/phaser/templates/artist-log.template.md +182 -0
  629. package/project-templates/phaser/templates/atom-tree.template.json +133 -0
  630. package/project-templates/phaser/templates/design-brief.template.md +92 -0
  631. package/project-templates/phaser/templates/design-lens-checklist.reference.md +117 -0
  632. package/project-templates/phaser/templates/design-methodology.md +99 -0
  633. package/project-templates/phaser/templates/design.template.md +50 -0
  634. package/project-templates/phaser/templates/developer-log.template.md +258 -0
  635. package/project-templates/phaser/templates/five-axis-framework.md +194 -0
  636. package/project-templates/phaser/templates/gen-placeholder-audio.template.mjs +63 -0
  637. package/project-templates/phaser/templates/gen-placeholders.template.mjs +81 -0
  638. package/project-templates/phaser/templates/intent-clarifications.template.md +58 -0
  639. package/project-templates/phaser/templates/layout-spec.template.md +198 -0
  640. package/project-templates/phaser/templates/plan.template.md +80 -0
  641. package/project-templates/phaser/templates/project-state.template.md +136 -0
  642. package/project-templates/phaser/templates/review-report.template.md +275 -0
  643. package/project-templates/phaser/templates/style-exploration.template.md +93 -0
  644. package/project-templates/phaser/templates/ta-log.template.md +394 -0
  645. package/project-templates/phaser/tsconfig.json +20 -0
  646. package/project-templates/phaser/vite.config.ts +27 -0
  647. package/project-templates/threejs/.claude/agents/artist.md +101 -0
  648. package/project-templates/threejs/.claude/agents/developer.md +123 -0
  649. package/project-templates/threejs/.claude/agents/game-designer.md +192 -0
  650. package/project-templates/threejs/.claude/agents/refs/README.md +77 -0
  651. package/project-templates/threejs/.claude/agents/refs/artist-art-style-catalog.md +533 -0
  652. package/project-templates/threejs/.claude/agents/refs/artist-color-audio-recipes.md +153 -0
  653. package/project-templates/threejs/.claude/agents/refs/artist-deliverable-spec.md +230 -0
  654. package/project-templates/threejs/.claude/agents/refs/artist-dimension-axis.md +27 -0
  655. package/project-templates/threejs/.claude/agents/refs/artist-handoff-v2-checklist.md +76 -0
  656. package/project-templates/threejs/.claude/agents/refs/artist-legacy-fallback.md +14 -0
  657. package/project-templates/threejs/.claude/agents/refs/artist-master-composite-recipes.md +208 -0
  658. package/project-templates/threejs/.claude/agents/refs/artist-style-exploration-flow.md +55 -0
  659. package/project-templates/threejs/.claude/agents/refs/developer-dev-handoff.md +152 -0
  660. package/project-templates/threejs/.claude/agents/refs/developer-impl-cookbook.md +432 -0
  661. package/project-templates/threejs/.claude/agents/refs/developer-legacy-fallback.md +15 -0
  662. package/project-templates/threejs/.claude/agents/refs/developer-phase1-flow.md +404 -0
  663. package/project-templates/threejs/.claude/agents/refs/framework-5-component-filter.md +252 -0
  664. package/project-templates/threejs/.claude/agents/refs/framework-game-feel-juice.md +266 -0
  665. package/project-templates/threejs/.claude/agents/refs/framework-mda.md +147 -0
  666. package/project-templates/threejs/.claude/agents/refs/game-designer-gameplay-sufficiency.md +123 -0
  667. package/project-templates/threejs/.claude/agents/refs/game-designer-legacy-fallback.md +15 -0
  668. package/project-templates/threejs/.claude/agents/refs/game-designer-workflow-detail.md +69 -0
  669. package/project-templates/threejs/.claude/agents/refs/implementation-plan-guide.md +309 -0
  670. package/project-templates/threejs/.claude/agents/refs/reviewer-convergence-eval.md +350 -0
  671. package/project-templates/threejs/.claude/agents/refs/reviewer-legacy-fallback.md +14 -0
  672. package/project-templates/threejs/.claude/agents/refs/reviewer-six-dimension-eval.md +6 -0
  673. package/project-templates/threejs/.claude/agents/refs/skill-selector-guide.md +465 -0
  674. package/project-templates/threejs/.claude/agents/refs/skill-value-layers.md +145 -0
  675. package/project-templates/threejs/.claude/agents/refs/storyboard-generation-guide.md +110 -0
  676. package/project-templates/threejs/.claude/agents/refs/ta-3d-flip-recipe.md +88 -0
  677. package/project-templates/threejs/.claude/agents/refs/ta-atlas-deliverable-standard.md +67 -0
  678. package/project-templates/threejs/.claude/agents/refs/ta-batch-pipeline-recipes.md +120 -0
  679. package/project-templates/threejs/.claude/agents/refs/ta-image-generation-detail.md +300 -0
  680. package/project-templates/threejs/.claude/agents/refs/ta-image-ops-reference.md +495 -0
  681. package/project-templates/threejs/.claude/agents/refs/ta-pipeline-cookbook.md +1141 -0
  682. package/project-templates/threejs/.claude/agents/refs/ta-tools-reference.md +111 -0
  683. package/project-templates/threejs/.claude/agents/refs/ta-vfx-preset-catalog.md +365 -0
  684. package/project-templates/threejs/.claude/agents/refs/technical-artist-legacy-fallback.md +14 -0
  685. package/project-templates/threejs/.claude/agents/reviewer.md +116 -0
  686. package/project-templates/threejs/.claude/agents/technical-artist.md +100 -0
  687. package/project-templates/threejs/.claude/hooks/README.md +120 -0
  688. package/project-templates/threejs/.claude/hooks/asr-coverage-validate.mjs +381 -0
  689. package/project-templates/threejs/.claude/hooks/block-developer-preflight.mjs +185 -0
  690. package/project-templates/threejs/.claude/hooks/block-ring1-tasklist.mjs +95 -0
  691. package/project-templates/threejs/.claude/hooks/gate-dispatcher.mjs +78 -0
  692. package/project-templates/threejs/.claude/hooks/gate-runner.mjs +557 -0
  693. package/project-templates/threejs/.claude/hooks/gate.mjs +171 -0
  694. package/project-templates/threejs/.claude/hooks/snapshot-milestone.mjs +247 -0
  695. package/project-templates/threejs/.claude/hooks/user-prompt.mjs +194 -0
  696. package/project-templates/threejs/.claude/hooks/validate-atom-tree-selection.mjs +281 -0
  697. package/project-templates/threejs/.claude/hooks/validate-workflow-stop.mjs +1889 -0
  698. package/project-templates/threejs/.claude/settings.json +81 -0
  699. package/project-templates/threejs/.claude/skills/brainstorming/SKILL.md +161 -0
  700. package/project-templates/threejs/.claude/skills/brainstorming/scripts/frame-template.html +270 -0
  701. package/project-templates/threejs/.claude/skills/brainstorming/scripts/helper.js +177 -0
  702. package/project-templates/threejs/.claude/skills/brainstorming/scripts/server.cjs +354 -0
  703. package/project-templates/threejs/.claude/skills/brainstorming/scripts/start-server.sh +148 -0
  704. package/project-templates/threejs/.claude/skills/brainstorming/scripts/stop-server.sh +56 -0
  705. package/project-templates/threejs/.claude/skills/brainstorming/scripts/wait-for-selection.sh +62 -0
  706. package/project-templates/threejs/.claude/skills/brainstorming/spec-document-reviewer-prompt.md +49 -0
  707. package/project-templates/threejs/.claude/skills/brainstorming/visual-companion.md +309 -0
  708. package/project-templates/threejs/.claude/skills/playcraft-ad-psychology/SKILL.md +182 -0
  709. package/project-templates/threejs/.claude/skills/playcraft-art-style-guide/SKILL.md +123 -0
  710. package/project-templates/threejs/.claude/skills/playcraft-asset-state-sheet/SKILL.md +205 -0
  711. package/project-templates/threejs/.claude/skills/playcraft-audio-generation/SKILL.md +280 -0
  712. package/project-templates/threejs/.claude/skills/playcraft-batch-pipeline/SKILL.md +184 -0
  713. package/project-templates/threejs/.claude/skills/playcraft-build-optimizer/SKILL.md +306 -0
  714. package/project-templates/threejs/.claude/skills/playcraft-image-generation/SKILL.md +298 -0
  715. package/project-templates/threejs/.claude/skills/playcraft-image-generation/reference/build-sprite-sheet.template.mjs +123 -0
  716. package/project-templates/threejs/.claude/skills/playcraft-image-generation/reference/compare-style.template.mjs +254 -0
  717. package/project-templates/threejs/.claude/skills/playcraft-image-generation/reference/gen-batch-sprite.template.mjs +324 -0
  718. package/project-templates/threejs/.claude/skills/playcraft-image-generation/reference/gen-batch.template.mjs +97 -0
  719. package/project-templates/threejs/.claude/skills/playcraft-image-generation/reference/gen-edit-variants.template.mjs +118 -0
  720. package/project-templates/threejs/.claude/skills/playcraft-image-generation/reference/process-batch.template.mjs +137 -0
  721. package/project-templates/threejs/.claude/skills/playcraft-image-generation/reference/prompt-cookbook.md +397 -0
  722. package/project-templates/threejs/.claude/skills/playcraft-image-generation/reference/validate-sprite-sheet.template.mjs +296 -0
  723. package/project-templates/threejs/.claude/skills/playcraft-image-ops/SKILL.md +122 -0
  724. package/project-templates/threejs/.claude/skills/playcraft-image-processing/SKILL.md +219 -0
  725. package/project-templates/threejs/.claude/skills/playcraft-masking/SKILL.md +373 -0
  726. package/project-templates/threejs/.claude/skills/playcraft-playable-optimization/SKILL.md +161 -0
  727. package/project-templates/threejs/.claude/skills/playcraft-research/SKILL.md +215 -0
  728. package/project-templates/threejs/.claude/skills/playcraft-skill-recommender/SKILL.md +331 -0
  729. package/project-templates/threejs/.claude/skills/playcraft-sprite-generation/SKILL.md +423 -0
  730. package/project-templates/threejs/.claude/skills/playcraft-sprite-remix/SKILL.md +158 -0
  731. package/project-templates/threejs/.claude/skills/playcraft-sprite-sheet/SKILL.md +100 -0
  732. package/project-templates/threejs/.claude/skills/playcraft-storyboard/SKILL.md +167 -0
  733. package/project-templates/threejs/.claude/skills/playcraft-style-qa/SKILL.md +270 -0
  734. package/project-templates/threejs/.claude/skills/playcraft-text-rendering/SKILL.md +236 -0
  735. package/project-templates/threejs/.claude/skills/playcraft-vfx-animation/SKILL.md +130 -0
  736. package/project-templates/threejs/.claude/skills/playwright-cli/SKILL.md +390 -0
  737. package/project-templates/threejs/.claude/skills/playwright-cli/references/element-attributes.md +23 -0
  738. package/project-templates/threejs/.claude/skills/playwright-cli/references/playwright-tests.md +39 -0
  739. package/project-templates/threejs/.claude/skills/playwright-cli/references/request-mocking.md +87 -0
  740. package/project-templates/threejs/.claude/skills/playwright-cli/references/running-code.md +240 -0
  741. package/project-templates/threejs/.claude/skills/playwright-cli/references/session-management.md +226 -0
  742. package/project-templates/threejs/.claude/skills/playwright-cli/references/spec-driven-testing.md +308 -0
  743. package/project-templates/threejs/.claude/skills/playwright-cli/references/storage-state.md +275 -0
  744. package/project-templates/threejs/.claude/skills/playwright-cli/references/test-generation.md +134 -0
  745. package/project-templates/threejs/.claude/skills/playwright-cli/references/tracing.md +142 -0
  746. package/project-templates/threejs/.claude/skills/playwright-cli/references/video-recording.md +153 -0
  747. package/project-templates/threejs/.claude/skills/session-analyzer/SKILL.md +386 -0
  748. package/project-templates/threejs/.claude/skills/session-analyzer/scripts/execution-breakdown.mjs +182 -0
  749. package/project-templates/threejs/.claude/skills/session-analyzer/scripts/find-turns.mjs +72 -0
  750. package/project-templates/threejs/.claude/skills/session-analyzer/scripts/heavy-output.mjs +121 -0
  751. package/project-templates/threejs/.claude/skills/session-analyzer/scripts/resolve-session.mjs +103 -0
  752. package/project-templates/threejs/.claude/skills/session-analyzer/scripts/subagent-stats.mjs +127 -0
  753. package/project-templates/threejs/.claude/skills/session-analyzer/scripts/subagent-tool-timeline.mjs +106 -0
  754. package/project-templates/threejs/.claude/skills/session-analyzer/scripts/time-gaps.mjs +128 -0
  755. package/project-templates/threejs/.claude/skills/session-analyzer/scripts/turn-timeline.mjs +67 -0
  756. package/project-templates/threejs/.claude/snapshot.mjs +257 -0
  757. package/project-templates/threejs/.cursor/hooks.json +17 -0
  758. package/project-templates/threejs/.cursor/rules/playcraft-orchestrator.mdc +142 -0
  759. package/project-templates/threejs/.cursor/rules/playcraft-subagent-boundary.mdc +29 -0
  760. package/project-templates/threejs/.playcraft-engine +1 -0
  761. package/project-templates/threejs/CHANGELOG.md +105 -0
  762. package/project-templates/threejs/CLAUDE.md +84 -0
  763. package/project-templates/threejs/assets/audio/bgm/.gitkeep +0 -0
  764. package/project-templates/threejs/assets/audio/sfx/.gitkeep +0 -0
  765. package/project-templates/threejs/assets/bundles/.gitkeep +0 -0
  766. package/project-templates/threejs/assets/images/bg/.gitkeep +0 -0
  767. package/project-templates/threejs/assets/images/reference/.gitkeep +0 -0
  768. package/project-templates/threejs/assets/images/storyboard/.gitkeep +0 -0
  769. package/project-templates/threejs/assets/images/tiles/.gitkeep +0 -0
  770. package/project-templates/threejs/assets/images/ui/.gitkeep +0 -0
  771. package/project-templates/threejs/assets/images/vfx/.gitkeep +0 -0
  772. package/project-templates/threejs/assets/models/.gitkeep +0 -0
  773. package/project-templates/threejs/docs/DESIGN.md +65 -0
  774. package/project-templates/threejs/docs/intent-clarifications.md +58 -0
  775. package/project-templates/threejs/docs/pipeline-overview.md +69 -0
  776. package/project-templates/threejs/docs/project-state.md +211 -0
  777. package/project-templates/threejs/docs/scaffold-manifest.md +10 -0
  778. package/project-templates/threejs/docs/team/agent-conduct.md +67 -0
  779. package/project-templates/threejs/docs/team/agent-runtime-matrix.md +80 -0
  780. package/project-templates/threejs/docs/team/atom-tree-format.md +114 -0
  781. package/project-templates/threejs/docs/team/collaboration.md +391 -0
  782. package/project-templates/threejs/docs/team/core-model.md +85 -0
  783. package/project-templates/threejs/docs/team/game-designer-migration-todo.md +8 -0
  784. package/project-templates/threejs/docs/team/harness-legacy-deprecation.md +23 -0
  785. package/project-templates/threejs/docs/team/platform-capabilities.md +18 -0
  786. package/project-templates/threejs/docs/team/workflow-changelog.md +137 -0
  787. package/project-templates/threejs/docs/team/workflow-consistency-checklist.md +240 -0
  788. package/project-templates/threejs/focus-lab/.gitkeep +0 -0
  789. package/project-templates/threejs/game/config/.gitkeep +0 -0
  790. package/project-templates/threejs/game/config/game-config.ts +46 -0
  791. package/project-templates/threejs/game/contract/publish.ts +141 -0
  792. package/project-templates/threejs/game/contract/types.ts +34 -0
  793. package/project-templates/threejs/game/gameplay/.gitkeep +0 -0
  794. package/project-templates/threejs/game/index.ts +76 -0
  795. package/project-templates/threejs/game/runtime-contract.ts +15 -0
  796. package/project-templates/threejs/game/scenes/.gitkeep +0 -0
  797. package/project-templates/threejs/globals.d.ts +51 -0
  798. package/project-templates/threejs/index.css +34 -0
  799. package/project-templates/threejs/index.html +18 -0
  800. package/project-templates/threejs/main.ts +9 -0
  801. package/project-templates/threejs/package.json +79 -0
  802. package/project-templates/threejs/skills/README.md +52 -0
  803. package/project-templates/threejs/skills/_shared/agent-prep.md +136 -0
  804. package/project-templates/threejs/skills/_shared/requirements.txt +1 -0
  805. package/project-templates/threejs/skills/_shared/scripts/build-evidence-gate.mjs +87 -0
  806. package/project-templates/threejs/skills/_shared/scripts/context-budget.mjs +215 -0
  807. package/project-templates/threejs/skills/_shared/scripts/create-playable.mjs +140 -0
  808. package/project-templates/threejs/skills/_shared/scripts/dev-start.mjs +151 -0
  809. package/project-templates/threejs/skills/_shared/scripts/disclosure-config.mjs +480 -0
  810. package/project-templates/threejs/skills/_shared/scripts/ensure-project.mjs +532 -0
  811. package/project-templates/threejs/skills/_shared/scripts/gen-placeholder-audio.py +345 -0
  812. package/project-templates/threejs/skills/_shared/scripts/gen-placeholder.py +244 -0
  813. package/project-templates/threejs/skills/_shared/scripts/harness-smoke.mjs +257 -0
  814. package/project-templates/threejs/skills/_shared/scripts/lib/validator-artifacts.mjs +129 -0
  815. package/project-templates/threejs/skills/_shared/scripts/placeholder-pack-sheet.mjs +67 -0
  816. package/project-templates/threejs/skills/_shared/scripts/placeholder_audio_lib.py +142 -0
  817. package/project-templates/threejs/skills/_shared/scripts/placeholder_lib.py +993 -0
  818. package/project-templates/threejs/skills/_shared/scripts/render-project-state.mjs +278 -0
  819. package/project-templates/threejs/skills/_shared/scripts/ring-config.mjs +252 -0
  820. package/project-templates/threejs/skills/_shared/scripts/skills-check.mjs +176 -0
  821. package/project-templates/threejs/skills/_shared/scripts/slice-set.mjs +77 -0
  822. package/project-templates/threejs/skills/_shared/scripts/state-advance-ring.mjs +63 -0
  823. package/project-templates/threejs/skills/_shared/scripts/state-get.mjs +215 -0
  824. package/project-templates/threejs/skills/_shared/scripts/state-handoff.mjs +120 -0
  825. package/project-templates/threejs/skills/_shared/scripts/state-set.mjs +113 -0
  826. package/project-templates/threejs/skills/_shared/scripts/state-store.mjs +893 -0
  827. package/project-templates/threejs/skills/_shared/scripts/sync-template-skills.mjs +112 -0
  828. package/project-templates/threejs/skills/_shared/scripts/verify-asset-code-sync.mjs +265 -0
  829. package/project-templates/threejs/skills/_shared/scripts/verify-atom-conformance.mjs +181 -0
  830. package/project-templates/threejs/skills/_shared/scripts/verify-env.mjs +285 -0
  831. package/project-templates/threejs/skills/_shared/scripts/verify-placeholders.mjs +161 -0
  832. package/project-templates/threejs/skills/_shared/scripts/workflow-doctor.mjs +348 -0
  833. package/project-templates/threejs/skills/playable-animate/SKILL.md +52 -0
  834. package/project-templates/threejs/skills/playable-animate/agents/openai.yaml +4 -0
  835. package/project-templates/threejs/skills/playable-animate/references/board-refresh.md +30 -0
  836. package/project-templates/threejs/skills/playable-animate/references/diagnosis-checklist.md +25 -0
  837. package/project-templates/threejs/skills/playable-animate/references/entrance-sequencing.md +33 -0
  838. package/project-templates/threejs/skills/playable-animate/references/interaction-timing.md +23 -0
  839. package/project-templates/threejs/skills/playable-art/SKILL.md +203 -0
  840. package/project-templates/threejs/skills/playable-art/agents/openai.yaml +4 -0
  841. package/project-templates/threejs/skills/playable-art/references/alpha-postprocess.md +46 -0
  842. package/project-templates/threejs/skills/playable-art/references/cta-art-spec.md +59 -0
  843. package/project-templates/threejs/skills/playable-art/references/layout-proportions.md +30 -0
  844. package/project-templates/threejs/skills/playable-art/references/prompt-patterns.md +83 -0
  845. package/project-templates/threejs/skills/playable-art/references/reference-comparison.md +30 -0
  846. package/project-templates/threejs/skills/playable-art/references/sheet-import-v2.md +91 -0
  847. package/project-templates/threejs/skills/playable-art/scripts/build-atlas.py +332 -0
  848. package/project-templates/threejs/skills/playable-art/scripts/chroma-key.py +50 -0
  849. package/project-templates/threejs/skills/playable-art/scripts/extract-alpha-split.py +65 -0
  850. package/project-templates/threejs/skills/playable-art/scripts/extract-dual-bg-alpha.py +118 -0
  851. package/project-templates/threejs/skills/playable-art/scripts/import-gpt-art-sheets-v2.py +403 -0
  852. package/project-templates/threejs/skills/playable-art/scripts/import-gpt-art-sheets.py +280 -0
  853. package/project-templates/threejs/skills/playable-art/scripts/import-gpt-tile-sheet.py +114 -0
  854. package/project-templates/threejs/skills/playable-art/scripts/import_gpt_art_pipeline.py +321 -0
  855. package/project-templates/threejs/skills/playable-art/scripts/import_gpt_art_sheets_v2_test.py +126 -0
  856. package/project-templates/threejs/skills/playable-art/scripts/placeholder_common.py +98 -0
  857. package/project-templates/threejs/skills/playable-art/scripts/remove-bg.py +91 -0
  858. package/project-templates/threejs/skills/playable-art/scripts/review-processed-assets.py +468 -0
  859. package/project-templates/threejs/skills/playable-art/scripts/review_processed_assets_test.py +116 -0
  860. package/project-templates/threejs/skills/playable-art/scripts/verify-alpha-clean.py +105 -0
  861. package/project-templates/threejs/skills/playable-debug/SKILL.md +116 -0
  862. package/project-templates/threejs/skills/playable-debug/agents/openai.yaml +4 -0
  863. package/project-templates/threejs/skills/playable-debug/references/debug-config.md +40 -0
  864. package/project-templates/threejs/skills/playable-focus/SKILL.md +148 -0
  865. package/project-templates/threejs/skills/playable-focus/scripts/bootstrap-playground.mjs +84 -0
  866. package/project-templates/threejs/skills/playable-focus/scripts/extract-focus-frames.mjs +87 -0
  867. package/project-templates/threejs/skills/playable-focus/scripts/generate-focus-reports.mjs +121 -0
  868. package/project-templates/threejs/skills/playable-focus/scripts/playground.mjs +390 -0
  869. package/project-templates/threejs/skills/playable-focus/templates/focus-lab/frame.html +39 -0
  870. package/project-templates/threejs/skills/playable-focus/templates/focus-lab/harness/clean-stage.js +114 -0
  871. package/project-templates/threejs/skills/playable-focus/templates/focus-lab/harness/frame-lab-scene.js +94 -0
  872. package/project-templates/threejs/skills/playable-focus/templates/focus-lab/harness/particle-lab-scene.js +224 -0
  873. package/project-templates/threejs/skills/playable-focus/templates/focus-lab/model.html +16 -0
  874. package/project-templates/threejs/skills/playable-focus/templates/focus-lab/particle.html +38 -0
  875. package/project-templates/threejs/skills/playable-focus/templates/focus-lab/shatter.html +47 -0
  876. package/project-templates/threejs/skills/playable-fx-decompose/SKILL.md +212 -0
  877. package/project-templates/threejs/skills/playable-fx-decompose/examples.md +89 -0
  878. package/project-templates/threejs/skills/playable-fx-decompose/reference.md +201 -0
  879. package/project-templates/threejs/skills/playable-fx-decompose/requirements.txt +2 -0
  880. package/project-templates/threejs/skills/playable-fx-decompose/scripts/build-blank-tile-crack.py +192 -0
  881. package/project-templates/threejs/skills/playable-fx-decompose/scripts/fix-shard-debris-frames.py +60 -0
  882. package/project-templates/threejs/skills/playable-fx-decompose/scripts/generate-shard-debris.py +276 -0
  883. package/project-templates/threejs/skills/playable-fx-peak/SKILL.md +237 -0
  884. package/project-templates/threejs/skills/playable-fx-peak/requirements.txt +2 -0
  885. package/project-templates/threejs/skills/playable-fx-peak/scripts/fix-frame-edges.py +70 -0
  886. package/project-templates/threejs/skills/playable-fx-peak/scripts/repack-frame-sequence.py +526 -0
  887. package/project-templates/threejs/skills/playable-fx-peak/scripts/validate-frame-anchors.py +130 -0
  888. package/project-templates/threejs/skills/playable-placeholder/SKILL.md +239 -0
  889. package/project-templates/threejs/skills/playable-record/SKILL.md +166 -0
  890. package/project-templates/threejs/skills/playable-record/scripts/lib/build-artifact.mjs +92 -0
  891. package/project-templates/threejs/skills/playable-record/scripts/lib/dev-server.mjs +104 -0
  892. package/project-templates/threejs/skills/playable-record/scripts/lib/record-audio-bridge.js +141 -0
  893. package/project-templates/threejs/skills/playable-record/scripts/lib/slice-structure-verify.mjs +199 -0
  894. package/project-templates/threejs/skills/playable-record/scripts/record-playable.mjs +583 -0
  895. package/project-templates/threejs/skills/playable-record/scripts/verify-build.mjs +185 -0
  896. package/project-templates/threejs/skills/playable-record/scripts/verify-contract.mjs +261 -0
  897. package/project-templates/threejs/skills/playable-record/scripts/verify-firstwin.mjs +398 -0
  898. package/project-templates/threejs/skills/playable-record/scripts/verify-fusion.mjs +320 -0
  899. package/project-templates/threejs/skills/playable-record/scripts/verify-lifecycle.mjs +78 -0
  900. package/project-templates/threejs/skills/playable-record/scripts/verify-slice-artist.mjs +53 -0
  901. package/project-templates/threejs/skills/playable-record/scripts/verify-slice-ta.mjs +53 -0
  902. package/project-templates/threejs/skills/playable-record/scripts/verify-slice.mjs +142 -0
  903. package/project-templates/threejs/skills/playable-record/scripts/verify-visual-ring.mjs +250 -0
  904. package/project-templates/threejs/skills/playable-record/scripts/verify-visual-ring1.mjs +190 -0
  905. package/project-templates/threejs/skills/playable-record/scripts/verify-vlm-video.mjs +227 -0
  906. package/project-templates/threejs/skills/playable-validate/SKILL.md +260 -0
  907. package/project-templates/threejs/skills/playable-validate/references/checklist-detail.md +36 -0
  908. package/project-templates/threejs/skills/playable-validate/references/single-html-bundle.md +76 -0
  909. package/project-templates/threejs/skills/playable-validate/validation-rules.md +200 -0
  910. package/project-templates/threejs/skills/playable-verify-ui/SKILL.md +295 -0
  911. package/project-templates/threejs/skills/playable-verify-ui/examples/asset-manifest.example.json +36 -0
  912. package/project-templates/threejs/skills/playable-verify-ui/examples/mahjong-match.profile.yaml +334 -0
  913. package/project-templates/threejs/skills/playable-verify-ui/profiles/template.profile.yaml +84 -0
  914. package/project-templates/threejs/skills/playable-verify-ui/reference.md +165 -0
  915. package/project-templates/threejs/skills/playable-verify-ui/references/phaser-patterns.md +67 -0
  916. package/project-templates/threejs/skills/playable-verify-ui/references/scaling-decision-tree.md +51 -0
  917. package/project-templates/threejs/skills/playable-verify-ui/requirements.txt +7 -0
  918. package/project-templates/threejs/skills/playable-verify-ui/schema/asset-manifest.schema.json +68 -0
  919. package/project-templates/threejs/skills/playable-verify-ui/schema/playable-ui-profile.schema.json +171 -0
  920. package/project-templates/threejs/skills/playable-verify-ui/scripts/asset_manifest.py +231 -0
  921. package/project-templates/threejs/skills/playable-verify-ui/scripts/lib/__init__.py +1 -0
  922. package/project-templates/threejs/skills/playable-verify-ui/scripts/lib/config_expr.js +218 -0
  923. package/project-templates/threejs/skills/playable-verify-ui/scripts/lib/node_utils.js +51 -0
  924. package/project-templates/threejs/skills/playable-verify-ui/scripts/lib/profile_loader.py +59 -0
  925. package/project-templates/threejs/skills/playable-verify-ui/scripts/lib/report.py +106 -0
  926. package/project-templates/threejs/skills/playable-verify-ui/scripts/lib/runtime_contract.js +116 -0
  927. package/project-templates/threejs/skills/playable-verify-ui/scripts/measure_frame_content.py +77 -0
  928. package/project-templates/threejs/skills/playable-verify-ui/scripts/run_all.py +265 -0
  929. package/project-templates/threejs/skills/playable-verify-ui/scripts/verify_asset_sizes.py +77 -0
  930. package/project-templates/threejs/skills/playable-verify-ui/scripts/verify_assets_present.py +62 -0
  931. package/project-templates/threejs/skills/playable-verify-ui/scripts/verify_atlas_budget.py +84 -0
  932. package/project-templates/threejs/skills/playable-verify-ui/scripts/verify_atlas_frames.py +79 -0
  933. package/project-templates/threejs/skills/playable-verify-ui/scripts/verify_bg_clean.py +365 -0
  934. package/project-templates/threejs/skills/playable-verify-ui/scripts/verify_doc_asset_sync.py +90 -0
  935. package/project-templates/threejs/skills/playable-verify-ui/scripts/verify_fetch_antipatterns.py +59 -0
  936. package/project-templates/threejs/skills/playable-verify-ui/scripts/verify_game_config_load.js +54 -0
  937. package/project-templates/threejs/skills/playable-verify-ui/scripts/verify_hardcoded_layout.js +64 -0
  938. package/project-templates/threejs/skills/playable-verify-ui/scripts/verify_layout_regions.js +110 -0
  939. package/project-templates/threejs/skills/playable-verify-ui/scripts/verify_profile_schema.py +37 -0
  940. package/project-templates/threejs/skills/playable-verify-ui/scripts/verify_ring1_visual.py +211 -0
  941. package/project-templates/threejs/skills/playable-verify-ui/scripts/verify_runtime_contract.js +58 -0
  942. package/project-templates/threejs/skills/playable-verify-ui/scripts/verify_script_load_order.js +73 -0
  943. package/project-templates/threejs/skills/playable-verify-ui/scripts/verify_slice_plan.py +238 -0
  944. package/project-templates/threejs/skills/playable-verify-ui/scripts/verify_slice_plan_test.py +125 -0
  945. package/project-templates/threejs/skills/playable-verify-ui/scripts/verify_text_overlap.py +333 -0
  946. package/project-templates/threejs/skills/playable-verify-ui/scripts/verify_tile_consistency.py +323 -0
  947. package/project-templates/threejs/skills/playable-verify-ui/scripts/verify_vision_evidence.py +894 -0
  948. package/project-templates/threejs/skills/playable-verify-ui/scripts/verify_vision_evidence_test.py +122 -0
  949. package/project-templates/threejs/skills/playable-verify-ui/scripts/verify_visual.py +422 -0
  950. package/project-templates/threejs/ta-workspace/scripts/.gitkeep +0 -0
  951. package/project-templates/threejs/templates/artist-log.template.md +182 -0
  952. package/project-templates/threejs/templates/atom-tree.template.json +133 -0
  953. package/project-templates/threejs/templates/design-brief.template.md +92 -0
  954. package/project-templates/threejs/templates/design-lens-checklist.reference.md +117 -0
  955. package/project-templates/threejs/templates/design-methodology.md +99 -0
  956. package/project-templates/threejs/templates/design.template.md +50 -0
  957. package/project-templates/threejs/templates/developer-log.template.md +258 -0
  958. package/project-templates/threejs/templates/five-axis-framework.md +194 -0
  959. package/project-templates/threejs/templates/gen-placeholder-audio.template.mjs +63 -0
  960. package/project-templates/threejs/templates/gen-placeholders.template.mjs +81 -0
  961. package/project-templates/threejs/templates/intent-clarifications.template.md +58 -0
  962. package/project-templates/threejs/templates/layout-spec.template.md +198 -0
  963. package/project-templates/threejs/templates/plan.template.md +80 -0
  964. package/project-templates/threejs/templates/project-state.template.md +136 -0
  965. package/project-templates/threejs/templates/review-report.template.md +275 -0
  966. package/project-templates/threejs/templates/style-exploration.template.md +93 -0
  967. package/project-templates/threejs/templates/ta-log.template.md +394 -0
  968. package/project-templates/threejs/tsconfig.json +20 -0
  969. package/project-templates/threejs/vite.config.ts +27 -0
  970. package/dist/atom-plan/validate-atom-plan.js +0 -298
  971. package/project-template/.claude/agents/designer.md +0 -124
  972. package/project-template/.claude/agents/pm.md +0 -166
  973. package/project-template/.claude/agents/refs/designer-style-exploration-flow.md +0 -67
  974. package/project-template/.claude/agents/refs/pm-workflow-detail.md +0 -567
  975. package/project-template/.claude/hooks/validate-atom-plan.mjs +0 -224
  976. package/project-template/.claude/skills/playcraft-workflow/SKILL.md +0 -485
  977. package/project-template/docs/team/atom-plan-format.md +0 -173
  978. package/project-template/templates/atom-plan.template.json +0 -44
  979. package/project-template/templates/atom-plan.template.md +0 -108
  980. /package/dist/{atom-plan → asr}/validate-asr-coverage.js +0 -0
  981. /package/{project-template → engine-packs/phaser}/game/config/.gitkeep +0 -0
  982. /package/{project-template → engine-packs/phaser}/game/gameplay/.gitkeep +0 -0
  983. /package/{project-template → engine-packs/phaser}/game/scenes/.gitkeep +0 -0
  984. /package/project-template/.claude/agents/refs/{designer-art-style-catalog.md → artist-art-style-catalog.md} +0 -0
@@ -0,0 +1,394 @@
1
+ # Technical Artist Log
2
+
3
+ ## Upstream Intake
4
+
5
+ > **Step 0a — mandatory before Skill Discovery or any generation.** Read each doc; one-line takeaway proves you understood upstream work. Game Designer/Artist keep **四件套** short — detail is in `style-exploration` + this project's `artist-log`.
6
+
7
+ | Doc | Read ✓ | One-line takeaway (what matters for TA this round) |
8
+ | --------------------------- | ------ | ------------------------------------------------------- |
9
+ | `docs/project-state.md` | ☐ | {{e.g. Wave 1 done, selectedMcOption=B}} |
10
+ | `docs/design-brief.md` | ☐ | {{e.g. Competence arc, match-3, Hook=wrong-move tease}} |
11
+ | `docs/layout-spec.md` | ☐ | {{e.g. 42 assetMapping rows, 3 atlas groups}} |
12
+ | `docs/atom-tree.json` | ☐ | {{e.g. 18 TA atoms, C₁ refs artist-sample}} |
13
+ | `docs/atom-tree.md` | ☐ | Reading guide + mediaGroups decisions |
14
+ | `docs/style-exploration.md` | ☐ | {{e.g. MC path + storyboard EndCard tone}} |
15
+ | `logs/artist-log.md` | ☐ | {{e.g. Palette Locked delta, Style Intent Notes}} |
16
+
17
+ ```bash
18
+ # Optional paste: ls assets/images/reference/ + key contract dirs after read
19
+ {{intake_ls_snippet}}
20
+ ```
21
+
22
+ ---
23
+
24
+ ## Delivery Summary
25
+
26
+ - **Assigned atoms**: {{total_assigned}}
27
+ - **Completed**: {{total_completed}}
28
+ - **Skipped**: {{total_skipped}}
29
+ - **Blocked**: {{total_blocked}}
30
+ - **Artist samples received**: {{artist_sample_count}} files
31
+ - **TA-completed elements**: {{ta_completed_count}} files
32
+
33
+ ---
34
+
35
+ ## mediaGroups Reuse
36
+
37
+ > **Step 0 Pre — mandatory before Skill Discovery.** Filter `atom-tree.json` → `meta.skillsMatch.mediaGroups` by `extension`; TA is responsible for **`.aiimage` + `.aisprite`** (Artist handles `.aiaudio`).
38
+
39
+ | mediaGroup atomId | extension | Matches TA atom? | Disposition | Reason (if skipped) | Output path (if linked) |
40
+ | ----------------- | ------------------ | ---------------- | ------------- | ------------------------------- | ----------------------- |
41
+ | {{mg_atomId}} | .aiimage/.aisprite | {{atom_id / —}} | linked / skip | {{style mismatch / wrong dims}} | {{path / —}} |
42
+
43
+ <!--
44
+ TA scope (this table):
45
+ .aiimage — single-shot image bundles (bg, single ui element, single tile)
46
+ .aisprite — sprite-sheet bundles (multi-frame: tile sets, vfx, animations)
47
+
48
+ Out of TA scope (do NOT fill rows for these — Artist owns them):
49
+ .aiaudio — BGM / SFX → see artist-log.md § mediaGroups Reuse
50
+
51
+ Filter command:
52
+ cat docs/atom-tree.json | jq '.meta.skillsMatch.mediaGroups[] | select(.extension == ".aiimage" or .extension == ".aisprite")'
53
+
54
+ Disposition rules:
55
+ linked → playcraft skills link → post-process (resize/convert/transparency) → status=done
56
+ skip → quality / style / wrong dimensions → document reason → generate from scratch
57
+
58
+ This section MUST be filled before proceeding to Step 0 Skill Discovery.
59
+ -->
60
+
61
+ ---
62
+
63
+ ## Skill Preflight
64
+
65
+ > **Step 0 Part C — mandatory before production.** Read all relevant playcraft pipeline Skills.
66
+
67
+ | Skill | 已读 | 关键决策摘要 |
68
+ | --------------------------- | ---- | --------------------------------------------------------- |
69
+ | playcraft-image-generation | ☐ | {{model choice, reference-image strategy, background}} |
70
+ | playcraft-masking | ☐ | {{floodfill tolerance, segment fallback, method-ai case}} |
71
+ | playcraft-sprite-generation | ☐ | {{single-frame→merge workflow, batch threshold}} |
72
+ | playcraft-text-rendering | ☐ | {{blue screen for text, stroke protection}} |
73
+ | playcraft-vfx-animation | ☐ | {{per-frame generation, blue screen for VFX}} |
74
+ | playcraft-batch-pipeline | ☐ | {{>5 elements → script, reference anchoring}} |
75
+ | playcraft-style-qa | ☐ | {{dark-bg verify, MC consistency check}} |
76
+
77
+ <!--
78
+ MUST be filled before Step 1 bulk generation. Each row: ✅ after reading + one-line decision summary.
79
+ Without this table → no bulk generation → no STOP.
80
+ -->
81
+
82
+ ---
83
+
84
+ ## Style Interpretation
85
+
86
+ > **Step 0c — Mandatory before any completion work.**
87
+ > Read `logs/artist-log.md` Style Intent Notes, write your interpretation here.
88
+
89
+ | # | Artist Intent (Quote from artist-log.md) | My Interpretation | Confidence | Action |
90
+ | ----- | ---------------------------------------- | --------------------- | --------------- | ----------------- |
91
+ | {{n}} | "{{artist_quote}}" | {{my_interpretation}} | high/medium/low | proceed / clarify |
92
+
93
+ <!--
94
+ Confidence rules (atom-granularity — hold only the affected asset type, not the whole Wave 2):
95
+ high → proceed with completion
96
+ medium → proceed, but include style interpretation in --reference-image prompt
97
+ low → HOLD that asset type only: write question to docs/intent-clarifications.md
98
+ (routeTo: artist if style ambiguity; routeTo: game-designer if contract ambiguity)
99
+ → continue producing OTHER asset types where confidence ≥ medium
100
+ → resume the held type only after ICP answer (or Artist supplementary PNG per
101
+ artist-deliverable-spec.md § "ICP supplementary PNG — when (and only when)")
102
+
103
+ You may STOP only when EVERY remaining asset type is held at confidence=low — otherwise keep
104
+ making progress on the producible ones in parallel with the ICP wait.
105
+ -->
106
+
107
+ ## Production Plan
108
+
109
+ > **Step 0d — mandatory before any asset generation.** Plan WHAT to produce, in WHAT order, using WHAT pipeline.
110
+
111
+ ### Coverage Plan
112
+
113
+ | assetMapping id | Contract path | Pipeline | Reference source | Priority |
114
+ | --------------- | ------------------------- | ---------------------- | ----------------- | --------------- |
115
+ | {{elementId}} | {{path from layout-spec}} | {{extract/generate/…}} | {{MC/ASR/sample}} | {{high/normal}} |
116
+
117
+ <!--
118
+ One row per layout-spec assetMapping entry. Row count must match assetMapping count (no gaps).
119
+ -->
120
+
121
+ ### Atlas Assembly Plan
122
+
123
+ | Atlas group | Output path (.webp + .json) | Elements (frameIds) | Layout |
124
+ | ----------- | ------------------------------- | -------------------- | ------------ |
125
+ | {{tiles}} | {{assets/images/tiles/…_atlas}} | {{tile_01..tile_06}} | {{3x2 grid}} |
126
+
127
+ <!--
128
+ Must match layout-spec § atlas grouping table.
129
+ -->
130
+
131
+ ### Pipeline Order
132
+
133
+ 1. Extract: crop MC/ASR reference elements (Stage E)
134
+ 2. Complete: batch generate remaining elements (Stage A)
135
+ 3. Process: resize + format convert to WebP (Stage B)
136
+ 4. Assemble: build atlases with JSON sidecars (Stage C)
137
+ 5. Verify: Compliance Gate on all paths
138
+
139
+ ### Risk Checklist
140
+
141
+ - [ ] Every assetMapping entry in Coverage Plan (no gaps)
142
+ - [ ] Atlas groups match layout-spec grouping table
143
+ - [ ] MC + ASR reference images accessible
144
+ - [ ] Style Interpretation confidence ≥ medium for all asset types
145
+ - [ ] Transparency Classification table complete (Step 0e below)
146
+
147
+ **MUST NOT** start bulk generation until every Risk Checklist item is checked `[x]`.
148
+
149
+ ---
150
+
151
+ ## Transparency Classification
152
+
153
+ > **Step 0e — mandatory before any generation.** TA auto-derives `needsAlpha` from path convention + `alphaStrategy` from element color palette and edge softness. See `ta-pipeline-cookbook.md` Step 0e and `skills/playable-art/references/alpha-postprocess.md` for full rules.
154
+
155
+ | # | assetMapping path | needsAlpha | alphaStrategy | Prompt strategy | Postprocess tool | Fallback | Dark-bg verify | 验证结果 |
156
+ | ----- | ----------------- | -------------- | -------------------------------------------------- | ---------------------------- | ----------------------------------------------------- | ---------------------------------- | -------------- | ----------- |
157
+ | {{n}} | {{path}} | {{true/false}} | {{chroma / dual-bg-diff / rgb-alpha-split / black-add / opaque}} | {{green key / RGB+A / etc.}} | {{remove-bg / extract-alpha-split / dual-bg / N/A}} | {{rgb-alpha-split / black-add / N/A}} | {{clean / fail}} | {{✅ / ❓}} |
158
+
159
+ <!--
160
+ TA auto-derives transparency — does NOT depend on Game Designer fields.
161
+
162
+ needsAlpha derivation (from assetMapping path):
163
+ images/bg/ → false (full-screen background)
164
+ images/ui/ → true (UI overlay)
165
+ images/txt/ → true (text image)
166
+ images/vfx/ → true (VFX sprite)
167
+ images/tiles/ → true (default; unless card/board rect body → false)
168
+
169
+ alphaStrategy derivation:
170
+ Hard-edge UI/text/sprite → chroma (choose green/blue/magenta by palette conflict)
171
+ Soft antialias/shadow → rgb-alpha-split first; dual-bg-diff only when geometry is fixed
172
+ VFX glow/particle/ring → black-add when ADD blend is acceptable; otherwise rgb-alpha-split
173
+ Full-screen background → opaque
174
+
175
+ chroma key color derivation:
176
+ Gold/yellow/orange/amber → bluescreen (NEVER green — color bleed)
177
+ Green/teal/cyan → bluescreen (NEVER green — same family)
178
+ Blue/indigo/purple → greenscreen (NEVER blue — same family)
179
+ Multi-color/rainbow → magenta (last resort)
180
+ Red/pink/white/black → greenscreen or bluescreen (both safe)
181
+
182
+ TA tool chain (must use, never skip):
183
+ 1st: playcraft image remove-background --method floodfill --tolerance 25
184
+ 2nd: python3 skills/playable-art/scripts/extract-alpha-split.py (RGB+A side-by-side)
185
+ 3rd: python3 skills/playable-art/scripts/extract-dual-bg-alpha.py (matched dual backgrounds)
186
+ 4th: playcraft image segment --boxes (complex edges, known position)
187
+ 5th: playcraft image remove-background --method ai (hair/transparency)
188
+ 6th: playcraft image segment --text (unknown position, last resort)
189
+ Extract: playcraft image crop (grid) or decompose-layers (multi-layer MC)
190
+
191
+ Post-verify: overlay on #1A1A2E dark bg to check:
192
+ ✅ No white edges, no chroma residue, no black blocks, clean edges
193
+ ❌ If any issue → escalate through fallback tool chain
194
+ -->
195
+
196
+ **MUST NOT** proceed to Step 1 bulk generation if any row has `❓ pending` in 验证结果.
197
+
198
+ ### Video Alpha Classification
199
+
200
+ | # | video path | videoAlphaStrategy | Matte source | Validator evidence | Fallback |
201
+ | ----- | ---------- | ------------------------------------------------------- | ----------------------- | ------------------ | -------------------- |
202
+ | {{n}} | {{path}} | {{chroma-video / dual-bg-video / rgb-alpha-video / opaque-video}} | {{green / dual / alpha / n-a}} | {{MP4 timestamp + symptom}} | {{rerender / still sprite / n-a}} |
203
+
204
+ <!--
205
+ Video alpha is a production convention in this template, not a full codec pipeline.
206
+ Validator feedback must still route symptoms:
207
+ green edge / matte spill → chroma-video key conflict
208
+ double subject / shimmer → dual-bg-video geometry drift
209
+ alpha timing mismatch → rgb-alpha-video matte alignment
210
+ black box around glow → use black-add still frames or VFX clean harness
211
+ -->
212
+
213
+ ---
214
+
215
+ ## Style Reference
216
+
217
+ - **Master reference (MC)**: `assets/images/storyboard/master_composite_option_{{selectedMcOption}}.png`
218
+ - **ASR references**: `ui_state_sheet_{{selectedMcOption}}.png`, `element_state_sheet_{{selectedMcOption}}.png`
219
+ - **Artist samples used as reference**: {{artist_sample_paths}}
220
+ - **Reference model used**: `{{model_name}}` (must be `google/` native for style-consistent completions)
221
+
222
+ ---
223
+
224
+ ## Asset Completion Log
225
+
226
+ > Records all elements derived from Artist samples.
227
+
228
+ ### {{atom_id}} — {{slot_name}}
229
+
230
+ - **Status**: {{status}}
231
+ - **Completion type**: {{derived_from_sample | sprite_sheet | 3d_render | animation | vfx}}
232
+ - **Source samples**: {{artist_sample_paths}}
233
+ - **Elements completed**:
234
+ | File | Dimensions | Size | Notes |
235
+ |------|-----------|------|-------|
236
+ | {{path}} | {{WxH}} | {{size}} | {{notes}} |
237
+ - **Pipeline**:
238
+ ```
239
+ {{step 1: e.g., generate-image --reference-image ...}}
240
+ {{step 2: e.g., image remove-background ...}}
241
+ {{step 3: e.g., image resize ...}}
242
+ ```
243
+ - **Model used**: {{model_name}}
244
+ - **Reference images**: {{reference_image_paths}}
245
+
246
+ <!-- Repeat for each completion atom -->
247
+
248
+ ---
249
+
250
+ ## Technical Pipeline Log
251
+
252
+ > Records all technical production work (sprite sheets, 3D, animation, VFX, post-processing).
253
+
254
+ ### {{atom_id}} — {{slot_name}}
255
+
256
+ - **Status**: {{status}}
257
+ - **Pipeline type**: {{sprite_sheet | 3d_model | animation_frames | vfx | image_processing | audio_processing}}
258
+ - **Input**: {{input_files}}
259
+ - **Output**: {{output_files}}
260
+ - **Commands executed**:
261
+ ```bash
262
+ {{command 1}}
263
+ {{command 2}}
264
+ ```
265
+ - **Result**:
266
+ | File | Format | Dimensions | Size | Frame Count |
267
+ |------|--------|-----------|------|-------------|
268
+ | {{path}} | {{format}} | {{WxH}} | {{size}} | {{N or —}} |
269
+
270
+ <!--
271
+ For sprite_sheet / animation_frames / vfx pipeline types, fill the Sprite Grid Params section below.
272
+ JSON is only auto-generated by `sprite-sheet` command. `animate` and `use-vfx` produce PNG only.
273
+ -->
274
+
275
+ - **Sprite Grid Params** _(animation_frames / vfx 必填;sprite_sheet 填"见 JSON")_:
276
+ - columns: {{N or "见 JSON"}}
277
+ - frameWidth: {{W}}px _(or "见 JSON")_
278
+ - frameHeight: {{H}}px _(or "见 JSON")_
279
+ - frameCount: {{N or "见 JSON"}}
280
+ - padding: {{0 or N}}px
281
+ - JSON available: {{yes — `<path>.json` (sprite-sheet) / no — params above are source of truth (animate/use-vfx)}}
282
+ - Dimensions verified: {{width = cols×frameW ✅ / ❌ mismatch}} | {{channels = 4 ✅ / ❌ no alpha}}
283
+
284
+ <!-- Repeat for each pipeline atom -->
285
+
286
+ ---
287
+
288
+ ## Micro-Batch Validation
289
+
290
+ > **Per asset type — first 2 completions must pass validation before continuing batch production.**
291
+ > Compare each completion side-by-side with the Artist sample.
292
+
293
+ ### {{asset_type}} (e.g., tiles / ui / bg / vfx)
294
+
295
+ | Batch | Files | Consistency Score (1-5) | Deviation Items | Adjustments Made |
296
+ | ----- | ------------- | ----------------------- | ------------------ | ---------------- |
297
+ | {{n}} | {{file_list}} | {{score}} | {{deviation_list}} | {{adjustments}} |
298
+
299
+ <!--
300
+ Consistency Score criteria:
301
+ 5 — Perfect match: could be mistaken for original artist sample
302
+ 4 — Good match: minor differences only visible on close inspection
303
+ 3 — Acceptable match: style is recognizable but some attributes drift
304
+ 2 — Poor match: obvious style deviation, needs significant adjustment
305
+ 1 — Mismatch: completely different style, STOP and ask Artist
306
+
307
+ Score < 3 → STOP this asset type, write question to docs/intent-clarifications.md
308
+ -->
309
+
310
+ ---
311
+
312
+ ## Compliance Gate Results
313
+
314
+ > Completed after Artist Ph.2 is confirmed done. Verify all assetMapping entries.
315
+
316
+ ### Asset Coverage Check
317
+
318
+ | assetMapping Entry | Expected Path | File Exists? | Dimensions | Size | Status |
319
+ | ------------------ | -------------------- | ------------ | ---------- | -------- | ------------- |
320
+ | {{elementId}} | {{visualAsset_path}} | {{Yes/No}} | {{WxH}} | {{size}} | {{PASS/FAIL}} |
321
+
322
+ <!--
323
+ Fill one row per entry in layout-spec.md assetMapping.
324
+ Every row must be PASS before advancing to integration.
325
+ -->
326
+
327
+ ### Spec Compliance Summary
328
+
329
+ | Check | Target | Actual | Result |
330
+ | -------------------------- | ---------------------------------------------------------- | ---------- | ------------- |
331
+ | Background dimensions | {{assetSpec}} | {{actual}} | {{PASS/FAIL}} |
332
+ | Tile dimensions | {{assetSpec}} | {{actual}} | {{PASS/FAIL}} |
333
+ | UI element dimensions | {{assetSpec}} | {{actual}} | {{PASS/FAIL}} |
334
+ | **Text dimensions** | `images/txt/*` per `layout-spec` text spec (W×H per label) | {{actual}} | {{PASS/FAIL}} |
335
+ | **Digit Strip dimensions** | `images/txt/digits*` cellW × cellH × frameCount (0–9 = 10) | {{actual}} | {{PASS/FAIL}} |
336
+ | Background file size | < 500KB | {{actual}} | {{PASS/FAIL}} |
337
+ | Tile file size | < 100KB per tile | {{actual}} | {{PASS/FAIL}} |
338
+ | BGM file size | < 300KB | {{actual}} | {{PASS/FAIL}} |
339
+ | SFX file size | < 50KB per SFX | {{actual}} | {{PASS/FAIL}} |
340
+ | Total assets size | ≤ 2-3MB | {{actual}} | {{PASS/FAIL}} |
341
+ | Sprite sheet JSON paired | Every .png sheet has .json | {{yes/no}} | {{PASS/FAIL}} |
342
+
343
+ <!--
344
+ Text dimensions: every `images/txt/*` asset must match per-label W×H from layout-spec § Static text (or atlas grouping for text atlas).
345
+ Digit Strip dimensions: digit sprite (typically `images/txt/digits.webp` or `images/ui/digits.webp`) must satisfy:
346
+ - frameCount = 10 (0–9) — for score / countdown / level display
347
+ - width == cellW × frameCount (when laid out as a single row)
348
+ - height == cellH (single-row strip) OR width × height matches multi-row grid in JSON sidecar
349
+ - channels = 4 (alpha for overlay)
350
+ If digit strip is split across multiple paths (e.g. small + large) each needs its own row.
351
+ -->
352
+
353
+ ### Transparency Compliance
354
+
355
+ | Check | Target | Actual | Result |
356
+ | ---------------------------- | -------------------------------------------------- | ---------- | ------------- |
357
+ | Classification table | All rows filled, no ❓ pending | {{status}} | {{PASS/FAIL}} |
358
+ | Alpha channels (transparent) | All transparent assets channels=4 | {{count}} | {{PASS/FAIL}} |
359
+ | Dark-bg verify (transparent) | All transparent assets clean on #1A1A2E overlay | {{count}} | {{PASS/FAIL}} |
360
+ | Alpha strategy recorded | Every transparent asset has alphaStrategy + fallback | {{status}} | {{PASS/FAIL}} |
361
+ | Video alpha strategy | Every video asset has videoAlphaStrategy or opaque-video | {{status}} | {{PASS/FAIL}} |
362
+ | BG full-coverage | All backgrounds edge-to-edge, no fade/white corner | {{status}} | {{PASS/FAIL}} |
363
+ | Atlas per-frame verify | VFX/atlas each frame verified on dark bg | {{status}} | {{PASS/FAIL}} |
364
+ | Chroma residue | Zero color residue from chroma key removal | {{status}} | {{PASS/FAIL}} |
365
+
366
+ ### Compliance Verdict
367
+
368
+ - **Overall**: {{PASS / FAIL}}
369
+ - **Blockers** (if any): {{list of FAIL items that block integration}}
370
+ - **Ready for Reviewer ui_diff**: {{Yes / No — pending fixes}}
371
+
372
+ ---
373
+
374
+ ## Handoff to Developer
375
+
376
+ Summary of what TA delivers to Developer:
377
+
378
+ | Asset Type | Count | Paths | Notes |
379
+ | ------------------- | ----- | ---------------------- | --------------------- |
380
+ | Background images | {{N}} | `assets/images/bg/` | {{notes}} |
381
+ | Tile/element images | {{N}} | `assets/images/tiles/` | {{notes}} |
382
+ | UI elements | {{N}} | `assets/images/ui/` | {{notes}} |
383
+ | Sprite sheet atlas | {{N}} | `assets/images/*/` | Each has paired .json |
384
+ | Animation frames | {{N}} | `assets/images/*/` | {{notes}} |
385
+ | VFX sprite sheets | {{N}} | `assets/images/vfx/` | {{notes}} |
386
+ | 3D GLB models | {{N}} | `assets/models/` | {{notes}} |
387
+ | BGM audio | {{N}} | `assets/audio/bgm/` | {{notes}} |
388
+ | SFX audio | {{N}} | `assets/audio/sfx/` | {{notes}} |
389
+
390
+ **All files path-match `layout-spec.md` assetMapping**: {{Yes / No}}
391
+
392
+ <!--
393
+ If No, list discrepancies here so Developer knows to use alternate paths.
394
+ -->
@@ -0,0 +1,20 @@
1
+ {
2
+ "compilerOptions": {
3
+ "target": "ES2020",
4
+ "lib": ["DOM", "DOM.Iterable", "ES2020"],
5
+ "module": "ESNext",
6
+ "moduleResolution": "bundler",
7
+ "strict": true,
8
+ "skipLibCheck": true,
9
+ "esModuleInterop": true,
10
+ "allowSyntheticDefaultImports": true,
11
+ "resolveJsonModule": true,
12
+ "isolatedModules": true,
13
+ "noEmit": true,
14
+ "types": ["node"],
15
+ "paths": {
16
+ "assets/*": ["./assets/*"]
17
+ }
18
+ },
19
+ "include": ["main.ts", "game/**/*.ts", "globals.d.ts", "vite.config.ts"]
20
+ }
@@ -0,0 +1,27 @@
1
+ import { defineConfig } from "vite";
2
+ import path from "path";
3
+
4
+ export default defineConfig(({ command }) => ({
5
+ define: {
6
+ __DEV__: JSON.stringify(command === "serve"),
7
+ },
8
+ resolve: {
9
+ alias: {
10
+ assets: path.resolve(__dirname, "assets"),
11
+ },
12
+ },
13
+ server: {
14
+ host: "0.0.0.0",
15
+ // Preferred port; strictPort:false (the default, set explicitly here for
16
+ // intent) lets Vite auto-increment when 3000 is taken. The harness scripts
17
+ // (dev:start / verify:* / record:mp4) parse Vite's actual "Local:" URL, so
18
+ // port drift never needs to be tracked by hand. See dev-start.mjs.
19
+ port: 3000,
20
+ strictPort: false,
21
+ open: true,
22
+ },
23
+ build: {
24
+ outDir: "dist",
25
+ sourcemap: true,
26
+ },
27
+ }));
@@ -0,0 +1,101 @@
1
+ ---
2
+ name: artist
3
+ description: 'Artist: produces scoped visual intent, composite references, and asset-state context when dispatched.'
4
+ tools:
5
+ - 'Read'
6
+ - 'Write'
7
+ - 'Grep'
8
+ - 'Glob'
9
+ - 'Skill'
10
+ - 'Bash(ls:*)'
11
+ - 'Bash(cat:*)'
12
+ - 'Bash(find:*)'
13
+ - 'Bash(npm run state:get:*)'
14
+ - 'Bash(npm run slice:set:*)'
15
+ - 'Bash(npm run verify:slice-artist*)'
16
+ - 'Bash(playcraft image info:*)'
17
+ - 'Bash(playcraft tools search-image:*)'
18
+ ---
19
+
20
+ # Artist — Role Contract
21
+
22
+ ## Role Essence
23
+
24
+ You produce scoped visual direction and visual handoff context.
25
+
26
+ Your stable responsibility is clarifying what the playable should look and feel like through visual intent, MC (Master Composite, 主合成图) references, ASR (Asset State Reference, 资产状态参考) context, and artifact refs when explicitly dispatched.
27
+
28
+ You are not the gameplay designer, runtime implementer, Technical Artist (TA, 技术美术), reviewer, or orchestrator.
29
+
30
+ ## Dispatch Contract
31
+
32
+ Start every run with:
33
+
34
+ ```bash
35
+ npm run state:get -- --json dispatchPacket
36
+ ```
37
+
38
+ If `dispatchPacket.role` is `artist`, execute only that packet:
39
+
40
+ - Obey `doWhat`, `flow`, `allowedFiles`, `forbiddenTasks`, and `acceptance`.
41
+ - Produce visual context or artifact refs only within the packet scope.
42
+ - Write a minimal artist slice manifest when verification requires it.
43
+ - Run the packet verifier when requested:
44
+ ```bash
45
+ npm run verify:slice-artist
46
+ ```
47
+ - On pass, set the slice verified.
48
+ - On fail or blocked input, set a routable failure with owner and reason.
49
+
50
+ Do not begin bulk production, asset slicing, transparency cleanup, atlas assembly, audio work, or runtime integration unless the packet explicitly asks.
51
+
52
+ ## Inputs
53
+
54
+ Use only the disclosed context:
55
+
56
+ - `dispatchPacket`
57
+ - `docs/design-brief.md` or `docs/style-exploration.md` when allowed
58
+ - existing visual references included in `allowedFiles`
59
+ - `docs/atom-tree.json` only for slice-linked context
60
+
61
+ Do not read production logs or Technical Artist references unless the packet includes them.
62
+
63
+ ## Outputs
64
+
65
+ Produce one or more packet-scoped outputs:
66
+
67
+ - style intent summary
68
+ - MC reference or storyboard note
69
+ - ASR context / state reference
70
+ - artifact refs that already exist or were explicitly produced
71
+ - `validate/slice-artist/<sliceId>.json` when required
72
+ - `slice:set verified` or `slice:set failed route=... reason=...`
73
+
74
+ Keep outputs useful to the next role, not decorative.
75
+
76
+ ## STOP Contract
77
+
78
+ Before STOP:
79
+
80
+ - The active artist slice must be verified or failed with a route and reason.
81
+ - Every artifact ref in a manifest must exist.
82
+ - Context must state what downstream roles should preserve.
83
+ - Missing upstream design should be routed, not guessed.
84
+
85
+ ## Forbidden Ownership
86
+
87
+ You must not:
88
+
89
+ - define gameplay mechanics
90
+ - implement runtime files
91
+ - produce final production asset sets by default
92
+ - create Technical Artist manifests
93
+ - decide process phase from project state
94
+ - write broad style essays unrelated to the packet
95
+ - mark visual quality accepted on behalf of Reviewer
96
+
97
+ ## Legacy Fallback
98
+
99
+ Only when `dispatchPacket` is null and `sliceState` is empty, follow [`refs/artist-legacy-fallback.md`](refs/artist-legacy-fallback.md).
100
+
101
+ Legacy fallback does not apply to slice-axis dispatch.
@@ -0,0 +1,123 @@
1
+ ---
2
+ name: developer
3
+ description: 'Developer: executes one dispatched slice, edits only allowed files, and completes through build verification.'
4
+ tools:
5
+ - 'Read'
6
+ - 'Grep'
7
+ - 'Glob'
8
+ - 'Write'
9
+ - 'Edit'
10
+ - 'Skill'
11
+ - 'Bash(ls:*)'
12
+ - 'Bash(cat:*)'
13
+ - 'Bash(find:*)'
14
+ - 'Bash(grep:*)'
15
+ - 'Bash(npm run build*)'
16
+ - 'Bash(npm run state:get:*)'
17
+ - 'Bash(npm run slice:set:*)'
18
+ - 'Bash(npm run dev*)'
19
+ - 'Bash(npm run placeholder:gen*)'
20
+ - 'Bash(playcraft skills:*)'
21
+ - 'Bash(playcraft image info:*)'
22
+ - 'Bash(playcraft audio info:*)'
23
+ ---
24
+
25
+ # Developer — Role Contract
26
+
27
+ ## Role Essence
28
+
29
+ You implement exactly one dispatched runtime slice at a time.
30
+
31
+ Your stable responsibility is turning a scoped gameplay or integration hypothesis into working code, then proving it with the verifier or build artifact requested by the packet.
32
+
33
+ You are not the designer, reviewer, artist, Technical Artist (TA, 技术美术), or orchestrator. You do not decide broader process phase, add extra features, or complete future work because it seems nearby.
34
+
35
+ ## Dispatch Contract
36
+
37
+ Start every run with:
38
+
39
+ ```bash
40
+ npm run state:get -- --json dispatchPacket
41
+ ```
42
+
43
+ If `dispatchPacket.role` is `developer`, execute only that packet:
44
+
45
+ - Implement the single `doWhat` / `hypothesis`.
46
+ - Edit only `allowedFiles`.
47
+ - Avoid everything in `forbiddenTasks`.
48
+ - Preserve existing runtime contracts unless the packet explicitly changes them.
49
+ - Do not infer extra win, ENDCARD, HUD, CTA (Call To Action, 行动号召), tutorial, polish, or asset work.
50
+ - Do not run standalone verifier commands unless the packet explicitly asks. The intended acceptance path is `npm run build`, which will converge on `validate/build.json`.
51
+
52
+ Default completion loop:
53
+
54
+ ```bash
55
+ npm run build
56
+ ```
57
+
58
+ Then:
59
+
60
+ - If build verification passes, set the slice verified:
61
+ ```bash
62
+ npm run slice:set -- status=verified verification="build verification ok"
63
+ ```
64
+ - If build verification fails, read the produced validation artifact, fix within the slice scope, and build again.
65
+ - If the failure belongs to another role or blocked input, set a routable failure:
66
+ ```bash
67
+ npm run slice:set -- status=failed route=<role> reason="<failKey>"
68
+ ```
69
+
70
+ Never mark a slice verified from intuition or from a hand-written summary.
71
+
72
+ ## Inputs
73
+
74
+ Use the packet first:
75
+
76
+ - `dispatchPacket`
77
+ - files in `allowedFiles`
78
+ - `docs/DESIGN.md` only when included or necessary to interpret the slice
79
+ - `docs/atom-tree.json` only for skill refs attached to the slice
80
+ - validation artifact such as `validate/build.json` after build
81
+
82
+ Do not read layout, style, production, review, or handoff logs unless the packet includes them.
83
+
84
+ ## Outputs
85
+
86
+ Produce only what the packet needs:
87
+
88
+ - code changes inside `allowedFiles`
89
+ - placeholder assets only when the packet permits them
90
+ - validation artifact from the build / verifier path
91
+ - `slice:set verified` or `slice:set failed route=... reason=...`
92
+
93
+ Keep code small. The best implementation is the smallest one that satisfies the acceptance checks without hiding future work inside the current slice.
94
+
95
+ ## STOP Contract
96
+
97
+ Before STOP:
98
+
99
+ - The active slice must be verified or failed with a route and reason.
100
+ - Verification must come from the requested verifier/build artifact, not from prose.
101
+ - No forbidden task may be partially implemented.
102
+ - No unrelated files may be changed.
103
+ - The next action must be encoded in slice state, not buried in a markdown handoff.
104
+
105
+ If `npm run build` fails for environment reasons, record a blocked/routed state instead of pretending gameplay failed.
106
+
107
+ ## Forbidden Ownership
108
+
109
+ You must not:
110
+
111
+ - rewrite design intent
112
+ - choose or reinterpret skills for Designer
113
+ - create production art or final asset manifests
114
+ - review your own work as final acceptance
115
+ - expand the slice into a full feature backlog
116
+ - change orchestrator state or user acceptance state
117
+ - implement CTA / ENDCARD / HUD / polish unless the packet explicitly includes them
118
+
119
+ ## Legacy Fallback
120
+
121
+ Only when `dispatchPacket` is null and `sliceState` is empty, follow [`refs/developer-legacy-fallback.md`](refs/developer-legacy-fallback.md).
122
+
123
+ Legacy fallback does not apply to slice-axis dispatch.