@playcraft/skills 0.0.2

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 (479) hide show
  1. package/README.md +333 -0
  2. package/dist/src/index.d.ts +3 -0
  3. package/dist/src/index.d.ts.map +1 -0
  4. package/dist/src/index.js +2 -0
  5. package/dist/src/index.js.map +1 -0
  6. package/dist/src/skills.loader.d.ts +31 -0
  7. package/dist/src/skills.loader.d.ts.map +1 -0
  8. package/dist/src/skills.loader.js +200 -0
  9. package/dist/src/skills.loader.js.map +1 -0
  10. package/dist/src/skills.types.d.ts +44 -0
  11. package/dist/src/skills.types.d.ts.map +1 -0
  12. package/dist/src/skills.types.js +9 -0
  13. package/dist/src/skills.types.js.map +1 -0
  14. package/package.json +35 -0
  15. package/skills/2048_core.aigameplay/SKILL.md +123 -0
  16. package/skills/2048_core.aigameplay/manifest.json +159 -0
  17. package/skills/2048_core.aigameplay/ref/pgs-schema.json +194 -0
  18. package/skills/2048_core.aigameplay/ref/reducer.template.ts +189 -0
  19. package/skills/SKILL.md +46 -0
  20. package/skills/ad_compliance_rules.aiconfig/SKILL.md +85 -0
  21. package/skills/ad_compliance_rules.aiconfig/manifest.json +60 -0
  22. package/skills/agent_remix_orchestrator.aicomponent/SKILL.md +257 -0
  23. package/skills/agent_remix_orchestrator.aicomponent/manifest.json +12 -0
  24. package/skills/app_metadata.aiconfig/SKILL.md +53 -0
  25. package/skills/app_metadata.aiconfig/manifest.json +32 -0
  26. package/skills/appear_sfx.aiaudio/SKILL.md +59 -0
  27. package/skills/appear_sfx.aiaudio/manifest.json +45 -0
  28. package/skills/appear_sfx.aiaudio/ref/appear.mp3 +0 -0
  29. package/skills/arrow_move_error_sfx.aiaudio/SKILL.md +59 -0
  30. package/skills/arrow_move_error_sfx.aiaudio/manifest.json +45 -0
  31. package/skills/arrow_move_error_sfx.aiaudio/ref/arrow_move_error.mp3 +0 -0
  32. package/skills/arrow_path_data_format.aicomponent/SKILL.md +152 -0
  33. package/skills/arrow_path_data_format.aicomponent/manifest.json +57 -0
  34. package/skills/arrow_path_data_format.aicomponent/ref/LevelParser.ts +188 -0
  35. package/skills/arrow_path_data_format.aicomponent/ref/LevelTypes.ts +131 -0
  36. package/skills/arrow_pick_match_rules.aigameplay/SKILL.md +117 -0
  37. package/skills/arrow_pick_match_rules.aigameplay/manifest.json +105 -0
  38. package/skills/arrow_pick_match_rules.aigameplay/ref/pgs-schema.json +180 -0
  39. package/skills/asset_pipeline_scripts.aicomponent/SKILL.md +117 -0
  40. package/skills/asset_pipeline_scripts.aicomponent/manifest.json +17 -0
  41. package/skills/asset_pipeline_scripts.aicomponent/ref/gen-sprite.sh +105 -0
  42. package/skills/ball_sort.aigameplay/SKILL.md +109 -0
  43. package/skills/ball_sort.aigameplay/manifest.json +155 -0
  44. package/skills/ball_sort.aigameplay/ref/pgs-schema.json +192 -0
  45. package/skills/ball_sort.aigameplay/ref/reducer.template.ts +156 -0
  46. package/skills/basketball_shot.aigameplay/SKILL.md +94 -0
  47. package/skills/basketball_shot.aigameplay/manifest.json +150 -0
  48. package/skills/basketball_shot.aigameplay/ref/pgs-schema.json +229 -0
  49. package/skills/basketball_shot.aigameplay/ref/reducer.template.ts +189 -0
  50. package/skills/bg_music.aiaudio/SKILL.md +61 -0
  51. package/skills/bg_music.aiaudio/manifest.json +48 -0
  52. package/skills/bg_music.aiaudio/ref/bg.mp3 +0 -0
  53. package/skills/big_watermelon.aigameplay/SKILL.md +94 -0
  54. package/skills/big_watermelon.aigameplay/manifest.json +155 -0
  55. package/skills/big_watermelon.aigameplay/ref/pgs-schema.json +191 -0
  56. package/skills/big_watermelon.aigameplay/ref/reducer.template.ts +202 -0
  57. package/skills/block_puzzle.aigameplay/SKILL.md +121 -0
  58. package/skills/block_puzzle.aigameplay/manifest.json +154 -0
  59. package/skills/block_puzzle.aigameplay/ref/pgs-schema.json +170 -0
  60. package/skills/block_puzzle.aigameplay/ref/reducer.template.ts +182 -0
  61. package/skills/board_entity_sprite.aiimage/SKILL.md +255 -0
  62. package/skills/board_entity_sprite.aiimage/manifest.json +153 -0
  63. package/skills/board_entity_sprite.aiimage/ref/ProceduralCar.ts +357 -0
  64. package/skills/board_entity_sprite.aiimage/ref/car.png +0 -0
  65. package/skills/board_entity_sprite.aiimage/ref/car.webp +0 -0
  66. package/skills/bottom_ui_bar.aicomponent/SKILL.md +50 -0
  67. package/skills/bottom_ui_bar.aicomponent/manifest.json +31 -0
  68. package/skills/bottom_ui_bar.aicomponent/ref/GameBottomUI.ts +27 -0
  69. package/skills/bubble_shooter.aigameplay/SKILL.md +129 -0
  70. package/skills/bubble_shooter.aigameplay/manifest.json +181 -0
  71. package/skills/bubble_shooter.aigameplay/ref/pgs-schema.json +226 -0
  72. package/skills/bubble_shooter.aigameplay/ref/reducer.template.ts +228 -0
  73. package/skills/button_click_sfx.aiaudio/SKILL.md +59 -0
  74. package/skills/button_click_sfx.aiaudio/manifest.json +45 -0
  75. package/skills/button_click_sfx.aiaudio/ref/button_click.mp3 +0 -0
  76. package/skills/calm_piano.aiaudio/SKILL.md +68 -0
  77. package/skills/calm_piano.aiaudio/manifest.json +50 -0
  78. package/skills/camera_controller_3d.aicomponent/SKILL.md +100 -0
  79. package/skills/camera_controller_3d.aicomponent/manifest.json +52 -0
  80. package/skills/camera_controller_3d.aicomponent/ref/CameraController.ts +199 -0
  81. package/skills/camera_controller_3d.aicomponent/ref/OrbitControlsAdapter.ts +152 -0
  82. package/skills/candy_tile.aiimage/SKILL.md +62 -0
  83. package/skills/candy_tile.aiimage/manifest.json +49 -0
  84. package/skills/car_parking.aigameplay/SKILL.md +105 -0
  85. package/skills/car_parking.aigameplay/manifest.json +164 -0
  86. package/skills/car_parking.aigameplay/ref/pgs-schema.json +163 -0
  87. package/skills/car_parking.aigameplay/ref/reducer.template.ts +166 -0
  88. package/skills/castle.aiimage/SKILL.md +64 -0
  89. package/skills/castle.aiimage/manifest.json +48 -0
  90. package/skills/cheerful_ukulele.aiaudio/SKILL.md +72 -0
  91. package/skills/cheerful_ukulele.aiaudio/manifest.json +50 -0
  92. package/skills/click_sfx.aiaudio/SKILL.md +59 -0
  93. package/skills/click_sfx.aiaudio/manifest.json +45 -0
  94. package/skills/click_sfx.aiaudio/ref/click.mp3 +0 -0
  95. package/skills/combo_display.aicomponent/SKILL.md +45 -0
  96. package/skills/combo_display.aicomponent/manifest.json +31 -0
  97. package/skills/combo_display.aicomponent/ref/ComboManager.ts +362 -0
  98. package/skills/combo_display.aicomponent/ref/ComboSmallUI.ts +232 -0
  99. package/skills/combo_praise_text.aicomponent/SKILL.md +56 -0
  100. package/skills/combo_praise_text.aicomponent/manifest.json +34 -0
  101. package/skills/combo_praise_text.aicomponent/ref/ComboManager.ts +362 -0
  102. package/skills/countdown_timer.aicomponent/SKILL.md +44 -0
  103. package/skills/countdown_timer.aicomponent/manifest.json +35 -0
  104. package/skills/countdown_timer.aicomponent/ref/CountdownDisplay.ts +213 -0
  105. package/skills/cta_platform_config.aiconfig/SKILL.md +72 -0
  106. package/skills/cta_platform_config.aiconfig/manifest.json +56 -0
  107. package/skills/debug_overlay.aicomponent/SKILL.md +75 -0
  108. package/skills/debug_overlay.aicomponent/manifest.json +17 -0
  109. package/skills/debug_overlay.aicomponent/ref/DebugOverlay.ts +144 -0
  110. package/skills/desert.aiimage/SKILL.md +63 -0
  111. package/skills/desert.aiimage/manifest.json +49 -0
  112. package/skills/difficulty_curve_designer.aiconfig/SKILL.md +68 -0
  113. package/skills/difficulty_curve_designer.aiconfig/manifest.json +36 -0
  114. package/skills/digit_renderer.aicomponent/SKILL.md +43 -0
  115. package/skills/digit_renderer.aicomponent/manifest.json +25 -0
  116. package/skills/digit_renderer.aicomponent/ref/DigitRenderer.ts +237 -0
  117. package/skills/download_button.aicomponent/SKILL.md +44 -0
  118. package/skills/download_button.aicomponent/manifest.json +25 -0
  119. package/skills/download_button.aicomponent/ref/DownloadButton.ts +137 -0
  120. package/skills/draw_line_puzzle.aigameplay/SKILL.md +84 -0
  121. package/skills/draw_line_puzzle.aigameplay/manifest.json +152 -0
  122. package/skills/draw_line_puzzle.aigameplay/ref/pgs-schema.json +189 -0
  123. package/skills/draw_line_puzzle.aigameplay/ref/reducer.template.ts +194 -0
  124. package/skills/easy_to_hard.aiconfig/SKILL.md +52 -0
  125. package/skills/easy_to_hard.aiconfig/manifest.json +33 -0
  126. package/skills/eight_ball_pool.aigameplay/SKILL.md +104 -0
  127. package/skills/eight_ball_pool.aigameplay/manifest.json +152 -0
  128. package/skills/eight_ball_pool.aigameplay/ref/pgs-schema.json +205 -0
  129. package/skills/eight_ball_pool.aigameplay/ref/reducer.template.ts +198 -0
  130. package/skills/energetic_electronic.aiaudio/SKILL.md +69 -0
  131. package/skills/energetic_electronic.aiaudio/manifest.json +51 -0
  132. package/skills/fail_sfx.aiaudio/SKILL.md +59 -0
  133. package/skills/fail_sfx.aiaudio/manifest.json +44 -0
  134. package/skills/fail_sfx.aiaudio/ref/fail.mp3 +0 -0
  135. package/skills/figer_icon.aiimage/SKILL.md +58 -0
  136. package/skills/figer_icon.aiimage/manifest.json +48 -0
  137. package/skills/figer_icon.aiimage/ref/figer.png +0 -0
  138. package/skills/figer_icon.aiimage/ref/figer.webp +0 -0
  139. package/skills/forest.aiimage/SKILL.md +74 -0
  140. package/skills/forest.aiimage/manifest.json +48 -0
  141. package/skills/fruit_tile.aiimage/SKILL.md +68 -0
  142. package/skills/fruit_tile.aiimage/manifest.json +48 -0
  143. package/skills/game_over_panel.aicomponent/SKILL.md +47 -0
  144. package/skills/game_over_panel.aicomponent/manifest.json +61 -0
  145. package/skills/game_over_panel.aicomponent/ref/GameOverPanel.ts +74 -0
  146. package/skills/game_scene.aicomponent/SKILL.md +57 -0
  147. package/skills/game_scene.aicomponent/manifest.json +36 -0
  148. package/skills/game_scene.aicomponent/ref/Game.ts +748 -0
  149. package/skills/gameplay_balance_check.aivalidator/SKILL.md +69 -0
  150. package/skills/gameplay_balance_check.aivalidator/manifest.json +21 -0
  151. package/skills/gameplay_unit_test.aivalidator/SKILL.md +89 -0
  152. package/skills/gameplay_unit_test.aivalidator/manifest.json +17 -0
  153. package/skills/gameplay_unit_test.aivalidator/ref/gameplay.test.ts +202 -0
  154. package/skills/gameplay_unit_test.aivalidator/ref/vitest.config.ts +13 -0
  155. package/skills/grid_board_layout.aicomponent/SKILL.md +85 -0
  156. package/skills/grid_board_layout.aicomponent/manifest.json +69 -0
  157. package/skills/grid_board_layout.aicomponent/ref/BoardLayout.ts +416 -0
  158. package/skills/grid_board_layout.aicomponent/ref/BoardLayout3D.ts +125 -0
  159. package/skills/grid_board_layout.aicomponent/ref/BoardLayoutMath.ts +85 -0
  160. package/skills/grid_board_layout.aicomponent/ref/BoardRenderer3D.ts +298 -0
  161. package/skills/heart_lives.aicomponent/SKILL.md +42 -0
  162. package/skills/heart_lives.aicomponent/manifest.json +25 -0
  163. package/skills/heart_lives.aicomponent/ref/HeartDisplay.ts +96 -0
  164. package/skills/idle-breathe.aicomponent/SKILL.md +27 -0
  165. package/skills/idle-breathe.aicomponent/manifest.json +20 -0
  166. package/skills/idle-breathe.aicomponent/ref/phaser.js +25 -0
  167. package/skills/idle-breathe.aicomponent/ref/playcanvas.js +29 -0
  168. package/skills/jewel_tile.aiimage/SKILL.md +63 -0
  169. package/skills/jewel_tile.aiimage/manifest.json +49 -0
  170. package/skills/knife_hit.aigameplay/SKILL.md +103 -0
  171. package/skills/knife_hit.aigameplay/manifest.json +151 -0
  172. package/skills/knife_hit.aigameplay/ref/pgs-schema.json +202 -0
  173. package/skills/knife_hit.aigameplay/ref/reducer.template.ts +196 -0
  174. package/skills/left_right_parkour.aigameplay/SKILL.md +120 -0
  175. package/skills/left_right_parkour.aigameplay/manifest.json +165 -0
  176. package/skills/left_right_parkour.aigameplay/ref/pgs-schema.json +200 -0
  177. package/skills/left_right_parkour.aigameplay/ref/reducer.template.ts +194 -0
  178. package/skills/level_data_pack.aiconfig/SKILL.md +64 -0
  179. package/skills/level_data_pack.aiconfig/manifest.json +37 -0
  180. package/skills/level_data_validator.aivalidator/SKILL.md +85 -0
  181. package/skills/level_data_validator.aivalidator/manifest.json +17 -0
  182. package/skills/level_data_validator.aivalidator/ref/LevelValidator.ts +113 -0
  183. package/skills/level_lifecycle.aicomponent/SKILL.md +81 -0
  184. package/skills/level_lifecycle.aicomponent/manifest.json +87 -0
  185. package/skills/level_lifecycle.aicomponent/ref/LevelLifecycle.ts +235 -0
  186. package/skills/level_solvability_validator.aivalidator/SKILL.md +74 -0
  187. package/skills/level_solvability_validator.aivalidator/manifest.json +23 -0
  188. package/skills/level_solvability_validator.aivalidator/ref/LevelValidator.ts +186 -0
  189. package/skills/level_state.aicomponent/SKILL.md +55 -0
  190. package/skills/level_state.aicomponent/manifest.json +34 -0
  191. package/skills/level_state.aicomponent/ref/LevelDataManager.ts +26 -0
  192. package/skills/level_state.aicomponent/ref/LevelManager.ts +26 -0
  193. package/skills/loading_screen.aicomponent/SKILL.md +57 -0
  194. package/skills/loading_screen.aicomponent/manifest.json +43 -0
  195. package/skills/loading_screen.aicomponent/ref/LoadingUI.ts +339 -0
  196. package/skills/lose_result_panel.aiimage/SKILL.md +58 -0
  197. package/skills/lose_result_panel.aiimage/manifest.json +47 -0
  198. package/skills/lose_result_panel.aiimage/ref/lose.png +0 -0
  199. package/skills/lose_result_panel.aiimage/ref/lose.webp +0 -0
  200. package/skills/lose_sfx.aiaudio/SKILL.md +59 -0
  201. package/skills/lose_sfx.aiaudio/manifest.json +45 -0
  202. package/skills/lose_sfx.aiaudio/ref/lose.mp3 +0 -0
  203. package/skills/match-pop.aicomponent/SKILL.md +29 -0
  204. package/skills/match-pop.aicomponent/manifest.json +19 -0
  205. package/skills/match-pop.aicomponent/ref/phaser.js +30 -0
  206. package/skills/match-pop.aicomponent/ref/playcanvas.js +22 -0
  207. package/skills/match3_core.aigameplay/SKILL.md +125 -0
  208. package/skills/match3_core.aigameplay/manifest.json +107 -0
  209. package/skills/match3_core.aigameplay/ref/pgs-schema.json +154 -0
  210. package/skills/match3_core.aigameplay/ref/reducer.template.ts +191 -0
  211. package/skills/match_engine.aicomponent/SKILL.md +84 -0
  212. package/skills/match_engine.aicomponent/manifest.json +23 -0
  213. package/skills/match_engine.aicomponent/ref/MatchEngine.ts +75 -0
  214. package/skills/memory_match.aigameplay/SKILL.md +111 -0
  215. package/skills/memory_match.aigameplay/manifest.json +164 -0
  216. package/skills/memory_match.aigameplay/ref/pgs-schema.json +190 -0
  217. package/skills/memory_match.aigameplay/ref/reducer.template.ts +162 -0
  218. package/skills/merge_core.aigameplay/SKILL.md +112 -0
  219. package/skills/merge_core.aigameplay/manifest.json +154 -0
  220. package/skills/merge_core.aigameplay/ref/pgs-schema.json +202 -0
  221. package/skills/merge_core.aigameplay/ref/reducer.template.ts +179 -0
  222. package/skills/mistake_sfx.aiaudio/SKILL.md +59 -0
  223. package/skills/mistake_sfx.aiaudio/manifest.json +45 -0
  224. package/skills/mistake_sfx.aiaudio/ref/mistake.mp3 +0 -0
  225. package/skills/nomove_hint_overlay.aiimage/SKILL.md +58 -0
  226. package/skills/nomove_hint_overlay.aiimage/manifest.json +48 -0
  227. package/skills/nomove_hint_overlay.aiimage/ref/nomove_hint.png +0 -0
  228. package/skills/nomove_hint_overlay.aiimage/ref/nomove_hint.webp +0 -0
  229. package/skills/normal_dot.aiimage/SKILL.md +58 -0
  230. package/skills/normal_dot.aiimage/manifest.json +46 -0
  231. package/skills/normal_dot.aiimage/ref/normal_dot.png +0 -0
  232. package/skills/normal_dot.aiimage/ref/normal_dot.webp +0 -0
  233. package/skills/ocean.aiimage/SKILL.md +71 -0
  234. package/skills/ocean.aiimage/manifest.json +49 -0
  235. package/skills/particle-confetti.aicomponent/SKILL.md +32 -0
  236. package/skills/particle-confetti.aicomponent/manifest.json +21 -0
  237. package/skills/particle-confetti.aicomponent/ref/html5-spritesheet.js +17 -0
  238. package/skills/particle-confetti.aicomponent/ref/phaser.js +38 -0
  239. package/skills/particle-explosion.aicomponent/SKILL.md +37 -0
  240. package/skills/particle-explosion.aicomponent/manifest.json +24 -0
  241. package/skills/particle-explosion.aicomponent/ref/html5-spritesheet.js +40 -0
  242. package/skills/particle-explosion.aicomponent/ref/phaser.js +46 -0
  243. package/skills/particle-explosion.aicomponent/ref/playcanvas.js +33 -0
  244. package/skills/particle-trail.aicomponent/SKILL.md +25 -0
  245. package/skills/particle-trail.aicomponent/manifest.json +22 -0
  246. package/skills/particle-trail.aicomponent/ref/phaser.js +31 -0
  247. package/skills/path_animation.aicomponent/SKILL.md +82 -0
  248. package/skills/path_animation.aicomponent/manifest.json +77 -0
  249. package/skills/path_animation.aicomponent/ref/AnimationManager.ts +694 -0
  250. package/skills/path_animation.aicomponent/ref/AnimationManager3D.ts +317 -0
  251. package/skills/path_elimination_rules.aigameplay/SKILL.md +88 -0
  252. package/skills/path_elimination_rules.aigameplay/manifest.json +119 -0
  253. package/skills/path_elimination_rules.aigameplay/ref/pgs-schema.json +227 -0
  254. package/skills/path_input_handler.aicomponent/SKILL.md +87 -0
  255. package/skills/path_input_handler.aicomponent/manifest.json +97 -0
  256. package/skills/path_input_handler.aicomponent/ref/InputHandler.ts +714 -0
  257. package/skills/path_input_handler.aicomponent/ref/InputHandler3D.ts +204 -0
  258. package/skills/path_renderer.aicomponent/SKILL.md +101 -0
  259. package/skills/path_renderer.aicomponent/manifest.json +69 -0
  260. package/skills/path_renderer.aicomponent/ref/PathRenderer.ts +509 -0
  261. package/skills/path_renderer.aicomponent/ref/PathRenderer3D.ts +176 -0
  262. package/skills/path_renderer.aicomponent/ref/PathRenderers.ts +640 -0
  263. package/skills/phaser.aicomponent/SKILL.md +315 -0
  264. package/skills/phaser.aicomponent/manifest.json +156 -0
  265. package/skills/phaser.aicomponent/ref/BootScene.ts +29 -0
  266. package/skills/phaser.aicomponent/ref/GameConfig.ts +29 -0
  267. package/skills/phaser.aicomponent/ref/GameScene.ts +88 -0
  268. package/skills/phaser.aicomponent/ref/PreloaderScene.ts +78 -0
  269. package/skills/phaser.aicomponent/ref/SceneKeys.ts +7 -0
  270. package/skills/phaser.aicomponent/ref/SoundUtils.ts +21 -0
  271. package/skills/phaser.aicomponent/ref/UiLayout.ts +74 -0
  272. package/skills/phaser.aicomponent/ref/globals.d.ts +52 -0
  273. package/skills/phaser.aicomponent/ref/index.css +40 -0
  274. package/skills/phaser.aicomponent/ref/index.html +14 -0
  275. package/skills/phaser.aicomponent/ref/index.ts +48 -0
  276. package/skills/phaser.aicomponent/ref/main.ts +16 -0
  277. package/skills/phaser.aicomponent/ref/package.json +22 -0
  278. package/skills/phaser.aicomponent/ref/tsconfig.json +25 -0
  279. package/skills/phaser.aicomponent/ref/webpack.config.js +57 -0
  280. package/skills/phaser_scene_lifecycle.aicomponent/SKILL.md +63 -0
  281. package/skills/phaser_scene_lifecycle.aicomponent/manifest.json +33 -0
  282. package/skills/pick_and_match_rules.aigameplay/SKILL.md +113 -0
  283. package/skills/pick_and_match_rules.aigameplay/manifest.json +121 -0
  284. package/skills/pick_and_match_rules.aigameplay/ref/pgs-schema.json +354 -0
  285. package/skills/pin_pull.aigameplay/SKILL.md +110 -0
  286. package/skills/pin_pull.aigameplay/manifest.json +164 -0
  287. package/skills/pin_pull.aigameplay/ref/pgs-schema.json +201 -0
  288. package/skills/pin_pull.aigameplay/ref/reducer.template.ts +216 -0
  289. package/skills/playable_app_logo.aiimage/SKILL.md +58 -0
  290. package/skills/playable_app_logo.aiimage/manifest.json +47 -0
  291. package/skills/playable_app_logo.aiimage/ref/logo.png +0 -0
  292. package/skills/playable_app_logo.aiimage/ref/logo.webp +0 -0
  293. package/skills/playable_end_screen_layout.aicomponent/SKILL.md +75 -0
  294. package/skills/playable_end_screen_layout.aicomponent/manifest.json +24 -0
  295. package/skills/playable_guidance_layer.aicomponent/SKILL.md +89 -0
  296. package/skills/playable_guidance_layer.aicomponent/manifest.json +24 -0
  297. package/skills/playable_hud_layout.aicomponent/SKILL.md +96 -0
  298. package/skills/playable_hud_layout.aicomponent/manifest.json +24 -0
  299. package/skills/playable_scripts_build.aicomponent/SKILL.md +69 -0
  300. package/skills/playable_scripts_build.aicomponent/manifest.json +53 -0
  301. package/skills/playable_scripts_build.aicomponent/ref/builds.config.js +257 -0
  302. package/skills/playcraft-3d-flip-sprite/SKILL.md +336 -0
  303. package/skills/playcraft-3d-flip-sprite/renderer/flatten_glb.mjs +62 -0
  304. package/skills/playcraft-3d-flip-sprite/renderer/render.mjs +325 -0
  305. package/skills/playcraft-3d-flip-sprite/renderer/render_single.mjs +138 -0
  306. package/skills/playcraft-asset-management/SKILL.md +73 -0
  307. package/skills/playcraft-audio-generation/SKILL.md +126 -0
  308. package/skills/playcraft-build/SKILL.md +44 -0
  309. package/skills/playcraft-code-editor/SKILL.md +71 -0
  310. package/skills/playcraft-create-remix/SKILL.md +62 -0
  311. package/skills/playcraft-deploy/SKILL.md +59 -0
  312. package/skills/playcraft-image-generation/SKILL.md +148 -0
  313. package/skills/playcraft-image-processing/SKILL.md +216 -0
  314. package/skills/playcraft-platform-intro/SKILL.md +41 -0
  315. package/skills/playcraft-prefab/SKILL.md +98 -0
  316. package/skills/playcraft-project-management/SKILL.md +57 -0
  317. package/skills/playcraft-remix-workflow/SKILL.md +119 -0
  318. package/skills/playcraft-remix-workflow/references/xplatform.schema.json5 +31 -0
  319. package/skills/playcraft-save/SKILL.md +46 -0
  320. package/skills/playcraft-skill-recommender/SKILL.md +152 -0
  321. package/skills/playcraft-sprite-generation/SKILL.md +534 -0
  322. package/skills/playcraft-sprite-remix/SKILL.md +155 -0
  323. package/skills/playcraft-sprite-sheet/SKILL.md +97 -0
  324. package/skills/playtest_report.aivalidator/SKILL.md +103 -0
  325. package/skills/playtest_report.aivalidator/manifest.json +21 -0
  326. package/skills/preloader_scene.aicomponent/SKILL.md +58 -0
  327. package/skills/preloader_scene.aicomponent/manifest.json +43 -0
  328. package/skills/preloader_scene.aicomponent/ref/Preloader.ts +339 -0
  329. package/skills/progress_bar.aicomponent/SKILL.md +38 -0
  330. package/skills/progress_bar.aicomponent/manifest.json +25 -0
  331. package/skills/progress_bar.aicomponent/ref/ProgressDisplay.ts +140 -0
  332. package/skills/references/xplatform.schema.json5 +31 -0
  333. package/skills/responsive_2d_layout.aicomponent/SKILL.md +161 -0
  334. package/skills/responsive_2d_layout.aicomponent/manifest.json +43 -0
  335. package/skills/responsive_2d_layout.aicomponent/ref/UiLayout.ts +56 -0
  336. package/skills/run_context_state.aicomponent/SKILL.md +54 -0
  337. package/skills/run_context_state.aicomponent/manifest.json +40 -0
  338. package/skills/run_context_state.aicomponent/ref/RunContextRuntime.ts +30 -0
  339. package/skills/score-fly.aicomponent/SKILL.md +31 -0
  340. package/skills/score-fly.aicomponent/manifest.json +21 -0
  341. package/skills/score-fly.aicomponent/ref/phaser.js +26 -0
  342. package/skills/score-fly.aicomponent/ref/playcanvas.js +28 -0
  343. package/skills/score_goal.aiconfig/SKILL.md +46 -0
  344. package/skills/score_goal.aiconfig/manifest.json +33 -0
  345. package/skills/screen-flash.aicomponent/SKILL.md +30 -0
  346. package/skills/screen-flash.aicomponent/manifest.json +20 -0
  347. package/skills/screen-flash.aicomponent/ref/phaser.js +48 -0
  348. package/skills/screen-shake.aicomponent/SKILL.md +30 -0
  349. package/skills/screen-shake.aicomponent/manifest.json +19 -0
  350. package/skills/screen-shake.aicomponent/ref/phaser.js +23 -0
  351. package/skills/screen-shake.aicomponent/ref/playcanvas.js +44 -0
  352. package/skills/screw_puzzle.aigameplay/SKILL.md +116 -0
  353. package/skills/screw_puzzle.aigameplay/manifest.json +164 -0
  354. package/skills/screw_puzzle.aigameplay/ref/pgs-schema.json +235 -0
  355. package/skills/screw_puzzle.aigameplay/ref/reducer.template.ts +213 -0
  356. package/skills/settings_state.aicomponent/SKILL.md +61 -0
  357. package/skills/settings_state.aicomponent/manifest.json +33 -0
  358. package/skills/settings_state.aicomponent/ref/SettingsManager.ts +130 -0
  359. package/skills/slide_out_to_tray_animation.aicomponent/SKILL.md +64 -0
  360. package/skills/slide_out_to_tray_animation.aicomponent/manifest.json +58 -0
  361. package/skills/slide_out_to_tray_animation.aicomponent/ref/AnimationManager.ts +164 -0
  362. package/skills/slide_out_to_tray_animation.aicomponent/ref/AnimationManager3D.ts +198 -0
  363. package/skills/slide_out_to_tray_animation.aicomponent/ref/BezierUtils.ts +59 -0
  364. package/skills/slot_machine.aigameplay/SKILL.md +119 -0
  365. package/skills/slot_machine.aigameplay/manifest.json +166 -0
  366. package/skills/slot_machine.aigameplay/ref/pgs-schema.json +212 -0
  367. package/skills/slot_machine.aigameplay/ref/reducer.template.ts +212 -0
  368. package/skills/sniper_shot.aigameplay/SKILL.md +84 -0
  369. package/skills/sniper_shot.aigameplay/manifest.json +153 -0
  370. package/skills/sniper_shot.aigameplay/ref/pgs-schema.json +211 -0
  371. package/skills/sniper_shot.aigameplay/ref/reducer.template.ts +211 -0
  372. package/skills/solitaire.aigameplay/SKILL.md +101 -0
  373. package/skills/solitaire.aigameplay/manifest.json +151 -0
  374. package/skills/solitaire.aigameplay/ref/pgs-schema.json +200 -0
  375. package/skills/solitaire.aigameplay/ref/reducer.template.ts +176 -0
  376. package/skills/sound-effects/SKILL.md +46 -0
  377. package/skills/sound_utils.aicomponent/SKILL.md +52 -0
  378. package/skills/sound_utils.aicomponent/manifest.json +30 -0
  379. package/skills/sound_utils.aicomponent/ref/SoundUtils.ts +29 -0
  380. package/skills/sprite-animation-2d.aicomponent/SKILL.md +45 -0
  381. package/skills/sprite-animation-2d.aicomponent/manifest.json +28 -0
  382. package/skills/sprite-animation-2d.aicomponent/ref/html5.js +83 -0
  383. package/skills/sprite-animation-2d.aicomponent/ref/phaser.js +38 -0
  384. package/skills/sprite-animation-2d.aicomponent/ref/playcanvas.js +67 -0
  385. package/skills/sprite_entity_renderer.aicomponent/SKILL.md +148 -0
  386. package/skills/sprite_entity_renderer.aicomponent/manifest.json +17 -0
  387. package/skills/sprite_entity_renderer.aicomponent/ref/SpriteEntityRenderer.ts +126 -0
  388. package/skills/success_sfx.aiaudio/SKILL.md +59 -0
  389. package/skills/success_sfx.aiaudio/manifest.json +45 -0
  390. package/skills/success_sfx.aiaudio/ref/success.mp3 +0 -0
  391. package/skills/tap_blast.aigameplay/SKILL.md +116 -0
  392. package/skills/tap_blast.aigameplay/manifest.json +153 -0
  393. package/skills/tap_blast.aigameplay/ref/pgs-schema.json +208 -0
  394. package/skills/tap_blast.aigameplay/ref/reducer.template.ts +202 -0
  395. package/skills/theme_state.aicomponent/SKILL.md +53 -0
  396. package/skills/theme_state.aicomponent/manifest.json +33 -0
  397. package/skills/theme_state.aicomponent/ref/ThemeManager.ts +174 -0
  398. package/skills/theme_switcher_build.aicomponent/SKILL.md +62 -0
  399. package/skills/theme_switcher_build.aicomponent/manifest.json +38 -0
  400. package/skills/theme_switcher_build.aicomponent/ref/theme-index.ts +8 -0
  401. package/skills/theme_variant.aiconfig/SKILL.md +78 -0
  402. package/skills/theme_variant.aiconfig/manifest.json +39 -0
  403. package/skills/theme_variant.aiconfig/ref/ExampleTheme/index.ts +16 -0
  404. package/skills/theme_variant.aiconfig/ref/ExampleTheme/levelEasy.json +141 -0
  405. package/skills/threejs.aicomponent/SKILL.md +422 -0
  406. package/skills/threejs.aicomponent/manifest.json +166 -0
  407. package/skills/threejs.aicomponent/ref/AssetLoader.ts +158 -0
  408. package/skills/threejs.aicomponent/ref/BaseScene.ts +88 -0
  409. package/skills/threejs.aicomponent/ref/GameConfig.ts +47 -0
  410. package/skills/threejs.aicomponent/ref/MainScene.ts +170 -0
  411. package/skills/threejs.aicomponent/ref/PreloaderScene.ts +93 -0
  412. package/skills/threejs.aicomponent/ref/SceneKeys.ts +6 -0
  413. package/skills/threejs.aicomponent/ref/SceneManager.ts +69 -0
  414. package/skills/threejs.aicomponent/ref/ViewportManager.ts +62 -0
  415. package/skills/threejs.aicomponent/ref/globals.d.ts +74 -0
  416. package/skills/threejs.aicomponent/ref/index.css +80 -0
  417. package/skills/threejs.aicomponent/ref/index.html +20 -0
  418. package/skills/threejs.aicomponent/ref/index.ts +117 -0
  419. package/skills/threejs.aicomponent/ref/main.ts +10 -0
  420. package/skills/threejs.aicomponent/ref/package.json +23 -0
  421. package/skills/threejs.aicomponent/ref/tsconfig.json +24 -0
  422. package/skills/threejs.aicomponent/ref/webpack.config.js +61 -0
  423. package/skills/time_clear_goal.aiconfig/SKILL.md +46 -0
  424. package/skills/time_clear_goal.aiconfig/manifest.json +32 -0
  425. package/skills/time_icon.aiimage/SKILL.md +58 -0
  426. package/skills/time_icon.aiimage/manifest.json +47 -0
  427. package/skills/time_icon.aiimage/ref/time.png +0 -0
  428. package/skills/time_icon.aiimage/ref/time.webp +0 -0
  429. package/skills/top_ui_bar.aicomponent/SKILL.md +45 -0
  430. package/skills/top_ui_bar.aicomponent/manifest.json +27 -0
  431. package/skills/top_ui_bar.aicomponent/ref/GameTopUI.ts +229 -0
  432. package/skills/tower_defence.aigameplay/SKILL.md +117 -0
  433. package/skills/tower_defence.aigameplay/manifest.json +175 -0
  434. package/skills/tower_defence.aigameplay/ref/pgs-schema.json +247 -0
  435. package/skills/tower_defence.aigameplay/ref/reducer.template.ts +239 -0
  436. package/skills/tray_container.aicomponent/SKILL.md +143 -0
  437. package/skills/tray_container.aicomponent/manifest.json +58 -0
  438. package/skills/tray_container.aicomponent/ref/TrayRenderer.ts +155 -0
  439. package/skills/tray_container.aicomponent/ref/TrayRenderer3D.ts +281 -0
  440. package/skills/tray_container.aicomponent/ref/TrayRendererHtmlOverlay.ts +228 -0
  441. package/skills/tutorial_overlay.aicomponent/SKILL.md +46 -0
  442. package/skills/tutorial_overlay.aicomponent/manifest.json +34 -0
  443. package/skills/tutorial_overlay.aicomponent/ref/TutorialManager.ts +367 -0
  444. package/skills/tween-animation-2d.aicomponent/SKILL.md +35 -0
  445. package/skills/tween-animation-2d.aicomponent/manifest.json +28 -0
  446. package/skills/tween-animation-2d.aicomponent/ref/phaser.js +49 -0
  447. package/skills/tween-animation-2d.aicomponent/ref/playcanvas.js +36 -0
  448. package/skills/typescript_module_patterns.aicomponent/SKILL.md +209 -0
  449. package/skills/typescript_module_patterns.aicomponent/manifest.json +28 -0
  450. package/skills/typescript_module_patterns.aicomponent/ref/globals.d.ts +31 -0
  451. package/skills/ui-transition.aicomponent/SKILL.md +33 -0
  452. package/skills/ui-transition.aicomponent/manifest.json +19 -0
  453. package/skills/ui-transition.aicomponent/ref/phaser.js +45 -0
  454. package/skills/ux_flow_spec.aiconfig/SKILL.md +82 -0
  455. package/skills/ux_flow_spec.aiconfig/manifest.json +39 -0
  456. package/skills/wave_difficulty.aiconfig/SKILL.md +46 -0
  457. package/skills/wave_difficulty.aiconfig/manifest.json +33 -0
  458. package/skills/webpack_build.aicomponent/SKILL.md +204 -0
  459. package/skills/webpack_build.aicomponent/manifest.json +29 -0
  460. package/skills/webpack_build.aicomponent/ref/package.json +16 -0
  461. package/skills/webpack_build.aicomponent/ref/webpack.config.js +53 -0
  462. package/skills/win_anim_sfx.aiaudio/SKILL.md +59 -0
  463. package/skills/win_anim_sfx.aiaudio/manifest.json +46 -0
  464. package/skills/win_anim_sfx.aiaudio/ref/win_anim.mp3 +0 -0
  465. package/skills/win_dot.aiimage/SKILL.md +58 -0
  466. package/skills/win_dot.aiimage/manifest.json +47 -0
  467. package/skills/win_dot.aiimage/ref/win_dot.png +0 -0
  468. package/skills/win_dot.aiimage/ref/win_dot.webp +0 -0
  469. package/skills/win_result_panel.aiimage/SKILL.md +58 -0
  470. package/skills/win_result_panel.aiimage/manifest.json +47 -0
  471. package/skills/win_result_panel.aiimage/ref/win.png +0 -0
  472. package/skills/win_result_panel.aiimage/ref/win.webp +0 -0
  473. package/skills/word_connect.aigameplay/SKILL.md +86 -0
  474. package/skills/word_connect.aigameplay/manifest.json +154 -0
  475. package/skills/word_connect.aigameplay/ref/pgs-schema.json +212 -0
  476. package/skills/word_connect.aigameplay/ref/reducer.template.ts +186 -0
  477. package/src/index.ts +10 -0
  478. package/src/skills.loader.ts +225 -0
  479. package/src/skills.types.ts +42 -0
