@playcraft/cli 0.0.44 → 0.0.47

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (992) 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 +18 -4
  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/__pycache__/placeholder_audio_lib.cpython-311.pyc +0 -0
  158. package/project-template/skills/_shared/scripts/__pycache__/placeholder_lib.cpython-311.pyc +0 -0
  159. package/project-template/skills/_shared/scripts/build-evidence-gate.mjs +87 -0
  160. package/project-template/skills/_shared/scripts/context-budget.mjs +215 -0
  161. package/project-template/skills/_shared/scripts/create-playable.mjs +140 -0
  162. package/project-template/skills/_shared/scripts/dev-start.mjs +151 -0
  163. package/project-template/skills/_shared/scripts/disclosure-config.mjs +480 -0
  164. package/project-template/skills/_shared/scripts/ensure-project.mjs +532 -0
  165. package/project-template/skills/_shared/scripts/gen-placeholder-audio.py +345 -0
  166. package/project-template/skills/_shared/scripts/gen-placeholder.py +244 -0
  167. package/project-template/skills/_shared/scripts/harness-smoke.mjs +257 -0
  168. package/project-template/skills/_shared/scripts/lib/validator-artifacts.mjs +129 -0
  169. package/project-template/skills/_shared/scripts/placeholder-pack-sheet.mjs +67 -0
  170. package/project-template/skills/_shared/scripts/placeholder_audio_lib.py +142 -0
  171. package/project-template/skills/_shared/scripts/placeholder_lib.py +993 -0
  172. package/project-template/skills/_shared/scripts/render-project-state.mjs +278 -0
  173. package/project-template/skills/_shared/scripts/ring-config.mjs +252 -0
  174. package/project-template/skills/_shared/scripts/skills-check.mjs +176 -0
  175. package/project-template/skills/_shared/scripts/slice-set.mjs +77 -0
  176. package/project-template/skills/_shared/scripts/state-advance-ring.mjs +63 -0
  177. package/project-template/skills/_shared/scripts/state-get.mjs +215 -0
  178. package/project-template/skills/_shared/scripts/state-handoff.mjs +120 -0
  179. package/project-template/skills/_shared/scripts/state-set.mjs +113 -0
  180. package/project-template/skills/_shared/scripts/state-store.mjs +893 -0
  181. package/project-template/skills/_shared/scripts/sync-template-skills.mjs +112 -0
  182. package/project-template/skills/_shared/scripts/verify-asset-code-sync.mjs +265 -0
  183. package/project-template/skills/_shared/scripts/verify-atom-conformance.mjs +181 -0
  184. package/project-template/skills/_shared/scripts/verify-env.mjs +285 -0
  185. package/project-template/skills/_shared/scripts/verify-placeholders.mjs +161 -0
  186. package/project-template/skills/_shared/scripts/workflow-doctor.mjs +348 -0
  187. package/project-template/skills/playable-animate/SKILL.md +52 -0
  188. package/project-template/skills/playable-animate/agents/openai.yaml +4 -0
  189. package/project-template/skills/playable-animate/references/board-refresh.md +30 -0
  190. package/project-template/skills/playable-animate/references/diagnosis-checklist.md +25 -0
  191. package/project-template/skills/playable-animate/references/entrance-sequencing.md +33 -0
  192. package/project-template/skills/playable-animate/references/interaction-timing.md +23 -0
  193. package/project-template/skills/playable-art/SKILL.md +203 -0
  194. package/project-template/skills/playable-art/agents/openai.yaml +4 -0
  195. package/project-template/skills/playable-art/references/alpha-postprocess.md +46 -0
  196. package/project-template/skills/playable-art/references/cta-art-spec.md +59 -0
  197. package/project-template/skills/playable-art/references/layout-proportions.md +30 -0
  198. package/project-template/skills/playable-art/references/prompt-patterns.md +83 -0
  199. package/project-template/skills/playable-art/references/reference-comparison.md +30 -0
  200. package/project-template/skills/playable-art/references/sheet-import-v2.md +91 -0
  201. package/project-template/skills/playable-art/scripts/__pycache__/import-gpt-art-sheets-v2.cpython-311.pyc +0 -0
  202. package/project-template/skills/playable-art/scripts/__pycache__/import_gpt_art_pipeline.cpython-311.pyc +0 -0
  203. package/project-template/skills/playable-art/scripts/__pycache__/review-processed-assets.cpython-311.pyc +0 -0
  204. package/project-template/skills/playable-art/scripts/build-atlas.py +332 -0
  205. package/project-template/skills/playable-art/scripts/chroma-key.py +50 -0
  206. package/project-template/skills/playable-art/scripts/extract-alpha-split.py +65 -0
  207. package/project-template/skills/playable-art/scripts/extract-dual-bg-alpha.py +118 -0
  208. package/project-template/skills/playable-art/scripts/import-gpt-art-sheets-v2.py +403 -0
  209. package/project-template/skills/playable-art/scripts/import-gpt-art-sheets.py +280 -0
  210. package/project-template/skills/playable-art/scripts/import-gpt-tile-sheet.py +114 -0
  211. package/project-template/skills/playable-art/scripts/import_gpt_art_pipeline.py +321 -0
  212. package/project-template/skills/playable-art/scripts/import_gpt_art_sheets_v2_test.py +126 -0
  213. package/project-template/skills/playable-art/scripts/placeholder_common.py +98 -0
  214. package/project-template/skills/playable-art/scripts/remove-bg.py +91 -0
  215. package/project-template/skills/playable-art/scripts/review-processed-assets.py +468 -0
  216. package/project-template/skills/playable-art/scripts/review_processed_assets_test.py +116 -0
  217. package/project-template/skills/playable-art/scripts/verify-alpha-clean.py +105 -0
  218. package/project-template/skills/playable-debug/SKILL.md +116 -0
  219. package/project-template/skills/playable-debug/agents/openai.yaml +4 -0
  220. package/project-template/skills/playable-debug/references/debug-config.md +40 -0
  221. package/project-template/skills/playable-focus/SKILL.md +148 -0
  222. package/project-template/skills/playable-focus/scripts/bootstrap-playground.mjs +84 -0
  223. package/project-template/skills/playable-focus/scripts/extract-focus-frames.mjs +87 -0
  224. package/project-template/skills/playable-focus/scripts/generate-focus-reports.mjs +121 -0
  225. package/project-template/skills/playable-focus/scripts/playground.mjs +390 -0
  226. package/project-template/skills/playable-focus/templates/focus-lab/frame.html +39 -0
  227. package/project-template/skills/playable-focus/templates/focus-lab/harness/clean-stage.js +114 -0
  228. package/project-template/skills/playable-focus/templates/focus-lab/harness/frame-lab-scene.js +94 -0
  229. package/project-template/skills/playable-focus/templates/focus-lab/harness/particle-lab-scene.js +224 -0
  230. package/project-template/skills/playable-focus/templates/focus-lab/model.html +16 -0
  231. package/project-template/skills/playable-focus/templates/focus-lab/particle.html +38 -0
  232. package/project-template/skills/playable-focus/templates/focus-lab/shatter.html +47 -0
  233. package/project-template/skills/playable-focus/templates/playground/registry.template.json +55 -0
  234. package/project-template/skills/playable-focus/templates/playground/vfx-catalog.template.json +280 -0
  235. package/project-template/skills/playable-fx-decompose/SKILL.md +212 -0
  236. package/project-template/skills/playable-fx-decompose/examples.md +89 -0
  237. package/project-template/skills/playable-fx-decompose/reference.md +201 -0
  238. package/project-template/skills/playable-fx-decompose/requirements.txt +2 -0
  239. package/project-template/skills/playable-fx-decompose/scripts/build-blank-tile-crack.py +192 -0
  240. package/project-template/skills/playable-fx-decompose/scripts/fix-shard-debris-frames.py +60 -0
  241. package/project-template/skills/playable-fx-decompose/scripts/generate-shard-debris.py +276 -0
  242. package/project-template/skills/playable-fx-peak/SKILL.md +237 -0
  243. package/project-template/skills/playable-fx-peak/requirements.txt +2 -0
  244. package/project-template/skills/playable-fx-peak/scripts/fix-frame-edges.py +70 -0
  245. package/project-template/skills/playable-fx-peak/scripts/repack-frame-sequence.py +526 -0
  246. package/project-template/skills/playable-fx-peak/scripts/validate-frame-anchors.py +130 -0
  247. package/project-template/skills/playable-placeholder/SKILL.md +239 -0
  248. package/project-template/skills/playable-record/SKILL.md +166 -0
  249. package/project-template/skills/playable-record/scripts/lib/build-artifact.mjs +92 -0
  250. package/project-template/skills/playable-record/scripts/lib/dev-server.mjs +104 -0
  251. package/project-template/skills/playable-record/scripts/lib/record-audio-bridge.js +141 -0
  252. package/project-template/skills/playable-record/scripts/lib/slice-structure-verify.mjs +199 -0
  253. package/project-template/skills/playable-record/scripts/record-playable.mjs +583 -0
  254. package/project-template/skills/playable-record/scripts/verify-build.mjs +185 -0
  255. package/project-template/skills/playable-record/scripts/verify-contract.mjs +261 -0
  256. package/project-template/skills/playable-record/scripts/verify-firstwin.mjs +398 -0
  257. package/project-template/skills/playable-record/scripts/verify-fusion.mjs +320 -0
  258. package/project-template/skills/playable-record/scripts/verify-lifecycle.mjs +78 -0
  259. package/project-template/skills/playable-record/scripts/verify-slice-artist.mjs +53 -0
  260. package/project-template/skills/playable-record/scripts/verify-slice-ta.mjs +53 -0
  261. package/project-template/skills/playable-record/scripts/verify-slice.mjs +142 -0
  262. package/project-template/skills/playable-record/scripts/verify-visual-ring.mjs +250 -0
  263. package/project-template/skills/playable-record/scripts/verify-visual-ring1.mjs +190 -0
  264. package/project-template/skills/playable-record/scripts/verify-vlm-video.mjs +227 -0
  265. package/project-template/skills/playable-validate/SKILL.md +260 -0
  266. package/project-template/skills/playable-validate/references/checklist-detail.md +36 -0
  267. package/project-template/skills/playable-validate/references/single-html-bundle.md +76 -0
  268. package/project-template/skills/playable-validate/validation-rules.md +200 -0
  269. package/project-template/skills/playable-verify-ui/SKILL.md +295 -0
  270. package/project-template/skills/playable-verify-ui/examples/asset-manifest.example.json +36 -0
  271. package/project-template/skills/playable-verify-ui/examples/mahjong-match.profile.yaml +334 -0
  272. package/project-template/skills/playable-verify-ui/profiles/template.profile.yaml +84 -0
  273. package/project-template/skills/playable-verify-ui/reference.md +165 -0
  274. package/project-template/skills/playable-verify-ui/references/phaser-patterns.md +67 -0
  275. package/project-template/skills/playable-verify-ui/references/scaling-decision-tree.md +51 -0
  276. package/project-template/skills/playable-verify-ui/requirements.txt +7 -0
  277. package/project-template/skills/playable-verify-ui/schema/asset-manifest.schema.json +68 -0
  278. package/project-template/skills/playable-verify-ui/schema/playable-ui-profile.schema.json +171 -0
  279. package/project-template/skills/playable-verify-ui/scripts/__pycache__/asset_manifest.cpython-311.pyc +0 -0
  280. package/project-template/skills/playable-verify-ui/scripts/__pycache__/verify_slice_plan.cpython-311.pyc +0 -0
  281. package/project-template/skills/playable-verify-ui/scripts/__pycache__/verify_vision_evidence.cpython-311.pyc +0 -0
  282. package/project-template/skills/playable-verify-ui/scripts/asset_manifest.py +231 -0
  283. package/project-template/skills/playable-verify-ui/scripts/lib/__init__.py +1 -0
  284. package/project-template/skills/playable-verify-ui/scripts/lib/config_expr.js +218 -0
  285. package/project-template/skills/playable-verify-ui/scripts/lib/node_utils.js +51 -0
  286. package/project-template/skills/playable-verify-ui/scripts/lib/profile_loader.py +59 -0
  287. package/project-template/skills/playable-verify-ui/scripts/lib/report.py +106 -0
  288. package/project-template/skills/playable-verify-ui/scripts/lib/runtime_contract.js +116 -0
  289. package/project-template/skills/playable-verify-ui/scripts/measure_frame_content.py +77 -0
  290. package/project-template/skills/playable-verify-ui/scripts/run_all.py +265 -0
  291. package/project-template/skills/playable-verify-ui/scripts/verify_asset_sizes.py +77 -0
  292. package/project-template/skills/playable-verify-ui/scripts/verify_assets_present.py +62 -0
  293. package/project-template/skills/playable-verify-ui/scripts/verify_atlas_budget.py +84 -0
  294. package/project-template/skills/playable-verify-ui/scripts/verify_atlas_frames.py +79 -0
  295. package/project-template/skills/playable-verify-ui/scripts/verify_bg_clean.py +365 -0
  296. package/project-template/skills/playable-verify-ui/scripts/verify_doc_asset_sync.py +90 -0
  297. package/project-template/skills/playable-verify-ui/scripts/verify_fetch_antipatterns.py +59 -0
  298. package/project-template/skills/playable-verify-ui/scripts/verify_game_config_load.js +54 -0
  299. package/project-template/skills/playable-verify-ui/scripts/verify_hardcoded_layout.js +64 -0
  300. package/project-template/skills/playable-verify-ui/scripts/verify_layout_regions.js +110 -0
  301. package/project-template/skills/playable-verify-ui/scripts/verify_profile_schema.py +37 -0
  302. package/project-template/skills/playable-verify-ui/scripts/verify_ring1_visual.py +211 -0
  303. package/project-template/skills/playable-verify-ui/scripts/verify_runtime_contract.js +58 -0
  304. package/project-template/skills/playable-verify-ui/scripts/verify_script_load_order.js +73 -0
  305. package/project-template/skills/playable-verify-ui/scripts/verify_slice_plan.py +238 -0
  306. package/project-template/skills/playable-verify-ui/scripts/verify_slice_plan_test.py +125 -0
  307. package/project-template/skills/playable-verify-ui/scripts/verify_text_overlap.py +333 -0
  308. package/project-template/skills/playable-verify-ui/scripts/verify_tile_consistency.py +323 -0
  309. package/project-template/skills/playable-verify-ui/scripts/verify_vision_evidence.py +894 -0
  310. package/project-template/skills/playable-verify-ui/scripts/verify_vision_evidence_test.py +122 -0
  311. package/project-template/skills/playable-verify-ui/scripts/verify_visual.py +422 -0
  312. package/project-template/templates/{designer-log.template.md → artist-log.template.md} +26 -31
  313. package/project-template/templates/atom-tree.template.json +133 -0
  314. package/project-template/templates/design-brief.template.md +59 -162
  315. package/project-template/templates/design-lens-checklist.reference.md +14 -14
  316. package/project-template/templates/design-methodology.md +25 -25
  317. package/project-template/templates/design.template.md +50 -0
  318. package/project-template/templates/developer-log.template.md +187 -63
  319. package/project-template/templates/five-axis-framework.md +89 -44
  320. package/project-template/templates/gen-placeholder-audio.template.mjs +63 -0
  321. package/project-template/templates/gen-placeholders.template.mjs +81 -0
  322. package/project-template/templates/intent-clarifications.template.md +7 -7
  323. package/project-template/templates/layout-spec.template.md +32 -20
  324. package/project-template/templates/plan.template.md +80 -0
  325. package/project-template/templates/project-state.template.md +90 -191
  326. package/project-template/templates/review-report.template.md +208 -24
  327. package/project-template/templates/style-exploration.template.md +8 -8
  328. package/project-template/templates/ta-log.template.md +58 -35
  329. package/project-template/tsconfig.json +20 -0
  330. package/project-template/vite.config.ts +27 -0
  331. package/project-templates/phaser/.claude/agents/artist.md +101 -0
  332. package/project-templates/phaser/.claude/agents/developer.md +123 -0
  333. package/project-templates/phaser/.claude/agents/game-designer.md +192 -0
  334. package/project-templates/phaser/.claude/agents/refs/README.md +77 -0
  335. package/project-templates/phaser/.claude/agents/refs/artist-art-style-catalog.md +533 -0
  336. package/project-templates/phaser/.claude/agents/refs/artist-color-audio-recipes.md +153 -0
  337. package/project-templates/phaser/.claude/agents/refs/artist-deliverable-spec.md +230 -0
  338. package/project-templates/phaser/.claude/agents/refs/artist-dimension-axis.md +27 -0
  339. package/project-templates/phaser/.claude/agents/refs/artist-handoff-v2-checklist.md +76 -0
  340. package/project-templates/phaser/.claude/agents/refs/artist-legacy-fallback.md +14 -0
  341. package/project-templates/phaser/.claude/agents/refs/artist-master-composite-recipes.md +208 -0
  342. package/project-templates/phaser/.claude/agents/refs/artist-style-exploration-flow.md +55 -0
  343. package/project-templates/phaser/.claude/agents/refs/developer-dev-handoff.md +152 -0
  344. package/project-templates/phaser/.claude/agents/refs/developer-impl-cookbook.md +432 -0
  345. package/project-templates/phaser/.claude/agents/refs/developer-legacy-fallback.md +15 -0
  346. package/project-templates/phaser/.claude/agents/refs/developer-phase1-flow.md +404 -0
  347. package/project-templates/phaser/.claude/agents/refs/framework-5-component-filter.md +252 -0
  348. package/project-templates/phaser/.claude/agents/refs/framework-game-feel-juice.md +266 -0
  349. package/project-templates/phaser/.claude/agents/refs/framework-mda.md +147 -0
  350. package/project-templates/phaser/.claude/agents/refs/game-designer-gameplay-sufficiency.md +123 -0
  351. package/project-templates/phaser/.claude/agents/refs/game-designer-legacy-fallback.md +15 -0
  352. package/project-templates/phaser/.claude/agents/refs/game-designer-workflow-detail.md +69 -0
  353. package/project-templates/phaser/.claude/agents/refs/implementation-plan-guide.md +309 -0
  354. package/project-templates/phaser/.claude/agents/refs/reviewer-convergence-eval.md +350 -0
  355. package/project-templates/phaser/.claude/agents/refs/reviewer-legacy-fallback.md +14 -0
  356. package/project-templates/phaser/.claude/agents/refs/reviewer-six-dimension-eval.md +6 -0
  357. package/project-templates/phaser/.claude/agents/refs/skill-selector-guide.md +465 -0
  358. package/project-templates/phaser/.claude/agents/refs/skill-value-layers.md +145 -0
  359. package/project-templates/phaser/.claude/agents/refs/storyboard-generation-guide.md +110 -0
  360. package/project-templates/phaser/.claude/agents/refs/ta-3d-flip-recipe.md +88 -0
  361. package/project-templates/phaser/.claude/agents/refs/ta-atlas-deliverable-standard.md +67 -0
  362. package/project-templates/phaser/.claude/agents/refs/ta-batch-pipeline-recipes.md +120 -0
  363. package/project-templates/phaser/.claude/agents/refs/ta-image-generation-detail.md +300 -0
  364. package/project-templates/phaser/.claude/agents/refs/ta-image-ops-reference.md +495 -0
  365. package/project-templates/phaser/.claude/agents/refs/ta-pipeline-cookbook.md +1141 -0
  366. package/project-templates/phaser/.claude/agents/refs/ta-tools-reference.md +111 -0
  367. package/project-templates/phaser/.claude/agents/refs/ta-vfx-preset-catalog.md +365 -0
  368. package/project-templates/phaser/.claude/agents/refs/technical-artist-legacy-fallback.md +14 -0
  369. package/project-templates/phaser/.claude/agents/reviewer.md +116 -0
  370. package/project-templates/phaser/.claude/agents/technical-artist.md +100 -0
  371. package/project-templates/phaser/.claude/hooks/README.md +120 -0
  372. package/project-templates/phaser/.claude/hooks/asr-coverage-validate.mjs +381 -0
  373. package/project-templates/phaser/.claude/hooks/block-developer-preflight.mjs +185 -0
  374. package/project-templates/phaser/.claude/hooks/block-ring1-tasklist.mjs +95 -0
  375. package/project-templates/phaser/.claude/hooks/gate-dispatcher.mjs +78 -0
  376. package/project-templates/phaser/.claude/hooks/gate-runner.mjs +557 -0
  377. package/project-templates/phaser/.claude/hooks/gate.mjs +171 -0
  378. package/project-templates/phaser/.claude/hooks/snapshot-milestone.mjs +247 -0
  379. package/project-templates/phaser/.claude/hooks/user-prompt.mjs +194 -0
  380. package/project-templates/phaser/.claude/hooks/validate-atom-tree-selection.mjs +281 -0
  381. package/project-templates/phaser/.claude/hooks/validate-workflow-stop.mjs +1889 -0
  382. package/project-templates/phaser/.claude/settings.json +81 -0
  383. package/project-templates/phaser/.claude/skills/brainstorming/SKILL.md +161 -0
  384. package/project-templates/phaser/.claude/skills/brainstorming/scripts/frame-template.html +270 -0
  385. package/project-templates/phaser/.claude/skills/brainstorming/scripts/helper.js +177 -0
  386. package/project-templates/phaser/.claude/skills/brainstorming/scripts/server.cjs +354 -0
  387. package/project-templates/phaser/.claude/skills/brainstorming/scripts/start-server.sh +148 -0
  388. package/project-templates/phaser/.claude/skills/brainstorming/scripts/stop-server.sh +56 -0
  389. package/project-templates/phaser/.claude/skills/brainstorming/scripts/wait-for-selection.sh +62 -0
  390. package/project-templates/phaser/.claude/skills/brainstorming/spec-document-reviewer-prompt.md +49 -0
  391. package/project-templates/phaser/.claude/skills/brainstorming/visual-companion.md +309 -0
  392. package/project-templates/phaser/.claude/skills/playcraft-ad-psychology/SKILL.md +182 -0
  393. package/project-templates/phaser/.claude/skills/playcraft-art-style-guide/SKILL.md +123 -0
  394. package/project-templates/phaser/.claude/skills/playcraft-asset-state-sheet/SKILL.md +205 -0
  395. package/project-templates/phaser/.claude/skills/playcraft-audio-generation/SKILL.md +280 -0
  396. package/project-templates/phaser/.claude/skills/playcraft-batch-pipeline/SKILL.md +184 -0
  397. package/project-templates/phaser/.claude/skills/playcraft-build-optimizer/SKILL.md +306 -0
  398. package/project-templates/phaser/.claude/skills/playcraft-image-generation/SKILL.md +298 -0
  399. package/project-templates/phaser/.claude/skills/playcraft-image-generation/reference/build-sprite-sheet.template.mjs +123 -0
  400. package/project-templates/phaser/.claude/skills/playcraft-image-generation/reference/compare-style.template.mjs +254 -0
  401. package/project-templates/phaser/.claude/skills/playcraft-image-generation/reference/gen-batch-sprite.template.mjs +324 -0
  402. package/project-templates/phaser/.claude/skills/playcraft-image-generation/reference/gen-batch.template.mjs +97 -0
  403. package/project-templates/phaser/.claude/skills/playcraft-image-generation/reference/gen-edit-variants.template.mjs +118 -0
  404. package/project-templates/phaser/.claude/skills/playcraft-image-generation/reference/process-batch.template.mjs +137 -0
  405. package/project-templates/phaser/.claude/skills/playcraft-image-generation/reference/prompt-cookbook.md +397 -0
  406. package/project-templates/phaser/.claude/skills/playcraft-image-generation/reference/validate-sprite-sheet.template.mjs +296 -0
  407. package/project-templates/phaser/.claude/skills/playcraft-image-ops/SKILL.md +122 -0
  408. package/project-templates/phaser/.claude/skills/playcraft-image-processing/SKILL.md +219 -0
  409. package/project-templates/phaser/.claude/skills/playcraft-masking/SKILL.md +373 -0
  410. package/project-templates/phaser/.claude/skills/playcraft-playable-optimization/SKILL.md +161 -0
  411. package/project-templates/phaser/.claude/skills/playcraft-research/SKILL.md +215 -0
  412. package/project-templates/phaser/.claude/skills/playcraft-skill-recommender/SKILL.md +331 -0
  413. package/project-templates/phaser/.claude/skills/playcraft-sprite-generation/SKILL.md +423 -0
  414. package/project-templates/phaser/.claude/skills/playcraft-sprite-remix/SKILL.md +158 -0
  415. package/project-templates/phaser/.claude/skills/playcraft-sprite-sheet/SKILL.md +100 -0
  416. package/project-templates/phaser/.claude/skills/playcraft-storyboard/SKILL.md +167 -0
  417. package/project-templates/phaser/.claude/skills/playcraft-style-qa/SKILL.md +270 -0
  418. package/project-templates/phaser/.claude/skills/playcraft-text-rendering/SKILL.md +236 -0
  419. package/project-templates/phaser/.claude/skills/playcraft-vfx-animation/SKILL.md +130 -0
  420. package/project-templates/phaser/.claude/skills/playwright-cli/SKILL.md +390 -0
  421. package/project-templates/phaser/.claude/skills/playwright-cli/references/element-attributes.md +23 -0
  422. package/project-templates/phaser/.claude/skills/playwright-cli/references/playwright-tests.md +39 -0
  423. package/project-templates/phaser/.claude/skills/playwright-cli/references/request-mocking.md +87 -0
  424. package/project-templates/phaser/.claude/skills/playwright-cli/references/running-code.md +240 -0
  425. package/project-templates/phaser/.claude/skills/playwright-cli/references/session-management.md +226 -0
  426. package/project-templates/phaser/.claude/skills/playwright-cli/references/spec-driven-testing.md +308 -0
  427. package/project-templates/phaser/.claude/skills/playwright-cli/references/storage-state.md +275 -0
  428. package/project-templates/phaser/.claude/skills/playwright-cli/references/test-generation.md +134 -0
  429. package/project-templates/phaser/.claude/skills/playwright-cli/references/tracing.md +142 -0
  430. package/project-templates/phaser/.claude/skills/playwright-cli/references/video-recording.md +153 -0
  431. package/project-templates/phaser/.claude/skills/session-analyzer/SKILL.md +386 -0
  432. package/project-templates/phaser/.claude/skills/session-analyzer/scripts/execution-breakdown.mjs +182 -0
  433. package/project-templates/phaser/.claude/skills/session-analyzer/scripts/find-turns.mjs +72 -0
  434. package/project-templates/phaser/.claude/skills/session-analyzer/scripts/heavy-output.mjs +121 -0
  435. package/project-templates/phaser/.claude/skills/session-analyzer/scripts/resolve-session.mjs +103 -0
  436. package/project-templates/phaser/.claude/skills/session-analyzer/scripts/subagent-stats.mjs +127 -0
  437. package/project-templates/phaser/.claude/skills/session-analyzer/scripts/subagent-tool-timeline.mjs +106 -0
  438. package/project-templates/phaser/.claude/skills/session-analyzer/scripts/time-gaps.mjs +128 -0
  439. package/project-templates/phaser/.claude/skills/session-analyzer/scripts/turn-timeline.mjs +67 -0
  440. package/project-templates/phaser/.claude/snapshot.mjs +257 -0
  441. package/project-templates/phaser/.cursor/hooks.json +17 -0
  442. package/project-templates/phaser/.cursor/rules/playcraft-orchestrator.mdc +142 -0
  443. package/project-templates/phaser/.cursor/rules/playcraft-subagent-boundary.mdc +29 -0
  444. package/project-templates/phaser/.playcraft-engine +1 -0
  445. package/project-templates/phaser/CHANGELOG.md +105 -0
  446. package/project-templates/phaser/CLAUDE.md +84 -0
  447. package/project-templates/phaser/assets/audio/bgm/.gitkeep +0 -0
  448. package/project-templates/phaser/assets/audio/sfx/.gitkeep +0 -0
  449. package/project-templates/phaser/assets/bundles/.gitkeep +0 -0
  450. package/project-templates/phaser/assets/images/bg/.gitkeep +0 -0
  451. package/project-templates/phaser/assets/images/reference/.gitkeep +0 -0
  452. package/project-templates/phaser/assets/images/storyboard/.gitkeep +0 -0
  453. package/project-templates/phaser/assets/images/tiles/.gitkeep +0 -0
  454. package/project-templates/phaser/assets/images/ui/.gitkeep +0 -0
  455. package/project-templates/phaser/assets/images/vfx/.gitkeep +0 -0
  456. package/project-templates/phaser/assets/models/.gitkeep +0 -0
  457. package/project-templates/phaser/docs/DESIGN.md +65 -0
  458. package/project-templates/phaser/docs/intent-clarifications.md +58 -0
  459. package/project-templates/phaser/docs/pipeline-overview.md +69 -0
  460. package/project-templates/phaser/docs/project-state.md +211 -0
  461. package/project-templates/phaser/docs/scaffold-manifest.md +10 -0
  462. package/project-templates/phaser/docs/team/agent-conduct.md +67 -0
  463. package/project-templates/phaser/docs/team/agent-runtime-matrix.md +80 -0
  464. package/project-templates/phaser/docs/team/atom-tree-format.md +114 -0
  465. package/project-templates/phaser/docs/team/collaboration.md +391 -0
  466. package/project-templates/phaser/docs/team/core-model.md +85 -0
  467. package/project-templates/phaser/docs/team/game-designer-migration-todo.md +8 -0
  468. package/project-templates/phaser/docs/team/harness-legacy-deprecation.md +23 -0
  469. package/project-templates/phaser/docs/team/platform-capabilities.md +18 -0
  470. package/project-templates/phaser/docs/team/workflow-changelog.md +137 -0
  471. package/project-templates/phaser/docs/team/workflow-consistency-checklist.md +240 -0
  472. package/project-templates/phaser/focus-lab/.gitkeep +0 -0
  473. package/project-templates/phaser/game/adapters/phaser.ts +52 -0
  474. package/project-templates/phaser/game/config/.gitkeep +0 -0
  475. package/project-templates/phaser/game/config/game-config.ts +46 -0
  476. package/project-templates/phaser/game/contract/publish.ts +141 -0
  477. package/project-templates/phaser/game/contract/types.ts +34 -0
  478. package/project-templates/phaser/game/gameplay/.gitkeep +0 -0
  479. package/project-templates/phaser/game/index.ts +81 -0
  480. package/project-templates/phaser/game/runtime-contract.ts +28 -0
  481. package/project-templates/phaser/game/scenes/.gitkeep +0 -0
  482. package/project-templates/phaser/globals.d.ts +51 -0
  483. package/project-templates/phaser/index.css +34 -0
  484. package/project-templates/phaser/index.html +18 -0
  485. package/project-templates/phaser/main.ts +9 -0
  486. package/project-templates/phaser/package.json +79 -0
  487. package/project-templates/phaser/skills/README.md +52 -0
  488. package/project-templates/phaser/skills/_shared/agent-prep.md +136 -0
  489. package/project-templates/phaser/skills/_shared/requirements.txt +1 -0
  490. package/project-templates/phaser/skills/_shared/scripts/build-evidence-gate.mjs +87 -0
  491. package/project-templates/phaser/skills/_shared/scripts/context-budget.mjs +215 -0
  492. package/project-templates/phaser/skills/_shared/scripts/create-playable.mjs +140 -0
  493. package/project-templates/phaser/skills/_shared/scripts/dev-start.mjs +151 -0
  494. package/project-templates/phaser/skills/_shared/scripts/disclosure-config.mjs +480 -0
  495. package/project-templates/phaser/skills/_shared/scripts/ensure-project.mjs +532 -0
  496. package/project-templates/phaser/skills/_shared/scripts/gen-placeholder-audio.py +345 -0
  497. package/project-templates/phaser/skills/_shared/scripts/gen-placeholder.py +244 -0
  498. package/project-templates/phaser/skills/_shared/scripts/harness-smoke.mjs +257 -0
  499. package/project-templates/phaser/skills/_shared/scripts/lib/validator-artifacts.mjs +129 -0
  500. package/project-templates/phaser/skills/_shared/scripts/placeholder-pack-sheet.mjs +67 -0
  501. package/project-templates/phaser/skills/_shared/scripts/placeholder_audio_lib.py +142 -0
  502. package/project-templates/phaser/skills/_shared/scripts/placeholder_lib.py +993 -0
  503. package/project-templates/phaser/skills/_shared/scripts/render-project-state.mjs +278 -0
  504. package/project-templates/phaser/skills/_shared/scripts/ring-config.mjs +252 -0
  505. package/project-templates/phaser/skills/_shared/scripts/skills-check.mjs +176 -0
  506. package/project-templates/phaser/skills/_shared/scripts/slice-set.mjs +77 -0
  507. package/project-templates/phaser/skills/_shared/scripts/state-advance-ring.mjs +63 -0
  508. package/project-templates/phaser/skills/_shared/scripts/state-get.mjs +215 -0
  509. package/project-templates/phaser/skills/_shared/scripts/state-handoff.mjs +120 -0
  510. package/project-templates/phaser/skills/_shared/scripts/state-set.mjs +113 -0
  511. package/project-templates/phaser/skills/_shared/scripts/state-store.mjs +893 -0
  512. package/project-templates/phaser/skills/_shared/scripts/sync-template-skills.mjs +112 -0
  513. package/project-templates/phaser/skills/_shared/scripts/verify-asset-code-sync.mjs +265 -0
  514. package/project-templates/phaser/skills/_shared/scripts/verify-atom-conformance.mjs +181 -0
  515. package/project-templates/phaser/skills/_shared/scripts/verify-env.mjs +285 -0
  516. package/project-templates/phaser/skills/_shared/scripts/verify-placeholders.mjs +161 -0
  517. package/project-templates/phaser/skills/_shared/scripts/workflow-doctor.mjs +348 -0
  518. package/project-templates/phaser/skills/playable-animate/SKILL.md +52 -0
  519. package/project-templates/phaser/skills/playable-animate/agents/openai.yaml +4 -0
  520. package/project-templates/phaser/skills/playable-animate/references/board-refresh.md +30 -0
  521. package/project-templates/phaser/skills/playable-animate/references/diagnosis-checklist.md +25 -0
  522. package/project-templates/phaser/skills/playable-animate/references/entrance-sequencing.md +33 -0
  523. package/project-templates/phaser/skills/playable-animate/references/interaction-timing.md +23 -0
  524. package/project-templates/phaser/skills/playable-art/SKILL.md +203 -0
  525. package/project-templates/phaser/skills/playable-art/agents/openai.yaml +4 -0
  526. package/project-templates/phaser/skills/playable-art/references/alpha-postprocess.md +46 -0
  527. package/project-templates/phaser/skills/playable-art/references/cta-art-spec.md +59 -0
  528. package/project-templates/phaser/skills/playable-art/references/layout-proportions.md +30 -0
  529. package/project-templates/phaser/skills/playable-art/references/prompt-patterns.md +83 -0
  530. package/project-templates/phaser/skills/playable-art/references/reference-comparison.md +30 -0
  531. package/project-templates/phaser/skills/playable-art/references/sheet-import-v2.md +91 -0
  532. package/project-templates/phaser/skills/playable-art/scripts/build-atlas.py +332 -0
  533. package/project-templates/phaser/skills/playable-art/scripts/chroma-key.py +50 -0
  534. package/project-templates/phaser/skills/playable-art/scripts/extract-alpha-split.py +65 -0
  535. package/project-templates/phaser/skills/playable-art/scripts/extract-dual-bg-alpha.py +118 -0
  536. package/project-templates/phaser/skills/playable-art/scripts/import-gpt-art-sheets-v2.py +403 -0
  537. package/project-templates/phaser/skills/playable-art/scripts/import-gpt-art-sheets.py +280 -0
  538. package/project-templates/phaser/skills/playable-art/scripts/import-gpt-tile-sheet.py +114 -0
  539. package/project-templates/phaser/skills/playable-art/scripts/import_gpt_art_pipeline.py +321 -0
  540. package/project-templates/phaser/skills/playable-art/scripts/import_gpt_art_sheets_v2_test.py +126 -0
  541. package/project-templates/phaser/skills/playable-art/scripts/placeholder_common.py +98 -0
  542. package/project-templates/phaser/skills/playable-art/scripts/remove-bg.py +91 -0
  543. package/project-templates/phaser/skills/playable-art/scripts/review-processed-assets.py +468 -0
  544. package/project-templates/phaser/skills/playable-art/scripts/review_processed_assets_test.py +116 -0
  545. package/project-templates/phaser/skills/playable-art/scripts/verify-alpha-clean.py +105 -0
  546. package/project-templates/phaser/skills/playable-debug/SKILL.md +116 -0
  547. package/project-templates/phaser/skills/playable-debug/agents/openai.yaml +4 -0
  548. package/project-templates/phaser/skills/playable-debug/references/debug-config.md +40 -0
  549. package/project-templates/phaser/skills/playable-focus/SKILL.md +148 -0
  550. package/project-templates/phaser/skills/playable-focus/scripts/bootstrap-playground.mjs +84 -0
  551. package/project-templates/phaser/skills/playable-focus/scripts/extract-focus-frames.mjs +87 -0
  552. package/project-templates/phaser/skills/playable-focus/scripts/generate-focus-reports.mjs +121 -0
  553. package/project-templates/phaser/skills/playable-focus/scripts/playground.mjs +390 -0
  554. package/project-templates/phaser/skills/playable-focus/templates/focus-lab/frame.html +39 -0
  555. package/project-templates/phaser/skills/playable-focus/templates/focus-lab/harness/clean-stage.js +114 -0
  556. package/project-templates/phaser/skills/playable-focus/templates/focus-lab/harness/frame-lab-scene.js +94 -0
  557. package/project-templates/phaser/skills/playable-focus/templates/focus-lab/harness/particle-lab-scene.js +224 -0
  558. package/project-templates/phaser/skills/playable-focus/templates/focus-lab/model.html +16 -0
  559. package/project-templates/phaser/skills/playable-focus/templates/focus-lab/particle.html +38 -0
  560. package/project-templates/phaser/skills/playable-focus/templates/focus-lab/shatter.html +47 -0
  561. package/project-templates/phaser/skills/playable-fx-decompose/SKILL.md +212 -0
  562. package/project-templates/phaser/skills/playable-fx-decompose/examples.md +89 -0
  563. package/project-templates/phaser/skills/playable-fx-decompose/reference.md +201 -0
  564. package/project-templates/phaser/skills/playable-fx-decompose/requirements.txt +2 -0
  565. package/project-templates/phaser/skills/playable-fx-decompose/scripts/build-blank-tile-crack.py +192 -0
  566. package/project-templates/phaser/skills/playable-fx-decompose/scripts/fix-shard-debris-frames.py +60 -0
  567. package/project-templates/phaser/skills/playable-fx-decompose/scripts/generate-shard-debris.py +276 -0
  568. package/project-templates/phaser/skills/playable-fx-peak/SKILL.md +237 -0
  569. package/project-templates/phaser/skills/playable-fx-peak/requirements.txt +2 -0
  570. package/project-templates/phaser/skills/playable-fx-peak/scripts/fix-frame-edges.py +70 -0
  571. package/project-templates/phaser/skills/playable-fx-peak/scripts/repack-frame-sequence.py +526 -0
  572. package/project-templates/phaser/skills/playable-fx-peak/scripts/validate-frame-anchors.py +130 -0
  573. package/project-templates/phaser/skills/playable-placeholder/SKILL.md +239 -0
  574. package/project-templates/phaser/skills/playable-record/SKILL.md +166 -0
  575. package/project-templates/phaser/skills/playable-record/scripts/lib/build-artifact.mjs +92 -0
  576. package/project-templates/phaser/skills/playable-record/scripts/lib/dev-server.mjs +104 -0
  577. package/project-templates/phaser/skills/playable-record/scripts/lib/record-audio-bridge.js +141 -0
  578. package/project-templates/phaser/skills/playable-record/scripts/lib/slice-structure-verify.mjs +199 -0
  579. package/project-templates/phaser/skills/playable-record/scripts/record-playable.mjs +583 -0
  580. package/project-templates/phaser/skills/playable-record/scripts/verify-build.mjs +185 -0
  581. package/project-templates/phaser/skills/playable-record/scripts/verify-contract.mjs +261 -0
  582. package/project-templates/phaser/skills/playable-record/scripts/verify-firstwin.mjs +398 -0
  583. package/project-templates/phaser/skills/playable-record/scripts/verify-fusion.mjs +320 -0
  584. package/project-templates/phaser/skills/playable-record/scripts/verify-lifecycle.mjs +78 -0
  585. package/project-templates/phaser/skills/playable-record/scripts/verify-slice-artist.mjs +53 -0
  586. package/project-templates/phaser/skills/playable-record/scripts/verify-slice-ta.mjs +53 -0
  587. package/project-templates/phaser/skills/playable-record/scripts/verify-slice.mjs +142 -0
  588. package/project-templates/phaser/skills/playable-record/scripts/verify-visual-ring.mjs +250 -0
  589. package/project-templates/phaser/skills/playable-record/scripts/verify-visual-ring1.mjs +190 -0
  590. package/project-templates/phaser/skills/playable-record/scripts/verify-vlm-video.mjs +227 -0
  591. package/project-templates/phaser/skills/playable-validate/SKILL.md +260 -0
  592. package/project-templates/phaser/skills/playable-validate/references/checklist-detail.md +36 -0
  593. package/project-templates/phaser/skills/playable-validate/references/single-html-bundle.md +76 -0
  594. package/project-templates/phaser/skills/playable-validate/validation-rules.md +200 -0
  595. package/project-templates/phaser/skills/playable-verify-ui/SKILL.md +295 -0
  596. package/project-templates/phaser/skills/playable-verify-ui/examples/asset-manifest.example.json +36 -0
  597. package/project-templates/phaser/skills/playable-verify-ui/examples/mahjong-match.profile.yaml +334 -0
  598. package/project-templates/phaser/skills/playable-verify-ui/profiles/template.profile.yaml +84 -0
  599. package/project-templates/phaser/skills/playable-verify-ui/reference.md +165 -0
  600. package/project-templates/phaser/skills/playable-verify-ui/references/phaser-patterns.md +67 -0
  601. package/project-templates/phaser/skills/playable-verify-ui/references/scaling-decision-tree.md +51 -0
  602. package/project-templates/phaser/skills/playable-verify-ui/requirements.txt +7 -0
  603. package/project-templates/phaser/skills/playable-verify-ui/schema/asset-manifest.schema.json +68 -0
  604. package/project-templates/phaser/skills/playable-verify-ui/schema/playable-ui-profile.schema.json +171 -0
  605. package/project-templates/phaser/skills/playable-verify-ui/scripts/asset_manifest.py +231 -0
  606. package/project-templates/phaser/skills/playable-verify-ui/scripts/lib/__init__.py +1 -0
  607. package/project-templates/phaser/skills/playable-verify-ui/scripts/lib/config_expr.js +218 -0
  608. package/project-templates/phaser/skills/playable-verify-ui/scripts/lib/node_utils.js +51 -0
  609. package/project-templates/phaser/skills/playable-verify-ui/scripts/lib/profile_loader.py +59 -0
  610. package/project-templates/phaser/skills/playable-verify-ui/scripts/lib/report.py +106 -0
  611. package/project-templates/phaser/skills/playable-verify-ui/scripts/lib/runtime_contract.js +116 -0
  612. package/project-templates/phaser/skills/playable-verify-ui/scripts/measure_frame_content.py +77 -0
  613. package/project-templates/phaser/skills/playable-verify-ui/scripts/run_all.py +265 -0
  614. package/project-templates/phaser/skills/playable-verify-ui/scripts/verify_asset_sizes.py +77 -0
  615. package/project-templates/phaser/skills/playable-verify-ui/scripts/verify_assets_present.py +62 -0
  616. package/project-templates/phaser/skills/playable-verify-ui/scripts/verify_atlas_budget.py +84 -0
  617. package/project-templates/phaser/skills/playable-verify-ui/scripts/verify_atlas_frames.py +79 -0
  618. package/project-templates/phaser/skills/playable-verify-ui/scripts/verify_bg_clean.py +365 -0
  619. package/project-templates/phaser/skills/playable-verify-ui/scripts/verify_doc_asset_sync.py +90 -0
  620. package/project-templates/phaser/skills/playable-verify-ui/scripts/verify_fetch_antipatterns.py +59 -0
  621. package/project-templates/phaser/skills/playable-verify-ui/scripts/verify_game_config_load.js +54 -0
  622. package/project-templates/phaser/skills/playable-verify-ui/scripts/verify_hardcoded_layout.js +64 -0
  623. package/project-templates/phaser/skills/playable-verify-ui/scripts/verify_layout_regions.js +110 -0
  624. package/project-templates/phaser/skills/playable-verify-ui/scripts/verify_profile_schema.py +37 -0
  625. package/project-templates/phaser/skills/playable-verify-ui/scripts/verify_ring1_visual.py +211 -0
  626. package/project-templates/phaser/skills/playable-verify-ui/scripts/verify_runtime_contract.js +58 -0
  627. package/project-templates/phaser/skills/playable-verify-ui/scripts/verify_script_load_order.js +73 -0
  628. package/project-templates/phaser/skills/playable-verify-ui/scripts/verify_slice_plan.py +238 -0
  629. package/project-templates/phaser/skills/playable-verify-ui/scripts/verify_slice_plan_test.py +125 -0
  630. package/project-templates/phaser/skills/playable-verify-ui/scripts/verify_text_overlap.py +333 -0
  631. package/project-templates/phaser/skills/playable-verify-ui/scripts/verify_tile_consistency.py +323 -0
  632. package/project-templates/phaser/skills/playable-verify-ui/scripts/verify_vision_evidence.py +894 -0
  633. package/project-templates/phaser/skills/playable-verify-ui/scripts/verify_vision_evidence_test.py +122 -0
  634. package/project-templates/phaser/skills/playable-verify-ui/scripts/verify_visual.py +422 -0
  635. package/project-templates/phaser/ta-workspace/scripts/.gitkeep +0 -0
  636. package/project-templates/phaser/templates/artist-log.template.md +182 -0
  637. package/project-templates/phaser/templates/atom-tree.template.json +133 -0
  638. package/project-templates/phaser/templates/design-brief.template.md +92 -0
  639. package/project-templates/phaser/templates/design-lens-checklist.reference.md +117 -0
  640. package/project-templates/phaser/templates/design-methodology.md +99 -0
  641. package/project-templates/phaser/templates/design.template.md +50 -0
  642. package/project-templates/phaser/templates/developer-log.template.md +258 -0
  643. package/project-templates/phaser/templates/five-axis-framework.md +194 -0
  644. package/project-templates/phaser/templates/gen-placeholder-audio.template.mjs +63 -0
  645. package/project-templates/phaser/templates/gen-placeholders.template.mjs +81 -0
  646. package/project-templates/phaser/templates/intent-clarifications.template.md +58 -0
  647. package/project-templates/phaser/templates/layout-spec.template.md +198 -0
  648. package/project-templates/phaser/templates/plan.template.md +80 -0
  649. package/project-templates/phaser/templates/project-state.template.md +136 -0
  650. package/project-templates/phaser/templates/review-report.template.md +275 -0
  651. package/project-templates/phaser/templates/style-exploration.template.md +93 -0
  652. package/project-templates/phaser/templates/ta-log.template.md +394 -0
  653. package/project-templates/phaser/tsconfig.json +20 -0
  654. package/project-templates/phaser/vite.config.ts +27 -0
  655. package/project-templates/threejs/.claude/agents/artist.md +101 -0
  656. package/project-templates/threejs/.claude/agents/developer.md +123 -0
  657. package/project-templates/threejs/.claude/agents/game-designer.md +192 -0
  658. package/project-templates/threejs/.claude/agents/refs/README.md +77 -0
  659. package/project-templates/threejs/.claude/agents/refs/artist-art-style-catalog.md +533 -0
  660. package/project-templates/threejs/.claude/agents/refs/artist-color-audio-recipes.md +153 -0
  661. package/project-templates/threejs/.claude/agents/refs/artist-deliverable-spec.md +230 -0
  662. package/project-templates/threejs/.claude/agents/refs/artist-dimension-axis.md +27 -0
  663. package/project-templates/threejs/.claude/agents/refs/artist-handoff-v2-checklist.md +76 -0
  664. package/project-templates/threejs/.claude/agents/refs/artist-legacy-fallback.md +14 -0
  665. package/project-templates/threejs/.claude/agents/refs/artist-master-composite-recipes.md +208 -0
  666. package/project-templates/threejs/.claude/agents/refs/artist-style-exploration-flow.md +55 -0
  667. package/project-templates/threejs/.claude/agents/refs/developer-dev-handoff.md +152 -0
  668. package/project-templates/threejs/.claude/agents/refs/developer-impl-cookbook.md +432 -0
  669. package/project-templates/threejs/.claude/agents/refs/developer-legacy-fallback.md +15 -0
  670. package/project-templates/threejs/.claude/agents/refs/developer-phase1-flow.md +404 -0
  671. package/project-templates/threejs/.claude/agents/refs/framework-5-component-filter.md +252 -0
  672. package/project-templates/threejs/.claude/agents/refs/framework-game-feel-juice.md +266 -0
  673. package/project-templates/threejs/.claude/agents/refs/framework-mda.md +147 -0
  674. package/project-templates/threejs/.claude/agents/refs/game-designer-gameplay-sufficiency.md +123 -0
  675. package/project-templates/threejs/.claude/agents/refs/game-designer-legacy-fallback.md +15 -0
  676. package/project-templates/threejs/.claude/agents/refs/game-designer-workflow-detail.md +69 -0
  677. package/project-templates/threejs/.claude/agents/refs/implementation-plan-guide.md +309 -0
  678. package/project-templates/threejs/.claude/agents/refs/reviewer-convergence-eval.md +350 -0
  679. package/project-templates/threejs/.claude/agents/refs/reviewer-legacy-fallback.md +14 -0
  680. package/project-templates/threejs/.claude/agents/refs/reviewer-six-dimension-eval.md +6 -0
  681. package/project-templates/threejs/.claude/agents/refs/skill-selector-guide.md +465 -0
  682. package/project-templates/threejs/.claude/agents/refs/skill-value-layers.md +145 -0
  683. package/project-templates/threejs/.claude/agents/refs/storyboard-generation-guide.md +110 -0
  684. package/project-templates/threejs/.claude/agents/refs/ta-3d-flip-recipe.md +88 -0
  685. package/project-templates/threejs/.claude/agents/refs/ta-atlas-deliverable-standard.md +67 -0
  686. package/project-templates/threejs/.claude/agents/refs/ta-batch-pipeline-recipes.md +120 -0
  687. package/project-templates/threejs/.claude/agents/refs/ta-image-generation-detail.md +300 -0
  688. package/project-templates/threejs/.claude/agents/refs/ta-image-ops-reference.md +495 -0
  689. package/project-templates/threejs/.claude/agents/refs/ta-pipeline-cookbook.md +1141 -0
  690. package/project-templates/threejs/.claude/agents/refs/ta-tools-reference.md +111 -0
  691. package/project-templates/threejs/.claude/agents/refs/ta-vfx-preset-catalog.md +365 -0
  692. package/project-templates/threejs/.claude/agents/refs/technical-artist-legacy-fallback.md +14 -0
  693. package/project-templates/threejs/.claude/agents/reviewer.md +116 -0
  694. package/project-templates/threejs/.claude/agents/technical-artist.md +100 -0
  695. package/project-templates/threejs/.claude/hooks/README.md +120 -0
  696. package/project-templates/threejs/.claude/hooks/asr-coverage-validate.mjs +381 -0
  697. package/project-templates/threejs/.claude/hooks/block-developer-preflight.mjs +185 -0
  698. package/project-templates/threejs/.claude/hooks/block-ring1-tasklist.mjs +95 -0
  699. package/project-templates/threejs/.claude/hooks/gate-dispatcher.mjs +78 -0
  700. package/project-templates/threejs/.claude/hooks/gate-runner.mjs +557 -0
  701. package/project-templates/threejs/.claude/hooks/gate.mjs +171 -0
  702. package/project-templates/threejs/.claude/hooks/snapshot-milestone.mjs +247 -0
  703. package/project-templates/threejs/.claude/hooks/user-prompt.mjs +194 -0
  704. package/project-templates/threejs/.claude/hooks/validate-atom-tree-selection.mjs +281 -0
  705. package/project-templates/threejs/.claude/hooks/validate-workflow-stop.mjs +1889 -0
  706. package/project-templates/threejs/.claude/settings.json +81 -0
  707. package/project-templates/threejs/.claude/skills/brainstorming/SKILL.md +161 -0
  708. package/project-templates/threejs/.claude/skills/brainstorming/scripts/frame-template.html +270 -0
  709. package/project-templates/threejs/.claude/skills/brainstorming/scripts/helper.js +177 -0
  710. package/project-templates/threejs/.claude/skills/brainstorming/scripts/server.cjs +354 -0
  711. package/project-templates/threejs/.claude/skills/brainstorming/scripts/start-server.sh +148 -0
  712. package/project-templates/threejs/.claude/skills/brainstorming/scripts/stop-server.sh +56 -0
  713. package/project-templates/threejs/.claude/skills/brainstorming/scripts/wait-for-selection.sh +62 -0
  714. package/project-templates/threejs/.claude/skills/brainstorming/spec-document-reviewer-prompt.md +49 -0
  715. package/project-templates/threejs/.claude/skills/brainstorming/visual-companion.md +309 -0
  716. package/project-templates/threejs/.claude/skills/playcraft-ad-psychology/SKILL.md +182 -0
  717. package/project-templates/threejs/.claude/skills/playcraft-art-style-guide/SKILL.md +123 -0
  718. package/project-templates/threejs/.claude/skills/playcraft-asset-state-sheet/SKILL.md +205 -0
  719. package/project-templates/threejs/.claude/skills/playcraft-audio-generation/SKILL.md +280 -0
  720. package/project-templates/threejs/.claude/skills/playcraft-batch-pipeline/SKILL.md +184 -0
  721. package/project-templates/threejs/.claude/skills/playcraft-build-optimizer/SKILL.md +306 -0
  722. package/project-templates/threejs/.claude/skills/playcraft-image-generation/SKILL.md +298 -0
  723. package/project-templates/threejs/.claude/skills/playcraft-image-generation/reference/build-sprite-sheet.template.mjs +123 -0
  724. package/project-templates/threejs/.claude/skills/playcraft-image-generation/reference/compare-style.template.mjs +254 -0
  725. package/project-templates/threejs/.claude/skills/playcraft-image-generation/reference/gen-batch-sprite.template.mjs +324 -0
  726. package/project-templates/threejs/.claude/skills/playcraft-image-generation/reference/gen-batch.template.mjs +97 -0
  727. package/project-templates/threejs/.claude/skills/playcraft-image-generation/reference/gen-edit-variants.template.mjs +118 -0
  728. package/project-templates/threejs/.claude/skills/playcraft-image-generation/reference/process-batch.template.mjs +137 -0
  729. package/project-templates/threejs/.claude/skills/playcraft-image-generation/reference/prompt-cookbook.md +397 -0
  730. package/project-templates/threejs/.claude/skills/playcraft-image-generation/reference/validate-sprite-sheet.template.mjs +296 -0
  731. package/project-templates/threejs/.claude/skills/playcraft-image-ops/SKILL.md +122 -0
  732. package/project-templates/threejs/.claude/skills/playcraft-image-processing/SKILL.md +219 -0
  733. package/project-templates/threejs/.claude/skills/playcraft-masking/SKILL.md +373 -0
  734. package/project-templates/threejs/.claude/skills/playcraft-playable-optimization/SKILL.md +161 -0
  735. package/project-templates/threejs/.claude/skills/playcraft-research/SKILL.md +215 -0
  736. package/project-templates/threejs/.claude/skills/playcraft-skill-recommender/SKILL.md +331 -0
  737. package/project-templates/threejs/.claude/skills/playcraft-sprite-generation/SKILL.md +423 -0
  738. package/project-templates/threejs/.claude/skills/playcraft-sprite-remix/SKILL.md +158 -0
  739. package/project-templates/threejs/.claude/skills/playcraft-sprite-sheet/SKILL.md +100 -0
  740. package/project-templates/threejs/.claude/skills/playcraft-storyboard/SKILL.md +167 -0
  741. package/project-templates/threejs/.claude/skills/playcraft-style-qa/SKILL.md +270 -0
  742. package/project-templates/threejs/.claude/skills/playcraft-text-rendering/SKILL.md +236 -0
  743. package/project-templates/threejs/.claude/skills/playcraft-vfx-animation/SKILL.md +130 -0
  744. package/project-templates/threejs/.claude/skills/playwright-cli/SKILL.md +390 -0
  745. package/project-templates/threejs/.claude/skills/playwright-cli/references/element-attributes.md +23 -0
  746. package/project-templates/threejs/.claude/skills/playwright-cli/references/playwright-tests.md +39 -0
  747. package/project-templates/threejs/.claude/skills/playwright-cli/references/request-mocking.md +87 -0
  748. package/project-templates/threejs/.claude/skills/playwright-cli/references/running-code.md +240 -0
  749. package/project-templates/threejs/.claude/skills/playwright-cli/references/session-management.md +226 -0
  750. package/project-templates/threejs/.claude/skills/playwright-cli/references/spec-driven-testing.md +308 -0
  751. package/project-templates/threejs/.claude/skills/playwright-cli/references/storage-state.md +275 -0
  752. package/project-templates/threejs/.claude/skills/playwright-cli/references/test-generation.md +134 -0
  753. package/project-templates/threejs/.claude/skills/playwright-cli/references/tracing.md +142 -0
  754. package/project-templates/threejs/.claude/skills/playwright-cli/references/video-recording.md +153 -0
  755. package/project-templates/threejs/.claude/skills/session-analyzer/SKILL.md +386 -0
  756. package/project-templates/threejs/.claude/skills/session-analyzer/scripts/execution-breakdown.mjs +182 -0
  757. package/project-templates/threejs/.claude/skills/session-analyzer/scripts/find-turns.mjs +72 -0
  758. package/project-templates/threejs/.claude/skills/session-analyzer/scripts/heavy-output.mjs +121 -0
  759. package/project-templates/threejs/.claude/skills/session-analyzer/scripts/resolve-session.mjs +103 -0
  760. package/project-templates/threejs/.claude/skills/session-analyzer/scripts/subagent-stats.mjs +127 -0
  761. package/project-templates/threejs/.claude/skills/session-analyzer/scripts/subagent-tool-timeline.mjs +106 -0
  762. package/project-templates/threejs/.claude/skills/session-analyzer/scripts/time-gaps.mjs +128 -0
  763. package/project-templates/threejs/.claude/skills/session-analyzer/scripts/turn-timeline.mjs +67 -0
  764. package/project-templates/threejs/.claude/snapshot.mjs +257 -0
  765. package/project-templates/threejs/.cursor/hooks.json +17 -0
  766. package/project-templates/threejs/.cursor/rules/playcraft-orchestrator.mdc +142 -0
  767. package/project-templates/threejs/.cursor/rules/playcraft-subagent-boundary.mdc +29 -0
  768. package/project-templates/threejs/.playcraft-engine +1 -0
  769. package/project-templates/threejs/CHANGELOG.md +105 -0
  770. package/project-templates/threejs/CLAUDE.md +84 -0
  771. package/project-templates/threejs/assets/audio/bgm/.gitkeep +0 -0
  772. package/project-templates/threejs/assets/audio/sfx/.gitkeep +0 -0
  773. package/project-templates/threejs/assets/bundles/.gitkeep +0 -0
  774. package/project-templates/threejs/assets/images/bg/.gitkeep +0 -0
  775. package/project-templates/threejs/assets/images/reference/.gitkeep +0 -0
  776. package/project-templates/threejs/assets/images/storyboard/.gitkeep +0 -0
  777. package/project-templates/threejs/assets/images/tiles/.gitkeep +0 -0
  778. package/project-templates/threejs/assets/images/ui/.gitkeep +0 -0
  779. package/project-templates/threejs/assets/images/vfx/.gitkeep +0 -0
  780. package/project-templates/threejs/assets/models/.gitkeep +0 -0
  781. package/project-templates/threejs/docs/DESIGN.md +65 -0
  782. package/project-templates/threejs/docs/intent-clarifications.md +58 -0
  783. package/project-templates/threejs/docs/pipeline-overview.md +69 -0
  784. package/project-templates/threejs/docs/project-state.md +211 -0
  785. package/project-templates/threejs/docs/scaffold-manifest.md +10 -0
  786. package/project-templates/threejs/docs/team/agent-conduct.md +67 -0
  787. package/project-templates/threejs/docs/team/agent-runtime-matrix.md +80 -0
  788. package/project-templates/threejs/docs/team/atom-tree-format.md +114 -0
  789. package/project-templates/threejs/docs/team/collaboration.md +391 -0
  790. package/project-templates/threejs/docs/team/core-model.md +85 -0
  791. package/project-templates/threejs/docs/team/game-designer-migration-todo.md +8 -0
  792. package/project-templates/threejs/docs/team/harness-legacy-deprecation.md +23 -0
  793. package/project-templates/threejs/docs/team/platform-capabilities.md +18 -0
  794. package/project-templates/threejs/docs/team/workflow-changelog.md +137 -0
  795. package/project-templates/threejs/docs/team/workflow-consistency-checklist.md +240 -0
  796. package/project-templates/threejs/focus-lab/.gitkeep +0 -0
  797. package/project-templates/threejs/game/config/.gitkeep +0 -0
  798. package/project-templates/threejs/game/config/game-config.ts +46 -0
  799. package/project-templates/threejs/game/contract/publish.ts +141 -0
  800. package/project-templates/threejs/game/contract/types.ts +34 -0
  801. package/project-templates/threejs/game/gameplay/.gitkeep +0 -0
  802. package/project-templates/threejs/game/index.ts +76 -0
  803. package/project-templates/threejs/game/runtime-contract.ts +15 -0
  804. package/project-templates/threejs/game/scenes/.gitkeep +0 -0
  805. package/project-templates/threejs/globals.d.ts +51 -0
  806. package/project-templates/threejs/index.css +34 -0
  807. package/project-templates/threejs/index.html +18 -0
  808. package/project-templates/threejs/main.ts +9 -0
  809. package/project-templates/threejs/package.json +79 -0
  810. package/project-templates/threejs/skills/README.md +52 -0
  811. package/project-templates/threejs/skills/_shared/agent-prep.md +136 -0
  812. package/project-templates/threejs/skills/_shared/requirements.txt +1 -0
  813. package/project-templates/threejs/skills/_shared/scripts/build-evidence-gate.mjs +87 -0
  814. package/project-templates/threejs/skills/_shared/scripts/context-budget.mjs +215 -0
  815. package/project-templates/threejs/skills/_shared/scripts/create-playable.mjs +140 -0
  816. package/project-templates/threejs/skills/_shared/scripts/dev-start.mjs +151 -0
  817. package/project-templates/threejs/skills/_shared/scripts/disclosure-config.mjs +480 -0
  818. package/project-templates/threejs/skills/_shared/scripts/ensure-project.mjs +532 -0
  819. package/project-templates/threejs/skills/_shared/scripts/gen-placeholder-audio.py +345 -0
  820. package/project-templates/threejs/skills/_shared/scripts/gen-placeholder.py +244 -0
  821. package/project-templates/threejs/skills/_shared/scripts/harness-smoke.mjs +257 -0
  822. package/project-templates/threejs/skills/_shared/scripts/lib/validator-artifacts.mjs +129 -0
  823. package/project-templates/threejs/skills/_shared/scripts/placeholder-pack-sheet.mjs +67 -0
  824. package/project-templates/threejs/skills/_shared/scripts/placeholder_audio_lib.py +142 -0
  825. package/project-templates/threejs/skills/_shared/scripts/placeholder_lib.py +993 -0
  826. package/project-templates/threejs/skills/_shared/scripts/render-project-state.mjs +278 -0
  827. package/project-templates/threejs/skills/_shared/scripts/ring-config.mjs +252 -0
  828. package/project-templates/threejs/skills/_shared/scripts/skills-check.mjs +176 -0
  829. package/project-templates/threejs/skills/_shared/scripts/slice-set.mjs +77 -0
  830. package/project-templates/threejs/skills/_shared/scripts/state-advance-ring.mjs +63 -0
  831. package/project-templates/threejs/skills/_shared/scripts/state-get.mjs +215 -0
  832. package/project-templates/threejs/skills/_shared/scripts/state-handoff.mjs +120 -0
  833. package/project-templates/threejs/skills/_shared/scripts/state-set.mjs +113 -0
  834. package/project-templates/threejs/skills/_shared/scripts/state-store.mjs +893 -0
  835. package/project-templates/threejs/skills/_shared/scripts/sync-template-skills.mjs +112 -0
  836. package/project-templates/threejs/skills/_shared/scripts/verify-asset-code-sync.mjs +265 -0
  837. package/project-templates/threejs/skills/_shared/scripts/verify-atom-conformance.mjs +181 -0
  838. package/project-templates/threejs/skills/_shared/scripts/verify-env.mjs +285 -0
  839. package/project-templates/threejs/skills/_shared/scripts/verify-placeholders.mjs +161 -0
  840. package/project-templates/threejs/skills/_shared/scripts/workflow-doctor.mjs +348 -0
  841. package/project-templates/threejs/skills/playable-animate/SKILL.md +52 -0
  842. package/project-templates/threejs/skills/playable-animate/agents/openai.yaml +4 -0
  843. package/project-templates/threejs/skills/playable-animate/references/board-refresh.md +30 -0
  844. package/project-templates/threejs/skills/playable-animate/references/diagnosis-checklist.md +25 -0
  845. package/project-templates/threejs/skills/playable-animate/references/entrance-sequencing.md +33 -0
  846. package/project-templates/threejs/skills/playable-animate/references/interaction-timing.md +23 -0
  847. package/project-templates/threejs/skills/playable-art/SKILL.md +203 -0
  848. package/project-templates/threejs/skills/playable-art/agents/openai.yaml +4 -0
  849. package/project-templates/threejs/skills/playable-art/references/alpha-postprocess.md +46 -0
  850. package/project-templates/threejs/skills/playable-art/references/cta-art-spec.md +59 -0
  851. package/project-templates/threejs/skills/playable-art/references/layout-proportions.md +30 -0
  852. package/project-templates/threejs/skills/playable-art/references/prompt-patterns.md +83 -0
  853. package/project-templates/threejs/skills/playable-art/references/reference-comparison.md +30 -0
  854. package/project-templates/threejs/skills/playable-art/references/sheet-import-v2.md +91 -0
  855. package/project-templates/threejs/skills/playable-art/scripts/build-atlas.py +332 -0
  856. package/project-templates/threejs/skills/playable-art/scripts/chroma-key.py +50 -0
  857. package/project-templates/threejs/skills/playable-art/scripts/extract-alpha-split.py +65 -0
  858. package/project-templates/threejs/skills/playable-art/scripts/extract-dual-bg-alpha.py +118 -0
  859. package/project-templates/threejs/skills/playable-art/scripts/import-gpt-art-sheets-v2.py +403 -0
  860. package/project-templates/threejs/skills/playable-art/scripts/import-gpt-art-sheets.py +280 -0
  861. package/project-templates/threejs/skills/playable-art/scripts/import-gpt-tile-sheet.py +114 -0
  862. package/project-templates/threejs/skills/playable-art/scripts/import_gpt_art_pipeline.py +321 -0
  863. package/project-templates/threejs/skills/playable-art/scripts/import_gpt_art_sheets_v2_test.py +126 -0
  864. package/project-templates/threejs/skills/playable-art/scripts/placeholder_common.py +98 -0
  865. package/project-templates/threejs/skills/playable-art/scripts/remove-bg.py +91 -0
  866. package/project-templates/threejs/skills/playable-art/scripts/review-processed-assets.py +468 -0
  867. package/project-templates/threejs/skills/playable-art/scripts/review_processed_assets_test.py +116 -0
  868. package/project-templates/threejs/skills/playable-art/scripts/verify-alpha-clean.py +105 -0
  869. package/project-templates/threejs/skills/playable-debug/SKILL.md +116 -0
  870. package/project-templates/threejs/skills/playable-debug/agents/openai.yaml +4 -0
  871. package/project-templates/threejs/skills/playable-debug/references/debug-config.md +40 -0
  872. package/project-templates/threejs/skills/playable-focus/SKILL.md +148 -0
  873. package/project-templates/threejs/skills/playable-focus/scripts/bootstrap-playground.mjs +84 -0
  874. package/project-templates/threejs/skills/playable-focus/scripts/extract-focus-frames.mjs +87 -0
  875. package/project-templates/threejs/skills/playable-focus/scripts/generate-focus-reports.mjs +121 -0
  876. package/project-templates/threejs/skills/playable-focus/scripts/playground.mjs +390 -0
  877. package/project-templates/threejs/skills/playable-focus/templates/focus-lab/frame.html +39 -0
  878. package/project-templates/threejs/skills/playable-focus/templates/focus-lab/harness/clean-stage.js +114 -0
  879. package/project-templates/threejs/skills/playable-focus/templates/focus-lab/harness/frame-lab-scene.js +94 -0
  880. package/project-templates/threejs/skills/playable-focus/templates/focus-lab/harness/particle-lab-scene.js +224 -0
  881. package/project-templates/threejs/skills/playable-focus/templates/focus-lab/model.html +16 -0
  882. package/project-templates/threejs/skills/playable-focus/templates/focus-lab/particle.html +38 -0
  883. package/project-templates/threejs/skills/playable-focus/templates/focus-lab/shatter.html +47 -0
  884. package/project-templates/threejs/skills/playable-fx-decompose/SKILL.md +212 -0
  885. package/project-templates/threejs/skills/playable-fx-decompose/examples.md +89 -0
  886. package/project-templates/threejs/skills/playable-fx-decompose/reference.md +201 -0
  887. package/project-templates/threejs/skills/playable-fx-decompose/requirements.txt +2 -0
  888. package/project-templates/threejs/skills/playable-fx-decompose/scripts/build-blank-tile-crack.py +192 -0
  889. package/project-templates/threejs/skills/playable-fx-decompose/scripts/fix-shard-debris-frames.py +60 -0
  890. package/project-templates/threejs/skills/playable-fx-decompose/scripts/generate-shard-debris.py +276 -0
  891. package/project-templates/threejs/skills/playable-fx-peak/SKILL.md +237 -0
  892. package/project-templates/threejs/skills/playable-fx-peak/requirements.txt +2 -0
  893. package/project-templates/threejs/skills/playable-fx-peak/scripts/fix-frame-edges.py +70 -0
  894. package/project-templates/threejs/skills/playable-fx-peak/scripts/repack-frame-sequence.py +526 -0
  895. package/project-templates/threejs/skills/playable-fx-peak/scripts/validate-frame-anchors.py +130 -0
  896. package/project-templates/threejs/skills/playable-placeholder/SKILL.md +239 -0
  897. package/project-templates/threejs/skills/playable-record/SKILL.md +166 -0
  898. package/project-templates/threejs/skills/playable-record/scripts/lib/build-artifact.mjs +92 -0
  899. package/project-templates/threejs/skills/playable-record/scripts/lib/dev-server.mjs +104 -0
  900. package/project-templates/threejs/skills/playable-record/scripts/lib/record-audio-bridge.js +141 -0
  901. package/project-templates/threejs/skills/playable-record/scripts/lib/slice-structure-verify.mjs +199 -0
  902. package/project-templates/threejs/skills/playable-record/scripts/record-playable.mjs +583 -0
  903. package/project-templates/threejs/skills/playable-record/scripts/verify-build.mjs +185 -0
  904. package/project-templates/threejs/skills/playable-record/scripts/verify-contract.mjs +261 -0
  905. package/project-templates/threejs/skills/playable-record/scripts/verify-firstwin.mjs +398 -0
  906. package/project-templates/threejs/skills/playable-record/scripts/verify-fusion.mjs +320 -0
  907. package/project-templates/threejs/skills/playable-record/scripts/verify-lifecycle.mjs +78 -0
  908. package/project-templates/threejs/skills/playable-record/scripts/verify-slice-artist.mjs +53 -0
  909. package/project-templates/threejs/skills/playable-record/scripts/verify-slice-ta.mjs +53 -0
  910. package/project-templates/threejs/skills/playable-record/scripts/verify-slice.mjs +142 -0
  911. package/project-templates/threejs/skills/playable-record/scripts/verify-visual-ring.mjs +250 -0
  912. package/project-templates/threejs/skills/playable-record/scripts/verify-visual-ring1.mjs +190 -0
  913. package/project-templates/threejs/skills/playable-record/scripts/verify-vlm-video.mjs +227 -0
  914. package/project-templates/threejs/skills/playable-validate/SKILL.md +260 -0
  915. package/project-templates/threejs/skills/playable-validate/references/checklist-detail.md +36 -0
  916. package/project-templates/threejs/skills/playable-validate/references/single-html-bundle.md +76 -0
  917. package/project-templates/threejs/skills/playable-validate/validation-rules.md +200 -0
  918. package/project-templates/threejs/skills/playable-verify-ui/SKILL.md +295 -0
  919. package/project-templates/threejs/skills/playable-verify-ui/examples/asset-manifest.example.json +36 -0
  920. package/project-templates/threejs/skills/playable-verify-ui/examples/mahjong-match.profile.yaml +334 -0
  921. package/project-templates/threejs/skills/playable-verify-ui/profiles/template.profile.yaml +84 -0
  922. package/project-templates/threejs/skills/playable-verify-ui/reference.md +165 -0
  923. package/project-templates/threejs/skills/playable-verify-ui/references/phaser-patterns.md +67 -0
  924. package/project-templates/threejs/skills/playable-verify-ui/references/scaling-decision-tree.md +51 -0
  925. package/project-templates/threejs/skills/playable-verify-ui/requirements.txt +7 -0
  926. package/project-templates/threejs/skills/playable-verify-ui/schema/asset-manifest.schema.json +68 -0
  927. package/project-templates/threejs/skills/playable-verify-ui/schema/playable-ui-profile.schema.json +171 -0
  928. package/project-templates/threejs/skills/playable-verify-ui/scripts/asset_manifest.py +231 -0
  929. package/project-templates/threejs/skills/playable-verify-ui/scripts/lib/__init__.py +1 -0
  930. package/project-templates/threejs/skills/playable-verify-ui/scripts/lib/config_expr.js +218 -0
  931. package/project-templates/threejs/skills/playable-verify-ui/scripts/lib/node_utils.js +51 -0
  932. package/project-templates/threejs/skills/playable-verify-ui/scripts/lib/profile_loader.py +59 -0
  933. package/project-templates/threejs/skills/playable-verify-ui/scripts/lib/report.py +106 -0
  934. package/project-templates/threejs/skills/playable-verify-ui/scripts/lib/runtime_contract.js +116 -0
  935. package/project-templates/threejs/skills/playable-verify-ui/scripts/measure_frame_content.py +77 -0
  936. package/project-templates/threejs/skills/playable-verify-ui/scripts/run_all.py +265 -0
  937. package/project-templates/threejs/skills/playable-verify-ui/scripts/verify_asset_sizes.py +77 -0
  938. package/project-templates/threejs/skills/playable-verify-ui/scripts/verify_assets_present.py +62 -0
  939. package/project-templates/threejs/skills/playable-verify-ui/scripts/verify_atlas_budget.py +84 -0
  940. package/project-templates/threejs/skills/playable-verify-ui/scripts/verify_atlas_frames.py +79 -0
  941. package/project-templates/threejs/skills/playable-verify-ui/scripts/verify_bg_clean.py +365 -0
  942. package/project-templates/threejs/skills/playable-verify-ui/scripts/verify_doc_asset_sync.py +90 -0
  943. package/project-templates/threejs/skills/playable-verify-ui/scripts/verify_fetch_antipatterns.py +59 -0
  944. package/project-templates/threejs/skills/playable-verify-ui/scripts/verify_game_config_load.js +54 -0
  945. package/project-templates/threejs/skills/playable-verify-ui/scripts/verify_hardcoded_layout.js +64 -0
  946. package/project-templates/threejs/skills/playable-verify-ui/scripts/verify_layout_regions.js +110 -0
  947. package/project-templates/threejs/skills/playable-verify-ui/scripts/verify_profile_schema.py +37 -0
  948. package/project-templates/threejs/skills/playable-verify-ui/scripts/verify_ring1_visual.py +211 -0
  949. package/project-templates/threejs/skills/playable-verify-ui/scripts/verify_runtime_contract.js +58 -0
  950. package/project-templates/threejs/skills/playable-verify-ui/scripts/verify_script_load_order.js +73 -0
  951. package/project-templates/threejs/skills/playable-verify-ui/scripts/verify_slice_plan.py +238 -0
  952. package/project-templates/threejs/skills/playable-verify-ui/scripts/verify_slice_plan_test.py +125 -0
  953. package/project-templates/threejs/skills/playable-verify-ui/scripts/verify_text_overlap.py +333 -0
  954. package/project-templates/threejs/skills/playable-verify-ui/scripts/verify_tile_consistency.py +323 -0
  955. package/project-templates/threejs/skills/playable-verify-ui/scripts/verify_vision_evidence.py +894 -0
  956. package/project-templates/threejs/skills/playable-verify-ui/scripts/verify_vision_evidence_test.py +122 -0
  957. package/project-templates/threejs/skills/playable-verify-ui/scripts/verify_visual.py +422 -0
  958. package/project-templates/threejs/ta-workspace/scripts/.gitkeep +0 -0
  959. package/project-templates/threejs/templates/artist-log.template.md +182 -0
  960. package/project-templates/threejs/templates/atom-tree.template.json +133 -0
  961. package/project-templates/threejs/templates/design-brief.template.md +92 -0
  962. package/project-templates/threejs/templates/design-lens-checklist.reference.md +117 -0
  963. package/project-templates/threejs/templates/design-methodology.md +99 -0
  964. package/project-templates/threejs/templates/design.template.md +50 -0
  965. package/project-templates/threejs/templates/developer-log.template.md +258 -0
  966. package/project-templates/threejs/templates/five-axis-framework.md +194 -0
  967. package/project-templates/threejs/templates/gen-placeholder-audio.template.mjs +63 -0
  968. package/project-templates/threejs/templates/gen-placeholders.template.mjs +81 -0
  969. package/project-templates/threejs/templates/intent-clarifications.template.md +58 -0
  970. package/project-templates/threejs/templates/layout-spec.template.md +198 -0
  971. package/project-templates/threejs/templates/plan.template.md +80 -0
  972. package/project-templates/threejs/templates/project-state.template.md +136 -0
  973. package/project-templates/threejs/templates/review-report.template.md +275 -0
  974. package/project-templates/threejs/templates/style-exploration.template.md +93 -0
  975. package/project-templates/threejs/templates/ta-log.template.md +394 -0
  976. package/project-templates/threejs/tsconfig.json +20 -0
  977. package/project-templates/threejs/vite.config.ts +27 -0
  978. package/dist/atom-plan/validate-atom-plan.js +0 -298
  979. package/project-template/.claude/agents/designer.md +0 -124
  980. package/project-template/.claude/agents/pm.md +0 -166
  981. package/project-template/.claude/agents/refs/designer-style-exploration-flow.md +0 -67
  982. package/project-template/.claude/agents/refs/pm-workflow-detail.md +0 -567
  983. package/project-template/.claude/hooks/validate-atom-plan.mjs +0 -224
  984. package/project-template/.claude/skills/playcraft-workflow/SKILL.md +0 -485
  985. package/project-template/docs/team/atom-plan-format.md +0 -173
  986. package/project-template/templates/atom-plan.template.json +0 -44
  987. package/project-template/templates/atom-plan.template.md +0 -108
  988. /package/dist/{atom-plan → asr}/validate-asr-coverage.js +0 -0
  989. /package/{project-template → engine-packs/phaser}/game/config/.gitkeep +0 -0
  990. /package/{project-template → engine-packs/phaser}/game/gameplay/.gitkeep +0 -0
  991. /package/{project-template → engine-packs/phaser}/game/scenes/.gitkeep +0 -0
  992. /package/project-template/.claude/agents/refs/{designer-art-style-catalog.md → artist-art-style-catalog.md} +0 -0
