@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,75 @@
1
+ ---
2
+ name: playable_end_screen_layout.aicomponent
3
+ description: 可玩广告结算/结束全屏层框架无关布局规范(遮罩、主视觉安全区、主次 CTA、与 download CTA 关系)。Agent 按 Canon 放置胜负 UI;Phaser 默认实现见 game_over_panel。
4
+ triggers: 需要实现胜利/失败全屏结果、转化 CTA、或统一结算层与安全区/缩放规则时触发。
5
+ ---
6
+
7
+ # 可玩结算屏布局(Playable End Screen Layout)
8
+
9
+ 本 skill **不包含**引擎代码,只约束 **全屏结束态** 的结构与缩放;通用缩放数学见 `responsive_2d_layout.aicomponent` **第一节**。
10
+
11
+ ---
12
+
13
+ ## 规范(Layout Canon)
14
+
15
+ ### 1. 结构(由底到顶)
16
+
17
+ 1. **全屏遮罩(Dimmer)**:覆盖 \((0,0)–(W_r,H_r)\),通常半透明深色,用于打断游玩注意力、突出结果。
18
+ 2. **主视觉(Hero)**:胜负插图或动画主体,置于 **视觉安全区** 内——距各边预留 ≥ `m_hero,dp * uiScale`(建议 24–48 dp 量级,项目单点配置),避免刘海/圆角裁切。
19
+ 3. **主 CTA(Primary)**:试玩转化核心按钮(如 Install);宽度建议 ≤ \(W_r - 2 \cdot \text{margin_cta} \cdot \text{uiScale}\),纵向位置优先 **底区偏上**(与 `playable_hud_layout` 底区协调),使用 **vScale** 锚定距底边 dp。
20
+ 4. **次行动(Secondary)**:可选(再看一次、关卡提示);尺寸与对比度低于主 CTA,避免抢转化。
21
+
22
+ ### 2. 缩放与字体
23
+
24
+ - 主 CTA 高度、圆角、主文案字号:**dp × uiScale**。
25
+ - **距底 / 距顶边距**:优先 **vScale** 与 Canon 1.4 节一致。
26
+ - 结算层出现时可 **暂停或遮挡** 底部棋盘交互;**不得**在遮罩未铺满时让棋盘仍可缩放导致误触。
27
+
28
+ ### 3. z-order
29
+
30
+ 结算全屏层深度 **高于** 顶/底 HUD 与 **高于** 指引层(结算出现时通常已关闭教程)。若在失败态仍需展示弱提示,提示须附属于结算容器内,避免 depth 混乱。
31
+
32
+ ### 4. 资源与实现对应
33
+
34
+ - 胜负 **图片** 由 `win_result_panel.aiimage` / `lose_result_panel.aiimage` 等提供;本规范只管 **占位矩形与缩放**,不规定画风。
35
+ - **Phaser 参考**:`game_over_panel.aicomponent`(遮罩 + 结果图 + 与 `download_button` 等组合)。
36
+
37
+ ---
38
+
39
+ ## Recipe
40
+
41
+ | 决策 | 原因 |
42
+ |------|------|
43
+ | **结算结构单独规范** | 结算屏的 CTA 位置直接影响广告转化率;明确的安全区边距和 vScale 锚点规范防止 Agent 把 CTA 放到刘海或圆角裁切区域 |
44
+ | **遮罩是必要层** | 全屏 dimmer 打断游玩注意力,引导用户聚焦结果和 CTA;没有遮罩时用户视线在游戏画面和结果按钮间分散 |
45
+ | **引用底区高度** | 主 CTA 的纵向位置必须与底区高度常量(`playable_hud_layout` 约定)一致,避免 CTA 被底部安全区遮挡 |
46
+
47
+ ## Adapter
48
+
49
+ - **Role**: `playableEndScreenLayout` — 结算全屏布局规范(遮罩/主视觉/CTA 锚点 + z-order 最高),无代码产出
50
+ - **Provides**: 结算层结构规范文档、主视觉安全区边距约定、CTA 位置规范、z-order(高于所有其他层)
51
+ - **Requires**: `responsive_2d_layout.aicomponent`、`playable_hud_layout.aicomponent`(底区 CTA 锚点对齐)
52
+ - **Consumed by**: `game_over_panel.aicomponent`(按此规范实现胜败面板的布局)
53
+ - **Integration point**: 无代码集成点;Agent 加载后按规范实现 GameOverPanel 的布局
54
+
55
+ ## Imports
56
+
57
+ - `responsive_2d_layout.aicomponent`(硬依赖)
58
+ - 与 `playable_hud_layout.aicomponent` **建议同时加载**:底区高度与主 CTA 锚点需一致
59
+
60
+ ## Scaffold
61
+
62
+ 无 scaffold;落地见 `game_over_panel.aicomponent`。
63
+
64
+ ## Skill Definition
65
+
66
+ ```yaml
67
+ tools:
68
+ - read_file
69
+ - write_file
70
+ inputs:
71
+ - layout: end-screen structure and CTA placement rules from SKILL.md
72
+ outputs:
73
+ - endScreenLayers: dimmer, hero safe margins, primary/secondary CTA rules
74
+ - zOrderRelativeToHudAndGuidance: must be on top when shown
75
+ ```
@@ -0,0 +1,24 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "atomId": "playable_end_screen_layout.aicomponent",
4
+ "bundleType": "aicomponent",
5
+ "category": "layout",
6
+ "mode": "fixed",
7
+ "label": { "zh": "可玩结算屏布局规范", "en": "Playable end-screen layout" },
8
+ "tags": ["layout", "end-screen", "result", "win", "lose", "cta", "modal", "framework-agnostic"],
9
+ "bindingRoles": ["playableEndScreenLayout"],
10
+ "imports": [
11
+ { "slot": "layout", "pinAtomId": "responsive_2d_layout.aicomponent", "edgeKind": "requires", "bindAs": "layoutCanon" }
12
+ ],
13
+ "neutralDescriptor": {
14
+ "geometry": "full-screen dimmer, hero in safe margins, primary CTA anchored with vScale, optional secondary; above HUD and guidance",
15
+ "layers": ["modal", "conversion", "safe-area"],
16
+ "replaceable": ["m_hero,dp", "margin_cta", "opacity of dimmer"]
17
+ },
18
+ "usageHints": [
19
+ "结算层须全屏遮罩;主视觉留在安全区内(dp 边距 × uiScale)",
20
+ "主 CTA 字号与按钮高宽用 uiScale;距底用 vScale",
21
+ "实现参考 game_over_panel;素材见 win/lose_result_panel aiimage"
22
+ ],
23
+ "files": { "skill": "SKILL.md" }
24
+ }
@@ -0,0 +1,89 @@
1
+ ---
2
+ name: playable_guidance_layer.aicomponent
3
+ description: 可玩广告指引层(新手引导、高亮、手指提示、轻提示)框架无关布局与交互规范。约束遮罩、挖洞、pointer 缩放与深度;步进教程见 tutorial_overlay。
4
+ triggers: 需要新手引导、无步进提示、高亮棋盘区域、手指动画,或统一指引层与 HUD/棋盘的遮挡关系时触发。
5
+ ---
6
+
7
+ # 可玩指引层布局(Playable Guidance Layer)
8
+
9
+ 本 skill 定义 **指引 / 教程 / 轻提示** 的框架无关合同;坐标系与 **uiScale / vScale** 见 `responsive_2d_layout.aicomponent` **第一节**。
10
+
11
+ ---
12
+
13
+ ## 规范(Layout Canon)
14
+
15
+ ### 1. 层级
16
+
17
+ - 指引层 **高于** 棋盘与 Gameplay 世界内容。
18
+ - 指引层 **低于** 全屏结算层(`playable_end_screen_layout`)。若同时存在,应 **先结束教程** 或 **将 tutorial 收纳在结算容器内**(少见)。
19
+
20
+ 与 `playable_hud_layout`:**默认** 顶栏不被教程遮罩遮挡(玩家仍能看到命/时间时可读);若全屏 darken 教程,须 **整体提高 darken 的 depth** 但仍 **低于** 顶栏 depth,或 **同时** 在教程中复述关键 HUD 信息——二者选一应项目一致。
21
+
22
+ ### 2. 视觉结构
23
+
24
+ 1. **可选全屏半透层**:`alpha` 建议 0.35–0.6;颜色深色系以保证挖洞对比。
25
+ 2. **挖洞(Spotlight)**:对准目标区域,洞缘可软边;洞区域须与 **实际可点热区** 对齐(考虑 uiScale 后的最小点击 44pt 等价)。
26
+ 3. **Pointer(手指)**:素材见 `figer_icon.aiimage` 等;尺寸 **dp × uiScale**,摆动动画幅度亦按 uiScale 缩放,避免大屏夸张。
27
+
28
+ ### 3. 类型区分
29
+
30
+ | 类型 | 行为 | 备注 |
31
+ |------|------|------|
32
+ | **步进教程** | 多步、阻塞直到点击目标 | `tutorial_overlay.aicomponent` |
33
+ | **单条轻提示** | Toast / 横幅、限时消失 | 同一 depth 合同,可不挖洞 |
34
+ | **僵局提示** | 如无可走步 | 可配合 `nomove_hint_overlay` 素材 |
35
+
36
+ ### 4. Agent 义务
37
+
38
+ - 指引用字号、描边、间距:**dp × uiScale**;自屏幕边缘的位移:**vScale**。
39
+ - **禁止** 在指引层使用与全局不同的自创缩放比。
40
+ - 教程步进状态机与玩法偶合时,须在 skill 文档或代码注释中标明 **与关卡索引的触发条件**(如前 1–2 关)。
41
+
42
+ ---
43
+
44
+ ## 与实现 skill 的对应关系
45
+
46
+ | 合同项 | Phaser 参考 |
47
+ |--------|------------|
48
+ | 步进引导 | `tutorial_overlay.aicomponent` |
49
+ | 手指素材 | `figer_icon.aiimage`(软槽位) |
50
+
51
+ ---
52
+
53
+ ## Recipe
54
+
55
+ | 决策 | 原因 |
56
+ |------|------|
57
+ | **框架无关规范** | 指引层 z-order bug(手指在 HUD 后面、挖洞与实际点击热区错位)在 Phaser 和 Three.js 中都会出现;统一规范防止两个实现走向不同约定 |
58
+ | **指引层低于结算层** | 结算出现时通常已关闭教程;明确约定避免教程遮罩挡住胜利面板的 CTA 按钮 |
59
+ | **Spotlight 热区对齐要求** | 挖洞区域必须与实际可点击区域完全对齐;错位会让玩家点了"高亮区域"却没有响应,严重损害体验 |
60
+
61
+ ## Adapter
62
+
63
+ - **Role**: `playableGuidanceLayout` — 指引/新手教程层深度与遮罩规范,无代码产出
64
+ - **Provides**: 指引层深度约定(高于棋盘/HUD,低于结算)、Spotlight 对齐要求、Pointer 缩放规范文档
65
+ - **Requires**: `responsive_2d_layout.aicomponent`、`playable_hud_layout.aicomponent`(层级关系参考)
66
+ - **Consumed by**: `tutorial_overlay.aicomponent`(按此规范设置 TutorialManager 的 depth 和挖洞逻辑)
67
+ - **Integration point**: 无代码集成点;Agent 加载后按规范实现 TutorialManager 的视觉层级
68
+
69
+ ## Imports
70
+
71
+ - `responsive_2d_layout.aicomponent`(硬依赖)
72
+ - 建议加载 `playable_hud_layout.aicomponent` 以统一 depth 合同
73
+
74
+ ## Scaffold
75
+
76
+ 无 scaffold。
77
+
78
+ ## Skill Definition
79
+
80
+ ```yaml
81
+ tools:
82
+ - read_file
83
+ - write_file
84
+ inputs:
85
+ - layout: guidance layer depth, dimmer, spotlight, pointer scaling rules
86
+ outputs:
87
+ - guidanceZOrder: relative to board, HUD, end screen
88
+ - pointerAndMarginRules: dp * uiScale; edge offsets with vScale
89
+ ```
@@ -0,0 +1,24 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "atomId": "playable_guidance_layer.aicomponent",
4
+ "bundleType": "aicomponent",
5
+ "category": "layout",
6
+ "mode": "fixed",
7
+ "label": { "zh": "可玩指引层布局规范", "en": "Playable guidance layer layout" },
8
+ "tags": ["layout", "tutorial", "onboarding", "overlay", "spotlight", "framework-agnostic"],
9
+ "bindingRoles": ["playableGuidanceLayout"],
10
+ "imports": [
11
+ { "slot": "layout", "pinAtomId": "responsive_2d_layout.aicomponent", "edgeKind": "requires", "bindAs": "layoutCanon" }
12
+ ],
13
+ "neutralDescriptor": {
14
+ "geometry": "guidance above board, below end-screen modal; dimmer + spotlight + pointer scaled by uiScale",
15
+ "layers": ["tutorial", "hint", "z-order"],
16
+ "replaceable": ["dimmer alpha", "min touch target dp"]
17
+ },
18
+ "usageHints": [
19
+ "pointer 与文案统一 uiScale;顶栏与教程 depth 关系见 SKILL 第一节",
20
+ "步进实现用 tutorial_overlay;轻提示可复用同一 z-order 合同",
21
+ "结算全屏出现时指引层须让路"
22
+ ],
23
+ "files": { "skill": "SKILL.md" }
24
+ }
@@ -0,0 +1,96 @@
1
+ ---
2
+ name: playable_hud_layout.aicomponent
3
+ description: 可玩广告 HUD(顶/底预留区 + 棋盘可用矩形)框架无关布局规范。约束 Agent:在 responsive_2d_layout Layout Canon 下如何划分屏幕、导出高度常量、z-order;默认 Phaser 实现见 top_ui_bar / bottom_ui_bar。
4
+ triggers: 需要摆放顶部 HUD、底部条、计算棋盘可用区域,或统一 HUD 与棋盘的垂直扣减规则时触发。
5
+ ---
6
+
7
+ # 可玩 HUD 屏幕分区(Playable HUD Layout)
8
+
9
+ 本 skill **不包含**具体引擎代码,只定义 **框架无关** 的分区合同;缩放数学见 `responsive_2d_layout.aicomponent` **第一节 Layout Canon**。
10
+
11
+ ---
12
+
13
+ ## 规范(Layout Canon)
14
+
15
+ ### 1. 纵向三层模型
16
+
17
+ 在已应用安全区 inset 后的运行时矩形 \((W_r, H_r)\) 内,自下而上约定:
18
+
19
+ 1. **底区(Bottom band)**:高度 \(H\_{\text{bottom}} = h\_{\text{bottom,dp}} \cdot \text{vScale}\)。`h_bottom,dp` 默认与 `GameConfig.GAME_BOTTOM_UI_BAR_HEIGHT`(如 110)一致,**单点配置**;可放置 CTA、品牌条或策略性留白。
20
+ 2. **中间区(Play area)**:供棋盘 / 世界内容;高度
21
+ \(H\_{\text{mid}} = H_r - H\_{\text{top}} - H\_{\text{bottom}}\)。
22
+ **禁止** 在棋盘布局器内硬编码「整屏高度」而不扣顶底。
23
+ 3. **顶区(Top band)**:高度 \(H\_{\text{top}} = h\_{\text{top,dp}} \cdot \text{vScale}\)。`h_top,dp` 由顶部 HUD skill 导出(如 `GAME_TOP_UI_BAR_HEIGHT`)。
24
+
25
+ ### 2. 横向与尺寸
26
+
27
+ - 顶/底区 **背景与通栏控件** 宽度为 \(W_r\)。
28
+ - 顶区内子控件(命、计时、进度)的间距与字号遵循 Canon:**dp × uiScale**(或垂向间距用 **vScale** 与顶栏内部约定一致)。
29
+
30
+ ### 3. z-order(渲染与交互)
31
+
32
+ 约定自上而下(**数值更大者更靠前**):
33
+
34
+ | 层级(概念) | 相对深度 | 说明 |
35
+ |-------------|---------|------|
36
+ | 棋盘 / 玩法世界 | 基准(如 0–200) | 主游玩内容 |
37
+ | 顶栏 / 底栏 HUD | 高于棋盘(如 500) | 始终可操作、不被棋盘遮挡 |
38
+ | 指引层 | 高于 HUD | 见 `playable_guidance_layer.aicomponent` |
39
+ | 全屏结算 | 最高 | 见 `playable_end_screen_layout.aicomponent` |
40
+
41
+ 具体 depth 数值可由项目统一常量表定义,但 **相对顺序不得颠倒**。
42
+
43
+ ### 4. Agent 义务
44
+
45
+ 1. 棋盘可用高度必须使用 **\(H_{\text{mid}}\)** 或等价推导,与 `grid_board_layout` / 输入层的扣减一致。
46
+ 2. 若仅实现顶栏而未装底栏组件,**仍须**在布局算式中保留 `h_bottom,dp`,除非项目显式改为 0。
47
+ 3. 所有 `h_* ,dp` 常量须在单一配置或导出处维护,禁止魔法数分散在多个文件且互不引用。
48
+
49
+ ---
50
+
51
+ ## 与实现 skill 的对应关系
52
+
53
+ | 合同项 | Phaser 参考实现 |
54
+ |--------|----------------|
55
+ | 顶区 + `h_top,dp` | `top_ui_bar.aicomponent` → `GAME_TOP_UI_BAR_HEIGHT` |
56
+ | 底区 + `h_bottom,dp` | `bottom_ui_bar.aicomponent` → `GAME_BOTTOM_UI_BAR_HEIGHT`(与 `GameConfig` 对齐) |
57
+ | 中间区几何 | `grid_board_layout.aicomponent` |
58
+
59
+ ---
60
+
61
+ ## Recipe
62
+
63
+ | 决策 | 原因 |
64
+ |------|------|
65
+ | **框架无关规范** | 顶/中/底三层分区模型在 Phaser 和 Three.js 中都适用;若写入 phaser 相关 skill,Three.js 项目无法引用同一 HUD 约定 |
66
+ | **高度常量单点配置** | 顶/底栏高度(dp 值)必须在一处定义,棋盘布局和 UI 条同时引用;多处写死魔法数字是最常见的布局 bug 来源 |
67
+ | **z-order 约束明确** | 棋盘/HUD/指引/结算四层的相对顺序不得颠倒;显式文档约束比代码注释更易被 Agent 发现和遵从 |
68
+
69
+ ## Adapter
70
+
71
+ - **Role**: `playableHudLayout` — 可玩 HUD 三层屏幕分区规范(顶/中/底 + z-order),无代码产出
72
+ - **Provides**: 纵向三层模型规范、高度常量命名约定(`GAME_TOP_UI_BAR_HEIGHT`、`GAME_BOTTOM_UI_BAR_HEIGHT`)、z-order 约束文档
73
+ - **Requires**: `responsive_2d_layout.aicomponent`(uiScale / vScale / W_r / H_r 定义)
74
+ - **Consumed by**: `top_ui_bar.aicomponent`、`bottom_ui_bar.aicomponent`(实现约定中的顶/底区)、`grid_board_layout.aicomponent`(棋盘高度扣减参考)、`playable_guidance_layer.aicomponent`(层级关系参考)
75
+ - **Integration point**: 无代码集成点;Agent 加载后按规范约束实现各 HUD 组件
76
+
77
+ ## Imports
78
+
79
+ - `responsive_2d_layout.aicomponent`(**硬依赖**:uiScale / vScale / \(W_r,H_r\) 定义)
80
+
81
+ ## Scaffold
82
+
83
+ 本 skill **无** scaffold 文件;仅规范文档。落地代码见上表。
84
+
85
+ ## Skill Definition
86
+
87
+ ```yaml
88
+ tools:
89
+ - read_file
90
+ - write_file
91
+ inputs:
92
+ - layout: HUD / play-area vertical contract from SKILL.md sections above
93
+ outputs:
94
+ - hudBandHeights: design-dp constants and formulas using vScale
95
+ - zOrderRules: relative ordering among board, HUD, guidance, end screen
96
+ ```
@@ -0,0 +1,24 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "atomId": "playable_hud_layout.aicomponent",
4
+ "bundleType": "aicomponent",
5
+ "category": "layout",
6
+ "mode": "fixed",
7
+ "label": { "zh": "可玩 HUD 屏幕分区规范", "en": "Playable HUD screen regions" },
8
+ "tags": ["layout", "hud", "top-bar", "bottom-bar", "safe-area", "play-area", "framework-agnostic"],
9
+ "bindingRoles": ["playableHudLayout"],
10
+ "imports": [
11
+ { "slot": "layout", "pinAtomId": "responsive_2d_layout.aicomponent", "edgeKind": "requires", "bindAs": "layoutCanon" }
12
+ ],
13
+ "neutralDescriptor": {
14
+ "geometry": "framework-agnostic vertical bands: top HUD, play area, bottom band; heights from dp * vScale; z-order above board",
15
+ "layers": ["screen-partition", "hud", "layout-contract"],
16
+ "replaceable": ["h_top,dp", "h_bottom,dp", "depth constants"]
17
+ },
18
+ "usageHints": [
19
+ "先读 responsive_2d_layout 第一节,再套用顶/中/底三层高度扣减",
20
+ "棋盘可用高度 = Hr - h_top,dp*vScale - h_bottom,dp*vScale(或使用已 inset 后的 Hr)",
21
+ "HUD depth 须高于棋盘;指引与结算层顺序见 playable_guidance_layer / playable_end_screen_layout"
22
+ ],
23
+ "files": { "skill": "SKILL.md" }
24
+ }
@@ -0,0 +1,69 @@
1
+ ---
2
+ name: playable_scripts_build.aicomponent
3
+ description: 试玩广告多渠道构建管线(@tencent/playable-scripts)。提供 builds.config.js 批量构建配置,支持按主题变体 × 渠道自动生成构建产物,自动扫描 src/theme/ 目录发现主题。
4
+ triggers: 需要配置试玩广告的构建脚本、多渠道打包或主题批量构建时触发。
5
+ ---
6
+
7
+ # 试玩广告构建管线(Playable Scripts Build Pipeline)
8
+
9
+ ## 说明
10
+
11
+ 使用 `@tencent/playable-scripts` 打包 Phaser 试玩广告,支持:
12
+
13
+ - **单渠道构建**(`pnpm build`):构建默认渠道产物
14
+ - **批量构建**(`pnpm builds`):所有主题变体 × 所有渠道,自动命名文件
15
+ - **主题自动发现**:扫描 `src/theme/` 目录,排除 blacklist 后构建所有主题
16
+
17
+ ## Scaffold
18
+
19
+ | 目标路径 | 来源 | 说明 |
20
+ |---------|-----|-----|
21
+ | `builds.config.js` | `ref/builds.config.js` | 批量构建配置(主题/渠道/命名规则) |
22
+
23
+ `package.json` 新增:
24
+ - `devDependencies: "@tencent/playable-scripts": "*"`
25
+ - `scripts: dev / build / builds`
26
+
27
+ ## Recipe
28
+
29
+ | 决策 | 原因 |
30
+ |------|------|
31
+ | **@tencent/playable-scripts 封装** | 试玩广告需要针对不同投放渠道(腾讯广告、Google、Facebook 等)分别打包;`playable-scripts` 已内置多渠道构建模板,避免手写各渠道差异配置 |
32
+ | **主题自动发现** | `src/theme/` 目录下的主题由 AI Agent 按 Remix 需求生成;构建脚本自动扫描而非手写主题列表,避免新增主题时忘记更新构建配置 |
33
+ | **与 webpack_build 并存** | `webpack_build.aicomponent` 适用于无腾讯平台依赖的通用项目;本 skill 适用于接入腾讯投放体系的正式产品;两者职责不同,均保留 |
34
+
35
+ ## Adapter
36
+
37
+ - **Role**: `buildPipeline` — 试玩广告多渠道批量构建管线(腾讯 playable-scripts)
38
+ - **Provides**: `builds.config.js` 批量构建配置、`pnpm dev`/`pnpm build`/`pnpm builds` npm 命令
39
+ - **Requires**: `phaser.aicomponent`(基础引擎骨架)
40
+ - **Consumed by**: `theme_switcher_build.aicomponent`(builds.config.js 在构建时替换主题 import);`theme_variant.aiconfig` 主题变体通过本管线打包
41
+ - **Integration point**: 根目录 `builds.config.js` + `package.json` scripts —— CI 构建时执行 `pnpm builds` 产出所有变体产物
42
+
43
+ ## Imports
44
+
45
+ - `phaser.aicomponent`(硬依赖:基础引擎)
46
+
47
+ ## Skill Definition
48
+
49
+ ```yaml
50
+ tools:
51
+ - read_file
52
+ - write_file
53
+ inputs:
54
+ - source: builds.config.js
55
+ outputs:
56
+ - buildConfig: builds.config.js
57
+ - buildScripts: dev / build / builds npm scripts
58
+ - buildDep: "@tencent/playable-scripts" devDependency
59
+ ```
60
+
61
+ ## 使用方式
62
+
63
+ ```bash
64
+ pnpm dev # 开发模式
65
+ pnpm build # 构建单渠道
66
+ pnpm builds # 批量构建所有主题 × 渠道
67
+ pnpm builds -- -t "某主题名" # 构建指定主题
68
+ pnpm builds -- -c google,facebook # 构建指定渠道
69
+ ```
@@ -0,0 +1,53 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "atomId": "playable_scripts_build.aicomponent",
4
+ "bundleType": "aicomponent",
5
+ "category": "build",
6
+ "mode": "fixed",
7
+ "deprecated": true,
8
+ "replacedBy": "webpack_build.aicomponent",
9
+ "deprecationNote": "依赖 @tencent/playable-scripts 私有包,脱离腾讯内部环境无法使用。请使用 webpack_build.aicomponent 作为通用替代方案。",
10
+ "label": { "zh": "试玩广告构建管线(已废弃)", "en": "Playable ads build pipeline (deprecated)" },
11
+ "tags": ["build", "playable-scripts", "webpack", "bundle", "multi-channel", "playable-ads"],
12
+ "bindingRoles": ["buildPipeline"],
13
+ "scaffold": {
14
+ "files": {
15
+ "builds.config.js": {
16
+ "source": "ref/builds.config.js",
17
+ "mode": "full",
18
+ "weight": 10
19
+ }
20
+ },
21
+ "packageJson": {
22
+ "devDependencies": {
23
+ "@tencent/playable-scripts": { "version": "*", "weight": 10 }
24
+ },
25
+ "scripts": {
26
+ "dev": { "command": "playable-scripts dev", "weight": 10 },
27
+ "build": { "command": "playable-scripts build", "weight": 10 },
28
+ "builds":{ "command": "playable-scripts builds", "weight": 10 }
29
+ }
30
+ }
31
+ },
32
+ "imports": [
33
+ { "slot": "engine", "pinAtomId": "phaser.aicomponent", "edgeKind": "requires", "bindAs": "engine" }
34
+ ],
35
+ "exports": [
36
+ { "name": "builds.config.js", "kind": "config-file", "location": "builds.config.js" }
37
+ ],
38
+ "neutralDescriptor": {
39
+ "geometry": "multi-channel playable ad build system with per-theme variant generation and automated file naming",
40
+ "layers": ["build-toolchain", "multi-channel", "bundler"],
41
+ "replaceable": ["channel list", "naming convention", "theme blacklist"]
42
+ },
43
+ "usageHints": [
44
+ "`pnpm build` 构建单渠道默认产物",
45
+ "`pnpm builds` 批量构建所有主题 × 所有渠道的组合",
46
+ "builds.config.js 通过扫描 src/theme/ 目录自动发现主题变体",
47
+ "THEME_BLACKLIST 中排除 dev、current.ts 等非正式主题"
48
+ ],
49
+ "files": {
50
+ "skill": "SKILL.md",
51
+ "buildsConfig": "ref/builds.config.js"
52
+ }
53
+ }