@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,21 +1,23 @@
1
1
  # Image Generation Prompt Cookbook
2
2
 
3
- > 适用于 PlayCraft CLI `playcraft tools generate-image`。
3
+ > 适用于 PlayCraft CLI (Command-Line Interface, 命令行工具) `playcraft tools generate-image` 及沙箱生图工具。
4
4
  > 所有模型均适用;gpt-image-2 类模型对英文 prompt 理解最准确,优先写英文。
5
5
 
6
+ 透明交付通过 `background: transparent` / `--background transparent` 或目标字段配置表达。用户未明确要求背景且字段没有明确不透明约束时,默认透明,包括卡牌、棋子和面板。下方常规前景模板描述主体、文字、风格、构图与材质;源图背景遵循主文第 2 节:Image 2.5 由后端组装,不追加背景后缀;明确选用其他模型时,首次请求需追加单一 `on a uniform solid pure white background for subsequent background removal`。不要同时要求透明、白底与色幕。用户或字段明确要求完整场景时可以描述背景内容;矩形本体的白色牌面属于前景,应在透明画布上保留。独立色幕流程见主文第 3 节,中间图必须关闭自动去背。
7
+
6
8
  ---
7
9
 
8
10
  ## 一、Prompt 万能公式
9
11
 
10
12
  ```
11
- [主体描述] + [风格/介质] + [构图/视角] + [背景] + [质量修饰词]
13
+ [主体描述] + [风格/介质] + [构图/视角] + [场景内容(如需要)] + [质量修饰词]
12
14
  ```
13
15
 
14
16
  **示例**:
15
17
 
16
18
  ```
17
19
  A golden sword icon, flat 2D vector style, centered composition,
18
- white background, clean crisp edges, game UI asset, high quality
20
+ isolated subject, clean crisp edges, game UI asset, high quality
19
21
  ```
20
22
 
21
23
  ---
@@ -26,12 +28,13 @@ white background, clean crisp edges, game UI asset, high quality
26
28
 
27
29
  ```
28
30
  A [物品名] icon, flat 2D vector illustration, bold outlines,
29
- vibrant colors, centered composition, white background,
31
+ vibrant colors, centered composition, isolated subject,
30
32
  no shadow, no gradient, game UI style, sharp crisp edges
31
33
  ```
32
34
 
33
35
  - 关键词:`flat 2D` / `bold outlines` / `centered` / `no shadow` / `game UI style`
34
36
  - 避免:`3D` / `realistic` / `photographic` / `drop shadow`
37
+ - 需要透明交付时传 `background: transparent` / `--background transparent`。
35
38
 
36
39
  ### 🃏 卡牌 / 棋子 / 方块(Rectangular Tiles)
37
40
 
@@ -50,12 +53,11 @@ sharp clean edges, centered on white background
50
53
  ```
51
54
  A [角色描述] character, full body visible, game sprite style,
52
55
  [艺术风格: pixel art / cartoon / chibi / realistic],
53
- isolated on solid bright green #00FF00 background,
56
+ isolated subject,
54
57
  centered, facing forward / side view, clean silhouette
55
58
  ```
56
59
 
57
- - 需要透明背景 → **绿幕策略**,prompt 加 `"on solid bright green #00FF00 background, isolated"`
58
- - 后处理:`remove-background --tolerance 25`
60
+ - 需要透明交付 → `background: transparent` / `--background transparent`,按主文第 2 节准备源图背景,由后端去背并完成验收。
59
61
 
60
62
  ### 🌄 场景背景(Backgrounds)
61
63
 
@@ -120,7 +122,7 @@ Grid layout, equal cell size, no borders between cells. Bold black ink for spade
120
122
  **图标集示例**(一批 9 个图标):
121
123
 
122
124
  ```
123
- Sprite sheet grid, 3 columns × 3 rows. Flat 2D game icon style, white background.
125
+ Sprite sheet grid, 3 columns × 3 rows. Flat 2D game icon style, isolated subjects.
124
126
  [Row1,Col1]: sword icon; [Row1,Col2]: shield icon; [Row1,Col3]: bow and arrow icon;
125
127
  [Row2,Col1]: magic staff icon; [Row2,Col2]: potion bottle icon; [Row2,Col3]: scroll icon;
126
128
  [Row3,Col1]: coin gold icon; [Row3,Col2]: gem diamond icon; [Row3,Col3]: key icon.
@@ -129,17 +131,18 @@ Each icon centered in its cell, bold outlines, vibrant colors, no shadow.
129
131
 
130
132
  **背景选择(重要!)**:
131
133
 
132
- | 素材类型 | prompt 背景写法 | 切分后处理 |
133
- | ----------------------------------- | --------------------------------------------------- | ---------------------------------- |
134
- | 独立元素(角色/车/道具/图标)需透明 | `isolated on solid bright green #00FF00 background` | `remove-background --tolerance 25` |
135
- | 卡牌/棋子/UI 面板(矩形本体) | `white background, no shadow` | 直接 resize,不去背景 |
134
+ | 素材类型 | 交付要求 | 切分后处理 |
135
+ | ----------------------------------- | ----------------------------------------------------- | --------------------------------- |
136
+ | 独立元素(角色/车/道具/图标)需透明 | `--background transparent`,按主文第 2 节准备源图背景 | 保留透明通道,验证每格前景与边缘 |
137
+ | 卡牌/棋子/UI 面板(矩形本体) | 默认 `--background transparent`,保留牌面与边框 | 验证本体外透明,按目标尺寸 resize |
138
+ | 用户/字段明确要求保留背景的最终素材 | `--background opaque`,整张图片不透明 | 保留背景,按目标尺寸 resize |
136
139
 
