@playcraft/cli 0.1.40-beta → 0.1.41-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 (368) hide show
  1. package/README.md +3 -58
  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 -185
  22. package/dist/utils/image-asset-context.js +228 -0
  23. package/dist/utils/playcraft-http-client.js +4 -6
  24. package/package.json +3 -13
  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 -87
  50. package/dist/commands/video.js +0 -111
  51. package/dist/commands/workspace-runtime.js +0 -54
  52. package/dist/commands/workspace.js +0 -35
  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/tool-operation-journal.js +0 -124
  75. package/dist/utils/video-evidence-git.js +0 -81
  76. package/dist/video-replication/client.js +0 -222
  77. package/dist/video-replication/comparison-evidence.js +0 -149
  78. package/dist/video-replication/comparison-files.js +0 -57
  79. package/dist/video-replication/comparison-log.js +0 -72
  80. package/dist/video-replication/comparison-messages.js +0 -104
  81. package/dist/video-replication/comparison-output.js +0 -63
  82. package/dist/video-replication/comparison-preflight.js +0 -66
  83. package/dist/video-replication/comparison.js +0 -216
  84. package/dist/video-replication/evidence.js +0 -165
  85. package/dist/video-replication/media.js +0 -111
  86. package/dist/video-replication/messages.js +0 -89
  87. package/dist/workspace/messages.js +0 -35
  88. package/dist/workspace/transfer-client.js +0 -174
  89. package/dist/workspace-runtime/codex/app-server.js +0 -1040
  90. package/dist/workspace-runtime/codex/compact.js +0 -46
  91. package/dist/workspace-runtime/codex/config-toml.js +0 -107
  92. package/dist/workspace-runtime/codex/jsonrpc-stdio.js +0 -145
  93. package/dist/workspace-runtime/codex/launcher-client.js +0 -177
  94. package/dist/workspace-runtime/codex/loopback.js +0 -146
  95. package/dist/workspace-runtime/codex/mcp-config.js +0 -39
  96. package/dist/workspace-runtime/codex/model-broker.js +0 -263
  97. package/dist/workspace-runtime/codex/native-adapter.js +0 -9
  98. package/dist/workspace-runtime/codex/permissions.js +0 -70
  99. package/dist/workspace-runtime/codex/thread-image.js +0 -38
  100. package/dist/workspace-runtime/codex/ui-instructions.js +0 -4
  101. package/dist/workspace-runtime/codex/ui-tools.js +0 -183
  102. package/dist/workspace-runtime/codex/work-mode.js +0 -15
  103. package/dist/workspace-runtime/main.js +0 -10
  104. package/dist/workspace-runtime/persistence/journal.js +0 -365
  105. package/dist/workspace-runtime/persistence/native-subagents.js +0 -162
  106. package/dist/workspace-runtime/persistence/sqlite-client.js +0 -77
  107. package/dist/workspace-runtime/persistence/sqlite-worker.js +0 -1161
  108. package/dist/workspace-runtime/persistence/stopped-execution.js +0 -77
  109. package/dist/workspace-runtime/previews/output.js +0 -36
  110. package/dist/workspace-runtime/previews/publish.js +0 -262
  111. package/dist/workspace-runtime/previews/single-file.js +0 -43
  112. package/dist/workspace-runtime/processes/managed-writes.js +0 -69
  113. package/dist/workspace-runtime/production/content-changes.js +0 -36
  114. package/dist/workspace-runtime/production/contracts.js +0 -19
  115. package/dist/workspace-runtime/production/controller.js +0 -218
  116. package/dist/workspace-runtime/production/dependencies.js +0 -60
  117. package/dist/workspace-runtime/production/native.js +0 -212
  118. package/dist/workspace-runtime/production/processes.js +0 -102
  119. package/dist/workspace-runtime/production/save-command.js +0 -35
  120. package/dist/workspace-runtime/production/source-archive.js +0 -137
  121. package/dist/workspace-runtime/production/source-copy.js +0 -91
  122. package/dist/workspace-runtime/production/stages.js +0 -334
  123. package/dist/workspace-runtime/production/storage.js +0 -75
  124. package/dist/workspace-runtime/serve.js +0 -214
  125. package/dist/workspace-runtime/server/auth.js +0 -21
  126. package/dist/workspace-runtime/server/connectivity.js +0 -201
  127. package/dist/workspace-runtime/server/desktop-host.js +0 -429
  128. package/dist/workspace-runtime/server/desktop-preview-config.js +0 -81
  129. package/dist/workspace-runtime/server/desktop-preview-service.js +0 -157
  130. package/dist/workspace-runtime/server/desktop-preview-static.js +0 -53
  131. package/dist/workspace-runtime/server/desktop-preview.js +0 -189
  132. package/dist/workspace-runtime/server/dispatch.js +0 -1217
  133. package/dist/workspace-runtime/server/endpoints.js +0 -21
  134. package/dist/workspace-runtime/server/execution-group.js +0 -90
  135. package/dist/workspace-runtime/server/http.js +0 -1243
  136. package/dist/workspace-runtime/server/lock.js +0 -53
  137. package/dist/workspace-runtime/server/rfb-watch-gate.js +0 -168
  138. package/dist/workspace-runtime/server/source-uploader.js +0 -138
  139. package/dist/workspace-runtime/server/terminal-host.js +0 -366
  140. package/dist/workspace-runtime/server/types.js +0 -1
  141. package/dist/workspace-runtime/server/workspace-transfer.js +0 -99
  142. package/dist/workspace-runtime/workspaces/archive.js +0 -207
  143. package/dist/workspace-runtime/workspaces/artifact-events.js +0 -55
  144. package/dist/workspace-runtime/workspaces/artifact-files.js +0 -197
  145. package/dist/workspace-runtime/workspaces/artifact-receipts.js +0 -89
  146. package/dist/workspace-runtime/workspaces/artifacts.js +0 -282
  147. package/dist/workspace-runtime/workspaces/attachment-content.js +0 -123
  148. package/dist/workspace-runtime/workspaces/attachments.js +0 -185
  149. package/dist/workspace-runtime/workspaces/batch-commit.js +0 -142
  150. package/dist/workspace-runtime/workspaces/cli-context.js +0 -23
  151. package/dist/workspace-runtime/workspaces/cli-credentials.js +0 -111
  152. package/dist/workspace-runtime/workspaces/composer-context.js +0 -147
  153. package/dist/workspace-runtime/workspaces/context-error.js +0 -2
  154. package/dist/workspace-runtime/workspaces/dependencies.js +0 -264
  155. package/dist/workspace-runtime/workspaces/developer-command.js +0 -64
  156. package/dist/workspace-runtime/workspaces/directories.js +0 -133
  157. package/dist/workspace-runtime/workspaces/directory-access.js +0 -37
  158. package/dist/workspace-runtime/workspaces/directory-attachments.js +0 -245
  159. package/dist/workspace-runtime/workspaces/directory-maintenance.js +0 -111
  160. package/dist/workspace-runtime/workspaces/directory-stats.js +0 -49
  161. package/dist/workspace-runtime/workspaces/disk-snapshot.js +0 -31
  162. package/dist/workspace-runtime/workspaces/empty-template.js +0 -42
  163. package/dist/workspace-runtime/workspaces/files-search.js +0 -116
  164. package/dist/workspace-runtime/workspaces/files.js +0 -138
  165. package/dist/workspace-runtime/workspaces/git-credential-broker.js +0 -312
  166. package/dist/workspace-runtime/workspaces/git-credential-helper.js +0 -68
  167. package/dist/workspace-runtime/workspaces/git-direct-store.js +0 -155
  168. package/dist/workspace-runtime/workspaces/git.js +0 -670
  169. package/dist/workspace-runtime/workspaces/instructions.js +0 -56
  170. package/dist/workspace-runtime/workspaces/json5-edit.js +0 -170
  171. package/dist/workspace-runtime/workspaces/library-attachments.js +0 -268
  172. package/dist/workspace-runtime/workspaces/optional-platform-skills.js +0 -14
  173. package/dist/workspace-runtime/workspaces/parameters.js +0 -272
  174. package/dist/workspace-runtime/workspaces/prepare.js +0 -278
  175. package/dist/workspace-runtime/workspaces/registry.js +0 -251
  176. package/dist/workspace-runtime/workspaces/remix-references.js +0 -301
  177. package/dist/workspace-runtime/workspaces/revisions.js +0 -31
  178. package/dist/workspace-runtime/workspaces/session-image.js +0 -104
  179. package/dist/workspace-runtime/workspaces/shared-git.js +0 -40
  180. package/dist/workspace-runtime/workspaces/skill-artifact-loader.js +0 -95
  181. package/dist/workspace-runtime/workspaces/skills.js +0 -191
  182. package/dist/workspace-runtime/workspaces/transfer.js +0 -288
  183. package/dist/workspace-runtime/workspaces/turn-changes.js +0 -75
  184. package/dist/workspace-runtime/workspaces/video-attachments.js +0 -49
  185. package/project-template/.claude/skills/playcraft-replica-validation/SKILL.md +0 -25
  186. package/project-template/.claude/skills/playcraft-replica-validation/references/contracts.md +0 -79
  187. package/project-template/.claude/skills/playcraft-video-understanding/SKILL.md +0 -29
  188. package/project-template/.claude/skills/playcraft-video-understanding/references/contracts.md +0 -37
  189. package/project-template-v2/.claude/agents/artist.md +0 -82
  190. package/project-template-v2/.claude/agents/developer.md +0 -153
  191. package/project-template-v2/.claude/agents/game-designer.md +0 -264
  192. package/project-template-v2/.claude/agents/refs/artist-art-style-catalog.md +0 -533
  193. package/project-template-v2/.claude/agents/refs/artist-color-audio-recipes.md +0 -153
  194. package/project-template-v2/.claude/agents/refs/artist-dimension-axis.md +0 -27
  195. package/project-template-v2/.claude/agents/refs/artist-master-composite-recipes.md +0 -208
  196. package/project-template-v2/.claude/agents/refs/atom-skill-library.md +0 -81
  197. package/project-template-v2/.claude/agents/refs/developer-impl-cookbook.md +0 -432
  198. package/project-template-v2/.claude/agents/refs/framework-5-component-filter.md +0 -252
  199. package/project-template-v2/.claude/agents/refs/framework-game-feel-juice.md +0 -266
  200. package/project-template-v2/.claude/agents/refs/framework-mda.md +0 -147
  201. package/project-template-v2/.claude/agents/refs/game-designer-gameplay-sufficiency.md +0 -123
  202. package/project-template-v2/.claude/agents/refs/ta-3d-flip-recipe.md +0 -88
  203. package/project-template-v2/.claude/agents/refs/ta-atlas-deliverable-standard.md +0 -67
  204. package/project-template-v2/.claude/agents/refs/ta-batch-pipeline-recipes.md +0 -120
  205. package/project-template-v2/.claude/agents/refs/ta-image-generation-detail.md +0 -300
  206. package/project-template-v2/.claude/agents/refs/ta-image-ops-reference.md +0 -495
  207. package/project-template-v2/.claude/agents/refs/ta-pipeline-cookbook.md +0 -1141
  208. package/project-template-v2/.claude/agents/refs/ta-tools-reference.md +0 -111
  209. package/project-template-v2/.claude/agents/refs/ta-vfx-preset-catalog.md +0 -365
  210. package/project-template-v2/.claude/agents/refs/threejs-cannon-pitfalls.md +0 -412
  211. package/project-template-v2/.claude/agents/reviewer.md +0 -75
  212. package/project-template-v2/.claude/agents/technical-artist.md +0 -86
  213. package/project-template-v2/.claude/hooks/snapshot-milestone.mjs +0 -243
  214. package/project-template-v2/.claude/hooks/user-prompt.mjs +0 -133
  215. package/project-template-v2/.claude/settings.json +0 -33
  216. package/project-template-v2/.claude/skills/brainstorming/SKILL.md +0 -161
  217. package/project-template-v2/.claude/skills/brainstorming/scripts/frame-template.html +0 -270
  218. package/project-template-v2/.claude/skills/brainstorming/scripts/helper.js +0 -177
  219. package/project-template-v2/.claude/skills/brainstorming/scripts/server.cjs +0 -354
  220. package/project-template-v2/.claude/skills/brainstorming/scripts/start-server.sh +0 -148
  221. package/project-template-v2/.claude/skills/brainstorming/scripts/stop-server.sh +0 -56
  222. package/project-template-v2/.claude/skills/brainstorming/scripts/wait-for-selection.sh +0 -62
  223. package/project-template-v2/.claude/skills/brainstorming/spec-document-reviewer-prompt.md +0 -49
  224. package/project-template-v2/.claude/skills/brainstorming/visual-companion.md +0 -309
  225. package/project-template-v2/.claude/skills/playcraft-ad-psychology/SKILL.md +0 -182
  226. package/project-template-v2/.claude/skills/playcraft-art-style-guide/SKILL.md +0 -123
  227. package/project-template-v2/.claude/skills/playcraft-asset-state-sheet/SKILL.md +0 -205
  228. package/project-template-v2/.claude/skills/playcraft-audio-generation/SKILL.md +0 -280
  229. package/project-template-v2/.claude/skills/playcraft-batch-pipeline/SKILL.md +0 -184
  230. package/project-template-v2/.claude/skills/playcraft-build-optimizer/SKILL.md +0 -306
  231. package/project-template-v2/.claude/skills/playcraft-image-generation/SKILL.md +0 -298
  232. package/project-template-v2/.claude/skills/playcraft-image-generation/reference/build-sprite-sheet.template.mjs +0 -123
  233. package/project-template-v2/.claude/skills/playcraft-image-generation/reference/compare-style.template.mjs +0 -254
  234. package/project-template-v2/.claude/skills/playcraft-image-generation/reference/gen-batch-sprite.template.mjs +0 -324
  235. package/project-template-v2/.claude/skills/playcraft-image-generation/reference/gen-batch.template.mjs +0 -97
  236. package/project-template-v2/.claude/skills/playcraft-image-generation/reference/gen-edit-variants.template.mjs +0 -118
  237. package/project-template-v2/.claude/skills/playcraft-image-generation/reference/process-batch.template.mjs +0 -137
  238. package/project-template-v2/.claude/skills/playcraft-image-generation/reference/prompt-cookbook.md +0 -397
  239. package/project-template-v2/.claude/skills/playcraft-image-generation/reference/validate-sprite-sheet.template.mjs +0 -296
  240. package/project-template-v2/.claude/skills/playcraft-image-ops/SKILL.md +0 -122
  241. package/project-template-v2/.claude/skills/playcraft-image-processing/SKILL.md +0 -219
  242. package/project-template-v2/.claude/skills/playcraft-masking/SKILL.md +0 -373
  243. package/project-template-v2/.claude/skills/playcraft-playable-optimization/SKILL.md +0 -161
  244. package/project-template-v2/.claude/skills/playcraft-research/SKILL.md +0 -215
  245. package/project-template-v2/.claude/skills/playcraft-skill-recommender/SKILL.md +0 -382
  246. package/project-template-v2/.claude/skills/playcraft-sprite-generation/SKILL.md +0 -423
  247. package/project-template-v2/.claude/skills/playcraft-sprite-remix/SKILL.md +0 -158
  248. package/project-template-v2/.claude/skills/playcraft-sprite-sheet/SKILL.md +0 -100
  249. package/project-template-v2/.claude/skills/playcraft-storyboard/SKILL.md +0 -167
  250. package/project-template-v2/.claude/skills/playcraft-style-qa/SKILL.md +0 -270
  251. package/project-template-v2/.claude/skills/playcraft-text-rendering/SKILL.md +0 -236
  252. package/project-template-v2/.claude/skills/playcraft-vfx-animation/SKILL.md +0 -130
  253. package/project-template-v2/.claude/skills/playwright-cli/SKILL.md +0 -390
  254. package/project-template-v2/.claude/skills/playwright-cli/references/element-attributes.md +0 -23
  255. package/project-template-v2/.claude/skills/playwright-cli/references/playwright-tests.md +0 -39
  256. package/project-template-v2/.claude/skills/playwright-cli/references/request-mocking.md +0 -87
  257. package/project-template-v2/.claude/skills/playwright-cli/references/running-code.md +0 -240
  258. package/project-template-v2/.claude/skills/playwright-cli/references/session-management.md +0 -226
  259. package/project-template-v2/.claude/skills/playwright-cli/references/spec-driven-testing.md +0 -308
  260. package/project-template-v2/.claude/skills/playwright-cli/references/storage-state.md +0 -275
  261. package/project-template-v2/.claude/skills/playwright-cli/references/test-generation.md +0 -134
  262. package/project-template-v2/.claude/skills/playwright-cli/references/tracing.md +0 -142
  263. package/project-template-v2/.claude/skills/playwright-cli/references/video-recording.md +0 -153
  264. package/project-template-v2/.claude/skills/session-analyzer/SKILL.md +0 -386
  265. package/project-template-v2/.claude/skills/session-analyzer/scripts/execution-breakdown.mjs +0 -182
  266. package/project-template-v2/.claude/skills/session-analyzer/scripts/find-turns.mjs +0 -72
  267. package/project-template-v2/.claude/skills/session-analyzer/scripts/heavy-output.mjs +0 -121
  268. package/project-template-v2/.claude/skills/session-analyzer/scripts/resolve-session.mjs +0 -102
  269. package/project-template-v2/.claude/skills/session-analyzer/scripts/subagent-stats.mjs +0 -127
  270. package/project-template-v2/.claude/skills/session-analyzer/scripts/subagent-tool-timeline.mjs +0 -106
  271. package/project-template-v2/.claude/skills/session-analyzer/scripts/time-gaps.mjs +0 -128
  272. package/project-template-v2/.claude/skills/session-analyzer/scripts/turn-timeline.mjs +0 -67
  273. package/project-template-v2/.claude/snapshot.mjs +0 -263
  274. package/project-template-v2/.playcraft/skills.lock.json +0 -152
  275. package/project-template-v2/CLAUDE.md +0 -146
  276. package/project-template-v2/assets/audio/bgm/.gitkeep +0 -0
  277. package/project-template-v2/assets/audio/sfx/.gitkeep +0 -0
  278. package/project-template-v2/assets/bundles/.gitkeep +0 -0
  279. package/project-template-v2/assets/images/bg/.gitkeep +0 -0
  280. package/project-template-v2/assets/images/reference/.gitkeep +0 -0
  281. package/project-template-v2/assets/images/storyboard/.gitkeep +0 -0
  282. package/project-template-v2/assets/images/tiles/.gitkeep +0 -0
  283. package/project-template-v2/assets/images/ui/.gitkeep +0 -0
  284. package/project-template-v2/assets/images/vfx/.gitkeep +0 -0
  285. package/project-template-v2/assets/models/.gitkeep +0 -0
  286. package/project-template-v2/docs/harness/iteration-1/context-flow.md +0 -254
  287. package/project-template-v2/docs/harness/iteration-1/generate-flow.md +0 -91
  288. package/project-template-v2/docs/harness/iteration-1/ideate-flow.md +0 -214
  289. package/project-template-v2/docs/harness/iteration-1/optimize-flow.md +0 -75
  290. package/project-template-v2/docs/harness/iteration-1/wrapup-flow.md +0 -63
  291. package/project-template-v2/docs/harness/iteration-2/context-flow.md +0 -223
  292. package/project-template-v2/docs/harness/iteration-2/generate-flow.md +0 -129
  293. package/project-template-v2/docs/harness/iteration-2/ideate-flow.md +0 -267
  294. package/project-template-v2/docs/harness/iteration-2/optimize-flow.md +0 -164
  295. package/project-template-v2/docs/harness/iteration-2/wrapup-flow.md +0 -115
  296. package/project-template-v2/docs/harness/orchestrator-flow.md +0 -364
  297. package/project-template-v2/docs/project-state.json +0 -60
  298. package/project-template-v2/docs/project-state.md +0 -72
  299. package/project-template-v2/docs/standards/README.md +0 -225
  300. package/project-template-v2/docs/standards/agent-behavior-standards.md +0 -174
  301. package/project-template-v2/docs/standards/artifacts/design-brief.md +0 -19
  302. package/project-template-v2/docs/standards/artifacts/design.md +0 -22
  303. package/project-template-v2/docs/standards/artifacts/game-code.md +0 -41
  304. package/project-template-v2/docs/standards/artifacts/todo-list.md +0 -41
  305. package/project-template-v2/docs/standards/iter1-agent-behavior-standards.md +0 -343
  306. package/project-template-v2/game/index.ts +0 -18
  307. package/project-template-v2/globals.d.ts +0 -51
  308. package/project-template-v2/index.css +0 -34
  309. package/project-template-v2/index.html +0 -18
  310. package/project-template-v2/main.ts +0 -9
  311. package/project-template-v2/package.json +0 -46
  312. package/project-template-v2/skills/_shared/scripts/dispatch-clear.mjs +0 -31
  313. package/project-template-v2/skills/_shared/scripts/dispatch-set.mjs +0 -86
  314. package/project-template-v2/skills/_shared/scripts/dod-check.mjs +0 -153
  315. package/project-template-v2/skills/_shared/scripts/handoff-append.mjs +0 -70
  316. package/project-template-v2/skills/_shared/scripts/lib/validator-artifacts.mjs +0 -91
  317. package/project-template-v2/skills/_shared/scripts/pipeline/dod-config.mjs +0 -131
  318. package/project-template-v2/skills/_shared/scripts/pipeline/index.mjs +0 -80
  319. package/project-template-v2/skills/_shared/scripts/pipeline/iteration-1-core.mjs +0 -90
  320. package/project-template-v2/skills/_shared/scripts/pipeline/iteration-2-wrap.mjs +0 -93
  321. package/project-template-v2/skills/_shared/scripts/pipeline/iteration-3-visual.mjs +0 -23
  322. package/project-template-v2/skills/_shared/scripts/render-project-state.mjs +0 -230
  323. package/project-template-v2/skills/_shared/scripts/state-advance-stage.mjs +0 -58
  324. package/project-template-v2/skills/_shared/scripts/state-get.mjs +0 -339
  325. package/project-template-v2/skills/_shared/scripts/state-handoff.mjs +0 -39
  326. package/project-template-v2/skills/_shared/scripts/state-set.mjs +0 -94
  327. package/project-template-v2/skills/_shared/scripts/state-store.mjs +0 -783
  328. package/project-template-v2/skills/_shared/scripts/todo-add.mjs +0 -88
  329. package/project-template-v2/skills/_shared/scripts/todo-get.mjs +0 -130
  330. package/project-template-v2/skills/_shared/scripts/todo-remove.mjs +0 -33
  331. package/project-template-v2/skills/_shared/scripts/todo-set.mjs +0 -47
  332. package/project-template-v2/skills/_shared/scripts/verify-asset-code-sync.mjs +0 -268
  333. package/project-template-v2/skills/_shared/scripts/verify-env.mjs +0 -285
  334. package/project-template-v2/skills/_shared/scripts/verify-placeholders.mjs +0 -161
  335. package/project-template-v2/skills/playable-autoplay/SKILL.md +0 -176
  336. package/project-template-v2/skills/playable-autoplay/agents/openai.yaml +0 -4
  337. package/project-template-v2/skills/playable-debug/SKILL.md +0 -116
  338. package/project-template-v2/skills/playable-debug/agents/openai.yaml +0 -4
  339. package/project-template-v2/skills/playable-debug/references/debug-config.md +0 -40
  340. package/project-template-v2/skills/playable-record/SKILL.md +0 -140
  341. package/project-template-v2/skills/playable-record/scripts/lib/dev-server.mjs +0 -104
  342. package/project-template-v2/skills/playable-record/scripts/lib/record-audio-bridge.js +0 -141
  343. package/project-template-v2/skills/playable-record/scripts/record-playable.mjs +0 -425
  344. package/project-template-v2/skills/playable-record/scripts/verify-contract.mjs +0 -261
  345. package/project-template-v2/skills/playable-record/scripts/verify-firstwin.mjs +0 -398
  346. package/project-template-v2/skills/playable-record/scripts/verify-fusion.mjs +0 -322
  347. package/project-template-v2/skills/playable-record/scripts/verify-lifecycle.mjs +0 -105
  348. package/project-template-v2/skills/playable-record/scripts/verify-vlm-video.mjs +0 -230
  349. package/project-template-v2/skills/playable-validate/SKILL.md +0 -61
  350. package/project-template-v2/skills/playable-validate/validation-rules.md +0 -14
  351. package/project-template-v2/skills/playable-verify-ui/SKILL.md +0 -63
  352. package/project-template-v2/skills/playable-verify-ui/scripts/lib/__init__.py +0 -1
  353. package/project-template-v2/skills/playable-verify-ui/scripts/lib/config_expr.js +0 -218
  354. package/project-template-v2/skills/playable-verify-ui/scripts/lib/node_utils.js +0 -51
  355. package/project-template-v2/skills/playable-verify-ui/scripts/lib/profile_loader.py +0 -59
  356. package/project-template-v2/skills/playable-verify-ui/scripts/lib/report.py +0 -106
  357. package/project-template-v2/skills/playable-verify-ui/scripts/lib/runtime_contract.js +0 -116
  358. package/project-template-v2/skills/playable-verify-ui/scripts/verify_fetch_antipatterns.py +0 -59
  359. package/project-template-v2/skills/playable-verify-ui/scripts/verify_hardcoded_layout.js +0 -64
  360. package/project-template-v2/skills/playable-verify-ui/scripts/verify_runtime_contract.js +0 -58
  361. package/project-template-v2/skills/playable-verify-ui/scripts/verify_text_overlap.py +0 -333
  362. package/project-template-v2/ta-workspace/scripts/.gitkeep +0 -0
  363. package/project-template-v2/tsconfig.json +0 -20
  364. package/project-template-v2/vite.config.ts +0 -27
  365. package/project-templates/batch-locks/phaser.yaml +0 -922
  366. package/project-templates/batch-locks/threejs.yaml +0 -978
  367. package/project-templates/empty/AGENTS.md +0 -41
  368. package/project-templates/empty/gitignore +0 -33
