@playcraft/cli 0.1.34 → 0.1.35-prod

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 (347) hide show
  1. package/README.md +3 -56
  2. package/dist/agent/local-backend.js +1 -1
  3. package/dist/cli-root-help.js +0 -2
  4. package/dist/commands/build.js +4 -9
  5. package/dist/commands/create.js +33 -26
  6. package/dist/commands/image.js +6 -2
  7. package/dist/commands/login.js +42 -84
  8. package/dist/commands/skills.js +0 -2
  9. package/dist/commands/tools-3d.js +0 -11
  10. package/dist/commands/tools-generation.js +109 -68
  11. package/dist/commands/tools-image-context.js +23 -0
  12. package/dist/commands/tools.js +2 -2
  13. package/dist/config.js +4 -59
  14. package/dist/index.js +3 -36
  15. package/dist/remix/clone.js +0 -2
  16. package/dist/remix/init-template.js +0 -2
  17. package/dist/remix/pull.js +0 -2
  18. package/dist/remix/push.js +1 -21
  19. package/dist/utils/agent-api-client.js +30 -185
  20. package/dist/utils/image-asset-context.js +105 -0
  21. package/dist/utils/playcraft-http-client.js +4 -6
  22. package/package.json +3 -12
  23. package/project-template/.claude/agents/refs/ta-image-generation-detail.md +67 -123
  24. package/project-template/.claude/skills/playcraft-image-generation/SKILL.md +105 -44
  25. package/project-template/.claude/skills/playcraft-image-generation/reference/gen-batch-sprite.template.mjs +42 -33
  26. package/project-template/.claude/skills/playcraft-image-generation/reference/gen-batch.template.mjs +18 -20
  27. package/project-template/.claude/skills/playcraft-image-generation/reference/process-batch.template.mjs +6 -7
  28. package/project-template/.claude/skills/playcraft-image-generation/reference/prompt-cookbook.md +36 -39
  29. package/project-templates/phaser/.claude/agents/refs/ta-image-generation-detail.md +59 -59
  30. package/project-templates/phaser/.claude/skills/playcraft-image-generation/SKILL.md +105 -44
  31. package/project-templates/phaser/.claude/skills/playcraft-image-generation/reference/gen-batch-sprite.template.mjs +42 -33
  32. package/project-templates/phaser/.claude/skills/playcraft-image-generation/reference/gen-batch.template.mjs +18 -20
  33. package/project-templates/phaser/.claude/skills/playcraft-image-generation/reference/process-batch.template.mjs +6 -7
  34. package/project-templates/phaser/.claude/skills/playcraft-image-generation/reference/prompt-cookbook.md +36 -39
  35. package/project-templates/threejs/.claude/agents/refs/ta-image-generation-detail.md +59 -59
  36. package/project-templates/threejs/.claude/skills/playcraft-image-generation/SKILL.md +105 -44
  37. package/project-templates/threejs/.claude/skills/playcraft-image-generation/reference/gen-batch-sprite.template.mjs +42 -33
  38. package/project-templates/threejs/.claude/skills/playcraft-image-generation/reference/gen-batch.template.mjs +18 -20
  39. package/project-templates/threejs/.claude/skills/playcraft-image-generation/reference/process-batch.template.mjs +6 -7
  40. package/project-templates/threejs/.claude/skills/playcraft-image-generation/reference/prompt-cookbook.md +36 -39
  41. package/dist/auth/account-activation.js +0 -157
  42. package/dist/auth/messages.js +0 -30
  43. package/dist/commands/platform-skills.generated.js +0 -19
  44. package/dist/commands/playable.js +0 -53
  45. package/dist/commands/tools-batch.js +0 -87
  46. package/dist/commands/video.js +0 -111
  47. package/dist/commands/workspace-runtime.js +0 -54
  48. package/dist/commands/workspace.js +0 -35
  49. package/dist/project-skills/builtin-import.js +0 -225
  50. package/dist/project-skills/commands.js +0 -77
  51. package/dist/project-skills/lifecycle.js +0 -28
  52. package/dist/project-skills/local-run.js +0 -112
  53. package/dist/project-skills/local-store.js +0 -221
  54. package/dist/project-skills/messages.js +0 -80
  55. package/dist/project-skills/reconcile.js +0 -62
  56. package/dist/project-skills/remote-cache.js +0 -51
  57. package/dist/project-skills/validation.js +0 -19
  58. package/dist/recording/messages.js +0 -40
  59. package/dist/recording/project-digest.js +0 -85
  60. package/dist/recording/recorder.js +0 -293
  61. package/dist/recording/scenario.js +0 -50
  62. package/dist/utils/environment-endpoints.js +0 -17
  63. package/dist/utils/tool-operation-journal.js +0 -124
  64. package/dist/utils/video-evidence-git.js +0 -81
  65. package/dist/video-replication/client.js +0 -222
  66. package/dist/video-replication/comparison-evidence.js +0 -149
  67. package/dist/video-replication/comparison-files.js +0 -57
  68. package/dist/video-replication/comparison-log.js +0 -72
  69. package/dist/video-replication/comparison-messages.js +0 -104
  70. package/dist/video-replication/comparison-output.js +0 -63
  71. package/dist/video-replication/comparison-preflight.js +0 -66
  72. package/dist/video-replication/comparison.js +0 -216
  73. package/dist/video-replication/evidence.js +0 -165
  74. package/dist/video-replication/media.js +0 -111
  75. package/dist/video-replication/messages.js +0 -89
  76. package/dist/workspace/messages.js +0 -35
  77. package/dist/workspace/transfer-client.js +0 -174
  78. package/dist/workspace-runtime/codex/app-server.js +0 -965
  79. package/dist/workspace-runtime/codex/compact.js +0 -46
  80. package/dist/workspace-runtime/codex/config-toml.js +0 -107
  81. package/dist/workspace-runtime/codex/jsonrpc-stdio.js +0 -145
  82. package/dist/workspace-runtime/codex/launcher-client.js +0 -177
  83. package/dist/workspace-runtime/codex/loopback.js +0 -146
  84. package/dist/workspace-runtime/codex/mcp-config.js +0 -39
  85. package/dist/workspace-runtime/codex/model-broker.js +0 -263
  86. package/dist/workspace-runtime/codex/native-adapter.js +0 -9
  87. package/dist/workspace-runtime/codex/permissions.js +0 -70
  88. package/dist/workspace-runtime/codex/work-mode.js +0 -15
  89. package/dist/workspace-runtime/main.js +0 -10
  90. package/dist/workspace-runtime/persistence/journal.js +0 -355
  91. package/dist/workspace-runtime/persistence/native-subagents.js +0 -162
  92. package/dist/workspace-runtime/persistence/sqlite-client.js +0 -77
  93. package/dist/workspace-runtime/persistence/sqlite-worker.js +0 -1096
  94. package/dist/workspace-runtime/previews/output.js +0 -36
  95. package/dist/workspace-runtime/previews/publish.js +0 -262
  96. package/dist/workspace-runtime/previews/single-file.js +0 -43
  97. package/dist/workspace-runtime/processes/managed-writes.js +0 -69
  98. package/dist/workspace-runtime/production/contracts.js +0 -17
  99. package/dist/workspace-runtime/production/controller.js +0 -207
  100. package/dist/workspace-runtime/production/dependencies.js +0 -60
  101. package/dist/workspace-runtime/production/native.js +0 -203
  102. package/dist/workspace-runtime/production/processes.js +0 -86
  103. package/dist/workspace-runtime/production/save-command.js +0 -35
  104. package/dist/workspace-runtime/production/source-copy.js +0 -91
  105. package/dist/workspace-runtime/production/stages.js +0 -205
  106. package/dist/workspace-runtime/production/storage.js +0 -60
  107. package/dist/workspace-runtime/serve.js +0 -207
  108. package/dist/workspace-runtime/server/auth.js +0 -21
  109. package/dist/workspace-runtime/server/connectivity.js +0 -201
  110. package/dist/workspace-runtime/server/desktop-host.js +0 -429
  111. package/dist/workspace-runtime/server/desktop-preview-config.js +0 -81
  112. package/dist/workspace-runtime/server/desktop-preview-service.js +0 -157
  113. package/dist/workspace-runtime/server/desktop-preview-static.js +0 -53
  114. package/dist/workspace-runtime/server/desktop-preview.js +0 -189
  115. package/dist/workspace-runtime/server/dispatch.js +0 -1183
  116. package/dist/workspace-runtime/server/endpoints.js +0 -19
  117. package/dist/workspace-runtime/server/execution-group.js +0 -85
  118. package/dist/workspace-runtime/server/http.js +0 -1127
  119. package/dist/workspace-runtime/server/lock.js +0 -53
  120. package/dist/workspace-runtime/server/rfb-watch-gate.js +0 -168
  121. package/dist/workspace-runtime/server/terminal-host.js +0 -366
  122. package/dist/workspace-runtime/server/types.js +0 -1
  123. package/dist/workspace-runtime/server/workspace-transfer.js +0 -99
  124. package/dist/workspace-runtime/workspaces/archive.js +0 -207
  125. package/dist/workspace-runtime/workspaces/artifact-events.js +0 -55
  126. package/dist/workspace-runtime/workspaces/artifact-files.js +0 -197
  127. package/dist/workspace-runtime/workspaces/artifact-receipts.js +0 -89
  128. package/dist/workspace-runtime/workspaces/artifacts.js +0 -282
  129. package/dist/workspace-runtime/workspaces/attachment-content.js +0 -123
  130. package/dist/workspace-runtime/workspaces/attachments.js +0 -181
  131. package/dist/workspace-runtime/workspaces/batch-commit.js +0 -142
  132. package/dist/workspace-runtime/workspaces/cli-context.js +0 -23
  133. package/dist/workspace-runtime/workspaces/cli-credentials.js +0 -111
  134. package/dist/workspace-runtime/workspaces/composer-context.js +0 -125
  135. package/dist/workspace-runtime/workspaces/context-error.js +0 -2
  136. package/dist/workspace-runtime/workspaces/dependencies.js +0 -264
  137. package/dist/workspace-runtime/workspaces/developer-command.js +0 -64
  138. package/dist/workspace-runtime/workspaces/directories.js +0 -123
  139. package/dist/workspace-runtime/workspaces/directory-access.js +0 -37
  140. package/dist/workspace-runtime/workspaces/directory-attachments.js +0 -245
  141. package/dist/workspace-runtime/workspaces/directory-maintenance.js +0 -111
  142. package/dist/workspace-runtime/workspaces/directory-stats.js +0 -49
  143. package/dist/workspace-runtime/workspaces/disk-snapshot.js +0 -31
  144. package/dist/workspace-runtime/workspaces/empty-template.js +0 -40
  145. package/dist/workspace-runtime/workspaces/files-search.js +0 -116
  146. package/dist/workspace-runtime/workspaces/files.js +0 -120
  147. package/dist/workspace-runtime/workspaces/git-credential-broker.js +0 -312
  148. package/dist/workspace-runtime/workspaces/git-credential-helper.js +0 -68
  149. package/dist/workspace-runtime/workspaces/git-direct-store.js +0 -155
  150. package/dist/workspace-runtime/workspaces/git.js +0 -670
  151. package/dist/workspace-runtime/workspaces/instructions.js +0 -56
  152. package/dist/workspace-runtime/workspaces/json5-edit.js +0 -170
  153. package/dist/workspace-runtime/workspaces/library-attachments.js +0 -268
  154. package/dist/workspace-runtime/workspaces/parameters.js +0 -272
  155. package/dist/workspace-runtime/workspaces/prepare.js +0 -264
  156. package/dist/workspace-runtime/workspaces/registry.js +0 -236
  157. package/dist/workspace-runtime/workspaces/revisions.js +0 -31
  158. package/dist/workspace-runtime/workspaces/shared-git.js +0 -40
  159. package/dist/workspace-runtime/workspaces/skill-artifact-loader.js +0 -91
  160. package/dist/workspace-runtime/workspaces/skills.js +0 -189
  161. package/dist/workspace-runtime/workspaces/transfer.js +0 -288
  162. package/dist/workspace-runtime/workspaces/turn-changes.js +0 -75
  163. package/dist/workspace-runtime/workspaces/video-attachments.js +0 -49
  164. package/project-template/.claude/skills/playcraft-replica-validation/SKILL.md +0 -25
  165. package/project-template/.claude/skills/playcraft-replica-validation/references/contracts.md +0 -79
  166. package/project-template/.claude/skills/playcraft-video-understanding/SKILL.md +0 -29
  167. package/project-template/.claude/skills/playcraft-video-understanding/references/contracts.md +0 -37
  168. package/project-template-v2/.claude/agents/artist.md +0 -82
  169. package/project-template-v2/.claude/agents/developer.md +0 -153
  170. package/project-template-v2/.claude/agents/game-designer.md +0 -264
  171. package/project-template-v2/.claude/agents/refs/artist-art-style-catalog.md +0 -533
  172. package/project-template-v2/.claude/agents/refs/artist-color-audio-recipes.md +0 -153
  173. package/project-template-v2/.claude/agents/refs/artist-dimension-axis.md +0 -27
  174. package/project-template-v2/.claude/agents/refs/artist-master-composite-recipes.md +0 -208
  175. package/project-template-v2/.claude/agents/refs/atom-skill-library.md +0 -81
  176. package/project-template-v2/.claude/agents/refs/developer-impl-cookbook.md +0 -432
  177. package/project-template-v2/.claude/agents/refs/framework-5-component-filter.md +0 -252
  178. package/project-template-v2/.claude/agents/refs/framework-game-feel-juice.md +0 -266
  179. package/project-template-v2/.claude/agents/refs/framework-mda.md +0 -147
  180. package/project-template-v2/.claude/agents/refs/game-designer-gameplay-sufficiency.md +0 -123
  181. package/project-template-v2/.claude/agents/refs/ta-3d-flip-recipe.md +0 -88
  182. package/project-template-v2/.claude/agents/refs/ta-atlas-deliverable-standard.md +0 -67
  183. package/project-template-v2/.claude/agents/refs/ta-batch-pipeline-recipes.md +0 -120
  184. package/project-template-v2/.claude/agents/refs/ta-image-generation-detail.md +0 -300
  185. package/project-template-v2/.claude/agents/refs/ta-image-ops-reference.md +0 -495
  186. package/project-template-v2/.claude/agents/refs/ta-pipeline-cookbook.md +0 -1141
  187. package/project-template-v2/.claude/agents/refs/ta-tools-reference.md +0 -111
  188. package/project-template-v2/.claude/agents/refs/ta-vfx-preset-catalog.md +0 -365
  189. package/project-template-v2/.claude/agents/refs/threejs-cannon-pitfalls.md +0 -412
  190. package/project-template-v2/.claude/agents/reviewer.md +0 -75
  191. package/project-template-v2/.claude/agents/technical-artist.md +0 -86
  192. package/project-template-v2/.claude/hooks/snapshot-milestone.mjs +0 -243
  193. package/project-template-v2/.claude/hooks/user-prompt.mjs +0 -133
  194. package/project-template-v2/.claude/settings.json +0 -33
  195. package/project-template-v2/.claude/skills/brainstorming/SKILL.md +0 -161
  196. package/project-template-v2/.claude/skills/brainstorming/scripts/frame-template.html +0 -270
  197. package/project-template-v2/.claude/skills/brainstorming/scripts/helper.js +0 -177
  198. package/project-template-v2/.claude/skills/brainstorming/scripts/server.cjs +0 -354
  199. package/project-template-v2/.claude/skills/brainstorming/scripts/start-server.sh +0 -148
  200. package/project-template-v2/.claude/skills/brainstorming/scripts/stop-server.sh +0 -56
  201. package/project-template-v2/.claude/skills/brainstorming/scripts/wait-for-selection.sh +0 -62
  202. package/project-template-v2/.claude/skills/brainstorming/spec-document-reviewer-prompt.md +0 -49
  203. package/project-template-v2/.claude/skills/brainstorming/visual-companion.md +0 -309
  204. package/project-template-v2/.claude/skills/playcraft-ad-psychology/SKILL.md +0 -182
  205. package/project-template-v2/.claude/skills/playcraft-art-style-guide/SKILL.md +0 -123
  206. package/project-template-v2/.claude/skills/playcraft-asset-state-sheet/SKILL.md +0 -205
  207. package/project-template-v2/.claude/skills/playcraft-audio-generation/SKILL.md +0 -280
  208. package/project-template-v2/.claude/skills/playcraft-batch-pipeline/SKILL.md +0 -184
  209. package/project-template-v2/.claude/skills/playcraft-build-optimizer/SKILL.md +0 -306
  210. package/project-template-v2/.claude/skills/playcraft-image-generation/SKILL.md +0 -298
  211. package/project-template-v2/.claude/skills/playcraft-image-generation/reference/build-sprite-sheet.template.mjs +0 -123
  212. package/project-template-v2/.claude/skills/playcraft-image-generation/reference/compare-style.template.mjs +0 -254
  213. package/project-template-v2/.claude/skills/playcraft-image-generation/reference/gen-batch-sprite.template.mjs +0 -324
  214. package/project-template-v2/.claude/skills/playcraft-image-generation/reference/gen-batch.template.mjs +0 -97
  215. package/project-template-v2/.claude/skills/playcraft-image-generation/reference/gen-edit-variants.template.mjs +0 -118
  216. package/project-template-v2/.claude/skills/playcraft-image-generation/reference/process-batch.template.mjs +0 -137
  217. package/project-template-v2/.claude/skills/playcraft-image-generation/reference/prompt-cookbook.md +0 -397
  218. package/project-template-v2/.claude/skills/playcraft-image-generation/reference/validate-sprite-sheet.template.mjs +0 -296
  219. package/project-template-v2/.claude/skills/playcraft-image-ops/SKILL.md +0 -122
  220. package/project-template-v2/.claude/skills/playcraft-image-processing/SKILL.md +0 -219
  221. package/project-template-v2/.claude/skills/playcraft-masking/SKILL.md +0 -373
  222. package/project-template-v2/.claude/skills/playcraft-playable-optimization/SKILL.md +0 -161
  223. package/project-template-v2/.claude/skills/playcraft-research/SKILL.md +0 -215
  224. package/project-template-v2/.claude/skills/playcraft-skill-recommender/SKILL.md +0 -382
  225. package/project-template-v2/.claude/skills/playcraft-sprite-generation/SKILL.md +0 -423
  226. package/project-template-v2/.claude/skills/playcraft-sprite-remix/SKILL.md +0 -158
  227. package/project-template-v2/.claude/skills/playcraft-sprite-sheet/SKILL.md +0 -100
  228. package/project-template-v2/.claude/skills/playcraft-storyboard/SKILL.md +0 -167
  229. package/project-template-v2/.claude/skills/playcraft-style-qa/SKILL.md +0 -270
  230. package/project-template-v2/.claude/skills/playcraft-text-rendering/SKILL.md +0 -236
  231. package/project-template-v2/.claude/skills/playcraft-vfx-animation/SKILL.md +0 -130
  232. package/project-template-v2/.claude/skills/playwright-cli/SKILL.md +0 -390
  233. package/project-template-v2/.claude/skills/playwright-cli/references/element-attributes.md +0 -23
  234. package/project-template-v2/.claude/skills/playwright-cli/references/playwright-tests.md +0 -39
  235. package/project-template-v2/.claude/skills/playwright-cli/references/request-mocking.md +0 -87
  236. package/project-template-v2/.claude/skills/playwright-cli/references/running-code.md +0 -240
  237. package/project-template-v2/.claude/skills/playwright-cli/references/session-management.md +0 -226
  238. package/project-template-v2/.claude/skills/playwright-cli/references/spec-driven-testing.md +0 -308
  239. package/project-template-v2/.claude/skills/playwright-cli/references/storage-state.md +0 -275
  240. package/project-template-v2/.claude/skills/playwright-cli/references/test-generation.md +0 -134
  241. package/project-template-v2/.claude/skills/playwright-cli/references/tracing.md +0 -142
  242. package/project-template-v2/.claude/skills/playwright-cli/references/video-recording.md +0 -153
  243. package/project-template-v2/.claude/skills/session-analyzer/SKILL.md +0 -386
  244. package/project-template-v2/.claude/skills/session-analyzer/scripts/execution-breakdown.mjs +0 -182
  245. package/project-template-v2/.claude/skills/session-analyzer/scripts/find-turns.mjs +0 -72
  246. package/project-template-v2/.claude/skills/session-analyzer/scripts/heavy-output.mjs +0 -121
  247. package/project-template-v2/.claude/skills/session-analyzer/scripts/resolve-session.mjs +0 -102
  248. package/project-template-v2/.claude/skills/session-analyzer/scripts/subagent-stats.mjs +0 -127
  249. package/project-template-v2/.claude/skills/session-analyzer/scripts/subagent-tool-timeline.mjs +0 -106
  250. package/project-template-v2/.claude/skills/session-analyzer/scripts/time-gaps.mjs +0 -128
  251. package/project-template-v2/.claude/skills/session-analyzer/scripts/turn-timeline.mjs +0 -67
  252. package/project-template-v2/.claude/snapshot.mjs +0 -263
  253. package/project-template-v2/.playcraft/skills.lock.json +0 -152
  254. package/project-template-v2/CLAUDE.md +0 -146
  255. package/project-template-v2/assets/audio/bgm/.gitkeep +0 -0
  256. package/project-template-v2/assets/audio/sfx/.gitkeep +0 -0
  257. package/project-template-v2/assets/bundles/.gitkeep +0 -0
  258. package/project-template-v2/assets/images/bg/.gitkeep +0 -0
  259. package/project-template-v2/assets/images/reference/.gitkeep +0 -0
  260. package/project-template-v2/assets/images/storyboard/.gitkeep +0 -0
  261. package/project-template-v2/assets/images/tiles/.gitkeep +0 -0
  262. package/project-template-v2/assets/images/ui/.gitkeep +0 -0
  263. package/project-template-v2/assets/images/vfx/.gitkeep +0 -0
  264. package/project-template-v2/assets/models/.gitkeep +0 -0
  265. package/project-template-v2/docs/harness/iteration-1/context-flow.md +0 -254
  266. package/project-template-v2/docs/harness/iteration-1/generate-flow.md +0 -91
  267. package/project-template-v2/docs/harness/iteration-1/ideate-flow.md +0 -214
  268. package/project-template-v2/docs/harness/iteration-1/optimize-flow.md +0 -75
  269. package/project-template-v2/docs/harness/iteration-1/wrapup-flow.md +0 -63
  270. package/project-template-v2/docs/harness/iteration-2/context-flow.md +0 -223
  271. package/project-template-v2/docs/harness/iteration-2/generate-flow.md +0 -129
  272. package/project-template-v2/docs/harness/iteration-2/ideate-flow.md +0 -267
  273. package/project-template-v2/docs/harness/iteration-2/optimize-flow.md +0 -164
  274. package/project-template-v2/docs/harness/iteration-2/wrapup-flow.md +0 -115
  275. package/project-template-v2/docs/harness/orchestrator-flow.md +0 -364
  276. package/project-template-v2/docs/project-state.json +0 -60
  277. package/project-template-v2/docs/project-state.md +0 -72
  278. package/project-template-v2/docs/standards/README.md +0 -225
  279. package/project-template-v2/docs/standards/agent-behavior-standards.md +0 -174
  280. package/project-template-v2/docs/standards/artifacts/design-brief.md +0 -19
  281. package/project-template-v2/docs/standards/artifacts/design.md +0 -22
  282. package/project-template-v2/docs/standards/artifacts/game-code.md +0 -41
  283. package/project-template-v2/docs/standards/artifacts/todo-list.md +0 -41
  284. package/project-template-v2/docs/standards/iter1-agent-behavior-standards.md +0 -343
  285. package/project-template-v2/game/index.ts +0 -18
  286. package/project-template-v2/globals.d.ts +0 -51
  287. package/project-template-v2/index.css +0 -34
  288. package/project-template-v2/index.html +0 -18
  289. package/project-template-v2/main.ts +0 -9
  290. package/project-template-v2/package.json +0 -46
  291. package/project-template-v2/skills/_shared/scripts/dispatch-clear.mjs +0 -31
  292. package/project-template-v2/skills/_shared/scripts/dispatch-set.mjs +0 -86
  293. package/project-template-v2/skills/_shared/scripts/dod-check.mjs +0 -153
  294. package/project-template-v2/skills/_shared/scripts/handoff-append.mjs +0 -70
  295. package/project-template-v2/skills/_shared/scripts/lib/validator-artifacts.mjs +0 -91
  296. package/project-template-v2/skills/_shared/scripts/pipeline/dod-config.mjs +0 -131
  297. package/project-template-v2/skills/_shared/scripts/pipeline/index.mjs +0 -80
  298. package/project-template-v2/skills/_shared/scripts/pipeline/iteration-1-core.mjs +0 -90
  299. package/project-template-v2/skills/_shared/scripts/pipeline/iteration-2-wrap.mjs +0 -93
  300. package/project-template-v2/skills/_shared/scripts/pipeline/iteration-3-visual.mjs +0 -23
  301. package/project-template-v2/skills/_shared/scripts/render-project-state.mjs +0 -230
  302. package/project-template-v2/skills/_shared/scripts/state-advance-stage.mjs +0 -58
  303. package/project-template-v2/skills/_shared/scripts/state-get.mjs +0 -339
  304. package/project-template-v2/skills/_shared/scripts/state-handoff.mjs +0 -39
  305. package/project-template-v2/skills/_shared/scripts/state-set.mjs +0 -94
  306. package/project-template-v2/skills/_shared/scripts/state-store.mjs +0 -783
  307. package/project-template-v2/skills/_shared/scripts/todo-add.mjs +0 -88
  308. package/project-template-v2/skills/_shared/scripts/todo-get.mjs +0 -130
  309. package/project-template-v2/skills/_shared/scripts/todo-remove.mjs +0 -33
  310. package/project-template-v2/skills/_shared/scripts/todo-set.mjs +0 -47
  311. package/project-template-v2/skills/_shared/scripts/verify-asset-code-sync.mjs +0 -268
  312. package/project-template-v2/skills/_shared/scripts/verify-env.mjs +0 -285
  313. package/project-template-v2/skills/_shared/scripts/verify-placeholders.mjs +0 -161
  314. package/project-template-v2/skills/playable-autoplay/SKILL.md +0 -176
  315. package/project-template-v2/skills/playable-autoplay/agents/openai.yaml +0 -4
  316. package/project-template-v2/skills/playable-debug/SKILL.md +0 -116
  317. package/project-template-v2/skills/playable-debug/agents/openai.yaml +0 -4
  318. package/project-template-v2/skills/playable-debug/references/debug-config.md +0 -40
  319. package/project-template-v2/skills/playable-record/SKILL.md +0 -140
  320. package/project-template-v2/skills/playable-record/scripts/lib/dev-server.mjs +0 -104
  321. package/project-template-v2/skills/playable-record/scripts/lib/record-audio-bridge.js +0 -141
  322. package/project-template-v2/skills/playable-record/scripts/record-playable.mjs +0 -425
  323. package/project-template-v2/skills/playable-record/scripts/verify-contract.mjs +0 -261
  324. package/project-template-v2/skills/playable-record/scripts/verify-firstwin.mjs +0 -398
  325. package/project-template-v2/skills/playable-record/scripts/verify-fusion.mjs +0 -322
  326. package/project-template-v2/skills/playable-record/scripts/verify-lifecycle.mjs +0 -105
  327. package/project-template-v2/skills/playable-record/scripts/verify-vlm-video.mjs +0 -230
  328. package/project-template-v2/skills/playable-validate/SKILL.md +0 -61
  329. package/project-template-v2/skills/playable-validate/validation-rules.md +0 -14
  330. package/project-template-v2/skills/playable-verify-ui/SKILL.md +0 -63
  331. package/project-template-v2/skills/playable-verify-ui/scripts/lib/__init__.py +0 -1
  332. package/project-template-v2/skills/playable-verify-ui/scripts/lib/config_expr.js +0 -218
  333. package/project-template-v2/skills/playable-verify-ui/scripts/lib/node_utils.js +0 -51
  334. package/project-template-v2/skills/playable-verify-ui/scripts/lib/profile_loader.py +0 -59
  335. package/project-template-v2/skills/playable-verify-ui/scripts/lib/report.py +0 -106
  336. package/project-template-v2/skills/playable-verify-ui/scripts/lib/runtime_contract.js +0 -116
  337. package/project-template-v2/skills/playable-verify-ui/scripts/verify_fetch_antipatterns.py +0 -59
  338. package/project-template-v2/skills/playable-verify-ui/scripts/verify_hardcoded_layout.js +0 -64
  339. package/project-template-v2/skills/playable-verify-ui/scripts/verify_runtime_contract.js +0 -58
  340. package/project-template-v2/skills/playable-verify-ui/scripts/verify_text_overlap.py +0 -333
  341. package/project-template-v2/ta-workspace/scripts/.gitkeep +0 -0
  342. package/project-template-v2/tsconfig.json +0 -20
  343. package/project-template-v2/vite.config.ts +0 -27
  344. package/project-templates/batch-locks/phaser.yaml +0 -922
  345. package/project-templates/batch-locks/threejs.yaml +0 -978
  346. package/project-templates/empty/AGENTS.md +0 -39
  347. package/project-templates/empty/gitignore +0 -33