@@ -0,0 +1,404 @@
1
+ # Developer Flow — `loop: build`
2
+
3
+ > **触发条件**:`npm run state:get -- --json` 披露 `iteration` 1..4 + `loop: build`。只读取其中披露的 `currentRingRequiredFiles`。
4
+ > 本文件由**单一 `developer` 角色**执行。
5
+
6
+ ---
7
+
8
+ ## 目标
9
+
10
+ 按照当前 Ring 披露的任务面实现游戏:Ring 1 只完成最小可验证 playable spine、`HOOK` 启动、`window.__playable` 生命周期和首关可胜;它可以是一个动作链路,不应扩张成完整游戏雏形。Ring 2+ 才根据 `state:get` 披露的计划、布局和视觉材料扩展体验。目标始终是达到真实的 `devStatus: ready` + `devUrl`。
11
+
12
+ **核心原则**:
13
+
14
+ 1. **先 read / load,再写代码**。
15
+ 2. **有现成代码也必须先读**——已有实现、scaffold 文件、半成品代码都属于当前项目现实,不能当成不存在。
16
+ 3. **Feature 不是背景信息,而是验收 checklist**——实现结束前必须逐项 review。
17
+ 4. **流程不是填表,而是少返工策略**——Skill 读取、scaffold 采用、placeholder 物化和最小闭环装配,都是为了先建立可靠的工程判断,避免后面重写、绕开或猜测。
18
+
19
+ **资产策略(build 环)**:**能用占位图就用占位图** — 目标是玩法可玩、程序正常执行,不考虑视觉表现力。
20
+
21
+ 严格按三档执行 — **(1)** plan/ref-flow 已 link 的 Skill 资产直接用;**(2)** 合约路径需要静态图片的 → `npm run placeholder:gen`;已 load 的 MP3 路径 → `npm run placeholder:gen-audio`;**(3)** 占位文件不可行的(动态数字、计时文本、纯事件钩子)→ 最小化代码绘制,并在 `developer-log` 记录原因。先读 **`skills/playable-placeholder/SKILL.md`**。详见 [`developer-impl-cookbook.md` § Asset Placeholder Strategy](./developer-impl-cookbook.md#asset-placeholder-strategy-phase-1)。
22
+
23
+ ---
24
+
25
+ ## 入场状态认知(先读这里)
26
+
27
+ 在开始任何工作之前,先建立对当前项目状态的正确认知:
28
+
29
+ **你进来时项目已经是这个状态:**
30
+
31
+ - 当 `state:get` 披露 `docs/atom-tree.json` 时,`meta.selectedAtoms` 对应 skill 文件可能已在 `.claude/skills/<skillRef>/` 下;如果缺失,按当前 Ring 命令补齐,不要提前读取未披露材料。
32
+ - `game/` 目录下可能已有 scaffold 文件或半成品代码,这些是当前项目现实的一部分,不是草稿
33
+ - 你的工作起点是**读懂当前项目现实**,而不是从零开始铺代码
34
+
35
+ **scaffold 的正确定位:**
36
+
37
+ - scaffold 的产出是一个**可运行的项目骨架**,目标是在这个骨架上按 feature 适配,而不是把 scaffold 文件当成草稿重写
38
+ - scaffold 必须由已披露的 `docs/atom-tree.json` 的 `meta.engineDecision.adapter` 选择;不要把 Ring 1 快路径理解为固定 Phaser 模板。不同 engine root(Phaser / Three.js)有不同初始化逻辑,但都必须暴露同一个 `window.__playable` 运行时契约。
39
+ - **Ring 1 scaffold 前置链(legacy:仅在 `state:get` 披露且无 active slice 时执行,不静默覆盖)**:
40
+
41
+ ```bash
42
+ # First inspect the disclosed action surface.
43
+ npm run state:get -- --json
44
+ # Must already be produced by the temporary ref-flow atom-selection subagent:
45
+ # docs/atom-tree.json
46
+ playcraft remix init-template --from-atom-tree
47
+ npm install
48
+ npm run verify:contract
49
+ npm run verify:lifecycle
50
+ npm run verify:firstwin
51
+ npm run verify:placeholders
52
+ ```
53
+
54
+ - scaffold 文件是已经落地到项目里的 **Skill implementation asset**:先判断它承载了哪个 Skill decision,再决定如何适配;不要把它当成可以随手覆盖的生成初稿
55
+ - scaffold 是一个**选择性动作**,只在读完 skill ref 和当前项目代码之后,判断确实需要骨架支撑时才执行
56
+ - **先读 skill ref,再决定是否 scaffold**;不是先 scaffold 再理解工程
57
+
58
+ ---
59
+
60
+ ## Step 0:上游摄入(必须)
61
+
62
+ 在任何 `game/` 编辑之前,读取这些文档,并填写 **`logs/developer-log.md` § Upstream Intake**。
63
+
64
+ | 文档 / 命令 | 读取条件 | 需要从中获取的内容 |
65
+ | ------------------------------------- | -------------- | ---------------------------------------------------------------------------- |
66
+ | `npm run state:get -- --json` | 每次必读 | 当前 action、允许/禁止任务、当前必读文件、当前 verifiers、下一步命令 |
67
+ | `npm run state:get -- --json` | 每次必读 | 当前 `iteration` / `loop`、handoff、`devStatus`、`devBlockers`、当前停在哪里 |
68
+ | `docs/DESIGN.md` | Ring 1+ 披露时 | Ring 1 玩法唯一来源:核心循环 / 规则 / 首关必赢策略 / `HOOK` 入口 |
69
+ | `docs/atom-tree.json` | build 披露时 | 已选 `meta.selectedAtoms` skill refs;engine decision |
70
+ | `docs/scaffold-manifest.md`(如存在) | build 披露时 | scaffold 已复制的文件 → skill atom 来源映射 |
71
+ | `docs/implementation-plan.md` | Ring 2+ 披露时 | Feature 列表 + 依赖图 + 首关策略 + Skill Support |
72
+ | `docs/layout-spec.md` | Ring 2+ 披露时 | Zones、elementIds、assetMapping 路径、Atlas 分组 |
73
+ | `docs/style-exploration.md` | Ring 3+ 披露时 | MC 面板 — UI(User Interface,用户界面)布局 + 视觉风格参考 |
74
+
75
+ > **Ring 1 禁止**读取 design-brief / layout-spec / implementation-plan — Ring 1 不产出这些,玩法以 DESIGN.md 为唯一来源,强读会膨胀上下文且无必要。
76
+
77
+ > **要求**:不要只打勾,要在 `developer-log` 写一句“读到了什么、它会怎样影响实现”。
78
+
79
+ ## Step 2.4:场景模块拆分(Ring 1 硬约束)
80
+
81
+ > **目标**:避免单文件 500+ 行导致 Write 截断重试与上下文膨胀(test4 曾用 `cat >>` 追加 6 次,浪费 6 轮往返)。
82
+
83
+ - 按职责拆分 `game/`:`gameplay/`(纯逻辑)、`scenes/`(Phaser 场景壳)、`config/`(关卡/布局常量)
84
+ - 单文件 **必须 ≤ 350 行**;超过则**必须**拆为子模块(board 渲染 / 输入 / HUD / endcard 分离)— 不可把整场景写进一个 `GameScene.ts`
85
+ - 优先 **小步 Write / Edit** 分模块写入;**禁止** `cat >` / `cat >>` heredoc 拼接大文件
86
+ - 若 Write 工具报 `InputValidationError`,拆文件而非改用 Bash heredoc
87
+
88
+ ## Step 1:Disclosure Quick-Check + Feature Checklist 建立
89
+
90
+ 在写代码前,先做两个动作。
91
+
92
+ ### 1) Disclosure Quick-Check
93
+
94
+ 确认:
95
+
96
+ - `state:get` 的 `currentAction` 与 JSON 状态中的当前 `iteration` / `loop` 一致
97
+ - 本轮只读取 `currentRingRequiredFiles`;`deferredFiles` 只能作为未披露材料记录,不能变成当前实现输入
98
+ - Ring 1 的缺口只围绕核心玩法、`HOOK`、`autoPlay()`、`ENDCARD`、首关可胜判断
99
+ - Ring 2+ 才检查 `layout-spec.md` / `implementation-plan.md` 是否能映射到当前项目结构
100
+
101
+ 如果发现缺口:
102
+
103
+ - 记录到 `developer-log`,并用 `npm run state:set -- devBlockers=...` 写入 blocker
104
+ - 路由给正确上游(Game Designer / Artist / TA)
105
+ - **不要**靠臆测直接盲写替代逻辑
106
+
107
+ ### 2) Feature Checklist 建立
108
+
109
+ 把当前 Ring 披露的交付项转成真正的 checklist,写入 `logs/developer-log.md`:
110
+
111
+ - feature 名称
112
+ - 来源(plan / design / layout / Skill)
113
+ - 依赖项
114
+ - 关联代码入口
115
+ - 完成标准
116
+ - 本地验证方式
117
+
118
+ Ring 1 checklist 至少包括:
119
+
120
+ - `currentPhase` 初始为 `HOOK`
121
+ - 核心玩法 loop 可执行
122
+ - `autoPlay()` 通过玩家可用动作推进到 `ENDCARD`
123
+ - 首关必赢策略已落地
124
+ - `verify:contract` / `verify:lifecycle` / `verify:firstwin` / `verify:placeholders` 可通过
125
+
126
+ Ring 2+ 才把 `docs/implementation-plan.md` 中本轮需要交付的 feature 和 `§ 8 Delivery Checklist` 并入 checklist。
127
+
128
+ > **要求**:后续 ready 判断基于这个 checklist,而不是"感觉差不多做完了"。
129
+
130
+ ## Step 2:上下文组装和项目整备(必须)
131
+
132
+ 在任何实质性实现之前,先完成 **project context + linked atom skill context + selective scaffold decision + placeholder materialization + Skill-to-Prototype Assembly**,并把结果写进 `logs/developer-log.md` § `Skill Preflight`、§ `Read / Load Log` 与 § `Skill-to-Prototype Assembly (Project Assembly Checkpoint)`。
133
+
134
+ **本阶段目标**:把 selected Skills 转成当前项目里的最小可运行玩法骨架。它不是额外流程记录,而是为了避免三类返工:误读 Skill ref 后重写对象模型、把 scaffold 文件当草稿覆盖、feature 写到后期才发现核心状态流不通。
135
+
136
+ **完成前不要开始写 feature 逻辑。** 如果你觉得这一步浪费时间,通常说明你还没有从 Skill 中抽出可运行的最小闭环;此时直接写 feature 更容易返工。
137
+
138
+ > **前提**:只在 `state:get` 披露 `docs/atom-tree.json` 后读取 selected atom refs。Developer 的职责是读取这些 linked atom refs,并判断是否需要 scaffold。
139
+
140
+ ### 2.1 先读当前项目现实
141
+
142
+ 读取并记录:
143
+
144
+ - 入口文件
145
+ - 当前 scene / state / config / gameplay 相关文件
146
+ - 任何将被改动的已有文件
147
+ - 任何已经 scaffold 到项目里的相关代码
148
+ - 当前磁盘上的 linked assets
149
+ - atlas / frame / contract path 绑定方式
150
+
151
+ **要求**:不能因为已有文件存在,就把它当作黑盒直接覆盖;也不能因为 scaffold 代码已经在项目里,就跳过来源理解。
152
+
153
+ ### 2.2 Load linked atom skill refs
154
+
155
+ 基于当前 Ring checklist 读取相关 linked atom skill。Ring 1 以 `docs/DESIGN.md` 和 `docs/atom-tree.json` 为输入;Ring 2+ 才加入 `docs/implementation-plan.md` 与更深 reading guide。这里的目标不是把 `ref/` 当文件桶全量扫一遍,而是先理解 Skill package 的意图、对象模型和可继承判断,再选择真正相关的 recipe / `ref/` / source。
156
+
157
+ 1. 优先读项目本地 `.claude/skills/<skillRef>/SKILL.md`
158
+ 2. 再按 `SKILL.md`、`docs/atom-tree.md` 的 `readFirst` / `devReadOrder` 读取相关 `ref/` 或 source code
159
+ 3. 若本地 link 缺失,才使用 `playcraft skills read <skillRef>` fallback
160
+ 4. 对每个 relevant atom 在 `developer-log.md` 记录:
161
+ - `skillRef`
162
+ - 关联 Feature
163
+ - 已读入口(SKILL.md / ref / source / CLI fallback)
164
+ - 本轮采用方式:`read-only` / `scaffold-candidate` / `skip-with-reason`
165
+
166
+ **偏航识别**:如果你正在反复使用类似 `glob ref/**/*` 的方式找信息,通常说明你把 Skill refs 当成了散装文件目录。先回到 `.claude/skills/<skillRef>/SKILL.md` 和 atom-tree reading guide,确认 Skill root、对象模型、关键 ref,再读取具体文件。
167
+
168
+ **要求**:selected atom skill 是实现参考,不是可选灵感;即使代码已经复制进工程,也必须回读对应 Skill 的 recipe / `ref/` / source。
169
+
170
+ ### 2.3 Selective scaffold decision
171
+
172
+ 只有在读完项目代码和 linked atom refs 后,才判断是否需要 scaffold。
173
+
174
+ **第一步:检查 `docs/scaffold-manifest.md` 是否存在。**
175
+
176
+ - **存在**:说明本项目已经跑过 scaffold。必须先读 `docs/scaffold-manifest.md`,了解已有骨架的文件列表和 atom 来源,再判断是否需要补充 scaffold(通常不需要再跑)。不能因为"想重新生成"就重复执行。
177
+ - **不存在**:说明还没有骨架,按下方判断条件决定是否首次执行 scaffold。
178
+
179
+ **必须在 `logs/developer-log.md` § Skill Preflight 中明确记录决策**:每个 relevant atom 标注 `scaffold-candidate` 或 `skip-with-reason`,并在该 section 末尾写一句总结性决策说明(如 "本轮 scaffold: none, because ..." 或 "本轮 scaffold: atomX, atomY, because ...")。**没有决策记录,不能进入 Step 3 实现。**
180
+
181
+ **scaffold 之后的目标状态**:你会得到一个可运行的项目骨架。你的工作是在这个骨架上按 feature checklist 逐项适配,而不是把 scaffold 文件当成草稿重写。scaffold 文件和你自己写的代码地位相同,都必须先读懂再改。
182
+
183
+ **替换前先判断文件身份**:如果你准备从零重写某个 scaffold / existing file,先写清它承载的 Skill decision 是什么,以及项目约束是否真的推翻了这个 decision。多数情况下应该适配 scaffold 边界,而不是绕开它重写同类模块。
184
+
185
+ 允许 scaffold 的典型情况:
186
+
187
+ - 当前项目缺少共享入口代码或运行时骨架
188
+ - 某个 Feature 明确需要 Skill 的 L3/L4 代码结构
189
+ - 手写会明显增加集成风险,而 scaffold 后可以更快适配现有工程
190
+
191
+ 不应 scaffold 的情况:
192
+
193
+ - 只是想
194
+ - 只是想“看看会生成什么”
195
+ - 某个 atom 只提供设计思路 / 参数参考 / 视觉参考
196
+ - 当前 Feature 只需要读取 ref 后自行实现
197
+ - 一次性把所有 shortlisted atoms 都铺进项目,导致后续理解成本失控
198
+
199
+ 执行格式(**两种 scaffold,勿混用**):
200
+
201
+ ```bash
202
+ # 引擎 scaffold — ring 1 build 前由 orchestrator 执行(一次性 game/ 骨架)
203
+ playcraft remix init-template --from-atom-tree
204
+
205
+ # atom scaffold — build 环内按需复制 Skill 实现代码
206
+ playcraft skills scaffold \
207
+ --engine <engine> # from meta.engineDecision.adapter
208
+ --atoms "<atom1>,<atom2>,<atom3>" # 只填本轮确认需要 scaffold 的 selectedAtomRef
209
+ ```
210
+
211
+ ### 2.4 Post-scaffold focused readback
212
+
213
+ 如果执行了 scaffold:
214
+
215
+ - **必须读取 `docs/scaffold-manifest.md`**
216
+ - 只聚焦读取本轮 scaffold 相关的 landed files
217
+ - 回读对应 Skill 的 `SKILL.md` / `ref/` / source,确认 copied code 的来源与适配边界
218
+ - 对实际会绑定到 Feature 的 contract assets 做必要的 `playcraft image info` / `playcraft audio info`
219
+
220
+ **判断原则**:
221
+
222
+ - **scaffold 不替代读 Skill ref**
223
+ - **先读 ref,再决定 scaffold;不是先 scaffold 再理解工程**
224
+ - **静态资源检查按 contract path / Feature 绑定驱动,不按磁盘库存全量扫**
225
+ - **read / load / scaffold decision 是实现输入,不是可选附加项**
226
+
227
+ ### 2.5 Skill-to-Prototype Assembly (Project Assembly Checkpoint)
228
+
229
+ 在进入 Step 3 之前,必须完成一次 **Skill-to-Prototype Assembly**。目标不是产出最终美术,也不是补一段流程记录,而是把本轮采用的 Skill decision 转成当前项目里的最小可运行玩法骨架,让后续 feature 实现有稳定的对象模型、资源路径和状态流。
230
+
231
+ 这里的**最小闭环**必须由本轮采用的 Skill / ref 定义,而不是默认套用完整广告体验流程。某些 Skill 的最小闭环可能只有“生成局面 → 玩家操作 → 状态反馈 → 结算一次核心规则”;它不一定包含 Hook、Tutorial、EndCard 或 CTA。
232
+
233
+ 先回答三个工程问题:
234
+
235
+ 1. **What skill decisions am I inheriting?**
236
+ - 例如对象模型、规则归属、状态流、交互边界、资源组织方式。
237
+ 2. **What project-specific changes are required?**
238
+ - 例如当前玩法尺寸、素材 contract path、首关要求、UI 状态、平台运行时约束。
239
+ 3. **What is the smallest playable spine before feature expansion?**
240
+ - 例如加载局面、渲染核心对象、执行一次玩家操作、通过规则层反馈结果、完成一次结算。
241
+
242
+ 必须完成:
243
+
244
+ 1. **Scaffold adoption map**
245
+ - 如果存在 `docs/scaffold-manifest.md`,列出本轮会基于哪些 landed files 继续适配。
246
+ - 如果某个 scaffold 文件与 Feature 相关但不采用,必须记录 `ignore-with-reason`;不能绕开它重新手写同类模块。
247
+ - 对每个将改动或替换的 scaffold 文件,先说明它承载的 Skill decision,以及项目适配点。
248
+ 2. **Placeholder materialization**(先读 **`skills/playable-placeholder/SKILL.md`**,按 skill 5 步流程)
249
+ - Ring 1 只列出核心玩法所需的占位资源;Ring 2+ 再基于 `layout-spec.md` `assetMapping`、Feature 所需 UI / VFX(Visual Effects,视觉特效)列出全部视觉 + 音频合约路径。
250
+ - 已有文件:`playcraft image info` / `playcraft audio info` 验证。
251
+ - 缺失**静态图片**:`cp templates/gen-placeholders.template.mjs` → 填 `PLACEHOLDERS` → `node ta-workspace/scripts/gen-placeholders.mjs`。
252
+ - 缺失且 Preloader **已 load** 的 **MP3**:`cp templates/gen-placeholder-audio.template.mjs` → 填 `PLACEHOLDER_AUDIO` → `node ta-workspace/scripts/gen-placeholder-audio.mjs`。
253
+ - 不能用占位文件的(动态数字、纯事件钩子):Tier 3 + developer-log 一行原因。
254
+ - 代码只引用本地 contract path;禁止 `Graphics` 色块代替 Tier 2 图片路径。
255
+ 3. **Minimal prototype wiring baseline**
256
+ - 建立 Feature → Skill/ref → scaffold/source file → asset contract path 的映射。
257
+ - 明确 Skill / ref 定义的最小闭环步骤,并确认每一步都有本地资源路径、代码入口和状态流转设计。
258
+ - Ring 1 必须具备 `HOOK` → player-reachable gameplay actions → `ENDCARD` 的轻量生命周期。Tutorial、CTA(Call to Action,行动召唤)fallback、完整广告节奏属于后续披露项;不要在 Ring 1 把它们当 blocker。
259
+ - 若某个必要资源没有 spec 尺寸或 contract path,记录 blocker 并 route upstream,不要用随意路径继续实现。
260
+
261
+ **进入 Step 3 的条件**:`logs/developer-log.md` § `Skill-to-Prototype Assembly (Project Assembly Checkpoint)` 已记录继承的 Skill decisions、项目适配点、最小 playable spine、scaffold 采用、placeholder 生成结果、资源验证结果、Feature 映射、Skill/ref 最小闭环定义和剩余 blocker。否则不能开始 feature 逻辑实现。
262
+
263
+ ## Step 3:Per-Feature 确认与执行(不是盲拆 batch)
264
+
265
+ 基于 Feature Checklist 按依赖顺序逐个 feature 推进。可以按功能域分组,但每次落代码前都必须先完成该 feature 的确认,不要为了拆 batch 而拆 batch,也不要把实现建立在“之后再补读”的假设上。
266
+
267
+ **核心纪律:每个 `game/` 代码变更都必须可追溯到当前正在执行的 Feature Checklist 项。** 如果你发现自己在写代码但说不上来是哪个 feature 需要的,停下来:先确认是不是漏读了已有实现、漏了上游约束、漏了 Skill/ref,还是 checklist 不够细。
268
+
269
+ 每个 feature 必须按以下顺序执行:
270
+
271
+ 1. **Feature intake**
272
+ - 对应当前 Ring checklist 哪一项
273
+ - 对应 Skill / ref 中的哪个玩法规则、交互模式或代码模式
274
+ - 是否受当前披露文件约束;Ring 1 只看 `DESIGN.md` / `atom-tree.json`,Ring 2+ 才看 `layout-spec.md` / `implementation-plan.md`
275
+ 2. **Implementation target confirmation**
276
+ - 会改哪些现有文件、scaffold 文件或新增哪些必要文件
277
+ - 这些文件是否都已经读过
278
+ - 是否有可复用的 Skill/ref/source 代码路径,不能绕开已有可用结构重新手写同类模块
279
+ 3. **Execution**
280
+ - 基于现有架构、scaffold 和 Skill/ref 模式落代码
281
+ - 只实现当前 feature 所需范围,不顺手重写无关模块
282
+ 4. **Feature-local validation**
283
+ - 至少检查该 feature 的主要交互、状态变更、资源绑定和失败边界是否成立
284
+ - 如果该 feature 是最小闭环的一部分,要确认它在 Skill/ref 闭环中的输入和输出是否接上
285
+ 5. **Checklist update**
286
+ - 更新为 `done / partial / blocked`
287
+ - 记录验证结果、假设和风险
288
+ - 如果未完成,明确是 spec-gap、资源缺口、已有代码理解问题,还是实现阻塞
289
+
290
+ ### 实现时的工作方式
291
+
292
+ - 优先改对当前 feature 真正相关的代码,不要盲目重写整个模块
293
+ - 如果已有实现与你的目标冲突,先判断是边界没兼容、理解偏差、还是更深层结构问题
294
+ - 不要用“多加一个 if / else”掩盖没看懂的结构问题
295
+ - 如果问题来自更深层系统边界,记录根因,不要只修表面
296
+
297
+ ## Step 4:Feature Checklist Review(验收必须项)
298
+
299
+ 实现完成后,必须做一次**以 feature 为中心**的 review,而不是只做泛泛的 dev smoke check。
300
+
301
+ 对 checklist 中每一项逐条确认:
302
+
303
+ - [ ] 该 feature 的代码是否真的落地
304
+ - [ ] 相关已有代码是否被正确理解和复用,而不是被绕开盲写
305
+ - [ ] 相关 Skill / ref 是否真正被读过并起到作用
306
+ - [ ] feature 的完成标准是否满足
307
+ - [ ] feature 的边界条件是否至少被检查过核心路径
308
+ - [ ] 若未完成,是否明确标记为 `partial` 或 `blocked`
309
+
310
+ ### Review 输出要求
311
+
312
+ 在 `logs/developer-log.md` 中写清:
313
+
314
+ - 每个 feature 的状态:`done / partial / blocked`
315
+ - 对应验证结果
316
+ - 未完成原因
317
+ - 是否还存在需要上游处理的问题
318
+
319
+ > **没有完成 checklist review,就不能进入 ready 判断。**
320
+
321
+ ## Step 5:Dev 自检与 Ready 判断
322
+
323
+ 在 checklist review 完成后,运行:
324
+
325
+ ```bash
326
+ npm run typecheck
327
+ ```
328
+
329
+ Ring 1 build STOP 前还必须运行 objective self-gate(**脚本自带 dev server,禁止为跑 verify 而手动 `npm run dev`**):
330
+
331
+ ```bash
332
+ npm run verify:contract
333
+ npm run verify:lifecycle
334
+ npm run verify:firstwin
335
+ npm run verify:placeholders
336
+ ```
337
+
338
+ 将 `verify:contract` / `verify:lifecycle` / `verify:firstwin` / `verify:placeholders` 的 pass/OK 结果写入 `developer-log` § Dev self-check。
339
+
340
+ build 收尾:启动**一个**常驻 dev server 用于 Ring Gate 试玩,记录真实 URL 到 `devUrl`,**Ring Gate 前不要 pkill**:
341
+
342
+ ```bash
343
+ npm run dev
344
+ # 从终端输出读取 Local: http://127.0.0.1:PORT/ → 通过状态层写入 devUrl
345
+ ```
346
+
347
+ 至少验证:
348
+
349
+ - [ ] Ring 1 主要状态可达(HOOK → Gameplay actions → ENDCARD)
350
+ - [ ] 核心玩法循环正常(操作 + 响应 + 状态变更)
351
+ - [ ] 首关保障玩家成功
352
+ - [ ] 胜负条件正确触发
353
+ - [ ] Ring 3+ 才检查 CTA 触发(mraid / FbPlayableAd / ExitApi / `window.open` 回退)
354
+ - [ ] 无 Error-level console 错误
355
+ - [ ] `devUrl` 已记录到 `developer-log` 和 `npm run state:get -- --json`
356
+
357
+ ### Ready 判断规则
358
+
359
+ 只有同时满足以下条件,才能设置 `devStatus: ready`:
360
+
361
+ - Feature Checklist 没有未解释的空项
362
+ - 所有 `blocked` 项都已经显式进入 `devBlockers` 或 routed upstream
363
+ - 本地运行结果与日志描述一致
364
+ - 当前项目现实下已经达到可交 Reviewer 的状态
365
+
366
+ 否则:
367
+
368
+ - 可继续实现 → 继续回到 Step 3
369
+ - 存在上游阻塞 → 设置 `devStatus: blocked_upstream`
370
+ - 存在开发内阻塞但未就绪 → 保持非 ready 状态并明确记录
371
+
372
+ ## Step 6:STOP
373
+
374
+ - 若 ready:设置 `devStatus: ready` + `devUrl`
375
+ - 更新 handoff:ring 1 → `next_orchestrator_action: "npm run ring:gate -- --iteration 1"`;ring 2+ → `next_orchestrator_action: "Invoke @reviewer gameplay_conformance"`
376
+ - 确认 `developer-log` 已能说明当前状态:上游摄入、Skill Preflight 证据、Read / Load 事实、Feature Checklist / Review 结果、Dev self-check,以及任何需要解释的 blocker
377
+ - 追加 `--- PLAYCRAFT_STOP ---`(`role: developer`)
378
+
379
+ ---
380
+
381
+ ## Ring 4 production integration(TA Wave 2 之后 — mandatory)
382
+
383
+ After `@technical-artist` STOP with `next_orchestrator_action: Invoke @developer (Ring 4 production integration)`:
384
+
385
+ 1. Read `logs/ta-log.md` Handoff + Production manifest — wire **every** delivered asset at `assetMapping` paths.
386
+ 2. Update `TILE_KEYS` / loaders so all new tiles (e.g. 6-color board) are referenced — run `npm run verify:asset-code-sync`.
387
+ 3. Remove or disable placeholder-only paths; ensure `bg_*` is a clean plate layer (z below tiles/HUD).
388
+ 4. Self-check: `npm run verify:ui` + `npm run dev` with `?debug=1`.
389
+ 5. STOP: `devStatus: ready` → `next_orchestrator_action: "Invoke @reviewer ui_diff"`.
390
+
391
+ **Do not** route to `@reviewer ui_diff` until integration is complete — TA deliverables alone are insufficient.
392
+
393
+ ---
394
+
395
+ ## Rework(`ui_review` 之后)
396
+
397
+ **ring 4 verify ui_diff 修复**不走完整 build flow。那时由 [`../developer.md`](../developer.md) 按 routed Action Items 执行 scoped fixes,并 handoff `Invoke @reviewer ui_diff`。
398
+
399
+ ---
400
+
401
+ ## 共享参考
402
+
403
+ - 实现模式:[`developer-impl-cookbook.md`](./developer-impl-cookbook.md)
404
+ - Dev 交接详情:[`developer-dev-handoff.md`](./developer-dev-handoff.md)
@@ -0,0 +1,252 @@
1
+ # 5-Component Filter 框架 — 机制好玩度快速检验
2
+
3
+ ## 原始来源
4
+
5
+ - **出处**:https://mcpmarket.com/zh/tools/skills/game-design-framework
6
+ - **性质**:这是一个 Claude Code Skill 中提出的实战框架,并非学术论文。它综合了多个游戏设计理论(MDA、Game Feel 等),形成了一套**快速可操作**的机制评估工具。
7
+ - **关联理论**:
8
+ - Steve Swink 的 Game Feel 6 组件(Response 对应"实时控制",Satisfaction 对应"多汁性")
9
+ - MDA 框架的 Aesthetics 层(Motivation 对应"目标情感",Fit 对应"整体一致性")
10
+ - Nielsen 的可用性启发式(Clarity 对应"系统可见性"和"匹配现实世界")
11
+
12
+ ---
13
+
14
+ ## 一、核心思想
15
+
16
+ 5-Component Filter 是一个**快速评估清单**,用于在设计和迭代阶段检验每一个游戏机制是否"好玩"。
17
+
18
+ 它的核心问题是:
19
+
20
+ > **"这个机制通过了以下 5 项检查吗?如果任一项不通过,它就不会好玩。"**
21
+
22
+ ---
23
+
24
+ ## 二、5 个组件详解
25
+
26
+ ### 组件 1:Clarity(清晰度)
27
+
28
+ > **核心问题:玩家在 3 秒内能看懂怎么玩吗?**
29
+
30
+ | 维度 | 检查点 |
31
+ | ---------------- | ----------------------------------------------------- |
32
+ | **视觉可见性** | 可操作对象是否视觉突出?能否一眼分辨什么能点/不能点? |
33
+ | **动作可猜测性** | 不看教程,玩家能猜到该做什么吗? |
34
+ | **反馈明确性** | 操作后发生了什么——成功还是失败——是否立刻清晰? |
35
+ | **状态可读性** | 当前游戏状态(分数、剩余步数、进度)是否随时可读? |
36
+
37
+ **评分标准**:
38
+ | 等级 | 描述 |
39
+ |------|------|
40
+ | ⭐⭐⭐ | 零教程可上手,3 秒内理解玩法 |
41
+ | ⭐⭐ | 需要 1 次提示或试错后理解 |
42
+ | ⭐ | 需要文字教程或多次试错 |
43
+ | ❌ | 5 秒后仍不知道该做什么 |
44
+
45
+ **Playable Ad 中的硬约束**:
46
+
47
+ > 在 Playable Ad 中,Clarity 是**生死线**。玩家不会花超过 3 秒去"学"一个广告。如果不能即刻理解,就会关闭。
48
+
49
+ **常见修复手段**:
50
+
51
+ - 手指引导动画(指示首次操作)
52
+ - 高亮可操作区域
53
+ - 第一步设计为"不可能失败"
54
+ - 减少首屏信息量
55
+
56
+ ---
57
+
58
+ ### 组件 2:Motivation(动机)
59
+
60
+ > **核心问题:玩家为什么想做这个动作?**
61
+
62
+ | 维度 | 检查点 |
63
+ | -------------- | ------------------------------------ |
64
+ | **目标可见性** | 玩家是否知道自己在朝什么目标努力? |
65
+ | **进度感** | 每次操作后是否感到"离目标更近了"? |
66
+ | **奖励预期** | 玩家是否期待下一个动作会带来好结果? |
67
+ | **紧迫感** | 是否有时间/步数/空间等约束驱动行动? |
68
+
69
+ **评分标准**:
70
+ | 等级 | 描述 |
71
+ |------|------|
72
+ | ⭐⭐⭐ | 玩家主动想做、停不下来 |
73
+ | ⭐⭐ | 知道该做什么但没有强烈冲动 |
74
+ | ⭐ | 被动执行,缺乏内在驱动力 |
75
+ | ❌ | "为什么我要做这个?" |
76
+
77
+ **设计策略**:
78
+
79
+ | 策略 | 机制示例 | 适用场景 |
80
+ | ------------ | -------------------------------------- | ---------- |
81
+ | **可见目标** | 进度条、目标分数、"消除 30 个红色方块" | 所有类型 |
82
+ | **短期奖励** | 每次匹配后的分数弹出、金币收集动画 | 休闲消除 |
83
+ | **紧迫感** | 倒计时、步数限制、上升的障碍 | 增加挑战感 |
84
+ | **好奇心** | 翻转显示隐藏图案、解锁新内容预览 | 探索发现类 |
85
+ | **差一点感** | 失败时显示"还差 2 个就赢了!" | 转化驱动 |
86
+
87
+ ---
88
+
89
+ ### 组件 3:Response(响应性)
90
+
91
+ > **核心问题:操作后 100ms 内有反馈吗?**
92
+
93
+ | 维度 | 检查点 |
94
+ | ---------- | ------------------------------------ |
95
+ | **即时性** | 触摸/点击后有即时视觉+听觉反馈吗? |
96
+ | **多通道** | 反馈是否同时涵盖视觉+听觉(+触觉)? |
97
+ | **比例性** | 反馈强度是否与动作重要性成正比? |
98
+ | **一致性** | 相同操作的反馈是否每次都一致? |
99
+
100
+ **评分标准**:
101
+ | 等级 | 描述 |
102
+ |------|------|
103
+ | ⭐⭐⭐ | 每次操作都有多通道即时反馈,爽快利落 |
104
+ | ⭐⭐ | 有反馈但单通道或有延迟感 |
105
+ | ⭐ | 部分操作无反馈或反馈不一致 |
106
+ | ❌ | 操作后没有任何可感知的变化 |
107
+
108
+ **这与 Steve Swink 的 Game Feel 直接对应**:
109
+
110
+ - 100ms 阈值 → 来自 Swink 的"实时控制"组件
111
+ - 多通道反馈 → 来自 Swink 的"润色"组件
112
+ - 比例性 → 来自 Swink 的"多汁性"组件
113
+
114
+ **快速检查表**:
115
+
116
+ ```
117
+ □ 点击有按下缩放效果?
118
+ □ 松手有弹起动画?
119
+ □ 匹配成功有消除动画?
120
+ □ 消除有音效?
121
+ □ 连击有升级反馈?
122
+ □ 失败有挫败感反馈(但不惩罚)?
123
+ □ 每一帧都有东西在动?
124
+ ```
125
+
126
+ ---
127
+
128
+ ### 组件 4:Satisfaction(满足感)
129
+
130
+ > **核心问题:每次成功操作有"爽"的感觉吗?**
131
+
132
+ | 维度 | 检查点 |
133
+ | -------------- | ---------------------------------------------- |
134
+ | **"啊哈"时刻** | 操作结果是否超出玩家预期?(如意外的连锁消除) |
135
+ | **感官奖励** | 成功是否伴随视觉+听觉的"爆发"? |
136
+ | **成长曲线** | 随着游戏进行,满足感是否在升级? |
137
+ | **对比度** | 成功与未成功之间的反馈差距是否足够大? |
138
+
139
+ **评分标准**:
140
+ | 等级 | 描述 |
141
+ |------|------|
142
+ | ⭐⭐⭐ | 每次成功都想"再来一次",有近乎上瘾的满足感 |
143
+ | ⭐⭐ | 成功有正反馈但缺乏"wow"时刻 |
144
+ | ⭐ | 成功与失败的感觉差距不大 |
145
+ | ❌ | 成功了也没什么特别感觉 |
146
+
147
+ **满足感的层级设计**(对应 Juice 的"连击升级"):
148
+
149
+ ```
150
+ Level 1(单次匹配) → 小粒子 + 轻音效
151
+ Level 2(连击 ×2) → 更多粒子 + 音高上升 + 飘字
152
+ Level 3(连击 ×3) → 屏幕震动 + 大粒子 + 连击文字
153
+ Level 4(超级连击) → 全屏特效 + 慢动作 + 欢呼声
154
+ ```
155
+
156
+ > **关键洞察**:满足感 = Response(响应性)× Surprise(惊喜度)。同样的响应如果每次都完全一样,会逐渐麻木。适度的随机性和升级机制维持满足感。
157
+
158
+ ---
159
+
160
+ ### 组件 5:Fit(契合度)
161
+
162
+ > **核心问题:这个机制与整体风格搭吗?**
163
+
164
+ | 维度 | 检查点 |
165
+ | ------------------ | -------------------------------------- |
166
+ | **与主题一致** | 机制是否与游戏的视觉主题和世界观匹配? |
167
+ | **与其他机制协同** | 这个机制是否与其他机制产生有趣的交互? |
168
+ | **与目标受众匹配** | 机制的复杂度是否适合目标玩家? |
169
+ | **与平台特性适配** | 机制是否利用了平台的特有输入方式? |
170
+
171
+ **评分标准**:
172
+ | 等级 | 描述 |
173
+ |------|------|
174
+ | ⭐⭐⭐ | 机制与整体风格浑然一体、不可分割 |
175
+ | ⭐⭐ | 机制与整体搭配,但有可改进空间 |
176
+ | ⭐ | 机制感觉像是"外挂"上去的 |
177
+ | ❌ | 明显与游戏整体格格不入 |
178
+
179
+ **Fit 的检查维度扩展**:
180
+
181
+ | 契合维度 | 好的例子 | 坏的例子 |
182
+ | ---------- | -------------------------- | ------------------------ |
183
+ | 主题契合 | 果冻消除游戏用"弹弹弹"动画 | 中世纪骑士游戏用霓虹粒子 |
184
+ | 节奏契合 | 休闲消除的慢节奏配柔和配乐 | 放松游戏用高速闪烁特效 |
185
+ | 复杂度契合 | 休闲广告用单指操作 | 休闲广告用 5 步组合操作 |
186
+ | 平台契合 | 移动端用滑动/点击 | 移动端用双指旋转缩放 |
187
+
188
+ ---
189
+
190
+ ## 三、5-Component Filter 的使用方法
191
+
192
+ ### 方法 1:单机制评估卡
193
+
194
+ 评估一个具体的游戏机制(如"滑动交换两个相邻方块"):
195
+
196
+ ```
197
+ 机制名称: [交换消除]
198
+ ┌──────────────┬────────┬─────────────────────────┐
199
+ │ Component │ Score │ Notes │
200
+ ├──────────────┼────────┼─────────────────────────┤
201
+ │ Clarity │ ⭐⭐⭐ │ 滑动方向=交换方向,直觉 │
202
+ │ Motivation │ ⭐⭐⭐ │ 可见的目标分数+步数限制 │
203
+ │ Response │ ⭐⭐ │ 缺少消除音效,需补充 │
204
+ │ Satisfaction │ ⭐⭐ │ 连锁反馈不够强烈 │
205
+ │ Fit │ ⭐⭐⭐ │ 与糖果主题完美搭配 │
206
+ └──────────────┴────────┴─────────────────────────┘
207
+ 最低分: Response (⭐⭐) & Satisfaction (⭐⭐)
208
+ 优先改进: 添加消除音效 + 增强连锁视觉反馈
209
+ ```
210
+
211
+ ### 方法 2:多机制对比
212
+
213
+ 在 Brainstorm 阶段比较多个候选机制:
214
+
215
+ ```
216
+ Clarity Motivation Response Satisfaction Fit Total
217
+ 方案A-滑动交换 ⭐⭐⭐ ⭐⭐⭐ ⭐⭐ ⭐⭐ ⭐⭐⭐ 13
218
+ 方案B-点击选取 ⭐⭐ ⭐⭐ ⭐⭐⭐ ⭐⭐ ⭐⭐ 11
219
+ 方案C-拖拽放置 ⭐⭐ ⭐⭐⭐ ⭐⭐ ⭐⭐⭐ ⭐⭐ 12
220
+ ```
221
+
222
+ ### 方法 3:迭代检查点
223
+
224
+ 在开发过程中定期使用,特别是:
225
+
226
+ 1. **Brainstorm 后**:评估概念是否有基本的好玩潜力
227
+ 2. **原型完成后**:第一次可玩版本的快速健检
228
+ 3. **Juice 添加后**:确认 Juice 是否真的提升了各项分数
229
+ 4. **最终交付前**:确保没有组件被遗漏
230
+
231
+ ---
232
+
233
+ ## 四、快速诊断表
234
+
235
+ 当 QA 或玩家说"不好玩"但说不清原因时,用此表逐项排查:
236
+
237
+ | 玩家的模糊反馈 | 最可能的缺失组件 | 优先修复方向 |
238
+ | ----------------------- | ---------------- | ---------------------------------- |
239
+ | "不知道该干什么" | Clarity | 加引导动画、高亮可操作区 |
240
+ | "没意思" / "为什么要玩" | Motivation | 加可见目标、紧迫感、奖励预览 |
241
+ | "操作没感觉" / "卡卡的" | Response | 加即时反馈、音效、缓动动画 |
242
+ | "赢了也没什么感觉" | Satisfaction | 加连击反馈、胜利演出、对比度 |
243
+ | "感觉怪怪的" / "不搭" | Fit | 检查主题一致性、节奏匹配、平台适配 |
244
+
245
+ ---
246
+
247
+ ## 五、参考资源
248
+
249
+ - 🔗 **框架来源**:[Game Design & Mechanics Framework (MCP Market)](https://mcpmarket.com/zh/tools/skills/game-design-framework)
250
+ - 📕 **Clarity 理论基础**:Jakob Nielsen 的 [10 Usability Heuristics](https://www.nngroup.com/articles/ten-usability-heuristics/)
251
+ - 📕 **Response 理论基础**:Steve Swink 的 [Game Feel (2008)](https://www.taylorfrancis.com/books/mono/10.1201/9781482267334/game-feel-steve-swink)
252
+ - 📕 **Motivation 理论基础**:MDA 框架的 [Aesthetics Taxonomy](https://www.researchgate.net/publication/228884866_MDA_A_Formal_Approach_to_Game_Design_and_Game_Research)