@@ -1,423 +0,0 @@
1
- ---
2
- name: playcraft-sprite-generation
3
- description: PlayCraft 批量元素一次性生成完整指南。涵盖 sprite sheet / 元素拼图 / UI 组件集等所有"多元素同图生成"场景。包含 Canvas 规格计算、五段式 Prompt 模板、9 项核查清单、全量生成命令、逐格校验与定向修补流程、切割脚本模板,以及麻将 42-tile 完整示例。TA 在进行任何批量元素生成前必读。
4
- triggers: sprite sheet,精灵图,批量生成,一次性生成,元素拼图,全量生成,tile sheet,icon sheet,UI组件集,grid generation,多元素同图,spritesheet,拼图生成,图标集,decompose-layers,crop,切割
5
- ---
6
-
7
- # PlayCraft 批量元素一次性生成指南
8
-
9
- ## 0. 适用场景判断
10
-
11
- **何时使用全量同图生成**:
12
-
13
- | 场景 | 示例 | 推荐方式 |
14
- | --------------------- | ----------------------------------------------- | ------------ |
15
- | 同类型多元素(>3 个) | 42 张麻将牌、9 种水果、8 个图标 | 全量同图生成 |
16
- | UI 组件集 | 按钮组(normal/hover/pressed × 3 种)、HUD 元素 | 全量同图生成 |
17
- | 角色表情/姿态集 | 6 种表情、8 个方向 | 全量同图生成 |
18
- | 同风格背景变体 | 3 个关卡背景 | 全量同图生成 |
19
-
20
- **何时不适用**:
21
-
22
- - 单个大尺寸资产(如 1080×1920 背景)→ 直接单独生成
23
- - 元素间风格差异大(如写实 + 卡通混合)→ 分别生成
24
- - 需要精确透明度/alpha 通道 → 生成后需 remove-background 处理
25
-
26
- ### 生成后从同图提取单格(与 `playcraft-masking` 对齐)
27
-
28
- | 布局 | 推荐提取方式 |
29
- | ------------------------------------------- | ---------------------------------------------------------- |
30
- | **规则网格 spritesheet**(本节主流程) | `playcraft image crop` + 下方切割脚本 |
31
- | **散乱/非网格拼图** | `segment --boxes` 或 SAM3(慎用纯 text prompt) |
32
- | **整张 Master Composite**(非 spritesheet) | `playcraft image decompose-layers`(302 整图分层,非逐格) |
33
-
34
- > 网格图**不要**用 `decompose-layers` 代替 crop;整图分层也**不能**指定「只要第 N 格」。
35
-
36
- ---
37
-
38
- ## 1. Canvas 规格计算
39
-
40
- ### 公式
41
-
42
- ```
43
- totalWidth = cols × cellWidth + (cols - 1) × gap
44
- totalHeight = rows × cellHeight + (rows - 1) × gap
45
-
46
- # 对齐到 16 的倍数(对 GPU 纹理和视频编码友好)
47
- alignedWidth = ceil(totalWidth / 16) × 16
48
- alignedHeight = ceil(totalHeight / 16) × 16
49
-
50
- # 约束:不超过模型最大分辨率
51
- assert alignedWidth ≤ 4096
52
- assert alignedHeight ≤ 4096
53
- ```
54
-
55
- ### 快速参考表
56
-
57
- | 元素数 | 推荐网格 | 单格尺寸(gap=10) | 画布尺寸 |
58
- | ------ | -------- | ------------------ | --------------------- |
59
- | 9 | 3×3 | 1024×1024 | 3092×3092 → 3104×3104 |
60
- | 16 | 4×4 | 768×768 | 3102×3102 → 3104×3104 |
61
- | 25 | 5×5 | 680×680 | 3440×3440 → 3440×3440 |
62
- | 36 | 6×6 | 560×560 | 3410×3410 → 3424×3424 |
63
- | 42 | 7×6 | 80×100 (small) | 624×656 → 624×656 |
64
- | 42 | 7×6 | 540×540 | 3840×3290 → 3840×3296 |
65
-
66
- > 建议优先使用大单格尺寸(≥540px),牺牲格数不如牺牲精度。如果元素数多(>36),可接受较小单格但不低于 80px。
67
-
68
- ### gap 选择
69
-
70
- - gap=0:元素紧贴,适合最终游戏用的 sprite sheet(开发者按像素切)
71
- - gap=10-20:元素有间距,适合 AI 生成(防止跨格渲染污染)
72
- - **推荐 AI 生成时 gap=10-20px**,切割后丢弃 gap 区域
73
-
74
- ---
75
-
76
- ## 2. 五段式 Prompt 模板
77
-
78
- AI 生图 prompt 必须严格遵循五段式结构(Scene → Canvas → Element Set → Details → Constraints):
79
-
80
- ```
81
- Scene: [背景色 + hex + 用途,1-2 句].
82
-
83
- Canvas: a strict [ROWS]-row by [COLS]-column spritesheet.
84
- Final canvas size: [W]×[H] pixels (both multiples of 16).
85
- Each element is exactly [CELL_W] pixels wide and [CELL_H] pixels tall.
86
- Horizontal and vertical gaps between elements: [GAP] pixels.
87
- All rows are left-aligned.
88
-
89
- Element set: all [N] [ELEMENT_TYPE], each appearing exactly once, arranged in the following order:
90
- - Row 1: [id_1 (标签)], [id_2 (标签)], ..., [id_COLS (标签)]
91
- - Row 2: [id_COLS+1], ..., [id_2×COLS]
92
- - ...
93
- - Row [ROWS]: [remaining elements, mark empty cells if any]
94
-
95
- Details:
96
- - Every element is identical in size ([CELL_W]×[CELL_H] px) with [edge treatment].
97
- - Material/texture: [具体材质描述].
98
- - [Category 1] elements: [颜色 + 样式].
99
- - [Category 2] elements: [颜色 + 样式].
100
- - ...
101
- - Art style: [风格关键词,引用 design-brief].
102
-
103
- Constraints:
104
- - No [unwanted_1], no [unwanted_2], no [unwanted_3].
105
- - All symbols/text must be [质量要求].
106
- - [其他技术约束].
107
- ```
108
-
109
- ### 五段式强制规则
110
-
111
- | 段落 | 必须包含 | 禁止 |
112
- | ----------- | ---------------------------- | ------------------------------ |
113
- | Scene | 背景色 hex + 用途 | 不写风格(风格在 Details 段) |
114
- | Canvas | 精确像素:画布/单格/gap/对齐 | 不写模糊尺寸如 "large" |
115
- | Element Set | 逐行完整枚举 + 中文标签 | 不省略("etc." 或 "...") |
116
- | Details | 按分类描述材质/颜色/风格 | 不写单一笼统描述覆盖所有 |
117
- | Constraints | ≥3 条 "No xxx" | 不写正面描述(正面在 Details) |
118
-
119
- ---
120
-
121
- ## 3. Prompt 核查清单
122
-
123
- 生成前对照以下 9 项逐一核查(在 `logs/ta-log.md` 中打勾),**全部通过才可执行生成命令**:
124
-
125
- | # | 核查项 | 标准 |
126
- | --- | ----------------------------- | --------------------------------------------------- |
127
- | 1 | **Scene 段存在** | 背景色 hex 明确 |
128
- | 2 | **Canvas 像素精确** | 画布/单格/gap 为精确数值,且是 16 倍数 |
129
- | 3 | **Element Set 完整** | 逐行枚举数量 = assetMapping 总数,无遗漏无重复 |
130
- | 4 | **Details 分类描述** | 每类元素有独立的颜色/材质描述,引用 layout-spec hex |
131
- | 5 | **Details 引用 Style Intent** | 风格关键词来自 artist-log Style Intent Notes |
132
- | 6 | **Constraints 负面约束** | ≥3 条 "No xxx",含 Anti-Pattern Notes 中的禁忌 |
133
- | 7 | **Canvas ≤ 4096px** | 总尺寸不超过模型最大分辨率 |
134
- | 8 | **--reference-image 指定** | 指向 ASR element sheet 或 Master Composite |
135
- | 9 | **Prompt 已记录** | 完整 prompt 已写入 `logs/ta-log.md` |
136
-
137
- **任何一项未通过 → 修正后重新核查。不可跳过。**
138
-
139
- ---
140
-
141
- ## 4. 全量生成命令
142
-
143
- ```bash
144
- playcraft tools generate-image \
145
- --prompt "<五段式 prompt,已通过核查>" \
146
- --output assets/images/[type]/spritesheet_[type].png \
147
- --reference-image <asr-element-sheet-or-composite-path> \
148
- --image-size 1K \
149
- --image-model gpt-image-2
150
-
151
- # 自动生成的 .json sidecar 记录完整 prompt + 配置
152
- # 检查确认:
153
- cat assets/images/[type]/spritesheet_[type].json
154
- ```
155
-
156
- ### `--image-size` 与画布尺寸的关系
157
-
158
- `--image-size` 接受预设值 `1K`、`2K`、`4K`。实际输出像素由 `aspectRatio + imageSize` 联合决定——对 gpt-image-2: `1:1+4K`→2048x2048, `16:9+4K`→3840x2160, `1:1+1K`→1024x1024。
159
-
160
- | 情况 | `--image-size` 设置 | 后续处理 |
161
- | ---------------- | ------------------------------------ | -------------------------------------------------------- |
162
- | 画布 ≤ 1024px | `1K` | 模型输出 ~1024px,**必须 resize 到目标画布尺寸后再切割** |
163
- | 画布 1024–4096px | `4K` | 直接切割 |
164
- | 需要最大精度 | `4K` + 放大单格尺寸使画布接近 4096px | 直接切割 |
165
-
166
- **当模型输出 > 实际画布尺寸时的处理流程**:
167
-
168
- ```bash
169
- # 1. 生成(模型输出 ~1024px)
170
- playcraft tools generate-image --prompt "..." --output tmp_sheet.png --image-size 1K ...
171
-
172
- # 2. Resize 到实际画布尺寸(保持网格比例)
173
- playcraft image resize --input tmp_sheet.png --width [alignedWidth] --height [alignedHeight] --output assets/images/[type]/spritesheet_[type].png
174
-
175
- # 3. 然后正常切割
176
- ```
177
-
178
- > **推荐**:优先选择大单格尺寸方案(≥540px),使画布接近 4096×4096,避免先生成再缩放的精度损失。
179
-
180
- ### 模型选择
181
-
182
- | 模型 | 适用 | 注意 |
183
- | ------------- | -------------------------------------- | ------------------ |
184
- | gpt-image-2 | 首选——复杂布局、中文字符、多元素一致性 | 慢(~7-8 min),贵 |
185
- | nano-banana-2 | 备选——简单图形、无文字元素 | 快,中文字符不可靠 |
186
- | gemini-flash | 备选——色彩鲜艳场景 | 网格理解弱 |
187
-
188
- **中文字符场景(麻将/汉字标签)必须用 gpt-image-2。**
189
-
190
- ### 元素数超限时的分批策略
191
-
192
- 当元素总数使画布无法在 4096px 内保持 ≥ 80px 单格时,需分批生成:
193
-
194
- ```
195
- 最大可容纳元素数 ≈ (4096 ÷ (cellSize + gap))²
196
- # 例:cellSize=540, gap=10 → (4096÷550)² ≈ 49 个
197
- # 例:cellSize=256, gap=10 → (4096÷266)² ≈ 237 个(但精度低)
198
- ```
199
-
200
- **分批原则**:
201
-
202
- - 按元素类别分 sheet(如:萬子一张、條子一张),每张 sheet 内部风格一致
203
- - 所有 sheet 使用**相同的 `--reference-image` + 相同模型**,保证跨 sheet 风格统一
204
- - 在 `logs/ta-log.md` 中标注分批策略和每张 sheet 包含的元素清单
205
-
206
- ---
207
-
208
- ## 5. 逐格校验 + 定向修补
209
-
210
- ### 校验标准
211
-
212
- 生成后逐格对照 Element Set 清单检查:
213
-
214
- | 校验项 | 通过标准 |
215
- | ---------- | --------------------------------------------- |
216
- | 元素存在 | 格内有完整元素,无空格、无残缺 |
217
- | 符号正确 | 文字/图案与清单描述一致(无笔画错误、无乱码) |
218
- | 尺寸一致 | 各格元素大小视觉统一(允许 ±5% 偏差) |
219
- | 无跨格污染 | 元素不越界到相邻格 |
220
- | 风格统一 | 颜色、材质、光照与其他格一致 |
221
-
222
- ### 修补决策
223
-
224
- | 错误比例 | 策略 |
225
- | ------------------------------- | ------------------------------------- |
226
- | ≤ 30%(如 42 格中 ≤ 12 格错误) | 逐格定向修补 |
227
- | > 30% | 修改 prompt → 重新核查 → 重新全量生成 |
228
-
229
- ### 定向修补流程
230
-
231
- ```bash
232
- # 用整张 sheet 作为 reference-image,保证修补格与其他格风格一致
233
- playcraft tools generate-image \
234
- --prompt "Single [ELEMENT_TYPE]: [错误格子的详细描述,从原 prompt Element Set 段摘取]. Same art style as reference. On solid [BG_COLOR] background. Centered in frame." \
235
- --reference-image assets/images/[type]/spritesheet_[type].png \
236
- --output ta-workspace/tmp/fix_[element_id].png \
237
- --image-size 1K \
238
- --image-model gpt-image-2
239
- ```
240
-
241
- **修补后**:resize 到 cellW×cellH → 替换到最终切割输出中(不修改原 sheet 文件):
242
-
243
- ```bash
244
- playcraft image resize \
245
- --input ta-workspace/tmp/fix_[element_id].png \
246
- --width [cellW] --height [cellH] \
247
- --output assets/images/[type]/tile_[element_id].png
248
- ```
249
-
250
- ---
251
-
252
- ## 6. 切割 + 替换 + 验证
253
-
254
- ### 切割脚本模板
255
-
256
- ```javascript
257
- // ta-workspace/scripts/split-spritesheet.mjs
258
- import { execSync } from 'child_process';
259
- import { existsSync, mkdirSync } from 'fs';
260
-
261
- const CONFIG = {
262
- input: 'assets/images/tiles/spritesheet_mahjong.png',
263
- outputDir: 'assets/images/tiles/',
264
- cols: 7,
265
- rows: 6,
266
- cellW: 80,
267
- cellH: 100,
268
- gap: 10,
269
- names: [
270
- '1wan',
271
- '2wan',
272
- '3wan',
273
- '4wan',
274
- '5wan',
275
- '6wan',
276
- '7wan',
277
- '8wan',
278
- '9wan',
279
- '1tiao',
280
- '2tiao',
281
- '3tiao',
282
- '4tiao',
283
- '5tiao',
284
- '6tiao',
285
- '7tiao',
286
- '8tiao',
287
- '9tiao',
288
- '1tong',
289
- '2tong',
290
- '3tong',
291
- '4tong',
292
- '5tong',
293
- '6tong',
294
- '7tong',
295
- '8tong',
296
- '9tong',
297
- 'east',
298
- 'south',
299
- 'west',
300
- 'north',
301
- 'red_dragon',
302
- 'green_dragon',
303
- 'white_dragon',
304
- 'spring',
305
- 'summer',
306
- 'autumn',
307
- 'winter',
308
- 'plum',
309
- 'orchid',
310
- 'bamboo',
311
- 'chrysanthemum',
312
- ],
313
- };
314
-
315
- mkdirSync(CONFIG.outputDir, { recursive: true });
316
-
317
- for (let row = 0; row < CONFIG.rows; row++) {
318
- for (let col = 0; col < CONFIG.cols; col++) {
319
- const idx = row * CONFIG.cols + col;
320
- if (idx >= CONFIG.names.length) break;
321
-
322
- const x = col * (CONFIG.cellW + CONFIG.gap);
323
- const y = row * (CONFIG.cellH + CONFIG.gap);
324
- const name = CONFIG.names[idx];
325
- const output = `${CONFIG.outputDir}tile_${name}.png`;
326
-
327
- if (existsSync(output)) continue; // idempotent
328
-
329
- execSync(
330
- `playcraft image crop --input ${CONFIG.input} --x ${x} --y ${y} --width ${CONFIG.cellW} --height ${CONFIG.cellH} --output ${output}`,
331
- );
332
- console.log(`[${idx + 1}/${CONFIG.names.length}] ${output}`);
333
- }
334
- }
335
- console.log('Done. Split complete.');
336
- ```
337
-
338
- ### 替换修补格
339
-
340
- ```bash
341
- # 修补的格子直接覆盖切割输出
342
- cp ta-workspace/tmp/fix_east.png assets/images/tiles/tile_east.png
343
- cp ta-workspace/tmp/fix_red_dragon.png assets/images/tiles/tile_red_dragon.png
344
- ```
345
-
346
- ### 最终验证
347
-
348
- ```bash
349
- # 逐文件检查尺寸一致
350
- playcraft image info assets/images/tiles/tile_*.png
351
-
352
- # 确认文件数量 = Element Set 清单数量
353
- ls assets/images/tiles/tile_*.png | wc -l
354
- ```
355
-
356
- ---
357
-
358
- ## 7. 完整示例:麻将 42-tile Sprite Sheet
359
-
360
- ### Define
361
-
362
- ```
363
- 总元素数: 42
364
- 网格布局: 7 cols × 6 rows = 42 cells (all used)
365
- 单格尺寸: 80×100 px
366
- Gap: 10 px
367
- 画布尺寸: 7×80 + 6×10 = 620 → aligned 624 | 6×100 + 5×10 = 650 → aligned 656
368
- 最终: 624×656 px
369
- 背景: #00FF00 (green-screen)
370
- 模型: gpt-image-2
371
- 参考图: assets/images/storyboard/master_composite.png
372
- ```
373
-
374
- ### Prompt
375
-
376
- ```
377
- Scene: pure green background (#00FF00) for easy keying.
378
-
379
- Canvas: a strict 6-row by 7-column spritesheet.
380
- Final canvas size: 624×656 pixels (both multiples of 16).
381
- Each tile is exactly 80 pixels wide and 100 pixels tall.
382
- Horizontal and vertical gaps between tiles: 10 pixels.
383
- All rows are left-aligned.
384
-
385
- Tile set: all 42 standard Mahjong tiles, each appearing exactly once, arranged in the following order:
386
- - Row 1: 1wan (一萬), 2wan (二萬), 3wan (三萬), 4wan (四萬), 5wan (五萬), 6wan (六萬), 7wan (七萬)
387
- - Row 2: 8wan (八萬), 9wan (九萬), 1tiao (一條), 2tiao (二條), 3tiao (三條), 4tiao (四條), 5tiao (五條)
388
- - Row 3: 6tiao (六條), 7tiao (七條), 8tiao (八條), 9tiao (九條), 1tong (一筒), 2tong (二筒), 3tong (三筒)
389
- - Row 4: 4tong (四筒), 5tong (五筒), 6tong (六筒), 7tong (七筒), 8tong (八筒), 9tong (九筒), East wind (東)
390
- - Row 5: South wind (南), West wind (西), North wind (北), Red dragon (中), Green dragon (發), White dragon (白), Spring (春)
391
- - Row 6: Summer (夏), Autumn (秋), Winter (冬), Plum (梅), Orchid (蘭), Bamboo (竹), Chrysanthemum (菊)
392
-
393
- Details:
394
- - Every tile is identical in size (80×100 px) with 4px rounded corners and thin 1px dark border (#333333).
395
- - Tile surface: brushed brass/bronze metallic texture with subtle reflections.
396
- - Wan (萬) suit: Chinese numeral + "萬" character in dark red (#8B0000), traditional Kaiti calligraphy.
397
- - Tiao (條) suit: stylized bamboo stalks in dark green (#1B5E20), count matches the number.
398
- - Tong (筒) suit: ornamental coin/circle patterns in dark green (#2E4E2E) with concentric ring detail.
399
- - Wind tiles (東南西北): large bold Chinese character in dark ink (#1A1A1A), centered.
400
- - Dragon tiles: 中=red character on tile, 發=green character on tile, 白=blank/framed tile.
401
- - Flower/Season tiles (春夏秋冬梅蘭竹菊): small botanical/seasonal illustration + Chinese character label at top.
402
- - Art style: Chinese traditional aesthetic, elegant and clean, premium mobile game quality.
403
-
404
- Constraints:
405
- - No cast shadows behind tiles, no perspective distortion, no 3D rotation.
406
- - No extra text, no labels outside tiles, no watermarks, no visible grid lines.
407
- - No background texture — pure flat #00FF00.
408
- - All Chinese characters must be sharp, legible, and correctly written (no garbled strokes).
409
- - Strictly front-on orthographic view for all 42 tiles.
410
- ```
411
-
412
- ### 执行
413
-
414
- ```bash
415
- playcraft tools generate-image \
416
- --prompt "<上述完整 prompt>" \
417
- --output assets/images/tiles/spritesheet_mahjong.png \
418
- --reference-image assets/images/storyboard/master_composite.png \
419
- --image-size 1K \
420
- --image-model gpt-image-2
421
- ```
422
-
423
- > 注:624×656 小于模型最小输出(~1024px),模型会自动适配。如需更高精度,可将单格放大到 540×540(画布 3840×3290)并使用 `--image-size 4K`。
@@ -1,158 +0,0 @@
1
- ---
2
- name: playcraft-sprite-remix
3
- description: 精灵图(sprite sheet)拆解、逐帧 AI 重绘、去背景与重组装的完整流水线。适用于换肤、风格变换、牌面/图集批量处理;通过 playcraft CLI 在沙箱内执行,分析步骤可走后端 Vision API。
4
- compatibility: agent,opencode
5
- triggers: 精灵图, sprite sheet, 图集, 换肤, 风格变换, 逐帧, 麻将牌, tile sheet, atlas remix
6
- ---
7
-
8
- ## Skill Definition
9
-
10
- tools:
11
-
12
- - bash
13
- - read
14
- prompt_extension: |
15
- 你是精灵图管线工程师。不得向 /project/ 写入;中间产物与最终输出必须在会话 .../sessions/{id}/ta-workspace/ 下。
16
- 当用户提到精灵图、sprite sheet、图集换肤、逐帧重绘、牌面风格变换等需求时,优先采用「分析/拆分 → 逐帧生成 → 去背景 → 重组 → 对比验收」流程,而不是把整张图直接丢给生图模型。
17
- 通过 bash 调用 playcraft CLI:sprite-split(可选 Vision)、tools generate-image、image remove-background、image sprite-sheet。
18
- 需要多模态理解布局时,使用 `playcraft image sprite-split --input ... --output-dir ... --auto-detect [--hint "..."]`(消耗后端 Vision 配额)。
19
- 若网格行列与帧尺寸已知,用手动参数省略 Vision:`--rows --columns --frame-width --frame-height [--padding]`。
20
- 交付到素材库时按 docs/agent/remixable-prefab-spec.md 整理 staging 后执行 `playcraft tools publish-prefab`。
21
-
22
- ## 我做什么
23
-
24
- - 将整张精灵图拆成独立帧(规则网格或不规则元素)
25
- - 按统一风格或用户要求对每帧做图生图(`playcraft tools generate-image` + `--reference-image`)
26
- - 逐帧去背景(优先 `remove-background` 默认 floodfill;复杂底用 `--method ai`)
27
- - 用 `playcraft image sprite-sheet` 按原拓扑拼回 PNG + JSON
28
- - 产出 `split-meta.json` 记录裁切与网格,便于复现与人工微调
29
-
30
- ## 何时用我
31
-
32
- - 用户明确在处理 **sprite sheet / 精灵图 / 纹理图集**,且需要 **保留网格或元素位置**
33
- - 整张图直接文生图/图生图效果差、帧错位、风格不一致
34
- - 需要批量对 **每一格 / 每一元素** 单独生成或变换
35
-
36
- ## 推荐工作流(6 步)
37
-
38
- ### 1–2. 分析与拆分(一步 CLI)
39
-
40
- ```bash
41
- # Vision 自动推断网格(需 PLAYCRAFT_API_URL + PLAYCRAFT_SANDBOX_TOKEN或 .playcraft.json)
42
- playcraft image sprite-split \
43
- --input ta-workspace/source-sheet.png \
44
- --output-dir ta-workspace/split_frames \
45
- --auto-detect \
46
- --hint "mahjong tiles, uniform grid, equal cell size"
47
-
48
- # 或已知网格时(纯本地 sharp,不调后端)
49
- playcraft image sprite-split \
50
- --input ta-workspace/source-sheet.png \
51
- --output-dir ta-workspace/split_frames \
52
- --rows 4 --columns 10 --frame-width 100 --frame-height 130 --padding 2
53
- ```
54
-
55
- 输出:`split_frames/frame_r*_c*.png`(或不规则时的按元素命名)、`split_frames/split-meta.json`。
56
-
57
- ### 3. 逐帧重生成
58
-
59
- 对每一帧单独调用(可并行多个 bash 命令,注意 API 限流):
60
-
61
- ```bash
62
- playcraft tools generate-image \
63
- --prompt "same tile, frozen ice style, keep symbol readable, game asset" \
64
- --reference-image ta-workspace/split_frames/frame_r0_c0.png \
65
- --aspect-ratio 1:1 \
66
- --output ta-workspace/remix_frames/frame_r0_c0.png
67
- ```
68
-
69
- 多帧时循环处理;单帧失败只需重试该帧。
70
-
71
- ### 4. 去背景
72
-
73
- ```bash
74
- playcraft image remove-background \
75
- --input ta-workspace/remix_frames/frame_r0_c0.png \
76
- --output ta-workspace/remix_frames_nobg/frame_r0_c0.png
77
- ```
78
-
79
- 复杂背景再考虑 `--method ai`。
80
-
81
- ### 5. 重组精灵图
82
-
83
- 根据 `split-meta.json` 中的行列与 `frameWidth` / `frameHeight` / `padding` 与 `sprite-sheet` 对齐(与拆分时一致):
84
-
85
- ```bash
86
- playcraft image sprite-sheet \
87
- --inputs ta-workspace/remix_frames_nobg/frame_r0_c0.png,ta-workspace/remix_frames_nobg/frame_r0_c1.png \
88
- --output ta-workspace/remixed-sheet \
89
- --columns 10 \
90
- --cell-width 100 --cell-height 130 \
91
- --padding 2
92
- ```
93
-
94
- (`--inputs` 顺序须与拼图行列一致;帧数多时用脚本生成逗号列表。)
95
-
96
- ### 6. Review(对比验收)
97
-
98
- 将 **原图** 与 **新精灵图** 作为参考图,请求模型做一致性/对齐简述(可选,用于汇报或自检):
99
-
100
- ```bash
101
- playcraft tools generate-image \
102
- --prompt "Compare layout: does the second image preserve the grid and approximate content of the first? Answer briefly in English." \
103
- --reference-image ta-workspace/source-sheet.png \
104
- --reference-image ta-workspace/remixed-sheet.png \
105
- --aspect-ratio 1:1 \
106
- --output ta-workspace/review_note.png
107
- ```
108
-
109
- 若仅需文字反馈,可改为由 Manager/Reviewer 角色阅读两张图;CLI 仍会生成一张图,可按项目约定使用或丢弃。
110
-
111
- ## 局部 remix:不拆整张,只替换单一元素
112
-
113
- 已知某个元素在原图上的 bounds(例如某个按钮位于 x=120 y=240 宽 160 高 64),想仅重绘该元素并贴回原图:
114
-
115
- ```bash
116
- # 1) 裁出目标区域(可向外扩 ~10% 给模型一点上下文)
117
- playcraft image crop \
118
- --input ta-workspace/source-sheet.png \
119
- --output ta-workspace/region.png \
120
- --x 104 --y 234 --width 192 --height 76
121
-
122
- # 2) 以裁剪片作为 reference 做 image-to-image
123
- playcraft tools generate-image \
124
- --prompt "green rounded rectangle button with white text 'Start', flat UI" \
125
- --reference-image ta-workspace/region.png \
126
- --aspect-ratio 1:1 \
127
- --output ta-workspace/region_remixed.png
128
-
129
- # 3) 抠掉新片段的背景/边框
130
- playcraft image remove-background \
131
- --input ta-workspace/region_remixed.png \
132
- --output ta-workspace/region_remixed_nobg.png
133
-
134
- # 4) 贴回原图(注意 x/y 是粘贴起点,这里是 104/234,而不是 bounds 原点)
135
- playcraft image overlay \
136
- --base ta-workspace/source-sheet.png \
137
- --overlay ta-workspace/region_remixed_nobg.png \
138
- --output ta-workspace/source-sheet.v2.png \
139
- --x 104 --y 234
140
- ```
141
-
142
- 4 步各是一个原子,可单独替换:
143
-
144
- - 不需要外扩时 step 1 使用原始 bounds 即可。
145
- - 场景融合足够好时 step 3 可跳过。
146
- - 多元素批量换皮时把这套流程写在一个 for 循环里,或对每个元素走一遍 step 1–4 并合到同一底图上。
147
-
148
- ## 与现有 Skill 的关系
149
-
150
- - **playcraft-sprite-sheet**:仅负责「多图合并为 sheet」;本 Skill 覆盖「从 sheet 出发的完整 remix」
151
- - **playcraft-image-generation**:单图生成;本 Skill 强调 **逐帧** 与 **结构保持**
152
- - **playcraft-image-processing**:缩放、裁剪、像素化等本地处理;在本流程中可与 remix 步骤穿插使用
153
-
154
- ## 注意事项
155
-
156
- - **不要**对整张 sprite sheet 一次性下「全部改成某风格」的生图指令作为主路径
157
- - `--auto-detect` 有成本;已知规格时务必用手动网格减少调用
158
- - 不规则图集(`gridType: irregular`)重组时需按 `split-meta.json` 中元素坐标逐个 `overlay` 或扩展 `sprite-sheet` 工作流;优先在 ta-workspace 用脚本或分步 composite 还原布局
@@ -1,100 +0,0 @@
1
- ---
2
- name: playcraft-sprite-sheet
3
- description: 可玩广告流程步骤 7(可选)。将多张图片合并为精灵图(sprite sheet),输出 PNG 及 JSON 帧坐标元数据。通过 `playcraft image sprite-sheet` 命令在沙箱本地执行,无需 backend。
4
- compatibility: agent,opencode
5
- ---
6
-
7
- ## Skill Definition
8
-
9
- tools:
10
-
11
- - bash
12
- - read
13
- prompt_extension: |
14
- 你是精灵图合成师。不得向 /project/ 写入;所有输出必须在会话 .../sessions/{id}/ta-workspace/ 下。
15
- 通过 bash 工具运行 `playcraft image sprite-sheet` CLI 命令将多张图合并为 PNG + JSON 元数据,全程本地执行,无需往返 backend。
16
- 若需交付到素材库,先按 docs/agent/remixable-prefab-spec.md 整理 staging,再通过 bash 运行 `playcraft tools publish-prefab` CLI 命令。
17
-
18
- ## 我做什么
19
-
20
- - 将多张图片合并为精灵图(sprite sheet)
21
- - 输出:精灵图 PNG + JSON 元数据(每帧的 x, y, w, h 及文件名索引)
22
- - 可与 playcraft-image-generation、playcraft-image-processing 串联使用
23
-
24
- ## 何时用我
25
-
26
- 当变体需要:
27
-
28
- - 角色动画(idle、walk、jump 等多帧)
29
- - 序列帧动画
30
- - 多张小图合并为图集(减少 draw call)
31
-
32
- ## 命令用法
33
-
34
- ```bash
35
- playcraft image sprite-sheet \
36
- --inputs <图1>,<图2>,<图3>,... \
37
- --output <ta-workspace内的基路径> # 自动生成 .png 和 .json
38
- [--columns <列数>] # 默认按平方根自动计算
39
- [--padding <帧间距像素>] # 默认 0
40
- [--cell-width <宽>] # 默认用第一张图的宽
41
- [--cell-height <高>] # 默认用第一张图的高
42
- ```
43
-
44
- ### 输出文件
45
-
46
- - `<output>.png` — 精灵图 PNG
47
- - `<output>.json` — 帧坐标数据,格式如下:
48
- ```json
49
- {
50
- "frames": {
51
- "hero_idle_0.png": { "x": 0, "y": 0, "w": 64, "h": 64 },
52
- "hero_idle_1.png": { "x": 64, "y": 0, "w": 64, "h": 64 }
53
- },
54
- "meta": { "image": "hero.png", "size": { "w": 256, "h": 64 }, "scale": 1 }
55
- }
56
- ```
57
-
58
- ## 工作流
59
-
60
- 1. **准备帧图片**:从 /project 只读读取参考图,或引用 ta-workspace 内已生成/处理的帧图
61
- 2. **(可选)统一尺寸**:用 `playcraft image resize` 确保所有帧尺寸一致
62
- 3. **合并精灵图**:
63
- ```bash
64
- playcraft image sprite-sheet \
65
- --inputs ta-workspace/frame_0.png,ta-workspace/frame_1.png,ta-workspace/frame_2.png \
66
- --output ta-workspace/hero-sheet \
67
- --columns 4 \
68
- --cell-width 64 --cell-height 64
69
- # 生成:ta-workspace/hero-sheet.png 和 ta-workspace/hero-sheet.json
70
- ```
71
- 4. **(可选)交付到素材库**:
72
- ```bash
73
- playcraft tools publish-prefab \
74
- --remix-project-id <ID> --template <名> --variant <名> --prefab <名> \
75
- --staging-root <staging路径>
76
- ```
77
-
78
- ## 与步骤 5、6 融合
79
-
80
- 完整流程示例:
81
-
82
- ```bash
83
- # 步骤 5:AI 生成帧
84
- playcraft tools generate-image --prompt "hero idle frame 1, pixel art, transparent background" --output ta-workspace/f0.png
85
- playcraft tools generate-image --prompt "hero idle frame 2, pixel art, transparent background" --output ta-workspace/f1.png
86
-
87
- # 步骤 6:统一尺寸
88
- playcraft image resize --input ta-workspace/f0.png --output ta-workspace/f0_64.png --width 64 --height 64 --fit contain
89
- playcraft image resize --input ta-workspace/f1.png --output ta-workspace/f1_64.png --width 64 --height 64 --fit contain
90
-
91
- # 步骤 7:合并精灵图
92
- playcraft image sprite-sheet \
93
- --inputs ta-workspace/f0_64.png,ta-workspace/f1_64.png \
94
- --output ta-workspace/hero-idle \
95
- --cell-width 64 --cell-height 64
96
- ```
97
-
98
- ## 游戏引擎兼容
99
-
100
- JSON 格式设计兼容常见引擎(Phaser、PlayCanvas 的 sprite 格式),key 为文件名,value 含 x/y/w/h 坐标。