@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,179 @@
1
+ /**
2
+ * merge_core.aigameplay — reducer 接口模板
3
+ *
4
+ * Agent 生成实际 reducer 时,必须导出以下函数。
5
+ * 此文件是接口约束模板,不是可执行代码。
6
+ *
7
+ * ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
8
+ * ⚠️ 重要:渲染层(GameScene)不应直接调用 dispatch()
9
+ *
10
+ * dispatch() 是一体化接口,内部完成合并、升级、自动生成全流程后
11
+ * 只返回最终状态,中间过程(哪两个物品合并了、升级动画坐标、
12
+ * 新生成的物品位置)全部丢失。
13
+ *
14
+ * 渲染层需要分步动画(拖动飞向目标 → 合并升级光效 → 新物品弹出),
15
+ * 因此必须使用下方的「分步函数」逐步驱动,每步之间插入 Tween 动画。
16
+ *
17
+ * dispatch() 的用途:无头测试、AI 模拟、自动求解等场景。
18
+ * ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
19
+ */
20
+
21
+ // ─── 配置类型 ─────────────────────────────────────────────────────────────────
22
+
23
+ export type MergeConfig = {
24
+ /** 棋盘列数,默认 5 */
25
+ cols: number;
26
+ /** 棋盘行数,默认 5 */
27
+ rows: number;
28
+ /** 最高等级(达到后胜利),默认 9 */
29
+ maxTier: number;
30
+ /** 是否在每次合并后自动生成新物品 */
31
+ autoSpawn: boolean;
32
+ /** 自动生成的物品等级,默认 1 */
33
+ spawnTier: number;
34
+ /** 相邻方式:正交(上下左右)或全方向(含斜角) */
35
+ adjacency: 'orthogonal' | 'all';
36
+ /** 目标分数(score_goal 模式),可选 */
37
+ goalScore?: number;
38
+ };
39
+
40
+ // ─── 动作类型 ─────────────────────────────────────────────────────────────────
41
+
42
+ export type MergeAction =
43
+ | { type: 'merge'; from: { col: number; row: number }; to: { col: number; row: number } }
44
+ | { type: 'reset' };
45
+
46
+ // ─── 状态类型 ─────────────────────────────────────────────────────────────────
47
+
48
+ /** 棋盘格子:null 表示空,number 表示物品等级(1 ~ maxTier) */
49
+ export type GridCell = number | null;
50
+
51
+ export type MergeState = {
52
+ /** 棋盘,board[col][row] */
53
+ board: GridCell[][];
54
+ /** 当前得分 */
55
+ score: number;
56
+ /** 已操作次数 */
57
+ moves: number;
58
+ /** 游戏是否结束 */
59
+ gameOver: boolean;
60
+ /** 是否胜利 */
61
+ win: boolean;
62
+ /** 上一次合并是否被拒绝 */
63
+ lastMergeRejected: boolean;
64
+ };
65
+
66
+ // ─── 分步操作返回类型 ─────────────────────────────────────────────────────────
67
+
68
+ /** 格子坐标 */
69
+ export type GridPos = { col: number; row: number };
70
+
71
+ /** 合并结果 */
72
+ export type MergeResult = {
73
+ /** 被移除的源格子坐标 */
74
+ removedFrom: GridPos;
75
+ /** 升级后的目标格子坐标和新等级 */
76
+ mergedItem: { pos: GridPos; tier: number };
77
+ /** 新状态 */
78
+ newState: MergeState;
79
+ };
80
+
81
+ /** 自动生成的物品 */
82
+ export type SpawnedItem = {
83
+ pos: GridPos;
84
+ tier: number;
85
+ } | null;
86
+
87
+ /** 可合并对 */
88
+ export type MergePair = {
89
+ from: GridPos;
90
+ to: GridPos;
91
+ tier: number;
92
+ };
93
+
94
+ // ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
95
+ // 必须导出的函数
96
+ // ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
97
+
98
+ // ─── 初始化 ──────────────────────────────────────────────────────────────────
99
+
100
+ /**
101
+ * init:根据配置初始化游戏状态
102
+ * - 创建空棋盘
103
+ * - 随机在部分空格生成 spawnTier 物品(初始填充约 1/3 棋盘)
104
+ */
105
+ export declare function init(config: MergeConfig): MergeState;
106
+
107
+ // ─── 一体化接口(测试/AI 模拟用) ───────────────────────────────────────────
108
+
109
+ /**
110
+ * dispatch:接收动作,返回新状态(纯函数,不得修改原 state)
111
+ * - merge:验证并执行合并,自动生成新物品,检测胜败
112
+ * - reset:重置到初始状态
113
+ *
114
+ * ⚠️ 仅用于无头测试和 AI 模拟。渲染层请使用下方分步函数。
115
+ */
116
+ export declare function dispatch(state: MergeState, action: MergeAction): MergeState;
117
+
118
+ /**
119
+ * getState:返回当前状态快照
120
+ */
121
+ export declare function getState(state: MergeState): MergeState;
122
+
123
+ // ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
124
+ // 分步函数(渲染层/场景层必须使用这些函数驱动动画)
125
+ // ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
126
+
127
+ /**
128
+ * canMerge:检测 from 格子的物品是否可以合并到 to 格子
129
+ *
130
+ * 合法条件:
131
+ * 1. from 和 to 都有物品(非 null)
132
+ * 2. from 和 to 的物品等级相同
133
+ * 3. from 和 to 在配置允许的相邻范围内(正交或全方向)
134
+ * 4. 合并后等级不超过 maxTier(或恰好 = maxTier 触发胜利)
135
+ *
136
+ * 场景层在拖拽过程中实时调用,用于高亮合法/非法目标格子。
137
+ */
138
+ export declare function canMerge(
139
+ state: MergeState,
140
+ from: GridPos,
141
+ to: GridPos,
142
+ config: MergeConfig,
143
+ ): boolean;
144
+
145
+ /**
146
+ * mergeItems:执行合并(不做合法性验证,调用前请先确认 canMerge)
147
+ *
148
+ * 合并逻辑:移除 from 格子的物品,将 to 格子的物品等级 +1。
149
+ * 场景层在拖拽释放后调用,播放飞入合并动画。
150
+ */
151
+ export declare function mergeItems(
152
+ state: MergeState,
153
+ from: GridPos,
154
+ to: GridPos,
155
+ config: MergeConfig,
156
+ ): MergeResult;
157
+
158
+ /**
159
+ * spawnItem:在棋盘随机空格生成 spawnTier 等级的新物品
160
+ *
161
+ * 若棋盘没有空格,返回 null。
162
+ * 场景层根据返回值在对应格子播放物品弹出缩放动画。
163
+ */
164
+ export declare function spawnItem(
165
+ state: MergeState,
166
+ config: MergeConfig,
167
+ ): SpawnedItem;
168
+
169
+ /**
170
+ * findMergablePairs:返回当前棋盘上所有可合并的物品对
171
+ *
172
+ * 场景层用途:
173
+ * - 空数组 + 棋盘满 → 触发游戏结束
174
+ * - Hint 功能:高亮推荐的下一步合并对
175
+ */
176
+ export declare function findMergablePairs(
177
+ state: MergeState,
178
+ config: MergeConfig,
179
+ ): MergePair[];
@@ -0,0 +1,59 @@
1
+ ---
2
+ name: mistake_sfx.aiaudio
3
+ description: 路径被阻挡时的错误提示音效(较轻,非扣命音效)。
4
+ triggers: 需要生成路径阻挡错误提示音效时触发。
5
+ ---
6
+
7
+ # 阻挡错误音效
8
+
9
+ ## Recipe
10
+
11
+ 生成提示词见 manifest.json generation.prompt。
12
+ - model: Google Lyria 3(平台默认,见 manifest.json generation.platformSkill)
13
+ - format: mp3
14
+ - loop: false
15
+
16
+ ## Result
17
+
18
+ - 产物文件:`mistake.mp3`
19
+ - 在 Preloader.ts 中作为 `sfxMistake` key 加载
20
+
21
+ ## Binding
22
+
23
+ ```json
24
+ {
25
+ "role": "sfxMistake",
26
+ "target": "assets/sounds/mistake.mp3",
27
+ "type": "audio-asset-reference"
28
+ }
29
+ ```
30
+
31
+ ## 生成方式
32
+
33
+ Platform Skill: `playcraft-audio-generation`
34
+
35
+ ```bash
36
+ # 1. 生成 SFX(--prompt 必须英文)
37
+ playcraft tools generate-sfx \
38
+ --prompt "error buzzer sound for hitting a blocked path in puzzle game" \
39
+ --duration 1 \
40
+ --output ta-workspace/raw_sfx.mp3
41
+
42
+ # 2. 归一化音量
43
+ playcraft audio normalize --input ta-workspace/raw_sfx.mp3 --output ta-workspace/raw_sfx.mp3 --target-loudness -16
44
+
45
+ # 3. 压缩(SFX 目标 ≤15KB)
46
+ playcraft audio compress --input ta-workspace/raw_sfx.mp3 --output ta-workspace/mistake.mp3 --target-size 15KB
47
+
48
+ # 4. 将产物写入 sandbox 对应路径(见 binding.target)
49
+ ```
50
+ ## Skill Definition
51
+
52
+ ```yaml
53
+ tools:
54
+ - generate_audio
55
+ inputs:
56
+ - prompt: see manifest.json
57
+ outputs:
58
+ - audio: mistake.mp3
59
+ ```
@@ -0,0 +1,45 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "atomId": "mistake_sfx.aiaudio",
4
+ "bundleType": "aiaudio",
5
+ "category": "audio",
6
+ "mode": "generative",
7
+ "label": {
8
+ "zh": "阻挡失败音效",
9
+ "en": "Blocked path mistake SFX"
10
+ },
11
+ "tags": [
12
+ "audio",
13
+ "sfx",
14
+ "mistake",
15
+ "blocked",
16
+ "error"
17
+ ],
18
+ "bindingRoles": [
19
+ "sfxMistake"
20
+ ],
21
+ "generation": {
22
+ "kind": "sfx",
23
+ "prompt": "error buzzer sound for hitting a blocked path in puzzle game",
24
+ "duration": 1,
25
+ "loop": false,
26
+ "referenceAudio": "ref/mistake.mp3",
27
+ "platformSkill": "playcraft-audio-generation"
28
+ },
29
+ "result": {
30
+ "outputFile": "ref/mistake.mp3",
31
+ "format": "mp3",
32
+ "constraints": {
33
+ "maxDuration": 1
34
+ }
35
+ },
36
+ "binding": {
37
+ "role": "sfxMistake",
38
+ "target": "assets/sounds/mistake.mp3",
39
+ "type": "audio-asset-reference"
40
+ },
41
+ "files": {
42
+ "skill": "SKILL.md",
43
+ "asset": "ref/mistake.mp3"
44
+ }
45
+ }
@@ -0,0 +1,58 @@
1
+ ---
2
+ name: nomove_hint_overlay.aiimage
3
+ description: 点击阻挡路径扣命时的全屏红色警告闪光遮罩图片。
4
+ triggers: 需要生成危险警告全屏遮罩图片时触发。
5
+ ---
6
+
7
+ # 危险闪光全屏遮罩
8
+
9
+ ## Recipe
10
+
11
+ 生成提示词见 manifest.json generation.prompt。
12
+ - model: google/imagen-3.0-generate-002(默认,见 manifest.json generation.platformSkill)
13
+ - format: webp, 透明背景
14
+
15
+ ## Result
16
+
17
+ - 产物文件:`nomove_hint.webp`
18
+ - 在 Preloader.ts 中作为 `dangerFlashOverlay` key 加载
19
+
20
+ ## Binding
21
+
22
+ ```json
23
+ {
24
+ "role": "dangerFlashOverlay",
25
+ "target": "assets/nomove_hint.webp",
26
+ "type": "image-asset-reference"
27
+ }
28
+ ```
29
+
30
+ ## 生成方式
31
+
32
+ Platform Skill: `playcraft-image-generation`
33
+
34
+ ```bash
35
+ # 1. 生成图片(参考 ref/ 中的参考图)
36
+ playcraft tools generate-image \
37
+ --prompt "full screen red danger flash overlay, semi-transparent, warning indicator for game failure" \
38
+ --aspect-ratio 1:1 \
39
+ --reference-image ${SKILL_DIR}/ref/nomove_hint.png \
40
+ --image-model google/imagen-3.0-generate-002 \
41
+ --output ta-workspace/raw.png
42
+
43
+ # 2. 后处理(去白底 + 格式转换)
44
+ playcraft image remove-background --input ta-workspace/raw.png --output ta-workspace/trimmed.png
45
+ playcraft image convert --input ta-workspace/trimmed.png --output ta-workspace/nomove_hint.webp --quality 85
46
+
47
+ # 3. 将产物写入 sandbox 对应路径(见 binding.target)
48
+ ```
49
+ ## Skill Definition
50
+
51
+ ```yaml
52
+ tools:
53
+ - generate_image
54
+ inputs:
55
+ - prompt: see manifest.json
56
+ outputs:
57
+ - image: nomove_hint.webp
58
+ ```
@@ -0,0 +1,48 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "atomId": "nomove_hint_overlay.aiimage",
4
+ "bundleType": "aiimage",
5
+ "category": "visual",
6
+ "mode": "generative",
7
+ "label": {
8
+ "zh": "危险闪光全屏遮罩",
9
+ "en": "Danger flash overlay"
10
+ },
11
+ "tags": [
12
+ "visual",
13
+ "danger",
14
+ "flash",
15
+ "overlay",
16
+ "warning",
17
+ "full-screen"
18
+ ],
19
+ "bindingRoles": [
20
+ "dangerFlashOverlay"
21
+ ],
22
+ "generation": {
23
+ "kind": "image",
24
+ "prompt": "full screen red danger flash overlay, semi-transparent, warning indicator for game failure",
25
+ "aspectRatio": "1:1",
26
+ "model": "google/imagen-3.0-generate-002",
27
+ "referenceImage": "ref/nomove_hint.png",
28
+ "platformSkill": "playcraft-image-generation"
29
+ },
30
+ "result": {
31
+ "outputFile": "ref/nomove_hint.webp",
32
+ "format": "webp",
33
+ "constraints": {
34
+ "minWidth": 750,
35
+ "minHeight": 1334
36
+ }
37
+ },
38
+ "binding": {
39
+ "role": "dangerFlashOverlay",
40
+ "target": "assets/nomove_hint.webp",
41
+ "type": "image-asset-reference"
42
+ },
43
+ "files": {
44
+ "skill": "SKILL.md",
45
+ "asset": "ref/nomove_hint.webp",
46
+ "assetPng": "ref/nomove_hint.png"
47
+ }
48
+ }
@@ -0,0 +1,58 @@
1
+ ---
2
+ name: normal_dot.aiimage
3
+ description: 路径消除轨迹动画中使用的普通粒子图片。
4
+ triggers: 需要生成路径消除轨迹粒子图片时触发。
5
+ ---
6
+
7
+ # 普通粒子
8
+
9
+ ## Recipe
10
+
11
+ 生成提示词见 manifest.json generation.prompt。
12
+ - model: google/imagen-3.0-generate-002(默认,见 manifest.json generation.platformSkill)
13
+ - format: webp, 透明背景
14
+
15
+ ## Result
16
+
17
+ - 产物文件:`normal_dot.webp`
18
+ - 在 Preloader.ts 中作为 `normalParticleAsset` key 加载
19
+
20
+ ## Binding
21
+
22
+ ```json
23
+ {
24
+ "role": "normalParticleAsset",
25
+ "target": "assets/normal_dot.webp",
26
+ "type": "image-asset-reference"
27
+ }
28
+ ```
29
+
30
+ ## 生成方式
31
+
32
+ Platform Skill: `playcraft-image-generation`
33
+
34
+ ```bash
35
+ # 1. 生成图片(参考 ref/ 中的参考图)
36
+ playcraft tools generate-image \
37
+ --prompt "small neutral dot particle for path elimination trail animation" \
38
+ --aspect-ratio 1:1 \
39
+ --reference-image ${SKILL_DIR}/ref/normal_dot.png \
40
+ --image-model google/imagen-3.0-generate-002 \
41
+ --output ta-workspace/raw.png
42
+
43
+ # 2. 后处理(去白底 + 格式转换)
44
+ playcraft image remove-background --input ta-workspace/raw.png --output ta-workspace/trimmed.png
45
+ playcraft image convert --input ta-workspace/trimmed.png --output ta-workspace/normal_dot.webp --quality 85
46
+
47
+ # 3. 将产物写入 sandbox 对应路径(见 binding.target)
48
+ ```
49
+ ## Skill Definition
50
+
51
+ ```yaml
52
+ tools:
53
+ - generate_image
54
+ inputs:
55
+ - prompt: see manifest.json
56
+ outputs:
57
+ - image: normal_dot.webp
58
+ ```
@@ -0,0 +1,46 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "atomId": "normal_dot.aiimage",
4
+ "bundleType": "aiimage",
5
+ "category": "visual",
6
+ "mode": "generative",
7
+ "label": {
8
+ "zh": "普通粒子",
9
+ "en": "Normal particle dot"
10
+ },
11
+ "tags": [
12
+ "visual",
13
+ "particle",
14
+ "dot",
15
+ "trail"
16
+ ],
17
+ "bindingRoles": [
18
+ "normalParticleAsset"
19
+ ],
20
+ "generation": {
21
+ "kind": "image",
22
+ "prompt": "small neutral dot particle for path elimination trail animation",
23
+ "aspectRatio": "1:1",
24
+ "model": "google/imagen-3.0-generate-002",
25
+ "referenceImage": "ref/normal_dot.png",
26
+ "platformSkill": "playcraft-image-generation"
27
+ },
28
+ "result": {
29
+ "outputFile": "ref/normal_dot.webp",
30
+ "format": "webp",
31
+ "constraints": {
32
+ "minWidth": 32,
33
+ "minHeight": 32
34
+ }
35
+ },
36
+ "binding": {
37
+ "role": "normalParticleAsset",
38
+ "target": "assets/normal_dot.webp",
39
+ "type": "image-asset-reference"
40
+ },
41
+ "files": {
42
+ "skill": "SKILL.md",
43
+ "asset": "ref/normal_dot.webp",
44
+ "assetPng": "ref/normal_dot.png"
45
+ }
46
+ }
@@ -0,0 +1,71 @@
1
+ ---
2
+ name: ocean.aiimage
3
+ description: 海洋背景图封包 - 热带海洋/珊瑚礁场景,适合休闲游戏的清凉蓝色背景贴图生成
4
+ triggers: 海洋,ocean,大海,sea,背景,background,蓝色,coral,珊瑚,水下,underwater
5
+ ---
6
+
7
+ # ocean.aiimage
8
+
9
+ 海洋主题背景图封包。适合休闲消除、泡泡龙等类型游戏,营造清凉愉快的海洋氛围。
10
+
11
+ ## Recipe
12
+
13
+ 生成方式:调用 AI 图像生成接口,基于以下参数生成或 fork:
14
+
15
+ - **基础 prompt**:`calm tropical ocean, turquoise water, underwater coral reef, casual mobile game style, flat design, vibrant colors`
16
+ - **宽高比**:9:16(竖屏移动端)
17
+ - **风格**:cartoon / flat design
18
+ - **可 fork 的变体方向**:
19
+ - 深海:`deep ocean, bioluminescent sea creatures, dark blue, mysterious`
20
+ - 海滩:`tropical beach, white sand, palm trees, sunset sky`
21
+ - 暴风海:`stormy ocean, dramatic waves, dark clouds, tension`
22
+
23
+ **生成步骤:**
24
+ 1. 确认 Prefab 容器对背景贴图的尺寸约束(默认 1080×1920 PNG)
25
+ 2. 调用图像生成 API,传入 prompt 和宽高比
26
+ 3. 验证输出尺寸 ≥ 1080px 宽
27
+ 4. 将生成图写入封包目录为 `background.png`
28
+ 5. 更新 `manifest.json` 中 `generation.prompt` 和 `generation.seed` 字段
29
+
30
+ ## Result
31
+
32
+ - **产物文件**:`background.png`
33
+ - **格式**:PNG
34
+ - **最小分辨率**:1080×1920
35
+ - **引用方式**:通过 `manifest.json.result.outputFile` 引用
36
+
37
+ ## Binding
38
+
39
+ - **Binding Role**:`backgroundTexture`
40
+ - **挂载目标**:`scene://entities/Background/element/textureAsset`
41
+ - **引用类型**:`texture-asset-reference`
42
+ - **约束**:format=png,minWidth=1080
43
+
44
+ ## 生成方式
45
+
46
+ Platform Skill: `playcraft-image-generation`
47
+
48
+ ```bash
49
+ # 1. 生成图片(参考 ref/ 中的参考图)
50
+ playcraft tools generate-image \
51
+ --prompt "calm tropical ocean, turquoise water, underwater coral reef, casual mobile game style, flat design, vibrant colors" \
52
+ --aspect-ratio 9:16 \
53
+ --image-model google/imagen-3.0-generate-002 \
54
+ --output ta-workspace/raw.png
55
+
56
+ # 2. 后处理(去白底 + 格式转换)
57
+ playcraft image remove-background --input ta-workspace/raw.png --output ta-workspace/trimmed.png
58
+ playcraft image convert --input ta-workspace/trimmed.png --output ta-workspace/background.webp --quality 85
59
+
60
+ # 3. 将产物写入 sandbox 对应路径(见 binding.target)
61
+ ```
62
+ ## Skill Definition
63
+
64
+ tools:
65
+ - bash
66
+ - write
67
+ - read
68
+ prompt_extension: |
69
+ You are generating an ocean background image for a mobile casual game.
70
+ Follow the Recipe section to call the image generation API with the specified prompt and parameters.
71
+ After generation, verify the output meets the Result constraints, then apply the Binding to wire it into the scene.
@@ -0,0 +1,49 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "atomId": "ocean.aiimage",
4
+ "bundleType": "aiimage",
5
+ "category": "visual",
6
+ "mode": "generative",
7
+ "label": {
8
+ "zh": "海洋背景",
9
+ "en": "Ocean background"
10
+ },
11
+ "tags": [
12
+ "background",
13
+ "visual",
14
+ "ocean",
15
+ "sea",
16
+ "water",
17
+ "casual",
18
+ "blue"
19
+ ],
20
+ "bindingRoles": ["backgroundTexture"],
21
+ "generation": {
22
+ "kind": "image",
23
+ "prompt": "calm tropical ocean, turquoise water, underwater coral reef, casual mobile game style, flat design, vibrant colors",
24
+ "aspectRatio": "9:16",
25
+ "model": "google/imagen-3.0-generate-002",
26
+ "style": "cartoon",
27
+ "platformSkill": "playcraft-image-generation"
28
+ },
29
+ "result": {
30
+ "outputFile": "background.png",
31
+ "format": "png",
32
+ "constraints": {
33
+ "minWidth": 1080,
34
+ "minHeight": 1920
35
+ }
36
+ },
37
+ "binding": {
38
+ "role": "backgroundTexture",
39
+ "target": "scene://entities/Background/element/textureAsset",
40
+ "type": "texture-asset-reference",
41
+ "constraints": {
42
+ "format": "png",
43
+ "minWidth": 1080
44
+ }
45
+ },
46
+ "files": {
47
+ "skill": "SKILL.md"
48
+ }
49
+ }
@@ -0,0 +1,32 @@
1
+ # particle-confetti — Celebration Confetti VFX
2
+
3
+ Falling confetti shower for level complete, win screens, and achievement moments.
4
+
5
+ ## Two Approaches
6
+
7
+ ### Approach A: Sprite Sheet (Cross-Engine, Recommended)
8
+ ```bash
9
+ playcraft image use-vfx --preset confetti --output assets/vfx/confetti.png
10
+ ```
11
+
12
+ ### Approach B: Runtime Particles (Phaser 3)
13
+ Colorful rectangles with gravity, rotation, and wind drift.
14
+
15
+ ## Parameters
16
+
17
+ | Parameter | Default | Description |
18
+ |-----------|---------|-------------|
19
+ | `count` | 80 | Total confetti pieces |
20
+ | `duration` | 2000ms | Emitter active time |
21
+ | `colors` | rainbow | Confetti color palette |
22
+ | `gravity` | 300 | Downward fall speed |
23
+ | `spread` | full width | Horizontal spawn width |
24
+ | `rotation` | random | Per-piece rotation speed |
25
+
26
+ ## Decision Notes
27
+
28
+ | Decision | Reason |
29
+ |----------|--------|
30
+ | Top-edge spawn | Confetti should fall from above, creating natural rain effect |
31
+ | Multiple colors | Celebration requires visual richness; single color looks monotone |
32
+ | 2s duration | Long enough to feel festive; not so long it interrupts next scene |
@@ -0,0 +1,21 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "atomId": "particle-confetti.aicomponent",
4
+ "bundleType": "aicomponent",
5
+ "category": "vfx",
6
+ "mode": "fixed",
7
+ "label": { "zh": "彩色纸屑庆祝特效", "en": "Celebration Confetti VFX" },
8
+ "tags": ["vfx", "confetti", "celebration", "level-complete", "reward", "phaser"],
9
+ "generation": {
10
+ "animationType": "particle",
11
+ "engineSupport": ["phaser", "html5-spritesheet"],
12
+ "parameters": {
13
+ "count": "number — confetti piece count (default: 80)",
14
+ "duration": "number — emitter active time in ms (default: 2000)",
15
+ "colors": "string[] — color palette for confetti pieces",
16
+ "gravity": "number — downward gravity (default: 300)",
17
+ "spread": "number — horizontal spread (default: full screen width)"
18
+ }
19
+ },
20
+ "files": { "skill": "SKILL.md", "phaser": "ref/phaser.js", "html5": "ref/html5-spritesheet.js" }
21
+ }