@@ -0,0 +1,44 @@
1
+ ---
2
+ name: playcraft-build
3
+ description: 原子操作:在项目 sandbox 中执行 npm run build。不提交 Git,不上传 COS。构建成功后,可串联 playcraft-save 保存代码,再用 playcraft-deploy 发布预览。
4
+ compatibility: agent
5
+ ---
6
+
7
+ ## Skill Definition
8
+ tools:
9
+ - bash
10
+ - read
11
+ prompt_extension: |
12
+ 你负责在项目 sandbox 中执行构建(npm run build)。
13
+
14
+ ## 职责边界
15
+ - **只负责构建**,不提交 Git,不上传 COS
16
+ - 构建成功 → terminate 汇报,由 Manager 决策下一步(save / deploy)
17
+ - 构建失败 → terminate 汇报详细错误日志,让 Manager 派 playcraft-code-editor 修复
18
+
19
+ ## CLI 命令说明
20
+ - **`playcraft tools build-project --project-id <ID>`**:在项目 sandbox 中执行 npm run build,返回 success + output/error
21
+ - **`playcraft tools list-remixes`**:当 projectId 未知时,先查询获取;结果写入文件,stdout 打印摘要,用 `read` 工具查看详细数据
22
+ - **read**:读取 context.md 或其他文件获取项目信息
23
+
24
+ ## 工作流
25
+ 1. 从 context.md 或 `playcraft tools list-remixes` 获取 projectId 和 branch
26
+ 2. 运行 **`playcraft tools build-project --project-id <ID>`**
27
+ 3. 成功 → terminate `{ summary: "构建成功" }`
28
+ 4. 失败 → terminate `{ summary: "构建失败:<错误信息>" }`(Manager 决策是否修复)
29
+
30
+ ## 注意
31
+ - sandbox 必须处于 ready 状态,否则返回错误
32
+ - 构建后 dist/ 仍在 sandbox 内,需运行 `playcraft tools save-to-git` 同步到 Git
33
+
34
+ ## 我做什么
35
+ - 运行 `playcraft tools build-project --project-id <ID>` 在项目 sandbox 里执行 npm run build
36
+ - 汇报构建成功或详细失败原因
37
+
38
+ ## 何时用我
39
+ 作为独立步骤,在代码修改后、保存前,先验证代码能否成功编译。
40
+
41
+ ## 工作流
42
+ 1. **`playcraft tools build-project --project-id <ID>`**
43
+ 2. 成功 → **terminate** `{ summary: "构建成功,可以执行 save 和 deploy" }`
44
+ 3. 失败 → **terminate** `{ summary: "构建失败:<error>" }`
@@ -0,0 +1,71 @@
1
+ ---
2
+ name: playcraft-code-editor
3
+ description: PlayCraft 项目代码编辑。读取、修改、调试项目中的脚本、配置文件和场景数据。
4
+ compatibility: agent
5
+ ---
6
+
7
+ ## Skill Definition
8
+ tools:
9
+ - bash
10
+ - read
11
+ - write
12
+ - edit
13
+ prompt_extension: |
14
+ 你负责读取和修改 PlayCraft 项目中的代码与配置文件。
15
+
16
+ ## 工作环境
17
+
18
+ 项目文件位于 sandbox 中,你有以下工具:
19
+ - read:读取任意文件内容
20
+ - edit:精确替换文件中的某段内容(推荐用于小范围修改)
21
+ - write:整体覆写文件内容(用于大范围重构或新建文件)
22
+ - bash:执行 shell 命令(查看目录结构、运行 lint、检查语法等)
23
+
24
+ ## 典型文件结构
25
+
26
+ PlayCanvas 项目的关键文件:
27
+ - `/files/scripts/*.js` — 脚本文件(游戏逻辑、组件)
28
+ - `/files/assets.json` — 资产元数据
29
+ - `/files/manifest.json` — 项目配置
30
+ - `/scenes/*.json` — 场景数据
31
+
32
+ 外部项目(Phaser/PixiJS 等)的典型结构:
33
+ - `/src/` — 源代码目录
34
+ - `/src/main.ts` 或 `/src/index.ts` — 入口文件
35
+ - `/package.json` — 依赖和构建脚本
36
+
37
+ ## 工作流
38
+
39
+ 1. 先用 bash 或 read 了解项目结构(`ls -la`, `cat package.json` 等)
40
+ 2. 用 read 读取目标文件的完整内容
41
+ 3. 用 edit 做精确修改,或 write 重写整个文件
42
+ 4. 用 bash 验证修改(如运行 `npx tsc --noEmit` 检查类型错误)
43
+ 5. 调用 terminate 汇报修改摘要
44
+
45
+ ## 注意事项
46
+ - 修改前必须先 read 文件,了解上下文
47
+ - edit 操作的 old_string 必须在文件中唯一,否则改用 write
48
+ - 不要直接修改 `assets.json` 或 `manifest.json` 中的 numericId
49
+ - bash 仅用于读取/检查,不要用 bash 直接写文件(用 write/edit 代替)
50
+
51
+ ## 我做什么
52
+
53
+ - 读取项目中的脚本和配置文件
54
+ - 修改游戏逻辑(如关卡参数、碰撞检测、UI 交互)
55
+ - 修复代码错误(语法错误、逻辑错误、类型错误)
56
+ - 查看和调整场景数据
57
+
58
+ ## 何时用我
59
+
60
+ - "修改项目 X 中玩家的移动速度"
61
+ - "给项目 X 添加一个新的游戏结束逻辑"
62
+ - "读取项目 X 的入口文件,看看游戏初始化流程"
63
+ - "修复项目 X 中某个脚本的 TypeScript 错误"
64
+
65
+ ## 工作流
66
+
67
+ 1. **bash / read** — 了解项目结构,找到目标文件
68
+ 2. **read** — 读取目标文件全部内容
69
+ 3. **edit / write** — 精确修改或重写文件
70
+ 4. **bash** — 验证修改(可选,如语法检查)
71
+ 5. **terminate** — 汇报 `{ summary: "已修改:文件路径,改动内容摘要" }`
@@ -0,0 +1,62 @@
1
+ ---
2
+ name: playcraft-create-remix
3
+ description: 根据用户描述创建新 Remix 变体,支持两种来源:基于推荐模板(主分支)或基于已有变体(任意 remix/ 分支)。创建后用 display_ui 展示 RemixCreatedCard。适用于「做一个打砖块游戏」「创建平台跳跃广告」「基于这个变体再做一个」等明确创作意图的场景。
4
+ triggers: 做游戏,创建游戏,创建 Remix,打砖块,平台跳跃,可玩广告,帮我做,基于变体,再做一个
5
+ compatibility: agent,opencode
6
+ ---
7
+
8
+ ## Skill Definition
9
+ tools:
10
+ - bash
11
+ - display_ui
12
+ - read
13
+ prompt_extension: |
14
+ 你是游戏创作执行助手。根据用户意图选择来源(模板或已有变体),通过 CLI 命令创建新变体,完成后立刻调用 display_ui 展示 RemixCreatedCard,最后 terminate 返回结果摘要。
15
+
16
+ ## 核心概念
17
+
18
+ **Remix(变体)= 在某个项目上,从一个已有分支拉取的新 `remix/` 分支。**
19
+
20
+ - 新分支永远是 `remix/` 前缀,永远不是 `main`
21
+ - 来源只有两种,本质都是「指定一个已有分支作为基础」:
22
+ 1. **基于主分支**(模板或普通项目):`projectId` 为项目 numericId,`sourceBranch` 省略(默认 `"main"`);推荐模板可通过 `playcraft tools list-templates` 获取
23
+ 2. **基于已有变体**:`projectId` 为变体所在项目的 numericId,`sourceBranch` 为已有的 `remix/xxx` 分支名
24
+
25
+ ## ⚠️ 重要:何时用我(仅用于创建,不用于展示)
26
+
27
+ - ✅ 用户说「做一个打砖块游戏」「帮我做一个平台跳跃广告」「从推荐里选一个创建」
28
+ - ✅ 用户说「基于这个变体再做一个」「复制当前变体」(此时 sourceBranch = 当前分支名)
29
+ - ❌ 不适用于「有哪些模板」「能做什么类型」等纯展示需求 → 那种情况 Manager 直接调 `show_template_cards`
30
+
31
+ ## 工作流
32
+
33
+ ### 情况 1:基于模板创建
34
+ 1. 运行 `playcraft tools list-templates` 获取推荐 Remix 列表(禁止使用写死的列表);结果写入文件,stdout 打印摘要,用 `read` 工具查看完整结果
35
+ 2. 匹配用户描述,选出最合适的模板 `projectId`
36
+ 3. 运行 `playcraft tools create-remix --project-id <ID> --name "<名称>"`,其中:
37
+ - `--project-id`:模板的 numericId(来自 list-templates)
38
+ - `--name`:根据用户描述自动生成简短变体名称,**不要询问用户**,直接生成
39
+ - 可选 `--source-branch main`(默认即为 main)
40
+
41
+ ### 情况 2:基于已有变体创建
42
+ 1. 从会话上下文中获取当前项目 `projectId` 和源变体分支 `sourceBranch`
43
+ 2. 运行 `playcraft tools create-remix --project-id <ID> --name "<名称>" --source-branch "<分支名>"`,其中:
44
+ - `--project-id`:变体所在项目的 numericId
45
+ - `--source-branch`:已有变体的分支名(如 `"remix/easy-20250101-abc"`)
46
+ - `--name`:新变体的显示名称
47
+
48
+ ### 通用步骤(两种情况均需)
49
+ 4. 调用 `display_ui` 展示结果卡片(**创建成功后必须调用,不要跳过**):
50
+ ```
51
+ display_ui({
52
+ component: "RemixCreatedCard",
53
+ props: { projectId: <number>, projectName: "<string>", branchName: "<string>" }
54
+ })
55
+ ```
56
+ 5. 调用 `terminate` 返回摘要(projectId、branchName、projectName)
57
+
58
+ ## 示例
59
+
60
+ - 用户:「做一个打砖块的可玩广告」→ `playcraft tools list-templates` → 选含 breakout/brick 标签 → `playcraft tools create-remix --project-id <ID> --name "<名称>"` → display_ui(RemixCreatedCard) → terminate
61
+ - 用户:「从零开始做一个自定义游戏」→ `playcraft tools list-templates` → 选 empty/custom/blank 的 Remix → `playcraft tools create-remix --project-id <ID> --name "<名称>"` → display_ui(RemixCreatedCard) → terminate
62
+ - 用户:「基于这个困难模式变体,再做一个简单模式」→ `playcraft tools create-remix --project-id <ID> --name "简单模式" --source-branch "remix/hard-..."` → display_ui(RemixCreatedCard) → terminate
@@ -0,0 +1,59 @@
1
+ ---
2
+ name: playcraft-deploy
3
+ description: 组合操作:build → save → publish。在 sandbox 构建,保存代码到 Git,上传 dist/ 到 COS,返回可分享的预览链接。
4
+ compatibility: agent
5
+ ---
6
+
7
+ ## Skill Definition
8
+ tools:
9
+ - bash
10
+ - read
11
+ prompt_extension: |
12
+ 你负责完整的发布流程:构建 → 保存到 Git → 上传 COS → 返回预览链接。
13
+
14
+ ## 三步原子流程
15
+
16
+ ```
17
+ playcraft tools build-project → playcraft tools save-to-git → playcraft tools publish
18
+ ↓ ↓ ↓
19
+ npm run build commit+push 上传 dist/ 到 COS
20
+ (dist/ in sandbox) (dist/ in repo) → previewUrl
21
+ ```
22
+
23
+ ## CLI 命令说明
24
+ - **`playcraft tools build-project --project-id <ID>`**:在项目 sandbox 里执行 npm run build
25
+ - **`playcraft tools save-to-git --project-id <ID> --message "<提交信息>"`**:将 sandbox(含 dist/)sync 到 repo,commit 并 push
26
+ - **`playcraft tools publish --project-id <ID>`**:读取 repo 中的 dist/,上传到 COS,返回 previewUrl
27
+ - **`playcraft tools list-remixes`**:当 projectId 未知时查询;结果写入文件,stdout 打印摘要,用 `read` 工具查看详细数据
28
+ - **read**:读取 context.md 获取项目信息
29
+
30
+ ## 工作流
31
+ 1. 从 context.md 或 `playcraft tools list-remixes` 获取 projectId 和 branch
32
+ 2. **`playcraft tools build-project --project-id <ID>`**
33
+ - 失败 → terminate `{ summary: "构建失败:<error>,请先修复代码" }`
34
+ 3. **`playcraft tools save-to-git --project-id <ID> --message "<提交信息>"`**
35
+ - 失败 → terminate `{ summary: "Git 保存失败:<error>" }`
36
+ 4. **`playcraft tools publish --project-id <ID>`**
37
+ - 失败 → terminate `{ summary: "COS 上传失败(可能未配置 COS),代码已保存到 Git" }`
38
+ 5. 成功 → terminate `{ summary: "发布成功,预览链接:<previewUrl>" }`
39
+
40
+ ## 注意
41
+ - 三步必须按顺序执行,前一步失败则停止并汇报
42
+ - build-project 和 save-to-git 操作的是同一个 sandbox,sandbox 必须处于 ready 状态
43
+ - 若 COS 未配置,publish 会返回 null URL;此时代码已成功保存到 Git,不算完全失败
44
+
45
+ ## 我做什么
46
+ 1. 在项目 sandbox 中执行 `npm run build`
47
+ 2. 将代码和构建产物保存到 Git
48
+ 3. 上传 dist/ 到 COS,返回可分享的预览 URL
49
+
50
+ ## 何时用我
51
+ - "帮我构建并发布项目"
52
+ - "生成一个预览链接"
53
+ - 可玩广告变体完成后,需要发布测试链接时
54
+
55
+ ## 工作流
56
+ 1. **`playcraft tools build-project --project-id <ID>`**(构建)→ 失败则 terminate 汇报
57
+ 2. **`playcraft tools save-to-git --project-id <ID> --message "<提交信息>"`**(保存)→ 失败则 terminate 汇报
58
+ 3. **`playcraft tools publish --project-id <ID>`**(发布)→ 返回 previewUrl
59
+ 4. **terminate** `{ summary: "发布成功,预览:<previewUrl>" }`
@@ -0,0 +1,148 @@
1
+ ---
2
+ name: playcraft-image-generation
3
+ description: 可玩广告流程步骤 5。读取模板中使用的图片,根据变体需求调用 AI 生图模型生成创意替换图,直接写入文件,不产生 base64 上下文污染。后端自动竞速所有可用 provider,无需手动指定。
4
+ compatibility: agent,opencode
5
+ ---
6
+
7
+ ## CLI 与 Atom skill(`*.aiimage`)
8
+
9
+ - **AI 生图入口**:`playcraft tools generate-image`(需后端)。当前 CLI **不提供** `playcraft image gen`;本地处理用 `playcraft image <子命令>`(如 `convert`、`remove-background`),见 `playcraft-image-processing`。
10
+ - **参数来源**:若项目引用了某图片 Atom(例如 `lose_result_panel.aiimage`),提示词与模型等以该目录 **`manifest.json` → `generation`** 为准(如 `prompt`、`aspectRatio`、`model`、`referenceImage`),再映射到 `generate-image` 的 `--prompt`、`--aspect-ratio`、`--image-model`、`--reference-image`。
11
+
12
+ ## Skill Definition
13
+ tools:
14
+ - bash
15
+ - read
16
+ prompt_extension: |
17
+ 你是游戏视觉设计师,专注于为可玩广告生成高质量图片素材。
18
+ 不得向 /project/ 写入;分析项目现有图片(只读),生成结果写入会话 ta-workspace。
19
+ 通过 bash 工具运行 `playcraft tools generate-image` CLI 命令生成图片(AI 调用需后端处理)。
20
+ 生成后如需后处理(缩放/裁剪/格式转换等),使用 `playcraft image <command>` 系列命令在本地处理。
21
+
22
+ ## 我做什么
23
+
24
+ - 分析模板/项目中使用的图片资源(角色、背景、道具等)
25
+ - 根据用户诉求和创意方向,生成符合要求的替换图片
26
+ - 传入模型名(如 `gpt-image-2`),后端自动并发竞速所有可用 provider,返回最先成功的结果
27
+
28
+ ## 何时用我
29
+
30
+ 在可玩广告变体流程中,需要为替换或新增的视觉元素生成创意图片时。例如:新角色、新背景、新道具图标等。
31
+
32
+ ## 工作流
33
+
34
+ 1. **读取模板图片**:用 `read` 工具查看项目中的图片资源(assets 目录、manifest、场景引用等)
35
+ 2. **确定生成需求**:列出需要生成的图片类型、尺寸、风格
36
+ 3. **(可选)查询可用生图模型**:
37
+ ```bash
38
+ playcraft tools list-image-models
39
+ ```
40
+ 输出按模型名分组的列表,`MODEL` 列的值可直接作为 `--image-model` 参数。`PROVIDERS` 列显示支持该模型的 provider 数量——多个 provider 时后端自动竞速。
41
+
42
+ 4. **生成图片**(AI 调用,需 backend):
43
+ ```bash
44
+ playcraft tools generate-image \
45
+ --prompt "<详细英文描述>" \
46
+ --output <ta-workspace内的输出路径> \
47
+ [--aspect-ratio 1:1|16:9|9:16|3:4|4:3] \
48
+ [--reference-image <路径> ...] \
49
+ [--image-model <模型名>]
50
+ ```
51
+ - **`--image-model`**:指定模型名(如 `gpt-image-2`),后端自动竞速所有可用 provider。也可传 `provider/model`(如 `mulerouter/gpt-image-2`)直连指定 provider。不传则使用系统默认配置。
52
+ - **`--reference-image`**:参考图路径,支持本地路径(绝对/相对于 CWD)和 HTTP(S) URL(CLI 自动下载)。可重复最多 **8** 次,出现顺序即传给模型的顺序。
53
+ - `search-image` 返回的 `downloadUrl` 可直接用于 `--reference-image`,无需手动保存。
54
+ - **OpenCode 工具 `playcraft-generate-image`**:第一张用参数 `referenceImagePath`;其余用 `additionalReferenceImagePaths`,值为 **英文逗号分隔**的路径列表(路径里不要含逗号),顺序在首张之后;模型用 `imageModelRef`(传模型名即可,如 `gpt-image-2`)。
55
+ 5. **(可选)后处理**(本地执行,速度快):
56
+ ```bash
57
+ # 缩放到目标尺寸
58
+ playcraft image resize --input ta-workspace/raw.png --output ta-workspace/final.png --width 512 --height 512
59
+ # 格式转换节省体积
60
+ playcraft image convert --input ta-workspace/final.png --output ta-workspace/final.webp --quality 85
61
+ # 裁掉多余透明边界
62
+ playcraft image trim --input ta-workspace/raw.png --output ta-workspace/trimmed.png
63
+ ```
64
+
65
+ ## Prompt 建议
66
+
67
+ - **明确风格**:pixel art、flat design、3D render、cartoon 等
68
+ - **透明背景**:若需要 PNG 透明,在 prompt 中写 `transparent background`
69
+ - **尺寸比例**:可玩广告通常 9:16 竖屏(`--aspect-ratio 9:16`),或 1:1 用于图标
70
+ - **描述越具体越好**:颜色、姿势、光照方向、是否有阴影
71
+
72
+ ## 示例
73
+
74
+ ```bash
75
+ # 游戏背景(使用系统默认模型)
76
+ playcraft tools generate-image \
77
+ --prompt "vibrant gradient background for a mobile game, purple to blue, cartoon style, no characters" \
78
+ --aspect-ratio 9:16 \
79
+ --output ta-workspace/bg_raw.png
80
+
81
+ # 高质量文生图(gpt-image-2,后端自动竞速 iegg-litellm / mulerouter / 302)
82
+ playcraft tools generate-image \
83
+ --prompt "cute game character, flat design, white background" \
84
+ --aspect-ratio 1:1 \
85
+ --image-model gpt-image-2 \
86
+ --output ta-workspace/char_raw.png
87
+
88
+ # 图生图(带参考图,使用 gpt-image-2 竞速)
89
+ playcraft tools generate-image \
90
+ --prompt "same character style, holding a shield instead of a sword" \
91
+ --aspect-ratio 1:1 \
92
+ --reference-image ta-workspace/char_raw.png \
93
+ --image-model gpt-image-2 \
94
+ --output ta-workspace/char_shield_raw.png
95
+
96
+ # 角色精灵(透明背景)
97
+ playcraft tools generate-image \
98
+ --prompt "cute pixel art hero character, front facing, 64x64 sprite, transparent background, warm colors" \
99
+ --aspect-ratio 1:1 \
100
+ --output ta-workspace/hero_raw.png
101
+
102
+ # 道具图标
103
+ playcraft tools generate-image \
104
+ --prompt "golden coin icon for game UI, flat design, clean edges, transparent background" \
105
+ --aspect-ratio 1:1 \
106
+ --output ta-workspace/coin_raw.png
107
+
108
+ # 多张参考图:风格 + 构图(顺序有意义)
109
+ playcraft tools generate-image \
110
+ --prompt "Merge the character style from first ref with the layout of second ref, flat vector, game UI" \
111
+ --aspect-ratio 9:16 \
112
+ --reference-image ta-workspace/ref_style.png \
113
+ --reference-image ta-workspace/ref_layout.png \
114
+ --output ta-workspace/merged_raw.png
115
+ ```
116
+
117
+ ## 解决生成图不透明的问题
118
+
119
+ Gemini 不原生支持透明背景输出。生成后用 `remove-background` 命令处理:
120
+
121
+ ```bash
122
+ # 生成图(有白底或灰色/棋盘格背景)
123
+ playcraft tools generate-image --prompt "cute hero character, white background" --aspect-ratio 1:1 --output ta-workspace/hero_raw.png
124
+
125
+ # 移除背景(默认 floodfill,AI 生成素材最佳选择)
126
+ playcraft image remove-background --input ta-workspace/hero_raw.png --output ta-workspace/hero.png
127
+
128
+ # 如果背景与前景颜色接近,可增大容差
129
+ playcraft image remove-background --input ta-workspace/hero_raw.png --output ta-workspace/hero.png --tolerance 40
130
+
131
+ # 如果是复杂背景的照片,改用 AI 模型(但可能导致浅色纹理褪色)
132
+ playcraft image remove-background --input ta-workspace/photo.jpg --output ta-workspace/photo.png --method ai
133
+ ```
134
+
135
+ > `remove-background` 默认使用 floodfill 方法(本地 sharp),适合 AI 生成的纯色/棋盘格背景素材,前景纹理零损失。
136
+ > 仅当背景非常复杂(真实照片)时才需要 `--method ai`(调用 backend API)。
137
+
138
+ ## 生成后常用后处理
139
+
140
+ ```bash
141
+ # 生成后统一尺寸 + 转 webp
142
+ playcraft image resize --input ta-workspace/hero_raw.png --output ta-workspace/hero_128.png --width 128 --height 128 --fit contain
143
+ playcraft image convert --input ta-workspace/hero_128.png --output ta-workspace/hero_128.webp --quality 85
144
+
145
+ # 做多个颜色变体
146
+ playcraft image tint --input ta-workspace/hero_128.png --output ta-workspace/hero_blue.png --color "#0055ff"
147
+ playcraft image tint --input ta-workspace/hero_128.png --output ta-workspace/hero_red.png --color "#ff2200"
148
+ ```
@@ -0,0 +1,216 @@
1
+ ---
2
+ name: playcraft-image-processing
3
+ description: 可玩广告流程步骤 6。对生成的图片进行后处理:缩放、裁剪、旋转、翻转、填充、格式转换、滤镜、合成等。所有操作通过 `playcraft image` CLI 命令在沙箱本地执行,无需 backend,速度快。
4
+ compatibility: agent,opencode
5
+ ---
6
+
7
+ ## Skill Definition
8
+ tools:
9
+ - bash
10
+ - read
11
+ prompt_extension: |
12
+ 你是图像处理工程师。不得向 /project/ 写入;所有输出路径必须在 ta-workspace(技术美术角色)。
13
+ 通过 bash 工具运行 `playcraft image <command>` CLI 命令进行图片处理,所有操作在沙箱本地执行,无需往返 backend。
14
+
15
+ ## 我做什么
16
+
17
+ - 对生成的图片进行后处理,使其符合游戏引擎和可玩广告的规格
18
+ - 支持:缩放、裁剪、旋转、翻转、填充边距、格式转换、灰度化、模糊、色调叠加、反色、图片合成、像素化、自动裁边
19
+
20
+ ## 何时用我
21
+
22
+ 当 `playcraft tools generate-image` 生成的图片需要进一步处理时:
23
+ - 尺寸不符合纹理要求(如需 2 的幂次、特定分辨率)
24
+ - 需要像素风效果
25
+ - 需要旋转/镜像翻转(如左右角色复用同一张图)
26
+ - 需要统一多帧尺寸后合并精灵图
27
+ - 需要格式转换(png → webp 优化体积)
28
+ - 需要裁掉透明边界、叠加合成等
29
+
30
+ ## 命令速查
31
+
32
+ 所有命令格式:`playcraft image <command> --input <路径> --output <路径> [选项]`
33
+
34
+ ### 几何变换
35
+
36
+ ```bash
37
+ # 缩放(支持比例或指定宽高)
38
+ playcraft image resize --input src.png --output out.png --scale 0.5
39
+ playcraft image resize --input src.png --output out.png --width 512 --height 512 --fit contain
40
+
41
+ # 裁剪(指定区域)
42
+ playcraft image crop --input src.png --output out.png --x 0 --y 0 --width 256 --height 256
43
+
44
+ # 旋转(任意角度,默认背景透明)
45
+ playcraft image rotate --input src.png --output out.png --angle 90
46
+ playcraft image rotate --input src.png --output out.png --angle 45 --background "#ffffff"
47
+
48
+ # 镜像翻转
49
+ playcraft image flip --input src.png --output out.png --direction horizontal
50
+ playcraft image flip --input src.png --output out.png --direction vertical
51
+
52
+ # 扩展画布/加边距(统一精灵尺寸常用)
53
+ playcraft image pad --input src.png --output out.png --all 16
54
+ playcraft image pad --input src.png --output out.png --top 8 --bottom 8 --left 0 --right 0
55
+
56
+ # 自动裁掉透明/纯色边界
57
+ playcraft image trim --input src.png --output out.png --threshold 10
58
+ ```
59
+
60
+ ### 格式与质量
61
+
62
+ ```bash
63
+ # 格式转换 + 压缩质量(png/jpg/webp/avif)
64
+ playcraft image convert --input src.png --output out.webp --quality 85
65
+ playcraft image convert --input src.jpg --output out.png
66
+ ```
67
+
68
+ ### 滤镜与色彩
69
+
70
+ ```bash
71
+ # 灰度化
72
+ playcraft image grayscale --input src.png --output out.png
73
+
74
+ # 高斯模糊(背景虚化等)
75
+ playcraft image blur --input src.png --output out.png --sigma 5
76
+
77
+ # 色调叠加(做角色不同颜色变体)
78
+ playcraft image tint --input src.png --output out.png --color "#ff4400"
79
+
80
+ # 反色
81
+ playcraft image negate --input src.png --output out.png
82
+
83
+ # 像素化(像素风格)
84
+ playcraft image pixelate --input src.png --output out.png --pixel-size 8
85
+ ```
86
+
87
+ ### 合成
88
+
89
+ ```bash
90
+ # 将一张图叠在另一张图上(居中对齐)
91
+ playcraft image overlay --base bg.png --overlay icon.png --output out.png
92
+
93
+ # 指定坐标叠加
94
+ playcraft image overlay --base bg.png --overlay icon.png --output out.png --x 100 --y 200
95
+ ```
96
+
97
+ ### 语义分割(SAM3)
98
+
99
+ 通过 SAM3(Segment Anything Model 3)对图片进行**开放词汇语义分割**:用文字或框 prompt 精确抠出任意对象,返回 mask 和 RGBA 透明图。
100
+ 需要经由 backend 代理,首次冷启动约 15s,热启动约 5-10s。
101
+
102
+ ```bash
103
+ # ── 单 prompt — 文本 ──
104
+ # 找到图中所有"logo"区域,输出 mask + RGBA
105
+ playcraft image segment \
106
+ --input ta-workspace/banner.png \
107
+ --text "logo" \
108
+ --output-dir ta-workspace/segment-out
109
+
110
+ # ── 单 prompt — 框选区域 ──
111
+ # 用 [x1,y1,x2,y2] 绝对像素坐标指定目标区域
112
+ playcraft image segment \
113
+ --input ta-workspace/banner.png \
114
+ --boxes "[[50,100,300,400]]" \
115
+ --output-dir ta-workspace/segment-out
116
+
117
+ # ── 多 prompt 批量(一次调用,多个目标)──
118
+ playcraft image segment \
119
+ --input ta-workspace/banner.png \
120
+ --prompts '[{"text":"icon"},{"text":"button"},{"text":"logo"}]' \
121
+ --output-dir ta-workspace/segment-out
122
+
123
+ # ── 调节得分阈值(默认 0.3,越低召回越多)──
124
+ playcraft image segment \
125
+ --input ta-workspace/hero.png \
126
+ --text "character" \
127
+ --threshold 0.2 \
128
+ --output-dir ta-workspace/segment-out
129
+
130
+ # ── 不需要 RGBA 抠图,只要 mask ──
131
+ playcraft image segment \
132
+ --input ta-workspace/hero.png \
133
+ --text "character" \
134
+ --no-rgba \
135
+ --output-dir ta-workspace/segment-out
136
+ ```
137
+
138
+ **输出目录结构**:
139
+
140
+ ```
141
+ segment-out/
142
+ prompt_0_logo/
143
+ 00_mask.png ← 二值 mask(白色为前景)
144
+ 00_rgba.png ← RGBA 透明抠图
145
+ 01_mask.png ← 同一 prompt 的第二个实例(若有多个)
146
+ 01_rgba.png
147
+ prompt_1_button/
148
+ 00_mask.png
149
+ 00_rgba.png
150
+ segment-meta.json ← 汇总:image_size、prompts、instances count、scores、bbox
151
+ ```
152
+
153
+ **使用要点**:
154
+
155
+ - **冷启动**:SAM3 缩容后首次调用约 15s,命令会自动等待,无需手动 ping
156
+ - **热启动**:模型就绪后约 5-10s 完成分割
157
+ - **抠图直接可用**:`rgba.png` 已是透明背景,可直接用于游戏资产,无需再跑 `remove-background`
158
+ - **多实例**:同一 prompt 可能检测到多个对象(如图中有 3 个 logo),每个实例单独输出 `00_`、`01_`…
159
+ - **bbox 信息**:`segment-meta.json` 包含每个实例的 bbox 坐标,可用于后续裁切定位
160
+
161
+ **与 remove-background 的对比**:
162
+
163
+ | 场景 | 推荐方案 |
164
+ |------|---------|
165
+ | 去除纯色/渐变/棋盘格背景(AI 生成图) | `remove-background --method floodfill` |
166
+ | 去除复杂真实照片背景 | `remove-background --method ai` |
167
+ | **精确分割特定对象**(如从 UI 截图中提取某个按钮) | `segment --text "button"` |
168
+ | **批量提取多个不同对象** | `segment --prompts '[...]'` |
169
+ | **需要 mask 做遮罩特效** | `segment`(直接输出 mask.png) |
170
+
171
+ ### 背景移除
172
+
173
+ 支持两种方法,根据图片类型选择:
174
+
175
+ ```bash
176
+ # ── floodfill(默认)— 本地执行,AI 生成素材首选 ──
177
+ # 从边缘 flood-fill 移除纯色/渐变/棋盘格背景,前景纹理零损失
178
+ playcraft image remove-background --input ta-workspace/hero_raw.png --output ta-workspace/hero.png
179
+
180
+ # 调节容差(背景与前景颜色接近时增大)
181
+ playcraft image remove-background --input ta-workspace/tile.png --output ta-workspace/tile.png --tolerance 40
182
+
183
+ # 关闭边缘平滑(需要硬边像素风时)
184
+ playcraft image remove-background --input ta-workspace/pixel_art.png --output ta-workspace/pixel_art.png --edge-smooth 0
185
+
186
+ # ── ai — 调用 backend AI 模型,复杂背景照片用 ──
187
+ playcraft image remove-background --input ta-workspace/photo.jpg --output ta-workspace/photo.png --method ai
188
+ ```
189
+
190
+ **方法选择指南**:
191
+ | 方法 | 适用场景 | 速度 | 纹理保真度 |
192
+ |------|---------|------|-----------|
193
+ | `floodfill`(默认) | AI 生成的素材(纯色/灰色/棋盘格背景) | <0.5s | 零损失 |
194
+ | `ai` | 真实照片、复杂背景 | ~1-3s | 可能褪色 |
195
+
196
+ > **注意**:`--method ai` 会调用 backend API(需要沙箱 token);`floodfill` 完全本地执行。
197
+
198
+ ## 可玩广告常见规格
199
+
200
+ - 纹理尺寸:建议 2 的幂次(256×256、512×512、1024×1024)
201
+ - 像素风:`--pixel-size 8` 到 `16` 常见
202
+ - WebP 转换:通常比 PNG 小 30–50%,可玩广告体积敏感时优先用 webp
203
+ - 统一精灵帧尺寸:先 `resize` → 再 `sprite-sheet` 合并
204
+
205
+ ## 典型流程
206
+
207
+ ```bash
208
+ # 生成图片 → 缩放到规格 → 转 webp 压缩
209
+ playcraft tools generate-image --prompt "cute hero character, transparent background" --output ta-workspace/hero_raw.png
210
+ playcraft image resize --input ta-workspace/hero_raw.png --output ta-workspace/hero_512.png --width 512 --height 512 --fit contain
211
+ playcraft image convert --input ta-workspace/hero_512.png --output ta-workspace/hero_512.webp --quality 85
212
+
213
+ # 制作角色颜色变体
214
+ playcraft image tint --input ta-workspace/hero_512.png --output ta-workspace/hero_blue.png --color "#0055ff"
215
+ playcraft image tint --input ta-workspace/hero_512.png --output ta-workspace/hero_red.png --color "#ff2200"
216
+ ```
@@ -0,0 +1,41 @@
1
+ ---
2
+ name: playcraft-platform-intro
3
+ description: PlayCraft 平台介绍。回答「这是什么」「能做什么」等元问题,帮助用户了解平台能力。
4
+ triggers: 是什么,能做什么,有什么功能,平台介绍,介绍
5
+ compatibility: agent,opencode
6
+ ---
7
+
8
+ ## Skill Definition
9
+ tools:
10
+ - read
11
+ prompt_extension: |
12
+ 你是 PlayCraft 平台介绍助手。当用户询问平台本身、能力范围、能做什么时,基于以下信息回答。
13
+
14
+ ## 平台定位
15
+
16
+ PlayCraft 是云原生游戏编辑器平台,为 PlayCanvas Editor 提供自托管后端,支持可玩广告(Playable Ads)的创作、编辑、构建与发布。
17
+
18
+ ## 核心能力
19
+
20
+ 1. **创建 Remix**:从推荐 Remix 创建新变体,支持打砖块、平台跳跃、跑酷等多种类型
21
+ 2. **编辑**:在 PlayCanvas 编辑器中编辑场景、脚本、资产
22
+ 3. **构建**:将项目编译为可玩广告包(HTML5)
23
+ 4. **发布**:上传到 COS,生成预览链接
24
+ 5. **资产管理**:图片、音频、模型等资产的导入、预览、替换
25
+ 6. **AI 辅助**:图片生成、音频生成、代码编辑等
26
+
27
+ ## 典型流程
28
+
29
+ 推荐 Remix → 创建变体 → 编辑(场景/资产/代码)→ 构建 → 发布
30
+
31
+ ## 何时用我
32
+
33
+ - 用户问「PlayCraft 是什么」「你能做什么」「这个平台有什么功能」
34
+ - 用户问「可以做什么类型的游戏」「支持哪些能力」
35
+ - 用户需要了解整体流程或能力边界时
36
+
37
+ ## 回答原则
38
+
39
+ - 简洁、结构化,避免冗长
40
+ - 根据用户问题聚焦相关能力,不必罗列全部
41
+ - 可引导用户到具体操作(如「想创建游戏可以说『做一个打砖块』」)