137
140
  **注意事项**:
138
141
 
139
142
  - 每批最多 **4×4 = 16 个元素**,超过会出现混乱
140
143
  - 每个格的描述要精确,包含特征性视觉元素
141
144
  - 切分后用 `sprite-split --rows N --columns M` 按网格切分
142
- - 模板:[gen-batch-sprite.template.mjs](gen-batch-sprite.template.mjs)
145
+ - 模板:[gen-batch-sprite.template.mjs](gen-batch-sprite.template.mjs):`backgroundMode='automatic'` 为常规流程,`removeBg` 表示最终是否透明。独立色幕需显式设 `backgroundMode='chroma'`、所选模型和色幕颜色;脚本关闭整板自动去背,切分后逐格去背。
143
146
 
144
147
  ---
145
148
 
@@ -183,7 +186,7 @@ gpt-image-2 是目前质量最高的文生图模型,prompt 套路略有不同
183
186
  - **英文 prompt 效果最佳**,中文理解也不错但英文更稳定
184
187
  - 对**复杂场景**、**细节描述**处理能力远超其他模型
185
188
  - 支持**图生图 edit 模式**(传 `--reference-image`),局部编辑能力强
186
- - 不支持透明 PNG 输出(ALPHA = no),需绿幕策略
189
+ - 不支持原生透明 PNG (Portable Network Graphics, 便携式网络图形) 输出(ALPHA = no);透明交付仍由工具后处理。明确选择独立色幕制作时再按主文第 3 节处理。
187
190
 
188
191
  ### prompt 格式建议
189
192
 
@@ -231,6 +234,7 @@ elements centered in each cell, no borders between cells.
231
234
  ```bash
232
235
  playcraft tools generate-image \
233
236
  --prompt "A sword icon, flat 2D..." \
237
+ --background transparent \
234
238
  --output assets/gen/sword \
235
239
  --count 4 \
236
240
  --image-model iegg-litellm/gpt-image-2
@@ -248,6 +252,7 @@ playcraft tools generate-image \
248
252
  # 一次 API 调用生成 4 个候选,选最好的(比 4 次独立调用更高效)
249
253
  playcraft tools generate-image \
250
254
  --prompt "..." \
255
+ --background "$BACKGROUND_MODE" \
251
256
  --output "test/concept" \
252
257
  --count 4 \
253
258
  --image-model iegg-litellm/gpt-image-2
@@ -270,6 +275,8 @@ playcraft tools generate-image \
270
275
  >
271
276
  > 注意:`figer_icon.aiimage`、`win_result_panel.aiimage` 等 atom Skills 提供了带参考图的生成配方,Game Designer `playcraft skills match` 能匹配到时优先使用。本节模板用于无对应 atom Skill 的场景。
272
277
 
278
+ 下方独立界面前景通过 `background: transparent` / `--background transparent` 要求最终透明;模板描述主体,调用前按主文第 2 节补充适用于所选模型的源图背景。
279
+
273
280
  ### 🟠 CTA 按钮(Call-to-Action Button)
274
281
 
275
282
  ```
@@ -280,13 +287,13 @@ Important details: [bright orange / gold / green] gradient fill,
280
287
  subtle drop shadow below button, glossy highlight on top edge,
281
288
  3px white inner border, corners rounded radius 24px
282
289
  Use case: Game ad install button, isolated asset, HTML5 playable ad
283
- Constraints: Transparent background, no extra elements, centered, clean crisp edges,
290
+ Constraints: No extra elements, centered, clean crisp edges,
284
291
  no watermark
285
292
  ```
286
293
 
287
294
  - CTA 颜色必须是游戏画面中**最少使用**的颜色(对比稀缺性原则)
288
295
  - 触控目标区域 ≥ 48×48px,生成建议尺寸 360×120px(9:3 比例)
289
- - 后处理:不需要去背景(直接生成透明背景或用绿幕)
296
+ - 后处理由工具完成,验证最终透明背景、文字与边缘。
290
297
 
291
298
  ---
292
299
 
@@ -299,7 +306,7 @@ Important details: [color] filled portion [80% of total width], unfilled portion
299
306
  rounded end caps, thin outer frame in [darker shade],
300
307
  optional inner glow on filled section
301
308
  Use case: Game HUD progress indicator, isolated UI element
302
- Constraints: Transparent background, horizontal orientation, no text labels,
309
+ Constraints: Horizontal orientation, no text labels,
303
310
  clean edges, no watermark
304
311
  ```
305
312
 
@@ -317,8 +324,7 @@ Important details: warm skin tone, white sleeve cuff visible at wrist,
317
324
  soft drop shadow beneath finger tip, friendly approachable style,
318
325
  [optional: subtle animated glow ring around fingertip]
319
326
  Use case: Tutorial overlay tap gesture for playable ad, points toward target element
320
- Constraints: Transparent background, PNG with alpha channel,
321
- no extra limbs or elements, finger pointing at bottom-center
327
+ Constraints: No extra limbs or elements, finger pointing at bottom-center
322
328
  ```
323
329
 
324
330
  **箭头变体**(更简洁):
@@ -328,7 +334,7 @@ Subject: Bold cartoon arrow pointing [down / right], game tutorial UI
328
334
  Style: flat 2D, thick outline 4px, rounded arrowhead
329
335
  Important details: [bright yellow / white] fill, [dark outline],
330
336
  slight perspective tilt for depth, attention-grabbing
331
- Constraints: Transparent background, single clean arrow shape, no text
337
+ Constraints: Single clean arrow shape, no text
332
338
  ```