@@ -1,373 +0,0 @@
1
- ---
2
- name: playcraft-masking
3
- description: PlayCraft 蒙版与智能抠图完整指南。涵盖 decompose-layers(302 Qwen 整图分层)、segment(SAM3 语义分割)的文本/框选模式、mask+rgba 输出、remove-background 选型、蒙版合成与轮廓描边。TA 在处理抠图、蒙版或背景替换任务前必读。
4
- triggers: 蒙版,mask,抠图,去背景,remove-background,语义分割,segment,SAM,SAM3,decompose-layers,图层分层,layered,背景替换,透明背景,RGBA,floodfill,ai抠图,轮廓描边,背景分离,foreground,主体提取
5
- ---
6
-
7
- # PlayCraft 蒙版与智能抠图完整指南
8
-
9
- ## 0. 工具速查
10
-
11
- | 工具 | 适用场景 | 速度 | 质量 |
12
- | -------------------------------------- | ------------------------------------------------- | ---------------------- | -------------------- |
13
- | `remove-background --method floodfill` | 纯色背景(绿幕、白底、渐变色) | 快(本地) | 中等,边缘较硬 |
14
- | `remove-background --method ai` | 任意复杂背景 | 慢(调后端) | 高,支持半透明/毛发 |
15
- | `decompose-layers` | **整图**拆成 N 个语义 RGBA 层(Master Composite) | 慢(302,约 1–2 分钟) | 高,全尺寸分层 PNG |
16
- | `segment` | 按 prompt **指定对象**抠图/蒙版 | 慢(SAM3) | 最高,产出 mask+rgba |
17
-
18
- **决策逻辑**:
19
-
20
- ```
21
- 要从整张合成稿一次性拆出背景/角色/UI 等多层?
22
- ├─ 是 → decompose-layers(需 Admin 配置 302 API Key;本地图需公网 URL 或 --input HTTPS)
23
- └─ 否 → 背景是纯色/绿幕?
24
- ├─ 是 → remove-background --method floodfill
25
- └─ 否 → 需要 mask 文件供后续合成?
26
- ├─ 是 → segment(或已知位置用 crop)
27
- └─ 否 → remove-background --method ai
28
- ```
29
-
30
- **decompose-layers vs segment**:
31
-
32
- - **decompose-layers**:无 per-object prompt,自动分层;适合 Master Composite 拆解;**不能**指定「只要第 3 格 tile」。ASR 优先用 `crop`。
33
- - **segment**:开放词汇或框选单个对象;适合精确蒙版;密集网格上**禁止**纯 text prompt(见下文 §2)。
34
-
35
- ---
36
-
37
- ## 1. decompose-layers — 302 Qwen 整图语义分层
38
-
39
- 将整张图拆成 `num_layers` 张带透明通道的 PNG(默认 4 层),用于 Master Composite 元素提取(ASR 优先 crop,不用本命令)。
40
-
41
- ```bash
42
- playcraft image decompose-layers \
43
- --input assets/images/storyboard/master_composite.png \
44
- --output-dir ta-workspace/tmp/layers \
45
- --num-layers 4 \
46
- --prompt ""
47
-
48
- # 输入已是公网 URL 时(推荐本地 dev)
49
- playcraft image decompose-layers \
50
- --input "https://example.com/composite.png" \
51
- --output-dir ./layers-out
52
- ```
53
-
54
- **配置**:Admin → 系统 → AI → `provider=302`、`modelKind=image` + API Key(与 302 生图共用,**不必**单独添加 qwen-image-layered 模型项)。
55
-
56
- **输出**:`layer_00.png` … `layer_{N-1}.png` + `decompose-layers-meta.json`。
57
-
58
- ---
59
-
60
- ## 2. remove-background — 去背景
61
-
62
- ### Floodfill 模式(纯色背景)
63
-
64
- ```bash
65
- # 基础用法(默认 floodfill,去除纯色背景)
66
- playcraft image remove-background \
67
- --input assets/images/tiles/tile_greenscreen.png \
68
- --output assets/images/tiles/tile_transparent.png
69
-
70
- # 调整容差(--tolerance,默认 30)
71
- # 值越高,容错越大(适合渐变背景或有噪点的纯色背景)
72
- playcraft image remove-background \
73
- --input assets/images/character/character_white_bg.png \
74
- --output assets/images/character/character_transparent.png \
75
- --method floodfill \
76
- --tolerance 50
77
-
78
- # 边缘平滑度(--edge-smooth,默认 2,最大有效 4)
79
- # 值越高,边缘越柔和(减少锯齿)
80
- playcraft image remove-background \
81
- --input assets/images/tiles/tile_white.png \
82
- --output assets/images/tiles/tile_clean.png \
83
- --tolerance 30 \
84
- --edge-smooth 3
85
- ```
86
-
87
- **Floodfill 参数说明**:
88
-
89
- | 参数 | 默认值 | 说明 |
90
- | --------------- | ------ | -------------------------------------------------- |
91
- | `--tolerance` | 30 | 颜色容差(0-255):背景色在此范围内的像素都被去掉 |
92
- | `--edge-smooth` | 2 | 边缘平滑(0-4):对边缘 alpha 做高斯平滑,减少锯齿 |
93
-
94
- **什么时候调大 tolerance**:
95
-
96
- - 白色背景但图中有浅色元素 → tolerance 太大会误删内容,建议 20-30
97
- - 绿幕背景有轻微渐变 → 可试 40-60
98
- - 背景有明显噪点 → 50+
99
-
100
- ### AI 模式(复杂背景)
101
-
102
- ```bash
103
- playcraft image remove-background \
104
- --input assets/images/character/character_scene.png \
105
- --output assets/images/character/character_cutout.png \
106
- --method ai \
107
- --model small # small(快)或 medium(精细)
108
-
109
- # 跳过 alpha 精化(更快,边缘稍粗)
110
- playcraft image remove-background \
111
- --input source.png \
112
- --output output.png \
113
- --method ai \
114
- --no-refine
115
- ```
116
-
117
- **AI 模式 vs Floodfill 选型表**:
118
-
119
- | 特征 | 选 floodfill | 选 ai |
120
- | -------------------------------- | ------------ | ----- |
121
- | 背景是纯色(绿、白、蓝) | 是 | — |
122
- | 背景有复杂纹理/渐变/场景 | — | 是 |
123
- | 角色有半透明部分(衣物、头发丝) | — | 是 |
124
- | 需要快速批量处理 | 是 | — |
125
- | 追求最高精度 | — | 是 |
126
-
127
- ---
128
-
129
- ## 3. segment — SAM3 语义分割
130
-
131
- `segment` 调用后端 SAM3 模型,对图片中的对象进行精确语义分割,产出**蒙版文件**(mask)和**透明抠图**(rgba)。
132
-
133
- **适用场景**:
134
-
135
- - 需要精确 mask 文件供后续合成操作使用
136
- - 从游戏截图中精确分离多个游戏元素
137
- - 需要不规则形状的蒙版(圆形徽章、异形 UI 元素)
138
-
139
- ### ⚠️ 模式选择决策(必读)
140
-
141
- > **对网格/已知布局图(如 ASR state sheets、authoring sprite sheets),严禁使用纯 text prompt!**
142
- >
143
- > text prompt 在多元素密集图上歧义极大——SAM3 无法准确区分"整个 tile 方块"和"方块内的水果 icon"。
144
-
145
- ```
146
- 提取目标的位置已知或可计算?
147
- ├─ 是(网格布局、规则排列)
148
- │ → 优先 playcraft image crop(最可靠,零 AI 歧义)
149
- │ → 次选 segment --boxes(需要精确蒙版时)
150
- │
151
- ├─ 位置大致可估、需要精确蒙版
152
- │ → segment --boxes(用近似 bbox 框选)
153
- │
154
- └─ 位置完全未知、元素形状不规则
155
- → segment --text(最后手段)
156
- → prompt 必须极其具体,包含位置/颜色/上下文描述
157
- ```
158
-
159
- **常见错误示例**:
160
-
161
- - ❌ `--text "apple tile icon"` → 可能只切出苹果水果,丢失 tile 方块底板
162
- - ❌ `--text "panda character"` → 图上有 panda face tile + panda 角色,返回多个 instance
163
- - ✅ `--boxes '[[50,50,450,450]]'` → 框选已知位置的完整元素
164
- - ✅ `playcraft image crop --x 50 --y 50 --width 400 --height 400` → 零歧义直切
165
-
166
- ### 文本提示模式(仅用于位置未知、元素分布不规则场景)
167
-
168
- ```bash
169
- # 用文字描述要提取的对象(仅适用于元素位置无法提前计算的场景)
170
- playcraft image segment \
171
- --input assets/images/screenshot.png \
172
- --text "the main character" \
173
- --output-dir assets/images/segment_output/
174
-
175
- # 提取特定游戏元素
176
- playcraft image segment \
177
- --input assets/images/game_scene.png \
178
- --text "the treasure chest" \
179
- --output-dir /tmp/segment/
180
- ```
181
-
182
- **text prompt 最佳实践**:
183
-
184
- - 描述要尽可能具体:加颜色、位置、完整性描述
185
- - ✅ `"the complete rounded square tile with green apple in top-left area"`
186
- - ❌ `"apple tile icon"`(歧义:是苹果本身?还是整个 tile 方块?)
187
- - 返回多个 instance 时,不要盲目取 score 最高的——检查 bbox 尺寸是否合理
188
-
189
- ### 框选模式(多对象精确分割)
190
-
191
- ```bash
192
- # --boxes 接受 JSON 数组,每个元素为 [x1, y1, x2, y2](左上角和右下角坐标)
193
- playcraft image segment \
194
- --input assets/images/game_scene.png \
195
- --boxes '[[50, 100, 200, 300], [350, 150, 500, 400]]' \
196
- --box-labels '["player", "enemy"]' \
197
- --output-dir /tmp/segment/
198
-
199
- # 单个框(无需 box-labels 时)
200
- playcraft image segment \
201
- --input assets/images/tile_sheet.png \
202
- --boxes '[[0, 0, 128, 128]]' \
203
- --output-dir /tmp/segment/
204
- ```
205
-
206
- ### 输出结构
207
-
208
- `segment` 在 `--output-dir` 下生成:
209
-
210
- ```
211
- segment_output/
212
- ├── 00_mask.png # 二值蒙版(白=前景,黑=背景)
213
- ├── 00_rgba.png # 透明背景抠图(直接可用)
214
- ├── 01_mask.png # 第二个对象的蒙版(若多框)
215
- ├── 01_rgba.png # 第二个对象的透明抠图
216
- └── segment-meta.json # 分割元数据(坐标、置信度等)
217
- ```
218
-
219
- ### 阈值调节(边缘精细度)
220
-
221
- ```bash
222
- # --threshold(默认 0.3):越低保留越多细节,但可能包含噪点
223
- # 越高边缘越干净,但可能丢失细节(毛发、透明边缘)
224
- playcraft image segment \
225
- --input game_scene.png \
226
- --text "the hero character" \
227
- --threshold 0.2 \ # 较低:保留更多边缘细节
228
- --output-dir /tmp/segment/
229
-
230
- # --mask-threshold:后端蒙版生成阈值(高级参数)
231
- playcraft image segment \
232
- --input source.png \
233
- --text "the dragon" \
234
- --threshold 0.3 \
235
- --mask-threshold 0.5 \
236
- --output-dir /tmp/segment/
237
- ```
238
-
239
- ### 仅生成蒙版(不要 rgba)
240
-
241
- ```bash
242
- # --no-rgba:跳过 rgba 生成,只输出 mask(更快)
243
- playcraft image segment \
244
- --input source.png \
245
- --text "the background elements" \
246
- --no-rgba \
247
- --output-dir /tmp/masks/
248
- ```
249
-
250
- ---
251
-
252
- ## 4. 蒙版合成工作流
253
-
254
- ### 工作流 A:换背景(最常用)
255
-
256
- ```bash
257
- # 1. 用 segment 提取角色(带透明背景)
258
- playcraft image segment \
259
- --input assets/images/character_with_bg.png \
260
- --text "the game character" \
261
- --output-dir /tmp/char_segment/
262
- # → 产出 /tmp/char_segment/00_rgba.png
263
-
264
- # 2. 用 overlay 把角色合成到新背景上
265
- playcraft image overlay \
266
- --base assets/images/bg/new_background.png \
267
- --overlay /tmp/char_segment/00_rgba.png \
268
- --output assets/images/character_on_new_bg.png \
269
- --gravity center
270
- ```
271
-
272
- ### 工作流 B:多层合成(背景 + 角色 + UI)
273
-
274
- ```bash
275
- # 层1:基础背景
276
- cp assets/images/bg/background.png /tmp/composite.png
277
-
278
- # 层2:叠加角色(居中偏下)
279
- playcraft image overlay \
280
- --base /tmp/composite.png \
281
- --overlay assets/images/character/character_transparent.png \
282
- --output /tmp/composite.png \
283
- --gravity south
284
-
285
- # 层3:叠加 UI 层(顶部)
286
- playcraft image overlay \
287
- --base /tmp/composite.png \
288
- --overlay assets/images/ui/hud_overlay.png \
289
- --output assets/images/final_scene.png \
290
- --gravity north
291
- ```
292
-
293
- ### 工作流 C:轮廓描边效果
294
-
295
- 用蒙版制作发光轮廓描边:
296
-
297
- ```bash
298
- # 1. 提取蒙版
299
- playcraft image segment \
300
- --input assets/images/character.png \
301
- --text "character" \
302
- --output-dir /tmp/seg/
303
-
304
- # 2. 把蒙版 tint 为描边颜色(金色)
305
- playcraft image tint \
306
- --input /tmp/seg/00_mask.png \
307
- --output /tmp/outline_colored.png \
308
- --color "#FFD700"
309
-
310
- # 3. 扩大描边层(pad 向外扩 4px)
311
- playcraft image pad \
312
- --input /tmp/outline_colored.png \
313
- --output /tmp/outline_padded.png \
314
- --all 4
315
-
316
- # 4. 叠回:描边层在底,原图在上
317
- playcraft image overlay \
318
- --base /tmp/outline_padded.png \
319
- --overlay /tmp/seg/00_rgba.png \
320
- --output assets/images/character_outlined.png \
321
- --gravity center
322
- ```
323
-
324
- ### 工作流 D:批量替换素材背景
325
-
326
- ```bash
327
- # 对多张带绿幕背景的素材批量去背
328
- for f in assets/images/raw/tile_*_greenscreen.png; do
329
- name=$(basename "$f" _greenscreen.png)
330
- playcraft image remove-background \
331
- --input "$f" \
332
- --output "assets/images/tiles/${name}.png" \
333
- --method floodfill \
334
- --tolerance 40
335
- done
336
- ```
337
-
338
- ---
339
-
340
- ## 5. 常见问题排查
341
-
342
- ### 边缘有绿色/白色残留(floodfill)
343
-
344
- ```bash
345
- # 原因:tolerance 太低,部分背景像素未被删除
346
- # 修复:适当提高 tolerance(每次 +10 尝试)
347
- playcraft image remove-background \
348
- --input source.png --output output.png \
349
- --tolerance 50 # 从 30 提升到 50
350
- ```
351
-
352
- ### segment 分割到了错误的对象
353
-
354
- ```bash
355
- # 原因:文本提示不够精确
356
- # 修复方案 1:更具体的描述
357
- --text "the blue warrior character in the center" # 加颜色/位置描述
358
-
359
- # 修复方案 2:改用框选模式,精确框出目标区域
360
- --boxes '[[x1, y1, x2, y2]]' # 先用 playcraft image info 确认图片尺寸
361
- ```
362
-
363
- ### rgba 输出有半透明噪点
364
-
365
- ```bash
366
- # 原因:threshold 太低
367
- # 修复:提高 threshold(从 0.3 到 0.5)
368
- playcraft image segment \
369
- --input source.png \
370
- --text "target object" \
371
- --threshold 0.5 \
372
- --output-dir /tmp/seg/
373
- ```
@@ -1,161 +0,0 @@
1
- ---
2
- name: playcraft-playable-optimization
3
- description: >-
4
- Loop 3 optimization toolkit for PlayCraft playable ads: video validate loop,
5
- image validator, headed MP4 recording, FX/animation polish, and L→G focus
6
- playground. Use during development ready-state, ui_review/ui_rework, and the
7
- optional ring 4 deep optimization after final Ring Gate.
8
- allowed-tools:
9
- - Bash(npm run state:get:*)
10
- - Bash(npm run ensure:project:*)
11
- - Bash(npm run verify:ui:*)
12
- - Bash(npm run record:mp4:*)
13
- - Bash(npm run playground:*)
14
- - Bash(npm run sweep:L1:*)
15
- - Bash(npm run sweep:G1:*)
16
- - Bash(npm run repack:frames:*)
17
- - Read
18
- - Write
19
- - Edit
20
- ---
21
-
22
- # PlayCraft Playable Optimization Toolkit
23
-
24
- Abbreviations used here: UI (User Interface, 用户界面), MP4 (MPEG-4 Part 14, 视频容器格式), FX (Effects, 特效), ASR (Asset State Reference, 资产状态参考).
25
-
26
- > **定位**:PlayCraft 三 loop 中 **Loop 3(优化模板)** 的执行引擎。不改 PlayCraft 的 Agent 编排,只提供工具 + 调用协议。
27
- >
28
- > **给谁用**:Developer(build 收尾)、Reviewer(ring 4 verify / optional optimization)、Developer / TA / Artist(ui_diff 修复)。
29
-
30
- ---
31
-
32
- ## 起手式(每次调用前必做)
33
-
34
- ```bash
35
- npm run state:get -- --json
36
- npm run ensure:project
37
- ```
38
-
39
- 先读 `state:get`,只运行 `nextCommands` / `currentRingVerifiers` 中已经披露的工具。`ensure:project` 只做目录、脚本和依赖准备,不代表当前 Ring 必须跑 UI / MP4 验证。
40
-
41
- `ensure:project` 会:
42
-
43
- - 检查/创建 `recordings/`、`validate/`、`focus-lab/`、`playground/`。
44
- - 若无 `playable.ui.profile.yaml` 则从 template 复制一份。
45
- - 合并 `package.json` scripts。
46
- - 自动 `npm install` + `npx playwright install chromium`(首次)。
47
-
48
- PlayCraft 是 **Vite** 项目,`ensure-project` 会检测到 `vite.config.ts` + 根目录 `index.html`,不会要求 `game/index.html`。
49
-
50
- ---
51
-
52
- ## 与 PlayCraft growth-rings 的接点
53
-
54
- | iteration / loop | 谁调用 | 调用什么 | 产出 |
55
- | ----------------------------- | ----------------------- | --------------------------------------------------------------- | ------------------------------ |
56
- | ring 1 `loop: build`(收尾) | Developer | `state:get` 披露的 contract/lifecycle/firstwin | 轻量 HOOK 生命周期 + 首关可胜 |
57
- | ring 2+ `loop: build`(收尾) | Developer | 仅运行 `state:get.nextCommands` 中的 `verify:ui` / `record:mp4` | 当前 Ring 证据 |
58
- | ring 4 `loop: verify` | Reviewer | `verify:ui` → `playwright-cli` 截图 | asset/layout 先行拦截 |
59
- | ring 4 verify ui_diff fail | Developer / TA / Artist | 读 `playable-validate` 子 skill 做最小 fix | 修复后重跑 verify + record |
60
- | ring 4 optional optimization | Reviewer / Orchestrator | `playable-validate` loop | `validate/PLAYABLE-*.md` + MP4 |
61
-
62
- ---
63
-
64
- ## 一句话指令表
65
-
66
- | 用户/Agent 意图 | 命令/入口 |
67
- | ------------------------ | ----------------------------------------------------------------------------- |
68
- | 查看当前可运行命令 | `npm run state:get -- --json` |
69
- | 整片优化到可交付 | 读 `skills/playable-validate/SKILL.md` § Agent 入口 |
70
- | 检查 UI / atlas / layout | 仅当 `state:get.nextCommands` 披露:`npm run verify:ui` |
71
- | 录完整局 headed MP4 | 仅当 `state:get.nextCommands` 披露:`npm run record:mp4 -- --headed --fps=60` |
72
- | 只录某个 focus zone | `npm run record:focus -- --scope=PHASE --fixture=endcard-win --headed` |
73
- | 优化 match 碎裂 FX | 读 `skills/playable-fx-decompose/SKILL.md` |
74
- | 优化帧光效 / burst | 读 `skills/playable-fx-peak/SKILL.md` |
75
- | 优化动效手感 | 读 `skills/playable-animate/SKILL.md` |
76
- | 局部 L→G 穷举 | `npm run sweep:L1` / `npm run sweep:G1` |
77
-
78
- ---
79
-
80
- ## Vite 项目注意事项
81
-
82
- PlayCraft 项目用 Vite,`record:mp4` 默认脚本已经带了 `--use-dev --url=http://localhost:3000/`。只在当前 Ring 已披露 `record:mp4` 时运行:
83
-
84
- ```bash
85
- npm run record:mp4 -- --headed --fps=60
86
- ```
87
-
88
- 这会:
89
-
90
- 1. 在当前目录启动 `npm run dev`。
91
- 2. 等待 `http://localhost:3000/` 可访问。
92
- 3. 用 Playwright 打开该 URL 并录制。
93
-
94
- 如果 Vite 端口不是 3000,改 `package.json` 里的 `record:mp4` 脚本,或手动:
95
-
96
- ```bash
97
- # 终端 1
98
- npm run dev
99
-
100
- # 终端 2 / Agent
101
- npm run record:mp4 -- --url=http://localhost:5173/ --headed --fps=60
102
- ```
103
-
104
- ---
105
-
106
- ## 录制前提:游戏需暴露 harness 契约
107
-
108
- Recorder / `verify:contract` 以 **`window.__playable`** 为 pass 标准(见 `game/contract/` + `publishPlayableRuntime()`):
109
-
110
- ```js
111
- window.__playable.autoPlay(); // 一键推进到 ENDCARD
112
- window.__playable.getState(); // { currentPhase, isGameOver }
113
- window.__playable.getCanvas?.(); // 可选,供录屏取 canvas
114
- window.__playable.hideDebugUi?.(); // 可选,录屏前隐藏 debug UI
115
- ```
116
-
117
- `window.__game` 可保留为引擎句柄(如 Phaser.Game),但**不得**在其上挂载 `start` / `autoPlay` 等 harness 方法。
118
-
119
- **Legacy 路径(仅 warn,2026-Q3 移除)**:旧项目若仍只暴露 `MainScene._onDebugAutoPlay()` + `sceneManager`,verify 仍可通过但会提示迁移到 `window.__playable`。
120
-
121
- ---
122
-
123
- ## 标准工作流(按 gate 披露执行)
124
-
125
- ```
126
- npm run state:get -- --json
127
- npm run ensure:project
128
- # Run only commands disclosed by state:get.nextCommands.
129
- # Then review MP4 evidence, make the smallest fix, and rerun disclosed gates.
130
- ```
131
-
132
- ---
133
-
134
- ## 输出规范
135
-
136
- - MP4 证据:`recordings/playable-YYYYMMDD-HHmmss.mp4`
137
- - 报告:`validate/PLAYABLE-YYYYMMDD-HHmmss.md`
138
- - Focus 录屏:`recordings/focus/...`
139
- - 给用户/ orchestrator:结论 + 证据路径 + 1–3 条 vs 基线
140
-
141
- ---
142
-
143
- ## 依赖
144
-
145
- - Node.js 18+
146
- - Python 3 + `pip install pyyaml jsonschema pillow`
147
- - ffmpeg(`brew install ffmpeg`)
148
- - Playwright Chromium(由 `ensure-project` 自动安装)
149
-
150
- ---
151
-
152
- ## 相关文件
153
-
154
- - `skills/playable-validate/SKILL.md` — 整片优化主入口
155
- - `skills/playable-verify-ui/SKILL.md` — Image Validator
156
- - `skills/playable-record/SKILL.md` — 录屏
157
- - `skills/playable-debug/SKILL.md` — 一键通关
158
- - `skills/playable-fx-peak/SKILL.md` — 帧光效
159
- - `skills/playable-fx-decompose/SKILL.md` — 碎裂
160
- - `skills/playable-animate/SKILL.md` — 动效手感
161
- - `skills/playable-focus/SKILL.md` — L→G playground