@playcraft/cli 0.1.49-beta → 0.1.51

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 (395) hide show
  1. package/README.md +3 -62
  2. package/dist/agent/local-backend.js +1 -1
  3. package/dist/cli-root-help.js +0 -2
  4. package/dist/commands/build-all.js +19 -5
  5. package/dist/commands/build.js +28 -15
  6. package/dist/commands/create.js +33 -26
  7. package/dist/commands/image.js +6 -2
  8. package/dist/commands/login.js +42 -84
  9. package/dist/commands/skills.js +0 -4
  10. package/dist/commands/tools-3d.js +0 -11
  11. package/dist/commands/tools-generation.js +137 -69
  12. package/dist/commands/tools-image-context.js +29 -0
  13. package/dist/commands/tools-utils.js +12 -0
  14. package/dist/commands/tools.js +2 -2
  15. package/dist/config.js +4 -59
  16. package/dist/index.js +3 -40
  17. package/dist/remix/clone.js +0 -2
  18. package/dist/remix/init-template.js +0 -2
  19. package/dist/remix/pull.js +0 -2
  20. package/dist/remix/push.js +1 -21
  21. package/dist/utils/agent-api-client.js +30 -210
  22. package/dist/utils/image-asset-context.js +228 -0
  23. package/dist/utils/playcraft-http-client.js +4 -6
  24. package/package.json +5 -15
  25. package/project-template/.claude/agents/refs/ta-image-generation-detail.md +67 -123
  26. package/project-template/.claude/skills/playcraft-image-generation/SKILL.md +135 -63
  27. package/project-template/.claude/skills/playcraft-image-generation/reference/gen-batch-sprite.template.mjs +42 -33
  28. package/project-template/.claude/skills/playcraft-image-generation/reference/gen-batch.template.mjs +18 -20
  29. package/project-template/.claude/skills/playcraft-image-generation/reference/process-batch.template.mjs +6 -7
  30. package/project-template/.claude/skills/playcraft-image-generation/reference/prompt-cookbook.md +39 -39
  31. package/project-templates/phaser/.claude/agents/refs/ta-image-generation-detail.md +59 -59
  32. package/project-templates/phaser/.claude/skills/playcraft-image-generation/SKILL.md +135 -63
  33. package/project-templates/phaser/.claude/skills/playcraft-image-generation/reference/gen-batch-sprite.template.mjs +42 -33
  34. package/project-templates/phaser/.claude/skills/playcraft-image-generation/reference/gen-batch.template.mjs +18 -20
  35. package/project-templates/phaser/.claude/skills/playcraft-image-generation/reference/process-batch.template.mjs +6 -7
  36. package/project-templates/phaser/.claude/skills/playcraft-image-generation/reference/prompt-cookbook.md +39 -39
  37. package/project-templates/threejs/.claude/agents/refs/ta-image-generation-detail.md +59 -59
  38. package/project-templates/threejs/.claude/skills/playcraft-image-generation/SKILL.md +135 -63
  39. package/project-templates/threejs/.claude/skills/playcraft-image-generation/reference/gen-batch-sprite.template.mjs +42 -33
  40. package/project-templates/threejs/.claude/skills/playcraft-image-generation/reference/gen-batch.template.mjs +18 -20
  41. package/project-templates/threejs/.claude/skills/playcraft-image-generation/reference/process-batch.template.mjs +6 -7
  42. package/project-templates/threejs/.claude/skills/playcraft-image-generation/reference/prompt-cookbook.md +39 -39
  43. package/SKILLS_REGISTRY.md +0 -149
  44. package/dist/auth/account-activation.js +0 -157
  45. package/dist/auth/messages.js +0 -30
  46. package/dist/commands/build-temp.js +0 -26
  47. package/dist/commands/platform-skills.generated.js +0 -19
  48. package/dist/commands/playable.js +0 -53
  49. package/dist/commands/tools-batch.js +0 -113
  50. package/dist/commands/video.js +0 -122
  51. package/dist/commands/workspace-runtime.js +0 -54
  52. package/dist/commands/workspace.js +0 -40
  53. package/dist/project-skills/builtin-import.js +0 -225
  54. package/dist/project-skills/commands.js +0 -77
  55. package/dist/project-skills/lifecycle.js +0 -28
  56. package/dist/project-skills/local-run.js +0 -112
  57. package/dist/project-skills/local-store.js +0 -221
  58. package/dist/project-skills/messages.js +0 -80
  59. package/dist/project-skills/reconcile.js +0 -62
  60. package/dist/project-skills/remote-cache.js +0 -51
  61. package/dist/project-skills/validation.js +0 -19
  62. package/dist/recording/messages.js +0 -40
  63. package/dist/recording/project-digest.js +0 -85
  64. package/dist/recording/recorder.js +0 -293
  65. package/dist/recording/scenario.js +0 -50
  66. package/dist/skill-registry/client.js +0 -345
  67. package/dist/skill-registry/commands.js +0 -180
  68. package/dist/skill-registry/evaluation-client.js +0 -156
  69. package/dist/skill-registry/evaluation-commands.js +0 -174
  70. package/dist/skill-registry/messages.js +0 -177
  71. package/dist/skill-registry/package.js +0 -275
  72. package/dist/skill-registry/platform-package.js +0 -100
  73. package/dist/utils/environment-endpoints.js +0 -17
  74. package/dist/utils/error-diagnostics.js +0 -20
  75. package/dist/utils/tool-operation-journal.js +0 -124
  76. package/dist/utils/video-evidence-git.js +0 -81
  77. package/dist/video-replication/client.js +0 -234
  78. package/dist/video-replication/comparison-evidence.js +0 -149
  79. package/dist/video-replication/comparison-files.js +0 -57
  80. package/dist/video-replication/comparison-log.js +0 -72
  81. package/dist/video-replication/comparison-messages.js +0 -104
  82. package/dist/video-replication/comparison-output.js +0 -63
  83. package/dist/video-replication/comparison-preflight.js +0 -66
  84. package/dist/video-replication/comparison.js +0 -230
  85. package/dist/video-replication/diagnostics.js +0 -41
  86. package/dist/video-replication/evidence.js +0 -165
  87. package/dist/video-replication/media.js +0 -112
  88. package/dist/video-replication/messages.js +0 -97
  89. package/dist/workspace/messages.js +0 -67
  90. package/dist/workspace/transfer-client.js +0 -233
  91. package/dist/workspace/transfer-errors.js +0 -48
  92. package/dist/workspace-runtime/batch/content-changes.js +0 -30
  93. package/dist/workspace-runtime/batch/control.js +0 -86
  94. package/dist/workspace-runtime/batch/deliver.js +0 -173
  95. package/dist/workspace-runtime/batch/freeze.js +0 -101
  96. package/dist/workspace-runtime/batch/generate.js +0 -249
  97. package/dist/workspace-runtime/batch/git.js +0 -40
  98. package/dist/workspace-runtime/batch/occupancy.js +0 -8
  99. package/dist/workspace-runtime/batch/policy.js +0 -70
  100. package/dist/workspace-runtime/batch/prepare.js +0 -317
  101. package/dist/workspace-runtime/batch/processes.js +0 -72
  102. package/dist/workspace-runtime/batch/records.js +0 -113
  103. package/dist/workspace-runtime/batch/routes.js +0 -61
  104. package/dist/workspace-runtime/batch/source-candidate.js +0 -86
  105. package/dist/workspace-runtime/batch/source-capture.js +0 -146
  106. package/dist/workspace-runtime/batch/source-failure.js +0 -43
  107. package/dist/workspace-runtime/batch/source-publish.js +0 -130
  108. package/dist/workspace-runtime/codex/app-server.js +0 -1065
  109. package/dist/workspace-runtime/codex/compact.js +0 -46
  110. package/dist/workspace-runtime/codex/config-toml.js +0 -107
  111. package/dist/workspace-runtime/codex/delivery-tools.js +0 -144
  112. package/dist/workspace-runtime/codex/jsonrpc-stdio.js +0 -145
  113. package/dist/workspace-runtime/codex/launcher-client.js +0 -177
  114. package/dist/workspace-runtime/codex/loopback.js +0 -146
  115. package/dist/workspace-runtime/codex/mcp-config.js +0 -39
  116. package/dist/workspace-runtime/codex/model-broker.js +0 -263
  117. package/dist/workspace-runtime/codex/native-adapter.js +0 -9
  118. package/dist/workspace-runtime/codex/permissions.js +0 -79
  119. package/dist/workspace-runtime/codex/thread-image.js +0 -38
  120. package/dist/workspace-runtime/codex/tool-response.js +0 -10
  121. package/dist/workspace-runtime/codex/ui-instructions.js +0 -4
  122. package/dist/workspace-runtime/codex/ui-tools.js +0 -203
  123. package/dist/workspace-runtime/codex/work-mode.js +0 -15
  124. package/dist/workspace-runtime/main.js +0 -10
  125. package/dist/workspace-runtime/persistence/journal.js +0 -365
  126. package/dist/workspace-runtime/persistence/native-subagents.js +0 -162
  127. package/dist/workspace-runtime/persistence/sqlite-client.js +0 -77
  128. package/dist/workspace-runtime/persistence/sqlite-worker.js +0 -1161
  129. package/dist/workspace-runtime/persistence/stopped-execution.js +0 -77
  130. package/dist/workspace-runtime/previews/diagnostics.js +0 -44
  131. package/dist/workspace-runtime/previews/output.js +0 -36
  132. package/dist/workspace-runtime/previews/publish.js +0 -274
  133. package/dist/workspace-runtime/previews/single-file.js +0 -43
  134. package/dist/workspace-runtime/processes/managed-writes.js +0 -69
  135. package/dist/workspace-runtime/serve.js +0 -343
  136. package/dist/workspace-runtime/server/accept-operation.js +0 -61
  137. package/dist/workspace-runtime/server/auth.js +0 -21
  138. package/dist/workspace-runtime/server/connectivity.js +0 -209
  139. package/dist/workspace-runtime/server/desktop-host.js +0 -429
  140. package/dist/workspace-runtime/server/desktop-preview-config.js +0 -81
  141. package/dist/workspace-runtime/server/desktop-preview-service.js +0 -157
  142. package/dist/workspace-runtime/server/desktop-preview-static.js +0 -53
  143. package/dist/workspace-runtime/server/desktop-preview.js +0 -189
  144. package/dist/workspace-runtime/server/dispatch.js +0 -1393
  145. package/dist/workspace-runtime/server/endpoints.js +0 -21
  146. package/dist/workspace-runtime/server/execution-group.js +0 -90
  147. package/dist/workspace-runtime/server/http.js +0 -1316
  148. package/dist/workspace-runtime/server/lock.js +0 -53
  149. package/dist/workspace-runtime/server/operation-record.js +0 -33
  150. package/dist/workspace-runtime/server/rfb-watch-gate.js +0 -168
  151. package/dist/workspace-runtime/server/session-restore.js +0 -84
  152. package/dist/workspace-runtime/server/source-uploader.js +0 -138
  153. package/dist/workspace-runtime/server/submit-operation.js +0 -41
  154. package/dist/workspace-runtime/server/terminal-host.js +0 -366
  155. package/dist/workspace-runtime/server/types.js +0 -1
  156. package/dist/workspace-runtime/server/workspace-transfer.js +0 -168
  157. package/dist/workspace-runtime/verify-artifact.js +0 -59
  158. package/dist/workspace-runtime/workspaces/append-only-log.js +0 -62
  159. package/dist/workspace-runtime/workspaces/archive.js +0 -207
  160. package/dist/workspace-runtime/workspaces/artifact-events.js +0 -55
  161. package/dist/workspace-runtime/workspaces/artifact-files.js +0 -199
  162. package/dist/workspace-runtime/workspaces/artifact-receipts.js +0 -89
  163. package/dist/workspace-runtime/workspaces/artifacts.js +0 -282
  164. package/dist/workspace-runtime/workspaces/asset-library-import.js +0 -366
  165. package/dist/workspace-runtime/workspaces/attachment-content.js +0 -73
  166. package/dist/workspace-runtime/workspaces/attachments.js +0 -185
  167. package/dist/workspace-runtime/workspaces/batch-commit.js +0 -142
  168. package/dist/workspace-runtime/workspaces/binary-content.js +0 -65
  169. package/dist/workspace-runtime/workspaces/binary-write.js +0 -112
  170. package/dist/workspace-runtime/workspaces/cli-context.js +0 -23
  171. package/dist/workspace-runtime/workspaces/cli-credentials.js +0 -115
  172. package/dist/workspace-runtime/workspaces/composer-context.js +0 -147
  173. package/dist/workspace-runtime/workspaces/context-error.js +0 -2
  174. package/dist/workspace-runtime/workspaces/delivery-build.js +0 -331
  175. package/dist/workspace-runtime/workspaces/delivery-store.js +0 -168
  176. package/dist/workspace-runtime/workspaces/delivery.js +0 -64
  177. package/dist/workspace-runtime/workspaces/dependencies.js +0 -279
  178. package/dist/workspace-runtime/workspaces/developer-command.js +0 -98
  179. package/dist/workspace-runtime/workspaces/directories.js +0 -132
  180. package/dist/workspace-runtime/workspaces/directory-access.js +0 -37
  181. package/dist/workspace-runtime/workspaces/directory-attachments.js +0 -245
  182. package/dist/workspace-runtime/workspaces/directory-create.js +0 -57
  183. package/dist/workspace-runtime/workspaces/directory-maintenance.js +0 -111
  184. package/dist/workspace-runtime/workspaces/directory-stats.js +0 -49
  185. package/dist/workspace-runtime/workspaces/disk-snapshot.js +0 -31
  186. package/dist/workspace-runtime/workspaces/empty-template.js +0 -42
  187. package/dist/workspace-runtime/workspaces/file-content.js +0 -48
  188. package/dist/workspace-runtime/workspaces/files-search.js +0 -116
  189. package/dist/workspace-runtime/workspaces/files.js +0 -150
  190. package/dist/workspace-runtime/workspaces/git-credential-broker.js +0 -312
  191. package/dist/workspace-runtime/workspaces/git-credential-helper.js +0 -68
  192. package/dist/workspace-runtime/workspaces/git-direct-store.js +0 -155
  193. package/dist/workspace-runtime/workspaces/git.js +0 -670
  194. package/dist/workspace-runtime/workspaces/instructions.js +0 -56
  195. package/dist/workspace-runtime/workspaces/json5-edit.js +0 -170
  196. package/dist/workspace-runtime/workspaces/library-attachments.js +0 -268
  197. package/dist/workspace-runtime/workspaces/operation-log.js +0 -23
  198. package/dist/workspace-runtime/workspaces/optional-platform-skills.js +0 -14
  199. package/dist/workspace-runtime/workspaces/parameters.js +0 -272
  200. package/dist/workspace-runtime/workspaces/prepare.js +0 -278
  201. package/dist/workspace-runtime/workspaces/registry.js +0 -251
  202. package/dist/workspace-runtime/workspaces/remix-references.js +0 -301
  203. package/dist/workspace-runtime/workspaces/revisions.js +0 -31
  204. package/dist/workspace-runtime/workspaces/session-image.js +0 -104
  205. package/dist/workspace-runtime/workspaces/shared-git.js +0 -40
  206. package/dist/workspace-runtime/workspaces/skill-artifact-loader.js +0 -95
  207. package/dist/workspace-runtime/workspaces/skills.js +0 -191
  208. package/dist/workspace-runtime/workspaces/transfer-quota.js +0 -69
  209. package/dist/workspace-runtime/workspaces/transfer.js +0 -471
  210. package/dist/workspace-runtime/workspaces/turn-changes.js +0 -75
  211. package/dist/workspace-runtime/workspaces/video-attachments.js +0 -49
  212. package/project-template/.claude/skills/playcraft-replica-validation/SKILL.md +0 -25
  213. package/project-template/.claude/skills/playcraft-replica-validation/references/contracts.md +0 -79
  214. package/project-template/.claude/skills/playcraft-video-understanding/SKILL.md +0 -29
  215. package/project-template/.claude/skills/playcraft-video-understanding/references/contracts.md +0 -37
  216. package/project-template-v2/.claude/agents/artist.md +0 -82
  217. package/project-template-v2/.claude/agents/developer.md +0 -153
  218. package/project-template-v2/.claude/agents/game-designer.md +0 -264
  219. package/project-template-v2/.claude/agents/refs/artist-art-style-catalog.md +0 -533
  220. package/project-template-v2/.claude/agents/refs/artist-color-audio-recipes.md +0 -153
  221. package/project-template-v2/.claude/agents/refs/artist-dimension-axis.md +0 -27
  222. package/project-template-v2/.claude/agents/refs/artist-master-composite-recipes.md +0 -208
  223. package/project-template-v2/.claude/agents/refs/atom-skill-library.md +0 -81
  224. package/project-template-v2/.claude/agents/refs/developer-impl-cookbook.md +0 -432
  225. package/project-template-v2/.claude/agents/refs/framework-5-component-filter.md +0 -252
  226. package/project-template-v2/.claude/agents/refs/framework-game-feel-juice.md +0 -266
  227. package/project-template-v2/.claude/agents/refs/framework-mda.md +0 -147
  228. package/project-template-v2/.claude/agents/refs/game-designer-gameplay-sufficiency.md +0 -123
  229. package/project-template-v2/.claude/agents/refs/ta-3d-flip-recipe.md +0 -88
  230. package/project-template-v2/.claude/agents/refs/ta-atlas-deliverable-standard.md +0 -67
  231. package/project-template-v2/.claude/agents/refs/ta-batch-pipeline-recipes.md +0 -120
  232. package/project-template-v2/.claude/agents/refs/ta-image-generation-detail.md +0 -300
  233. package/project-template-v2/.claude/agents/refs/ta-image-ops-reference.md +0 -495
  234. package/project-template-v2/.claude/agents/refs/ta-pipeline-cookbook.md +0 -1141
  235. package/project-template-v2/.claude/agents/refs/ta-tools-reference.md +0 -111
  236. package/project-template-v2/.claude/agents/refs/ta-vfx-preset-catalog.md +0 -365
  237. package/project-template-v2/.claude/agents/refs/threejs-cannon-pitfalls.md +0 -412
  238. package/project-template-v2/.claude/agents/reviewer.md +0 -75
  239. package/project-template-v2/.claude/agents/technical-artist.md +0 -86
  240. package/project-template-v2/.claude/hooks/snapshot-milestone.mjs +0 -243
  241. package/project-template-v2/.claude/hooks/user-prompt.mjs +0 -133
  242. package/project-template-v2/.claude/settings.json +0 -33
  243. package/project-template-v2/.claude/skills/brainstorming/SKILL.md +0 -161
  244. package/project-template-v2/.claude/skills/brainstorming/scripts/frame-template.html +0 -270
  245. package/project-template-v2/.claude/skills/brainstorming/scripts/helper.js +0 -177
  246. package/project-template-v2/.claude/skills/brainstorming/scripts/server.cjs +0 -354
  247. package/project-template-v2/.claude/skills/brainstorming/scripts/start-server.sh +0 -148
  248. package/project-template-v2/.claude/skills/brainstorming/scripts/stop-server.sh +0 -56
  249. package/project-template-v2/.claude/skills/brainstorming/scripts/wait-for-selection.sh +0 -62
  250. package/project-template-v2/.claude/skills/brainstorming/spec-document-reviewer-prompt.md +0 -49
  251. package/project-template-v2/.claude/skills/brainstorming/visual-companion.md +0 -309
  252. package/project-template-v2/.claude/skills/playcraft-ad-psychology/SKILL.md +0 -182
  253. package/project-template-v2/.claude/skills/playcraft-art-style-guide/SKILL.md +0 -123
  254. package/project-template-v2/.claude/skills/playcraft-asset-state-sheet/SKILL.md +0 -205
  255. package/project-template-v2/.claude/skills/playcraft-audio-generation/SKILL.md +0 -280
  256. package/project-template-v2/.claude/skills/playcraft-batch-pipeline/SKILL.md +0 -184
  257. package/project-template-v2/.claude/skills/playcraft-build-optimizer/SKILL.md +0 -306
  258. package/project-template-v2/.claude/skills/playcraft-image-generation/SKILL.md +0 -298
  259. package/project-template-v2/.claude/skills/playcraft-image-generation/reference/build-sprite-sheet.template.mjs +0 -123
  260. package/project-template-v2/.claude/skills/playcraft-image-generation/reference/compare-style.template.mjs +0 -254
  261. package/project-template-v2/.claude/skills/playcraft-image-generation/reference/gen-batch-sprite.template.mjs +0 -324
  262. package/project-template-v2/.claude/skills/playcraft-image-generation/reference/gen-batch.template.mjs +0 -97
  263. package/project-template-v2/.claude/skills/playcraft-image-generation/reference/gen-edit-variants.template.mjs +0 -118
  264. package/project-template-v2/.claude/skills/playcraft-image-generation/reference/process-batch.template.mjs +0 -137
  265. package/project-template-v2/.claude/skills/playcraft-image-generation/reference/prompt-cookbook.md +0 -397
  266. package/project-template-v2/.claude/skills/playcraft-image-generation/reference/validate-sprite-sheet.template.mjs +0 -296
  267. package/project-template-v2/.claude/skills/playcraft-image-ops/SKILL.md +0 -122
  268. package/project-template-v2/.claude/skills/playcraft-image-processing/SKILL.md +0 -219
  269. package/project-template-v2/.claude/skills/playcraft-masking/SKILL.md +0 -373
  270. package/project-template-v2/.claude/skills/playcraft-playable-optimization/SKILL.md +0 -161
  271. package/project-template-v2/.claude/skills/playcraft-research/SKILL.md +0 -215
  272. package/project-template-v2/.claude/skills/playcraft-skill-recommender/SKILL.md +0 -382
  273. package/project-template-v2/.claude/skills/playcraft-sprite-generation/SKILL.md +0 -423
  274. package/project-template-v2/.claude/skills/playcraft-sprite-remix/SKILL.md +0 -158
  275. package/project-template-v2/.claude/skills/playcraft-sprite-sheet/SKILL.md +0 -100
  276. package/project-template-v2/.claude/skills/playcraft-storyboard/SKILL.md +0 -167
  277. package/project-template-v2/.claude/skills/playcraft-style-qa/SKILL.md +0 -270
  278. package/project-template-v2/.claude/skills/playcraft-text-rendering/SKILL.md +0 -236
  279. package/project-template-v2/.claude/skills/playcraft-vfx-animation/SKILL.md +0 -130
  280. package/project-template-v2/.claude/skills/playwright-cli/SKILL.md +0 -390
  281. package/project-template-v2/.claude/skills/playwright-cli/references/element-attributes.md +0 -23
  282. package/project-template-v2/.claude/skills/playwright-cli/references/playwright-tests.md +0 -39
  283. package/project-template-v2/.claude/skills/playwright-cli/references/request-mocking.md +0 -87
  284. package/project-template-v2/.claude/skills/playwright-cli/references/running-code.md +0 -240
  285. package/project-template-v2/.claude/skills/playwright-cli/references/session-management.md +0 -226
  286. package/project-template-v2/.claude/skills/playwright-cli/references/spec-driven-testing.md +0 -308
  287. package/project-template-v2/.claude/skills/playwright-cli/references/storage-state.md +0 -275
  288. package/project-template-v2/.claude/skills/playwright-cli/references/test-generation.md +0 -134
  289. package/project-template-v2/.claude/skills/playwright-cli/references/tracing.md +0 -142
  290. package/project-template-v2/.claude/skills/playwright-cli/references/video-recording.md +0 -153
  291. package/project-template-v2/.claude/skills/session-analyzer/SKILL.md +0 -386
  292. package/project-template-v2/.claude/skills/session-analyzer/scripts/execution-breakdown.mjs +0 -182
  293. package/project-template-v2/.claude/skills/session-analyzer/scripts/find-turns.mjs +0 -72
  294. package/project-template-v2/.claude/skills/session-analyzer/scripts/heavy-output.mjs +0 -121
  295. package/project-template-v2/.claude/skills/session-analyzer/scripts/resolve-session.mjs +0 -102
  296. package/project-template-v2/.claude/skills/session-analyzer/scripts/subagent-stats.mjs +0 -127
  297. package/project-template-v2/.claude/skills/session-analyzer/scripts/subagent-tool-timeline.mjs +0 -106
  298. package/project-template-v2/.claude/skills/session-analyzer/scripts/time-gaps.mjs +0 -128
  299. package/project-template-v2/.claude/skills/session-analyzer/scripts/turn-timeline.mjs +0 -67
  300. package/project-template-v2/.claude/snapshot.mjs +0 -263
  301. package/project-template-v2/.playcraft/skills.lock.json +0 -152
  302. package/project-template-v2/CLAUDE.md +0 -146
  303. package/project-template-v2/assets/audio/bgm/.gitkeep +0 -0
  304. package/project-template-v2/assets/audio/sfx/.gitkeep +0 -0
  305. package/project-template-v2/assets/bundles/.gitkeep +0 -0
  306. package/project-template-v2/assets/images/bg/.gitkeep +0 -0
  307. package/project-template-v2/assets/images/reference/.gitkeep +0 -0
  308. package/project-template-v2/assets/images/storyboard/.gitkeep +0 -0
  309. package/project-template-v2/assets/images/tiles/.gitkeep +0 -0
  310. package/project-template-v2/assets/images/ui/.gitkeep +0 -0
  311. package/project-template-v2/assets/images/vfx/.gitkeep +0 -0
  312. package/project-template-v2/assets/models/.gitkeep +0 -0
  313. package/project-template-v2/docs/harness/iteration-1/context-flow.md +0 -254
  314. package/project-template-v2/docs/harness/iteration-1/generate-flow.md +0 -91
  315. package/project-template-v2/docs/harness/iteration-1/ideate-flow.md +0 -214
  316. package/project-template-v2/docs/harness/iteration-1/optimize-flow.md +0 -75
  317. package/project-template-v2/docs/harness/iteration-1/wrapup-flow.md +0 -63
  318. package/project-template-v2/docs/harness/iteration-2/context-flow.md +0 -223
  319. package/project-template-v2/docs/harness/iteration-2/generate-flow.md +0 -129
  320. package/project-template-v2/docs/harness/iteration-2/ideate-flow.md +0 -267
  321. package/project-template-v2/docs/harness/iteration-2/optimize-flow.md +0 -164
  322. package/project-template-v2/docs/harness/iteration-2/wrapup-flow.md +0 -115
  323. package/project-template-v2/docs/harness/orchestrator-flow.md +0 -364
  324. package/project-template-v2/docs/project-state.json +0 -60
  325. package/project-template-v2/docs/project-state.md +0 -72
  326. package/project-template-v2/docs/standards/README.md +0 -225
  327. package/project-template-v2/docs/standards/agent-behavior-standards.md +0 -174
  328. package/project-template-v2/docs/standards/artifacts/design-brief.md +0 -19
  329. package/project-template-v2/docs/standards/artifacts/design.md +0 -22
  330. package/project-template-v2/docs/standards/artifacts/game-code.md +0 -41
  331. package/project-template-v2/docs/standards/artifacts/todo-list.md +0 -41
  332. package/project-template-v2/docs/standards/iter1-agent-behavior-standards.md +0 -343
  333. package/project-template-v2/game/index.ts +0 -18
  334. package/project-template-v2/globals.d.ts +0 -51
  335. package/project-template-v2/index.css +0 -34
  336. package/project-template-v2/index.html +0 -18
  337. package/project-template-v2/main.ts +0 -9
  338. package/project-template-v2/package.json +0 -46
  339. package/project-template-v2/skills/_shared/scripts/dispatch-clear.mjs +0 -31
  340. package/project-template-v2/skills/_shared/scripts/dispatch-set.mjs +0 -86
  341. package/project-template-v2/skills/_shared/scripts/dod-check.mjs +0 -153
  342. package/project-template-v2/skills/_shared/scripts/handoff-append.mjs +0 -70
  343. package/project-template-v2/skills/_shared/scripts/lib/validator-artifacts.mjs +0 -91
  344. package/project-template-v2/skills/_shared/scripts/pipeline/dod-config.mjs +0 -131
  345. package/project-template-v2/skills/_shared/scripts/pipeline/index.mjs +0 -80
  346. package/project-template-v2/skills/_shared/scripts/pipeline/iteration-1-core.mjs +0 -90
  347. package/project-template-v2/skills/_shared/scripts/pipeline/iteration-2-wrap.mjs +0 -93
  348. package/project-template-v2/skills/_shared/scripts/pipeline/iteration-3-visual.mjs +0 -23
  349. package/project-template-v2/skills/_shared/scripts/render-project-state.mjs +0 -230
  350. package/project-template-v2/skills/_shared/scripts/state-advance-stage.mjs +0 -58
  351. package/project-template-v2/skills/_shared/scripts/state-get.mjs +0 -339
  352. package/project-template-v2/skills/_shared/scripts/state-handoff.mjs +0 -39
  353. package/project-template-v2/skills/_shared/scripts/state-set.mjs +0 -94
  354. package/project-template-v2/skills/_shared/scripts/state-store.mjs +0 -783
  355. package/project-template-v2/skills/_shared/scripts/todo-add.mjs +0 -88
  356. package/project-template-v2/skills/_shared/scripts/todo-get.mjs +0 -130
  357. package/project-template-v2/skills/_shared/scripts/todo-remove.mjs +0 -33
  358. package/project-template-v2/skills/_shared/scripts/todo-set.mjs +0 -47
  359. package/project-template-v2/skills/_shared/scripts/verify-asset-code-sync.mjs +0 -268
  360. package/project-template-v2/skills/_shared/scripts/verify-env.mjs +0 -285
  361. package/project-template-v2/skills/_shared/scripts/verify-placeholders.mjs +0 -161
  362. package/project-template-v2/skills/playable-autoplay/SKILL.md +0 -176
  363. package/project-template-v2/skills/playable-autoplay/agents/openai.yaml +0 -4
  364. package/project-template-v2/skills/playable-debug/SKILL.md +0 -116
  365. package/project-template-v2/skills/playable-debug/agents/openai.yaml +0 -4
  366. package/project-template-v2/skills/playable-debug/references/debug-config.md +0 -40
  367. package/project-template-v2/skills/playable-record/SKILL.md +0 -140
  368. package/project-template-v2/skills/playable-record/scripts/lib/dev-server.mjs +0 -104
  369. package/project-template-v2/skills/playable-record/scripts/lib/record-audio-bridge.js +0 -141
  370. package/project-template-v2/skills/playable-record/scripts/record-playable.mjs +0 -425
  371. package/project-template-v2/skills/playable-record/scripts/verify-contract.mjs +0 -261
  372. package/project-template-v2/skills/playable-record/scripts/verify-firstwin.mjs +0 -398
  373. package/project-template-v2/skills/playable-record/scripts/verify-fusion.mjs +0 -322
  374. package/project-template-v2/skills/playable-record/scripts/verify-lifecycle.mjs +0 -105
  375. package/project-template-v2/skills/playable-record/scripts/verify-vlm-video.mjs +0 -230
  376. package/project-template-v2/skills/playable-validate/SKILL.md +0 -61
  377. package/project-template-v2/skills/playable-validate/validation-rules.md +0 -14
  378. package/project-template-v2/skills/playable-verify-ui/SKILL.md +0 -63
  379. package/project-template-v2/skills/playable-verify-ui/scripts/lib/__init__.py +0 -1
  380. package/project-template-v2/skills/playable-verify-ui/scripts/lib/config_expr.js +0 -218
  381. package/project-template-v2/skills/playable-verify-ui/scripts/lib/node_utils.js +0 -51
  382. package/project-template-v2/skills/playable-verify-ui/scripts/lib/profile_loader.py +0 -59
  383. package/project-template-v2/skills/playable-verify-ui/scripts/lib/report.py +0 -106
  384. package/project-template-v2/skills/playable-verify-ui/scripts/lib/runtime_contract.js +0 -116
  385. package/project-template-v2/skills/playable-verify-ui/scripts/verify_fetch_antipatterns.py +0 -59
  386. package/project-template-v2/skills/playable-verify-ui/scripts/verify_hardcoded_layout.js +0 -64
  387. package/project-template-v2/skills/playable-verify-ui/scripts/verify_runtime_contract.js +0 -58
  388. package/project-template-v2/skills/playable-verify-ui/scripts/verify_text_overlap.py +0 -333
  389. package/project-template-v2/ta-workspace/scripts/.gitkeep +0 -0
  390. package/project-template-v2/tsconfig.json +0 -20
  391. package/project-template-v2/vite.config.ts +0 -27
  392. package/project-templates/batch-locks/phaser.yaml +0 -922
  393. package/project-templates/batch-locks/threejs.yaml +0 -978
  394. package/project-templates/empty/AGENTS.md +0 -41
  395. 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