333
339
 
334
340
  ---
@@ -342,7 +348,7 @@ Important details: white or [light color] fill, [2–3px] dark outline,
342
348
  tail pointing [down-left / down-center], interior empty for text overlay,
343
349
  subtle inner shadow or gradient
344
350
  Use case: Game tutorial hint tooltip, isolated UI asset
345
- Constraints: Transparent background, no text inside, clean edges,
351
+ Constraints: No text inside, clean edges,
346
352
  no watermark, no extra decorations
347
353
  ```
348
354
 
@@ -362,7 +368,7 @@ Important details: [treasure chest]: lid slightly ajar, golden glow escaping fro
362
368
  [gold coins]: scattered pile, gleaming highlights, not neatly stacked (implies uncollected);
363
369
  [gem crystal]: large, brilliant facets, floating above ground, clearly valuable
364
370
  Use case: EndCard reward visual, creates FOMO and drives install
365
- Constraints: Transparent background, centered, isolated subject,
371
+ Constraints: Centered, isolated subject,
366
372
  no CTA text (added separately), warm celebratory lighting
367
373
  ```
368
374
 
@@ -373,25 +379,19 @@ Constraints: Transparent background, centered, isolated subject,
373
379
 
374
380
  ### 📊 UI 元素背景处理规则速查
375
381
 
376
- | UI 元素类型 | prompt 背景写法 | 后处理 |
377
- | ---------------- | ----------------------------------------------- | ------------------------------ |
378
- | CTA 按钮 | `transparent background` 或绿幕 | floodfill 去背 |
379
- | 进度条 | `transparent background` 或绿幕 | floodfill 去背 |
380
- | 引导手势 | `transparent background, PNG with alpha` | floodfill 去背(tolerance 25) |
381
- | 对话气泡 | `transparent background` 或绿幕 | floodfill 去背 |
382
- | EndCard 奖励图标 | 绿幕(`solid bright green #00FF00 background`) | floodfill 去背(tolerance 25) |
382
+ CTA 按钮、进度条、引导手势、对话气泡与 EndCard 奖励图标都通过 `background: transparent` / `--background transparent` 要求最终透明;主体内容使用上述模板,源图背景按主文第 2 节准备。交付后验证文字、完整前景及深浅背景上的边缘。独立色幕制作沿用主文第 3 节的单一背景与独立去背流程。
383
383
 
384
384
  ---
385
385
 
386
386
  ## 六、常见问题 & 修正方案
387
387
 
388
- | 问题 | 原因 | 修正 |
389
- | ------------------ | -------------------- | ------------------------------------------------ |
390
- | 图标边缘有阴影 | 模型默认加立体效果 | 加 `no shadow, no drop shadow, flat 2D` |
391
- | 构图不居中 | 没有明确指定 | 加 `centered composition, subject centered` |
392
- | 背景不干净 | 背景描述不够明确 | 加 `solid white background, isolated` 或绿幕策略 |
393
- | 多个物体出现 | 主体不够明确 | 加 `a single [物体]`, `only one [物体]` |
394
- | 文字拼写错误 | 所有模型通病 | 尝试 gpt-image-2(最好),或多生成几张 |
395
- | 风格不一致(批量) | 没用 reference image | Phase 2 必须加 `--reference-image` |
396
- | 细节过于复杂 | 素材尺寸小但细节太多 | 加 `simple design, minimal details, bold shapes` |
397
- | 生成极慢/超时 | 模型负载高 | 换另一个 provider 或换模型 |
388
+ | 问题 | 原因 | 修正 |
389
+ | ------------------ | -------------------- | ------------------------------------------------------------------------ |
390
+ | 图标边缘有阴影 | 模型默认加立体效果 | 加 `no shadow, no drop shadow, flat 2D` |
391
+ | 构图不居中 | 没有明确指定 | 加 `centered composition, subject centered` |
392
+ | 背景不干净 | 交付要求或处理不匹配 | 核对背景开关、字段配置及模型对应的源图规则;检查最终验收,不混加背景要求 |
393
+ | 多个物体出现 | 主体不够明确 | 加 `a single [物体]`, `only one [物体]` |
394
+ | 文字拼写错误 | 所有模型通病 | 尝试 gpt-image-2(最好),或多生成几张 |
395
+ | 风格不一致(批量) | 没用 reference image | Phase 2 必须加 `--reference-image` |
396
+ | 细节过于复杂 | 素材尺寸小但细节太多 | 加 `simple design, minimal details, bold shapes` |
397
+ | 生成极慢/超时 | 模型负载高 | 换另一个 provider 或换模型 |
@@ -1,149 +0,0 @@
1
- # 远程技能管理
2
-
3
- `playcraft skills registry` 管理已部署注册表中的技能、不可变版本和发行审核。它与现有离线 `skills list/match/read`、项目 `skills project` 命令并存。服务端需要提供 `/api/agent/skill-registry/managed` 路由。
4
-
5
- 网页管理复用现有技能控制台的“发布与更新”页签:系统管理入口为 `/admin/system?tab=agentSkills`,技能工作台入口为 `/agent/skills?view=management`。不新增 Skills 一级导航,旧 `/skills` 仅保留兼容重定向。
6
-
7
- 2026-10-15 已在当前开发配置指定的目标数据库执行并验证 0186 和 [0187_add_skill_scope_governance.sql](../backend-business-server/drizzle/migrations/0187_add_skill_scope_governance.sql)。其他环境启用前仍须应用对应迁移,并部署配套服务与客户端。本次目标数据库升级不代表生产已上线或命令包已发行。
8
-
9
- ## 登录与目标环境
10
-
11
- ```bash
12
- playcraft login --url 'https://playcraft.example.com/__env/test-a'
13
- playcraft skills registry list --scope private --json
14
- ```
15
-
16
- 命令复用登录保存的 PAT (Personal Access Token, 个人访问令牌)。所有命令支持 `--url`、`--token`、`--json`、`--scope private|team|platform` 和 `--team <teamId>`。环境地址顺序为 `--url`、`PLAYCRAFT_API_URL`、`PLAYCRAFT_URL`、已保存地址、默认云端。令牌优先使用 `--token` 或 `PLAYCRAFT_TOKEN`,否则仅使用该环境保存的凭据。环境路径前缀完整保留,向其他环境不会自动发送原环境令牌。
17
-
18
- `private` 是默认范围;`team` 必须明确传入 `--team`,其他范围不能携带 `--team`。`--json` 成功时只输出一个结果对象,运行错误时只输出一个 `error` 对象并以非零状态退出。未知参数或缺少必填参数由命令解析器报告到标准错误。
19
-
20
- ## 查询与下载
21
-
22
- ```bash
23
- playcraft skills registry list --scope private --query video --limit 20 --json
24
- playcraft skills registry list --scope team --team '<teamId>' --cursor '<nextCursor>' --json
25
- playcraft skills registry list --scope platform --json
26
- playcraft skills registry info author/video-helper@1.2.0 --files --json
27
- playcraft skills registry info author/video-helper --versions --json
28
- playcraft skills registry pull author/video-helper@1.2.0 --out ./downloaded-skill --json
29
- ```
30
-
31
- `list` 支持关键词、1–100 条分页和返回的 `nextCursor`;不会自动取完所有页面。`info` 默认省略正文与文件清单,`--files` 返回文件清单,`--versions` 返回可访问版本。查询与下载可省略版本,此时先解析所选发行范围的当前版本,再按其精确版本标识下载。
32
-
33
- `pull` 同时验证元数据、响应头和压缩包的 SHA-256 (Secure Hash Algorithm 256-bit, 256 位安全散列算法) 摘要。包内已声明的 `skillRef/version` 必须匹配;历史制品可缺少声明,仍按服务端精确版本与摘要校验,不重写原制品。内容先写入临时目录,校验完成后原子落地;目标须不存在或为空,路径不能包含符号链接。拉取不会执行资源中的脚本,不修改项目声明、锁或运行时绑定。`.playcraft-skill.json` 保存环境、身份、版本和摘要,不含凭据;再次打包时自动排除。
34
-
35
- ## 上传与发布
36
-
37
- 技能目录必须包含非空 `SKILL.md`,可包含 `manifest.json`、`references/`、`scripts/`、`assets/` 等完整资源。`manifest.json` 可直接声明 `skillRef/version`;否则通过参数明确提供。标识必须是小写 `namespace/slug`,以字母或数字开头,允许连字符和下划线,slug 还允许点号。版本目前支持无前导零的精确 `x.y.z`,最多 32 字符;不支持预发行、构建后缀、`latest` 或版本范围。
38
-
39
- 首期上传接受 Markdown 技能包(`bundleType: "markdown"`),Atom 技能的查询与下载可用,上传管理尚未开放。正式发行还要求有效名称和描述,建议在 `SKILL.md` 的 frontmatter 中声明 `name` 与 `description`,或在清单中声明。平台发行还要求上传时通过 `--changelog` 提供变更说明,并完成平台评估与管理员审核。
40
-
41
- ```bash
42
- # 只登记草稿,不发布
43
- playcraft skills registry push ./my-skill --ref author/video-helper --version 1.2.0 --json
44
-
45
- # 上传后发布到本人范围;本人发布与更新免管理员审核
46
- playcraft skills registry publish ./my-skill --ref author/video-helper --version 1.2.0 --scope private --json
47
-
48
- # 上传新版本,明确旧版本;先同步修改清单中的 version(若已声明)
49
- playcraft skills registry update author/video-helper --from ./my-skill --version 1.3.0 --base-version 1.2.0 --changelog 'Improve examples' --json
50
- playcraft skills registry publish author/video-helper@1.3.0 --scope private --json
51
-
52
- # 同一精确版本推广到团队或平台,不重新分配身份
53
- playcraft skills registry publish author/video-helper@1.3.0 --scope team --team '<teamId>' --json
54
- playcraft skills registry publish author/video-helper@1.3.0 --scope platform --json
55
- ```
56
-
57
- 目录打包仅在内存中补充缺失的清单字段,不改动源目录。显式参数与现有清单身份或版本冲突时拒绝上传。`publish <ref>@<version>` 只发布已上传版本,不能同时传入目录上传参数 `--ref`、`--version`、`--base-version` 或 `--changelog`。排除根目录 `.git`、`node_modules` 和拉取回执;其他文件按目录完整收录,发布前应确保目录只包含需要分享的技能资源。拒绝符号链接、硬链接、不安全路径及大小超限:最多 512 个文件,单文件 16 MiB (Mebibyte, 二进制兆字节),内容总量与压缩包各 64 MiB。清单中的文件引用和显式摘要必须匹配实际文件。
58
-
59
- 全平台同一 `skillRef@version` 唯一;同内容重传复用版本,改内容必须增加版本号。已有命名空间占用或所有权冲突不会转换为更新他人技能。平台保留标识和新建平台归属技能由服务端管理员权限控制,普通作者可先上传本人技能,再向平台发行提审。
60
-
61
- `push/update` 返回 `published: false`。`publish` 先检查当前发行指针,再携带该指针提交;并发发行变更由服务端拒绝。本人发行免审核;团队发行须目标团队管理员批准;平台发行须平台管理员批准。没有有效批准时,发布返回 `status: "review_pending"`、`published: false` 和审核标识。以返回字段为准,命令成功不代表已经发行。
62
-
63
- ## 审核、历史与回滚
64
-
65
- ```bash
66
- playcraft skills registry publish-check author/video-helper@1.3.0 --scope team --team '<teamId>' --json
67
- playcraft skills registry review submit author/video-helper@1.3.0 --scope team --team '<teamId>' --json
68
- playcraft skills registry review list --scope team --team '<teamId>' --json
69
- playcraft skills registry review approve '<reviewId>' --json
70
- playcraft skills registry review reject '<reviewId>' --reason 'Add usage examples' --json
71
-
72
- # 审核后显式发布相同版本、相同目标范围
73
- playcraft skills registry publish author/video-helper@1.3.0 --scope team --team '<teamId>' --json
74
- playcraft skills registry history author/video-helper --scope team --team '<teamId>' --json
75
- playcraft skills registry rollback author/video-helper@1.2.0 --scope team --team '<teamId>' --reason 'Regression in 1.3.0' --json
76
- ```
77
-
78
- 审核决定只批准或拒绝指定申请,不自动执行发布。审核授权与申请目标范围由服务端校验。`publish-check` 显示硬性问题、评估问题、审核要求和当前发行指针;检查通过仍可能因发布时权限或指针改变而失败。回滚只移动选定范围的发行指针,复用已有精确版本,仍受该范围授权、审核和并发检查约束,不重写旧项目锁。
79
-
80
- ## 中断与恢复
81
-
82
- 修改请求不自动重试。命令在发出请求前将请求键及 `pending` 状态写入 `~/.playcraft/registry-requests/`,收到明确结果后记录 `completed/rejected`;回执不保存令牌或技能内容。发布与回滚同时保存操作目标、精确版本、摘要和首次检查得到的发行指针。超时、断线或响应无法确认目标时保留 `pending`;相同环境、凭据和操作的重试复用原请求键及原发行指针,不重新检查后覆盖其他人后来发布的版本。已明确完成或拒绝后,再次执行属于新的操作,会重新检查并分配请求键。服务端精确版本、内容摘要及发行指针是最终事实来源。上传后发布中断时,也可运行 `info <ref>@<version>`、`publish-check` 和 `history` 核对,再继续精确版本发布。
83
-
84
- ## 原生平台视频技能首次登记
85
-
86
- 云工作区默认使用的两个引用是 `remix/playcraft-video-understanding` 和 `remix/playcraft-replica-validation`。它们必须通过 `platform push` 登记,服务端会创建 `kind=platform`、`source=platform` 的原生身份。普通 `push --scope platform` 创建的是托管工作区技能,不能替代这一入口。
87
-
88
- ```bash
89
- playcraft skills registry platform push ./playcraft-video-understanding-1.0.1.tar.gz --changelog '更新视频理解指引与评估用例' --json
90
- playcraft skills registry platform push ./playcraft-replica-validation-1.0.1.tar.gz --changelog '更新复刻验收指引与评估用例' --json
91
- ```
92
-
93
- `platform push <source>` 接受完整目录或已准备的压缩包。目录必须已含原生 `manifest.json`;命令保留其文件内容,不补充托管技能默认字段。已有压缩包原样发送,不重打包。可选的 `--ref`、`--version` 必须与清单一致;可用 `--evaluation-template <templateId>` 指定初始评估模板。原生入口当前仅接受上述两个引用,要求平台类型、单一 `sandbox-agent` surface、对齐的名称与版本、无 imports/relationships;服务端执行完整校验与摘要归一化,并返回最终 `artifactHash`。登记不会自动评估、审核或发布。
94
-
95
- 此入口要求具有平台管理权限的真实账号凭据;命令复用目标环境登录,不发送本地身份模拟请求头。服务端需已部署允许真实管理员个人访问令牌访问原生登记和评估接口的版本。
96
-
97
- ## 真实评估
98
-
99
- 评估会使用指定工作区的模型和配置,在服务端评估执行器中实际运行用例。命令不构造通过记录,也不调用内部执行步骤接口。评估队列、执行器、模型和证据存储均须可用。先明确目标环境、工作区以及精确 `ref@version`,再选择模板和模型:
100
-
101
- ```bash
102
- playcraft skills registry evaluation templates list --json
103
- playcraft skills registry evaluation models --workspace '<workspaceId>' --json
104
- playcraft skills registry evaluation config get remix/playcraft-video-understanding@1.0.1 --scope platform --json
105
- ```
106
-
107
- 没有可用模板时,管理员可创建并启用模板:
108
-
109
- ```bash
110
- playcraft skills registry evaluation templates create --input ./evaluation-template.json --json
111
- playcraft skills registry evaluation templates enable '<templateId>' --json
112
- # 停用模板会使相关发布检查不再接受该模板
113
- playcraft skills registry evaluation templates disable '<templateId>' --json
114
- ```
115
-
116
- 模板输入文件只接受 `{ "key": "...", "name": "...", "spec": { ... } }`。`spec` 使用现有评估模板字段:`executor`、`dockerImage`、`cloudTemplateId`、`nodeVersion`、`opencodeVersion`、`modelConfigId`、`graderVersion`、`caseTimeoutSeconds`、`runTimeoutSeconds`、`globalConcurrency`。填写实际运行镜像与工具版本;使用本地 Docker 时不要填写虚构的云模板标识。运行平台如何选择执行器由部署配置决定,命令不会自动切换。模板创建会分配新修订,**不保证请求键幂等**;若响应丢失,先用 `templates list` 核对,再决定是否重试。
117
-
118
- 配置输入文件只接受 `{ "templateId": "...", "expectedRevision": 0, "spec": { ... } }`。`expectedRevision` 使用 `config get` 返回的修订号;`spec` 包含 `modelConfigId`、`caseTimeoutSeconds`、`cases`。用例结构及断言种类见 [共享评估类型](../common/src/skill-evaluation.ts)。填写有意义的真实提示词、输入文件、断言和必要的模型评审要求;服务端校验完整性、运行证据与发布条件。
119
-
120
- ```bash
121
- playcraft skills registry evaluation config set remix/playcraft-video-understanding@1.0.1 --scope platform --input ./video-evaluation-config.json --json
122
- playcraft skills registry evaluation run remix/playcraft-video-understanding@1.0.1 --scope platform --workspace '<workspaceId>' --config '<configId>' --request-key 'video-1-0-1-run-001' --wait --timeout 1800 --interval 3 --json
123
- ```
124
-
125
- `--config` 必须是保存返回的精确配置标识;工作区标识不要求是通用唯一标识符。请求键允许 8–128 位字母、数字、下划线或连字符;重新执行一次评估需新键,断线恢复同一次评估需复用原键及全部原参数。`--compare` 可同时评估当前稳定版作为基线。省略 `--wait` 时返回已创建评估;带 `--wait` 时只有 `phase=completed` 且 `verdict=passed` 才成功退出,失败或取消会返回包含评估记录的结构化错误并非零退出。
126
-
127
- ```bash
128
- playcraft skills registry evaluation status '<runId>' --json
129
- playcraft skills registry evaluation runs remix/playcraft-video-understanding@1.0.1 --scope platform --workspace '<workspaceId>' --json
130
- playcraft skills registry evaluation wait '<runId>' --timeout 1800 --interval 3 --json
131
- playcraft skills registry evaluation evidence '<runId>' --case '<caseResultId>' --json
132
- playcraft skills registry evaluation cancel '<runId>' --json
133
- ```
134
-
135
- `--case` 使用状态结果中的 `results[].id`,不是逻辑用例名 `normal/boundary/regression`。状态含用例结果和检查项;`evidence` 读取对应归档证据。轮询默认最多 600 秒、间隔 3 秒;超时只停止等待,不取消后台评估,也不自动重新发起。修改请求不自动重试;配置写入使用预期修订号,断线后先读取配置确认实际结果。
136
-
137
- ## 同一原生版本的正式发布
138
-
139
- 应用治理迁移后,原生平台身份也使用托管注册表的审核、检查和发布命令;不要调用旧发布接口。评估配置变化会使旧配置的审核和证据失效。完成真实评估后,对同一精确版本提交审核、查看证据并由有权限的管理员批准,然后发布:
140
-
141
- ```bash
142
- playcraft skills registry review submit remix/playcraft-video-understanding@1.0.1 --scope platform --json
143
- playcraft skills registry review approve '<reviewId>' --json
144
- playcraft skills registry publish-check remix/playcraft-video-understanding@1.0.1 --scope platform --json
145
- playcraft skills registry publish remix/playcraft-video-understanding@1.0.1 --scope platform --json
146
- playcraft skills registry history remix/playcraft-video-understanding --scope platform --json
147
- ```
148
-
149
- 对 `remix/playcraft-replica-validation@1.0.1` 独立完成同样流程。检查必须没有硬性或评估问题;最终核对 `published: true`、返回的精确版本与摘要,以及发行历史。命令没有例外发布选项,不跳过真实评估或审核。这里描述的是操作流程,新增命令的自动测试通过不代表任一环境已完成真实评估或正式发布。工作区预览绑定仍不属于本命令组。
@@ -1,157 +0,0 @@
1
- import { existsSync, readFileSync } from 'node:fs';
2
- import { homedir } from 'node:os';
3
- import { join } from 'node:path';
4
- import { loadGlobalConfig } from '../config.js';
5
- import { accountActivationMessage } from './messages.js';
6
- export const ACCOUNT_PENDING_ACTIVATION = 'account_pending_activation';
7
- export class AccountActivationError extends Error {
8
- code;
9
- status;
10
- retryable = false;
11
- constructor(code, message, status) {
12
- super(message);
13
- this.code = code;
14
- this.status = status;
15
- this.name = 'AccountActivationError';
16
- }
17
- }
18
- export function responseErrorCode(payload) {
19
- if (!payload || typeof payload !== 'object')
20
- return undefined;
21
- const { error, code } = payload;
22
- return typeof error?.code === 'string' ? error.code : typeof code === 'string' ? code : undefined;
23
- }
24
- export function pendingAccountActivationError(status, payload) {
25
- return status === 403 && responseErrorCode(payload) === ACCOUNT_PENDING_ACTIVATION
26
- ? new AccountActivationError(ACCOUNT_PENDING_ACTIVATION, `${ACCOUNT_PENDING_ACTIVATION}: ${accountActivationMessage('pending')}`, status)
27
- : undefined;
28
- }
29
- export function parseErrorPayload(text) {
30
- try {
31
- return JSON.parse(text);
32
- }
33
- catch {
34
- return undefined;
35
- }
36
- }
37
- function localActivationConfig() {
38
- for (const path of [
39
- join(process.cwd(), '.playcraft.json'),
40
- '/project/.playcraft.json',
41
- join(homedir(), '.playcraft.json'),
42
- ]) {
43
- if (!existsSync(path))
44
- continue;
45
- try {
46
- const config = JSON.parse(readFileSync(path, 'utf8'));
47
- if (config && typeof config === 'object' && !Array.isArray(config))
48
- return config;
49
- }
50
- catch {
51
- // Follow the existing local credential lookup when a file is unreadable.
52
- }
53
- }
54
- return {};
55
- }
56
- function stringValue(value) {
57
- return typeof value === 'string' && value ? value : undefined;
58
- }
59
- function activationBaseUrl(raw) {
60
- try {
61
- const url = new URL(raw);
62
- if (!['http:', 'https:'].includes(url.protocol) ||
63
- url.username ||
64
- url.password ||
65
- url.search ||
66
- url.hash)
67
- throw new Error();
68
- url.pathname = url.pathname.replace(/\/+$/, '').replace(/\/api$/, '');
69
- return url.toString().replace(/\/+$/, '');
70
- }
71
- catch {
72
- throw new AccountActivationError('INVALID_ACTIVATION_TARGET', accountActivationMessage('invalidTarget'));
73
- }
74
- }
75
- function savedTokenForTarget(config, rawUrl, target, environment) {
76
- if (!rawUrl || (stringValue(config.env)?.trim() || '') !== environment)
77
- return undefined;
78
- try {
79
- return activationBaseUrl(rawUrl) === target ? stringValue(config.token) : undefined;
80
- }
81
- catch {
82
- return undefined;
83
- }
84
- }
85
- function normalizedSavedUrl(raw) {
86
- try {
87
- return raw ? activationBaseUrl(raw) : undefined;
88
- }
89
- catch {
90
- return undefined;
91
- }
92
- }
93
- export async function activateAccount(options, defaultBaseUrl) {
94
- const local = localActivationConfig();
95
- const global = loadGlobalConfig();
96
- const localUrl = stringValue(local.apiUrl);
97
- const globalUrl = stringValue(global.backendUrl) || stringValue(global.url);
98
- const explicitUrl = options.url || process.env.PLAYCRAFT_API_URL || process.env.PLAYCRAFT_URL;
99
- const target = activationBaseUrl(explicitUrl || localUrl || globalUrl || defaultBaseUrl);
100
- const explicitToken = options.token || process.env.PLAYCRAFT_TOKEN || process.env.PLAYCRAFT_SANDBOX_TOKEN;
101
- const savedUrls = [normalizedSavedUrl(localUrl), normalizedSavedUrl(globalUrl)].filter(Boolean);
102
- const savedTokens = [stringValue(local.token), stringValue(global.token)].filter(Boolean);
103
- const environmentsConflict = savedUrls.length === 2 &&
104
- savedUrls[0] === savedUrls[1] &&
105
- (stringValue(local.env)?.trim() || '') !== (stringValue(global.env)?.trim() || '');
106
- const environmentTokensConflict = process.env.PLAYCRAFT_TOKEN &&
107
- process.env.PLAYCRAFT_SANDBOX_TOKEN &&
108
- process.env.PLAYCRAFT_TOKEN !== process.env.PLAYCRAFT_SANDBOX_TOKEN;
109
- const environmentUrlsConflict = process.env.PLAYCRAFT_API_URL &&
110
- process.env.PLAYCRAFT_URL &&
111
- normalizedSavedUrl(process.env.PLAYCRAFT_API_URL) !==
112
- normalizedSavedUrl(process.env.PLAYCRAFT_URL);
113
- if ((!explicitUrl && new Set(savedUrls).size > 1) ||
114
- (!explicitToken && new Set(savedTokens).size > 1) ||
115
- (environmentsConflict && !process.env.PLAYCRAFT_ENV) ||
116
- (environmentTokensConflict && !options.token) ||
117
- (environmentUrlsConflict && !options.url)) {
118
- throw new AccountActivationError('AMBIGUOUS_ACTIVATION_TARGET', accountActivationMessage('ambiguous'));
119
- }
120
- const environment = (process.env.PLAYCRAFT_ENV ||
121
- (!explicitUrl ? (localUrl ? stringValue(local.env) : stringValue(global.env)) : '') ||
122
- '').trim();
123
- const token = explicitToken ||
124
- savedTokenForTarget(local, localUrl, target, environment) ||
125
- savedTokenForTarget(global, globalUrl, target, environment);
126
- if (!token)
127
- throw new AccountActivationError('AUTH_REQUIRED', accountActivationMessage('missingToken'));
128
- if (!/^playcraft_pat_[A-Za-z0-9_-]{32}$/.test(token)) {
129
- throw new AccountActivationError('INVALID_ACTIVATION_TOKEN', accountActivationMessage('invalidToken'));
130
- }
131
- let response;
132
- try {
133
- response = await fetch(`${target}/api/settings/personal-access-tokens/activate`, {
134
- method: 'POST',
135
- redirect: 'error',
136
- signal: AbortSignal.timeout(30_000),
137
- headers: {
138
- Authorization: `Bearer ${token}`,
139
- ...(environment ? { 'playcraft-env': environment } : {}),
140
- },
141
- });
142
- }
143
- catch {
144
- throw new AccountActivationError('ACTIVATION_UNCONFIRMED', accountActivationMessage('unavailable'));
145
- }
146
- if (!response.ok) {
147
- await response.body?.cancel().catch(() => { });
148
- throw new AccountActivationError('ACTIVATION_FAILED', accountActivationMessage('failed'), response.status);
149
- }
150
- const result = await response.json().catch(() => undefined);
151
- if (!result ||
152
- typeof result !== 'object' ||
153
- result.accountStatus !== 'active') {
154
- throw new AccountActivationError('ACTIVATION_UNCONFIRMED', accountActivationMessage('unavailable'), response.status);
155
- }
156
- console.log(accountActivationMessage('success'));
157
- }
@@ -1,30 +0,0 @@
1
- const messages = {
2
- en: {
3
- activateOption: 'Explicitly activate the account using the current personal access token',
4
- tokenOption: 'Personal access token for --activate (or use PLAYCRAFT_TOKEN)',
5
- pending: 'Account activation is required. Run `playcraft login --activate` with the same token and target environment, then rerun your command.',
6
- success: 'Account activated. Rerun your original command to continue.',
7
- missingToken: 'No personal access token matches this target environment. Provide PLAYCRAFT_TOKEN or log in to this environment first.',
8
- invalidToken: 'Account activation requires a personal access token. A sandbox token cannot activate an account.',
9
- ambiguous: 'Activation credentials or target environments conflict. Specify --url, PLAYCRAFT_ENV when needed, and an explicit personal access token using --token or PLAYCRAFT_TOKEN.',
10
- invalidTarget: 'Use a web service base address (http:// or https://) without credentials, a query, or a fragment.',
11
- failed: 'Account activation failed. Check the target environment and token before trying again.',
12
- unavailable: 'Account activation could not be confirmed. Check your account status before explicitly trying again.',
13
- },
14
- zh: {
15
- activateOption: '明确使用当前个人访问令牌激活账号',
16
- tokenOption: '用于 --activate 的个人访问令牌(也可使用 PLAYCRAFT_TOKEN)',
17
- pending: '账号需要激活。请使用同一令牌和目标环境主动运行 `playcraft login --activate`,然后重新执行原命令。',
18
- success: '账号已激活,请重新执行原命令继续。',
19
- missingToken: '没有与目标环境匹配的个人访问令牌。请提供 PLAYCRAFT_TOKEN,或先登录此环境。',
20
- invalidToken: '激活账号需要个人访问令牌,沙箱令牌不能用于激活账号。',
21
- ambiguous: '激活凭据或目标环境存在冲突。请明确指定 --url、所需的 PLAYCRAFT_ENV,并通过 --token 或 PLAYCRAFT_TOKEN 提供个人访问令牌。',
22
- invalidTarget: '激活目标必须是网页服务基址(http:// 或 https://),不能包含凭据、查询参数或片段。',
23
- failed: '账号激活失败,请检查目标环境和令牌后再尝试。',
24
- unavailable: '无法确认账号是否已激活。请先检查账号状态,再主动决定是否重试。',
25
- },
26
- };
27
- export function accountActivationMessage(key) {
28
- const locale = process.env.PLAYCRAFT_LANGUAGE || process.env.LANG || 'en';
29
- return messages[locale.startsWith('zh') ? 'zh' : 'en'][key];
30
- }
@@ -1,26 +0,0 @@
1
- import { randomUUID } from 'node:crypto';
2
- import { mkdir, rm } from 'node:fs/promises';
3
- import path from 'node:path';
4
- export async function createBuildTempDirectory(projectPath) {
5
- const parent = path.join(projectPath, '.playcraft-temp');
6
- await mkdir(parent, { recursive: true });
7
- const directory = path.join(parent, `base-build-${randomUUID()}`);
8
- // mkdir 继承工程的共享组和权限掩码;mkdtemp 固定使用 0700。
9
- await mkdir(directory);
10
- return directory;
11
- }
12
- export async function cleanupBuildTempDirectory(directory) {
13
- if (!directory)
14
- return;
15
- if (process.env.PLAYCRAFT_KEEP_BUILD_TEMP === '1') {
16
- console.log(`构建临时目录保留在: ${directory}`);
17
- return;
18
- }
19
- try {
20
- // 只删除本次创建的目录,保留并发构建与用户输入;父目录不做递归清理。
21
- await rm(directory, { recursive: true, force: true });
22
- }
23
- catch (error) {
24
- console.warn(`清理构建临时目录失败: ${error instanceof Error ? error.message : String(error)}`);
25
- }
26
- }
@@ -1,19 +0,0 @@
1
- // 此文件由 scripts/generate-platform-skills.mjs 生成,请勿手改。
2
- // 重新生成:pnpm --filter @playcraft/cli generate:platform-skills
3
- /** `@playcraft/skills/playcraft-skills/` 下的 Platform Skill 目录名。 */
4
- export const PLATFORM_SKILL_DIRS = [
5
- 'playcraft-3d-flip-sprite',
6
- 'playcraft-asset-management',
7
- 'playcraft-build',
8
- 'playcraft-code-editor',
9
- 'playcraft-create-remix',
10
- 'playcraft-deploy',
11
- 'playcraft-iteration-methodology',
12
- 'playcraft-platform-intro',
13
- 'playcraft-prefab',
14
- 'playcraft-project-management',
15
- 'playcraft-remix-workflow',
16
- 'playcraft-save',
17
- 'playcraft-template-upgrade-merge',
18
- 'sound-effects',
19
- ];