summer-engine 3.1.0 → 3.2.0

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 (366) hide show
  1. package/.claude-plugin/marketplace.json +2 -2
  2. package/.claude-plugin/plugin.json +27 -5
  3. package/.codex-plugin/plugin.json +28 -6
  4. package/.cursor-plugin/plugin.json +27 -5
  5. package/.factory-plugin/plugin.json +27 -5
  6. package/.opencode/plugins/summer.js +1 -1
  7. package/CHANGELOG.md +102 -0
  8. package/README.md +18 -3
  9. package/assets/audit/scene_audit.gd +4136 -0
  10. package/assets/seeing/seeing_probe.gd +1873 -0
  11. package/dist/cli/commands/skills.js +20 -2
  12. package/dist/core/api-client.d.ts +9 -1
  13. package/dist/core/api-client.js +21 -4
  14. package/dist/core/capabilities/agent-playbook.js +46 -0
  15. package/dist/core/capabilities/audit/accept.d.ts +55 -0
  16. package/dist/core/capabilities/audit/accept.js +147 -0
  17. package/dist/core/capabilities/audit/args.d.ts +95 -0
  18. package/dist/core/capabilities/audit/args.js +89 -0
  19. package/dist/core/capabilities/audit/audit.d.ts +56 -0
  20. package/dist/core/capabilities/audit/audit.js +287 -0
  21. package/dist/core/capabilities/audit/frame.d.ts +14 -0
  22. package/dist/core/capabilities/audit/frame.js +35 -0
  23. package/dist/core/capabilities/audit/gaps.d.ts +96 -0
  24. package/dist/core/capabilities/audit/gaps.js +257 -0
  25. package/dist/core/capabilities/audit/judge.d.ts +162 -0
  26. package/dist/core/capabilities/audit/judge.js +1134 -0
  27. package/dist/core/capabilities/audit/math.d.ts +110 -0
  28. package/dist/core/capabilities/audit/math.js +263 -0
  29. package/dist/core/capabilities/audit/summary.d.ts +74 -0
  30. package/dist/core/capabilities/audit/summary.js +212 -0
  31. package/dist/core/capabilities/board.d.ts +31 -0
  32. package/dist/core/capabilities/board.js +43 -0
  33. package/dist/core/capabilities/camera-view.d.ts +4 -2
  34. package/dist/core/capabilities/camera-view.js +6 -3
  35. package/dist/core/capabilities/connect-signal.d.ts +85 -0
  36. package/dist/core/capabilities/connect-signal.js +285 -0
  37. package/dist/core/capabilities/engine-fallbacks.d.ts +5 -0
  38. package/dist/core/capabilities/engine-fallbacks.js +5 -0
  39. package/dist/core/capabilities/engine-ops.d.ts +5 -1
  40. package/dist/core/capabilities/engine-ops.js +0 -3
  41. package/dist/core/capabilities/engine-receipt.d.ts +12 -0
  42. package/dist/core/capabilities/engine-receipt.js +26 -0
  43. package/dist/core/capabilities/file-read.d.ts +64 -0
  44. package/dist/core/capabilities/file-read.js +325 -0
  45. package/dist/core/capabilities/game-task-plan.js +4 -2
  46. package/dist/core/capabilities/grep.d.ts +60 -0
  47. package/dist/core/capabilities/grep.js +190 -0
  48. package/dist/core/capabilities/inspect-node.d.ts +56 -0
  49. package/dist/core/capabilities/inspect-node.js +225 -0
  50. package/dist/core/capabilities/inspect-resource.d.ts +61 -0
  51. package/dist/core/capabilities/inspect-resource.js +376 -0
  52. package/dist/core/capabilities/math3d.d.ts +28 -0
  53. package/dist/core/capabilities/math3d.js +88 -0
  54. package/dist/core/capabilities/motion-generation.d.ts +62 -0
  55. package/dist/core/capabilities/motion-generation.js +138 -0
  56. package/dist/core/capabilities/placement-batch.d.ts +102 -0
  57. package/dist/core/capabilities/placement-batch.js +483 -0
  58. package/dist/core/capabilities/placement-math.d.ts +70 -0
  59. package/dist/core/capabilities/placement-math.js +209 -0
  60. package/dist/core/capabilities/placement-script.d.ts +42 -0
  61. package/dist/core/capabilities/placement-script.js +1096 -0
  62. package/dist/core/capabilities/placement.d.ts +485 -0
  63. package/dist/core/capabilities/placement.js +1731 -0
  64. package/dist/core/capabilities/project-context.d.ts +33 -2
  65. package/dist/core/capabilities/project-context.js +87 -4
  66. package/dist/core/capabilities/replace-node.d.ts +91 -0
  67. package/dist/core/capabilities/replace-node.js +423 -0
  68. package/dist/core/capabilities/runtime-control.d.ts +18 -2
  69. package/dist/core/capabilities/runtime-control.js +67 -2
  70. package/dist/core/capabilities/scene-batch.d.ts +63 -0
  71. package/dist/core/capabilities/scene-batch.js +394 -0
  72. package/dist/core/capabilities/scene-readback.d.ts +36 -0
  73. package/dist/core/capabilities/scene-readback.js +54 -0
  74. package/dist/core/capabilities/seeing/args.d.ts +348 -0
  75. package/dist/core/capabilities/seeing/args.js +178 -0
  76. package/dist/core/capabilities/seeing/candidates.d.ts +127 -0
  77. package/dist/core/capabilities/seeing/candidates.js +282 -0
  78. package/dist/core/capabilities/seeing/math.d.ts +134 -0
  79. package/dist/core/capabilities/seeing/math.js +269 -0
  80. package/dist/core/capabilities/seeing/probe.d.ts +62 -0
  81. package/dist/core/capabilities/seeing/probe.js +188 -0
  82. package/dist/core/capabilities/seeing/scoring.d.ts +235 -0
  83. package/dist/core/capabilities/seeing/scoring.js +639 -0
  84. package/dist/core/capabilities/seeing/seeing.d.ts +233 -0
  85. package/dist/core/capabilities/seeing/seeing.js +1341 -0
  86. package/dist/core/capabilities/seeing/shot-store.d.ts +52 -0
  87. package/dist/core/capabilities/seeing/shot-store.js +204 -0
  88. package/dist/core/capabilities/surface-snap-mesh.d.ts +88 -0
  89. package/dist/core/capabilities/surface-snap-mesh.js +425 -0
  90. package/dist/core/capabilities/surface-snap.d.ts +77 -0
  91. package/dist/core/capabilities/surface-snap.js +461 -0
  92. package/dist/core/capabilities/tool-dispatch.js +231 -72
  93. package/dist/core/capabilities/tscn.d.ts +85 -0
  94. package/dist/core/capabilities/tscn.js +391 -0
  95. package/dist/core/capabilities/world-snapshot.d.ts +58 -0
  96. package/dist/core/capabilities/world-snapshot.js +150 -0
  97. package/dist/core/capability-skew.d.ts +5 -5
  98. package/dist/core/capability-skew.js +14 -6
  99. package/dist/core/headless/worker-engine-client.d.ts +1 -1
  100. package/dist/core/headless/worker-engine-client.js +2 -2
  101. package/dist/core/library-read.d.ts +37 -5
  102. package/dist/core/library-read.js +264 -33
  103. package/dist/core/library-search.d.ts +2 -2
  104. package/dist/installer/agent-config.js +5 -3
  105. package/dist/installer/agent-table.d.ts +16 -0
  106. package/dist/installer/agent-table.js +52 -17
  107. package/dist/mcp/server.js +9 -3
  108. package/dist/mcp/tools/asset-tools.js +21 -3
  109. package/dist/mcp/tools/audit-tools.d.ts +23 -0
  110. package/dist/mcp/tools/audit-tools.js +60 -0
  111. package/dist/mcp/tools/debug-tools.js +3 -1
  112. package/dist/mcp/tools/file-tools.js +17 -4
  113. package/dist/mcp/tools/generate-tools.js +74 -66
  114. package/dist/mcp/tools/library-tools.js +2 -0
  115. package/dist/mcp/tools/perception-tools.js +6 -19
  116. package/dist/mcp/tools/placement-tools.d.ts +24 -0
  117. package/dist/mcp/tools/placement-tools.js +91 -0
  118. package/dist/mcp/tools/project-tools.js +18 -15
  119. package/dist/mcp/tools/scene-tools.js +71 -83
  120. package/dist/mcp/tools/seeing-tools.d.ts +24 -0
  121. package/dist/mcp/tools/seeing-tools.js +64 -0
  122. package/dist/mcp/tools/spatial-tools.js +17 -9
  123. package/dist/mcp/tools/visual-tools.js +59 -7
  124. package/gemini-extension.json +26 -4
  125. package/integrations/amp/README.md +1 -1
  126. package/integrations/crush/README.md +1 -1
  127. package/integrations/grok-build/README.md +1 -1
  128. package/integrations/hermes/README.md +1 -1
  129. package/integrations/kimi-code/README.md +1 -1
  130. package/integrations/mistral-vibe/README.md +1 -1
  131. package/integrations/opencode/README.md +1 -1
  132. package/integrations/rovo-dev/README.md +1 -1
  133. package/integrations/vscode-copilot/README.md +1 -1
  134. package/integrations/warp/README.md +1 -1
  135. package/integrations/windsurf/README.md +1 -1
  136. package/library/references/mcp-tools-reference/mcp-tools-reference.md +59 -15
  137. package/library/references/mcp-tools-reference/resource.yaml +1 -1
  138. package/library/references/summer-folder/resource.yaml +1 -1
  139. package/library/references/summer-folder/summer-folder.md +1 -1
  140. package/library/skills/3d-lighting/SKILL.md +1 -1
  141. package/library/skills/README.md +36 -14
  142. package/library/skills/adaptive-music/SKILL.md +1 -1
  143. package/library/skills/agent-playtesting/SKILL.md +1 -1
  144. package/library/skills/ai-characters-in-games/SKILL.md +220 -0
  145. package/library/skills/ai-characters-in-games/resource.yaml +30 -0
  146. package/library/skills/ambient-bed/SKILL.md +1 -1
  147. package/library/skills/animated-loop/SKILL.md +1 -1
  148. package/library/skills/animation-tree/SKILL.md +1 -1
  149. package/library/skills/art-direction/SKILL.md +1 -1
  150. package/library/skills/asset-strategy/SKILL.md +2 -1
  151. package/library/skills/asset-strategy/resource.yaml +2 -1
  152. package/library/skills/audio-direction/SKILL.md +1 -1
  153. package/library/skills/auto-fire-targeting/SKILL.md +1 -1
  154. package/library/skills/brainstorm-game/SKILL.md +1 -1
  155. package/library/skills/brainstorming/SKILL.md +1 -1
  156. package/library/skills/browse-templates/SKILL.md +3 -3
  157. package/library/skills/browse-templates/resource.yaml +1 -1
  158. package/library/skills/camera-rigs/SKILL.md +128 -0
  159. package/library/skills/camera-rigs/resource.yaml +29 -0
  160. package/library/skills/celeste-momentum-platforming/SKILL.md +1 -1
  161. package/library/skills/character-animation-wiring/SKILL.md +1 -1
  162. package/library/skills/character-model/SKILL.md +1 -1
  163. package/library/skills/character-movement/SKILL.md +326 -0
  164. package/library/skills/character-movement/references/default-third-person-controller.gd +201 -0
  165. package/library/skills/character-movement/references/default-third-person-verification-probe.gd +154 -0
  166. package/library/skills/character-movement/references/movement-3d.md +136 -0
  167. package/library/skills/character-movement/references/platformer-feel.md +83 -0
  168. package/library/skills/character-movement/resource.yaml +40 -0
  169. package/library/skills/character-portrait/SKILL.md +1 -1
  170. package/library/skills/cinematic-cutscene/SKILL.md +1 -1
  171. package/library/skills/combat-basics/SKILL.md +159 -0
  172. package/library/skills/combat-basics/references/projectiles-and-aoe.md +100 -0
  173. package/library/skills/combat-basics/resource.yaml +34 -0
  174. package/library/skills/concept-art/SKILL.md +1 -1
  175. package/library/skills/create-asset-sheet/SKILL.md +1 -1
  176. package/library/skills/debug/SKILL.md +1 -1
  177. package/library/skills/debugging-game-feel/SKILL.md +1 -1
  178. package/library/skills/design-level/SKILL.md +1 -1
  179. package/library/skills/design-mechanic/SKILL.md +1 -1
  180. package/library/skills/design-npc/SKILL.md +1 -1
  181. package/library/skills/diagnosing-perf-regressions/SKILL.md +1 -1
  182. package/library/skills/dispatching-parallel-agents/SKILL.md +1 -1
  183. package/library/skills/driving-the-editor-ui/SKILL.md +1 -1
  184. package/library/skills/environment-kit/SKILL.md +1 -1
  185. package/library/skills/export-and-ship/SKILL.md +1 -1
  186. package/library/skills/fabricating-assets/SKILL.md +1 -1
  187. package/library/skills/facial-and-lipsync/SKILL.md +1 -1
  188. package/library/skills/fps-controller/SKILL.md +9 -7
  189. package/library/skills/fps-controller/resource.yaml +4 -1
  190. package/library/skills/game-feel/SKILL.md +1 -1
  191. package/library/skills/gameskill/SKILL.md +1 -1
  192. package/library/skills/gdscript-patterns/SKILL.md +1 -1
  193. package/library/skills/generate-motion/SKILL.md +9 -9
  194. package/library/skills/generate-motion/resource.yaml +2 -1
  195. package/library/skills/godogen-visual-proof-game-generation/SKILL.md +1 -1
  196. package/library/skills/headless-scripting/SKILL.md +1 -1
  197. package/library/skills/in-game-purchases/SKILL.md +254 -0
  198. package/library/skills/in-game-purchases/resource.yaml +29 -0
  199. package/library/skills/instantiate-asset-pack/SKILL.md +1 -1
  200. package/library/skills/investigating-bugs/SKILL.md +1 -1
  201. package/library/skills/lumera-single-image-scene-reconstruction/SKILL.md +1 -1
  202. package/library/skills/make-game/SKILL.md +25 -3
  203. package/library/skills/make-game/references/2d-platformer-polish.md +93 -0
  204. package/library/skills/make-game/references/2d-platformer.md +117 -0
  205. package/library/skills/make-game/references/2d-rpg-content.md +234 -0
  206. package/library/skills/make-game/references/2d-rpg.md +241 -0
  207. package/library/skills/make-game/references/2d-survivors-progression.md +201 -0
  208. package/library/skills/make-game/references/2d-survivors.md +237 -0
  209. package/library/skills/make-game/references/3d-fps-systems.md +216 -0
  210. package/library/skills/make-game/references/3d-fps.md +177 -0
  211. package/library/skills/make-game/references/3d-horror-systems.md +186 -0
  212. package/library/skills/make-game/references/3d-horror.md +201 -0
  213. package/library/skills/make-game/references/3d-third-person-systems.md +220 -0
  214. package/library/skills/make-game/references/3d-third-person.md +215 -0
  215. package/library/skills/make-game/resource.yaml +6 -1
  216. package/library/skills/multiplayer/SKILL.md +150 -0
  217. package/library/skills/multiplayer/resource.yaml +33 -0
  218. package/library/skills/multiplayer-movement/SKILL.md +510 -0
  219. package/library/skills/multiplayer-movement/files.md +501 -0
  220. package/library/skills/multiplayer-movement/resource.yaml +30 -0
  221. package/library/skills/multiplayer-project/SKILL.md +521 -0
  222. package/library/skills/multiplayer-project/files.md +448 -0
  223. package/library/skills/multiplayer-project/resource.yaml +36 -0
  224. package/library/skills/multiplayer-publish/SKILL.md +229 -0
  225. package/library/skills/multiplayer-publish/export-errors.md +89 -0
  226. package/library/skills/multiplayer-publish/resource.yaml +28 -0
  227. package/library/skills/multiplayer-state/SKILL.md +438 -0
  228. package/library/skills/multiplayer-state/files.md +592 -0
  229. package/library/skills/multiplayer-state/resource.yaml +35 -0
  230. package/library/skills/multiplayer-testing/SKILL.md +236 -0
  231. package/library/skills/multiplayer-testing/resource.yaml +39 -0
  232. package/library/skills/music-track/SKILL.md +1 -1
  233. package/library/skills/navigate-summer/SKILL.md +1 -1
  234. package/library/skills/new-project/SKILL.md +1 -1
  235. package/library/skills/organic-model/SKILL.md +1 -1
  236. package/library/skills/pixel-art/SKILL.md +1 -1
  237. package/library/skills/play/SKILL.md +1 -1
  238. package/library/skills/playtesting-a-feature/SKILL.md +1 -1
  239. package/library/skills/procedural-animation/SKILL.md +2 -2
  240. package/library/skills/procedural-animation/resource.yaml +1 -1
  241. package/library/skills/prop-model/SKILL.md +1 -1
  242. package/library/skills/psx-retro-rendering/SKILL.md +1 -1
  243. package/library/skills/realtime-wet-surfaces/SKILL.md +2 -2
  244. package/library/skills/remote-deploy/SKILL.md +1 -1
  245. package/library/skills/retarget/SKILL.md +1 -1
  246. package/library/skills/running-in-the-cloud/SKILL.md +1 -1
  247. package/library/skills/save-load/SKILL.md +156 -0
  248. package/library/skills/save-load/resource.yaml +27 -0
  249. package/library/skills/scene-composition/SKILL.md +1 -1
  250. package/library/skills/scene-hierarchy-design/SKILL.md +1 -1
  251. package/library/skills/scene-scripting/SKILL.md +1 -1
  252. package/library/skills/scene-to-level/SKILL.md +1 -1
  253. package/library/skills/skill-create/SKILL.md +1 -1
  254. package/library/skills/skill-improve/SKILL.md +1 -1
  255. package/library/skills/skill-test/SKILL.md +1 -1
  256. package/library/skills/skintokens-auto-rigging/SKILL.md +1 -1
  257. package/library/skills/skybox-panorama/SKILL.md +1 -1
  258. package/library/skills/sound-effect/SKILL.md +1 -1
  259. package/library/skills/spatial-placement/SKILL.md +134 -3
  260. package/library/skills/spatial-placement/references/kit-placement-tools.md +364 -0
  261. package/library/skills/spatial-placement/resource.yaml +16 -2
  262. package/library/skills/sprite-sheet/SKILL.md +1 -1
  263. package/library/skills/summer-analytics/SKILL.md +147 -0
  264. package/library/skills/summer-analytics/resource.yaml +28 -0
  265. package/library/skills/summer-friends/SKILL.md +226 -0
  266. package/library/skills/summer-friends/resource.yaml +28 -0
  267. package/library/skills/summer-leaderboards/SKILL.md +231 -0
  268. package/library/skills/summer-leaderboards/resource.yaml +30 -0
  269. package/library/skills/summer-match-results/SKILL.md +286 -0
  270. package/library/skills/summer-match-results/resource.yaml +32 -0
  271. package/library/skills/summer-matchmaking/SKILL.md +301 -0
  272. package/library/skills/summer-matchmaking/resource.yaml +32 -0
  273. package/library/skills/summer-parties/SKILL.md +253 -0
  274. package/library/skills/summer-parties/resource.yaml +30 -0
  275. package/library/skills/summer-player-data/SKILL.md +322 -0
  276. package/library/skills/summer-player-data/resource.yaml +30 -0
  277. package/library/skills/summer-store/SKILL.md +271 -0
  278. package/library/skills/summer-store/resource.yaml +29 -0
  279. package/library/skills/summer-world-chat/SKILL.md +195 -0
  280. package/library/skills/summer-world-chat/resource.yaml +30 -0
  281. package/library/skills/summer-world-saves/SKILL.md +284 -0
  282. package/library/skills/summer-world-saves/resource.yaml +29 -0
  283. package/library/skills/text-to-motion/SKILL.md +99 -0
  284. package/library/skills/text-to-motion/prompts-and-controls.md +34 -0
  285. package/library/skills/text-to-motion/resource.yaml +41 -0
  286. package/library/skills/text-to-motion/rigging-for-text-motion.md +54 -0
  287. package/library/skills/tileable-texture/SKILL.md +1 -1
  288. package/library/skills/trailer-shot/SKILL.md +1 -1
  289. package/library/skills/tune-performance/SKILL.md +1 -1
  290. package/library/skills/ui-basics/SKILL.md +10 -1
  291. package/library/skills/ui-graphics/SKILL.md +1 -1
  292. package/library/skills/use-widget-asset/SKILL.md +1 -1
  293. package/library/skills/using-summer/SKILL.md +2 -2
  294. package/library/skills/using-summer/resource.yaml +2 -2
  295. package/library/skills/vehicle-model/SKILL.md +1 -1
  296. package/library/skills/verification-before-completion/SKILL.md +1 -1
  297. package/library/skills/verifying-scenes/SKILL.md +76 -2
  298. package/library/skills/verifying-scenes/resource.yaml +13 -2
  299. package/library/skills/vfx-dissolve/SKILL.md +1 -1
  300. package/library/skills/vfx-fire/SKILL.md +1 -1
  301. package/library/skills/vfx-hit-spark/SKILL.md +1 -1
  302. package/library/skills/vfx-lightning/SKILL.md +1 -1
  303. package/library/skills/vfx-magic-glow/SKILL.md +1 -1
  304. package/library/skills/vfx-muzzle-flash/SKILL.md +1 -1
  305. package/library/skills/vfx-smoke/SKILL.md +1 -1
  306. package/library/skills/vfx-water-ripple/SKILL.md +1 -1
  307. package/library/skills/voice-line/SKILL.md +1 -1
  308. package/library/skills/web-and-touch-input/SKILL.md +38 -0
  309. package/library/skills/web-and-touch-input/resource.yaml +28 -0
  310. package/library/skills/web-compatibility-look/SKILL.md +62 -0
  311. package/library/skills/web-compatibility-look/resource.yaml +30 -0
  312. package/library/skills/world-building-3d/SKILL.md +8 -1
  313. package/library/skills/world-building-3d/references/spatial-tools.md +1 -1
  314. package/library/skills/world-building-3d/resource.yaml +2 -1
  315. package/library/skills/writing-plans/SKILL.md +1 -1
  316. package/library/skills/writing-skills/SKILL.md +1 -1
  317. package/library/templates/3d-lan-multiplayer-starter/resource.yaml +2 -2
  318. package/library/tools/attach-to-surface/resource.yaml +142 -0
  319. package/library/tools/batch/resource.yaml +9 -3
  320. package/library/tools/connect-ports/resource.yaml +120 -0
  321. package/library/tools/connect-signal/resource.yaml +3 -2
  322. package/library/tools/debug-views/resource.yaml +94 -0
  323. package/library/tools/frame-nodes/resource.yaml +104 -0
  324. package/library/tools/frame-shot/resource.yaml +134 -0
  325. package/library/tools/generate-motion/resource.yaml +44 -9
  326. package/library/tools/get-board/resource.yaml +50 -0
  327. package/library/tools/get-project-context/resource.yaml +13 -2
  328. package/library/tools/grep/resource.yaml +77 -0
  329. package/library/tools/inspect-asset/resource.yaml +71 -0
  330. package/library/tools/inspect-node/resource.yaml +9 -2
  331. package/library/tools/inspect-resource/resource.yaml +16 -5
  332. package/library/tools/instantiate-scene/resource.yaml +27 -2
  333. package/library/tools/measure/resource.yaml +96 -0
  334. package/library/tools/place-adjacent/resource.yaml +113 -0
  335. package/library/tools/play/resource.yaml +15 -2
  336. package/library/tools/raycast/resource.yaml +101 -0
  337. package/library/tools/read-file/resource.yaml +36 -2
  338. package/library/tools/read-library/resource.yaml +2 -2
  339. package/library/tools/repeat-along/resource.yaml +129 -0
  340. package/library/tools/replace-node/resource.yaml +11 -5
  341. package/library/tools/scene-audit/resource.yaml +144 -0
  342. package/library/tools/screenshot/resource.yaml +13 -2
  343. package/library/tools/search-assets/resource.yaml +18 -0
  344. package/library/tools/shot-sheet/resource.yaml +110 -0
  345. package/library/tools/snap-to-surface/resource.yaml +4 -1
  346. package/library/tools/world-snapshot/resource.yaml +24 -3
  347. package/library/tools/zoom/resource.yaml +105 -0
  348. package/package.json +1 -1
  349. package/registry/generated/aliases.json +17 -3
  350. package/registry/generated/counts.json +3 -3
  351. package/registry/generated/gemini-extension.json +26 -4
  352. package/registry/generated/index.json +2154 -469
  353. package/registry/generated/marketplace.claude.json +2 -2
  354. package/registry/generated/plugin.claude.json +27 -5
  355. package/registry/generated/plugin.codex.json +28 -6
  356. package/registry/generated/plugin.cursor.json +27 -5
  357. package/registry/generated/plugin.factory.json +27 -5
  358. package/registry/generated/skills-index.md +36 -14
  359. package/registry/generated/skills-registry.json +421 -124
  360. package/registry/generated/templates-registry.json +2 -2
  361. package/library/skills/host-authoritative-state/SKILL.md +0 -332
  362. package/library/skills/host-authoritative-state/resource.yaml +0 -28
  363. package/library/skills/peer-to-peer-multiplayer/SKILL.md +0 -373
  364. package/library/skills/peer-to-peer-multiplayer/resource.yaml +0 -28
  365. package/library/skills/setup-multiplayer/SKILL.md +0 -336
  366. package/library/skills/setup-multiplayer/resource.yaml +0 -28
@@ -4,7 +4,7 @@
4
4
  {
5
5
  "id": "skill/3d-lighting",
6
6
  "name": "3d-lighting",
7
- "description": "Use when setting up lighting in a Summer Engine 3D scene — adding lights, configuring WorldEnvironment, sky, or shadows. Covers DirectionalLight3D versus Omni versus Spot, shadow tuning, ambient and sky-driven lighting, and the current Summer rendering conventions. Trigger on \"lighting\", \"shadows\", \"WorldEnvironment\", \"sun\", \"ambient\", \"sky\", \"light\".",
7
+ "description": "Set up 3D scene lighting — DirectionalLight3D vs Omni vs Spot, WorldEnvironment, sky, shadow tuning, ambient — per current Summer conventions.",
8
8
  "clients": "all",
9
9
  "recommended": true,
10
10
  "status": "stable",
@@ -17,7 +17,7 @@
17
17
  {
18
18
  "id": "skill/adaptive-music",
19
19
  "name": "adaptive-music",
20
- "description": "Use when wiring music stems to game state — combat / explore / boss / tension crossfades on a shared bus. Pairs generated stems with a state machine and AudioBus structure. Trigger on \"adaptive music\", \"dynamic music\", \"music changes when combat starts\", \"layered music\", \"vertical music\", \"wire stems\".",
20
+ "description": "Wire music stems to game state — combat/explore/boss/tension crossfades on a shared bus, paired with a state machine and AudioBus structure.",
21
21
  "clients": "all",
22
22
  "recommended": false,
23
23
  "status": "stable",
@@ -30,7 +30,7 @@
30
30
  {
31
31
  "id": "skill/agent-playtesting",
32
32
  "name": "agent-playtesting",
33
- "description": "Use when proving a gameplay feature, reproducing a bug, or comparing two variants by driving the LIVE running game yourself — deterministic launch (seed, fixed_fps, offscreen instances), frame-stamped probes before and after every action, exact frame stepping, scripted or recorded input. The doctrine behind summer_game_probe, summer_game_input, summer_game_control and the summer_runtime_* tools.",
33
+ "description": "Playtest by driving the LIVE game — deterministic launch, frame-stamped probes before/after each action, exact frame steps, scripted or recorded input.",
34
34
  "clients": "all",
35
35
  "recommended": true,
36
36
  "status": "preview",
@@ -42,10 +42,23 @@
42
42
  "agent-workflow"
43
43
  ]
44
44
  },
45
+ {
46
+ "id": "skill/ai-characters-in-games",
47
+ "name": "ai-characters-in-games",
48
+ "description": "Safe AI characters in published games: no keys in the build, replies via Summer's player AI gateway, moderation, spend caps, offline brain and a report button.",
49
+ "clients": "all",
50
+ "recommended": false,
51
+ "status": "preview",
52
+ "path": "library/skills/ai-characters-in-games/",
53
+ "domains": [
54
+ "ai",
55
+ "npc"
56
+ ]
57
+ },
45
58
  {
46
59
  "id": "skill/ambient-bed",
47
60
  "name": "ambient-bed",
48
- "description": "Use when generating a long looping location ambience — forest at dawn, dungeon air, city street, spaceship hum, cave drip. Non-melodic, low-energy, never draws attention. Wires as a looping AudioStreamPlayer on the Ambient bus with a marked seamless loop. Trigger on \"ambient bed\", \"room tone\", \"background ambience\", \"forest ambience\", \"dungeon air\", \"make it sound like a cave\".",
61
+ "description": "Generate a long looping location ambience — forest, dungeon, city, spaceship, cave — a looping AudioStreamPlayer on the Ambient bus with a seamless loop.",
49
62
  "clients": "all",
50
63
  "recommended": false,
51
64
  "status": "stable",
@@ -58,7 +71,7 @@
58
71
  {
59
72
  "id": "skill/animated-loop",
60
73
  "name": "animated-loop",
61
- "description": "Use when generating a short looping video clip — splash screen background, animated logo backdrop, idle title-screen footage, looping environment ambience. Output must loop seamlessly and is wired as a VideoStreamPlayer with autoplay and loop set true. Trigger on \"looping background\", \"splash loop\", \"title screen video\", \"animated backdrop\", \"menu background loop\", \"ambient loop video\", \"looping clip\", \"seamless loop\".",
74
+ "description": "Generate a short seamlessly-looping video clip — splash background, animated logo backdrop, idle title-screen footage — wired as a looping VideoStreamPlayer.",
62
75
  "clients": "all",
63
76
  "recommended": false,
64
77
  "status": "stable",
@@ -71,7 +84,7 @@
71
84
  {
72
85
  "id": "skill/animation-tree",
73
86
  "name": "animation-tree",
74
- "description": "Use when the user has clips on a character and needs them to play in response to gameplay — idle/walk/run blend, attacks that interrupt locomotion, hit reactions that override everything. Designs and wires Summer Engine AnimationTree state machines and blend trees. Trigger on \"AnimationTree\", \"state machine\", \"blend tree\", \"transition\", \"play animation when\", \"character keeps T-posing\", \"wire animations\".",
87
+ "description": "Design and wire AnimationTree state machines and blend trees so clips respond to gameplay — locomotion blends, attack interrupts, hit reactions.",
75
88
  "clients": "all",
76
89
  "recommended": false,
77
90
  "status": "stable",
@@ -84,7 +97,7 @@
84
97
  {
85
98
  "id": "skill/art-direction",
86
99
  "name": "art-direction",
87
- "description": "Use when defining the visual style of the game — references, palette, mood, lighting plan, post-processing, do/don't list. Outputs an art bible at `.summer/art-bible.md`. Trigger on \"art direction\", \"art bible\", \"visual style\", \"color palette\", \"what should it look like\", \"the look\".",
100
+ "description": "Define the game's visual style — references, palette, mood, lighting plan, post-processing, do/don't list — output as an art bible at .summer/art-bible.md.",
88
101
  "clients": "all",
89
102
  "recommended": true,
90
103
  "status": "stable",
@@ -97,7 +110,7 @@
97
110
  {
98
111
  "id": "skill/asset-strategy",
99
112
  "name": "asset-strategy",
100
- "description": "Use when planning asset creation, picking an asset pipeline, or routing an \"I need a [thing]\" request to the right specialist skill. Disambiguates between 2D / 3D / audio / video / VFX / animation pipelines and dispatches via the Skill tool. Trigger on \"assets\", \"asset pipeline\", \"make a model\", \"I need a sound\", \"create concept art\", \"generate something\", broad creative requests.",
113
+ "description": "Route any 'I need a [thing]' asset request to the right specialist skill — disambiguates 2D / 3D / audio / video / VFX / animation pipelines.",
101
114
  "clients": "all",
102
115
  "recommended": true,
103
116
  "status": "stable",
@@ -110,7 +123,7 @@
110
123
  {
111
124
  "id": "skill/audio-direction",
112
125
  "name": "audio-direction",
113
- "description": "Use when defining the sonic identity — music style, instruments, SFX vocabulary, dynamic music plan. Outputs an audio bible at `.summer/audio-bible.md`. Trigger on \"audio direction\", \"audio bible\", \"music style\", \"sound design\", \"what should it sound like\", \"dynamic music\".",
126
+ "description": "Define the game's sonic identity — music style, instruments, SFX vocabulary, dynamic music plan — output as an audio bible at .summer/audio-bible.md.",
114
127
  "clients": "all",
115
128
  "recommended": true,
116
129
  "status": "stable",
@@ -123,7 +136,7 @@
123
136
  {
124
137
  "id": "skill/auto-fire-targeting",
125
138
  "name": "auto-fire-targeting",
126
- "description": "Use when designing or fixing the targeting system for an auto-fire weapon (survivors-genre, top-down ARPG, tower-defense). Covers the pending-damage pattern that prevents over-commit when bullet flight time is longer than fire rate. Trigger on \"auto-fire\", \"auto-aim\", \"weapon targeting\", \"targeting\", \"wasted bullets\", \"overkill\", \"damage prediction\", \"survivors weapon\".",
139
+ "description": "Design or fix auto-fire weapon targeting (survivors, top-down ARPG, tower defense) — the pending-damage pattern that prevents over-commit and overkill.",
127
140
  "clients": "all",
128
141
  "recommended": false,
129
142
  "status": "stable",
@@ -136,7 +149,7 @@
136
149
  {
137
150
  "id": "skill/brainstorm-game",
138
151
  "name": "brainstorm-game",
139
- "description": "Use when the user wants help deciding what game to make, scoping a new project, or turning a vague idea into a buildable plan. Walks through genre, scope, core loop, mechanics, and art direction, then writes a 1-page brief to `.summer/GameSoul.md`. Trigger on \"brainstorm a game\", \"what should I make\", \"I want to make a game\", \"help me scope\", \"new game idea\".",
152
+ "description": "Turn a vague idea into a buildable plan — genre, scope, core loop, mechanics, art direction — written as a 1-page brief to .summer/GameSoul.md.",
140
153
  "clients": "all",
141
154
  "recommended": true,
142
155
  "status": "stable",
@@ -149,7 +162,7 @@
149
162
  {
150
163
  "id": "skill/brainstorming",
151
164
  "name": "brainstorming",
152
- "description": "Use when starting creative work — designing a game, picking a mechanic, building features or components, modifying behavior. Explores user intent, requirements, and design before implementation. MUST run before any creative work.",
165
+ "description": "Explore user intent, requirements, and design before implementation — must run before any creative work: features, components, mechanics, behavior.",
153
166
  "clients": "all",
154
167
  "recommended": true,
155
168
  "status": "stable",
@@ -162,7 +175,7 @@
162
175
  {
163
176
  "id": "skill/browse-templates",
164
177
  "name": "browse-templates",
165
- "description": "Use when the user wants to see available Summer Engine project templates, start from an existing template, or asks \"what templates exist?\" — lists the pinned template registry via `summer list templates`, presents the choices, and creates a project from the chosen template via `summer create <slug> <project-name>`. Trigger on \"templates\", \"starter\", \"boilerplate\", \"from a template\", \"what's available\", \"show me templates\", \"third-person\", \"platformer\", \"multiplayer starter\".",
178
+ "description": "List available Summer Engine project templates, present the choices, and create a project from the chosen one via summer create.",
166
179
  "clients": "all",
167
180
  "recommended": true,
168
181
  "status": "stable",
@@ -172,10 +185,24 @@
172
185
  "project"
173
186
  ]
174
187
  },
188
+ {
189
+ "id": "skill/camera-rigs",
190
+ "name": "camera-rigs",
191
+ "description": "Camera rigs for 2D and 3D: Camera2D follow with limits, first-person head camera, SpringArm3D third-person, orthographic top-down, FOV guidance.",
192
+ "clients": "all",
193
+ "recommended": false,
194
+ "status": "preview",
195
+ "path": "library/skills/camera-rigs/",
196
+ "domains": [
197
+ "scenes",
198
+ "3d",
199
+ "2d"
200
+ ]
201
+ },
175
202
  {
176
203
  "id": "skill/celeste-momentum-platforming",
177
204
  "name": "celeste-momentum-platforming",
178
- "description": "Use when building or tuning Celeste-style momentum-based precision platformer movement in SummerEngine (Godot 4): tuned gravity/fall, run acceleration, variable-height jumps with coyote time, dashes, wall jumps/slides, climb stamina, and pixel-scale corner correction, using the exact tuning constants extracted from Celeste's open-source Player class.",
205
+ "description": "Celeste-style 2D precision platformer movement — momentum running, coyote time, variable jumps, dash, wall jump/slide, climb stamina, pixel corner correction.",
179
206
  "clients": "all",
180
207
  "recommended": false,
181
208
  "status": "preview",
@@ -189,7 +216,7 @@
189
216
  {
190
217
  "id": "skill/character-animation-wiring",
191
218
  "name": "character-animation-wiring",
192
- "description": "Use when a rigged, animated character is in the scene (Meshy rig + generated clips, or an imported GLB) and needs to be wired end to end — inspect the clips and bones that actually arrived, build idle/walk/run locomotion with blend times, method-track footsteps and attack frames, still poses and head tracking, blend-shape facial keys, root motion. Trigger on \"wire the character\", \"hook up the animations\", \"make it walk around\", \"the GLB has animations\", \"footstep events\", \"attack frame\", \"root motion\", \"character slides while walking\".",
219
+ "description": "Wire a rigged, animated character end to end — inspect real clips and bones, locomotion state machine, method-track events, poses, blend shapes, root motion.",
193
220
  "clients": "all",
194
221
  "recommended": false,
195
222
  "status": "stable",
@@ -202,7 +229,7 @@
202
229
  {
203
230
  "id": "skill/character-model",
204
231
  "name": "character-model",
205
- "description": "Use when generating a humanoid character ready for animation — player avatar, NPC, enemy, boss, companion. Generates a T-pose reference image, gates an un-rigged preview past the user, then runs the Meshy auto-rig pass and wires the result as a CharacterBody3D (movement) or Node3D (cinematic). Trigger on \"make a character\", \"generate the player\", \"I need an enemy model\", \"create an NPC\", \"rigged humanoid\", \"character with a skeleton\", \"model for animation\".",
232
+ "description": "Generate a rigged humanoid — player, NPC, enemy, boss — via T-pose reference, user-gated preview, and Meshy auto-rig, wired as CharacterBody3D or Node3D.",
206
233
  "clients": "all",
207
234
  "recommended": true,
208
235
  "status": "stable",
@@ -212,10 +239,25 @@
212
239
  "assets"
213
240
  ]
214
241
  },
242
+ {
243
+ "id": "skill/character-movement",
244
+ "name": "character-movement",
245
+ "description": "Player controllers for 2D and 3D, plus the canonical third-person controller for Summer humanoid packages: movement owns translation, clips follow state.",
246
+ "clients": "all",
247
+ "recommended": false,
248
+ "status": "preview",
249
+ "path": "library/skills/character-movement/",
250
+ "domains": [
251
+ "character-controller",
252
+ "gameplay",
253
+ "2d",
254
+ "3d"
255
+ ]
256
+ },
215
257
  {
216
258
  "id": "skill/character-portrait",
217
259
  "name": "character-portrait",
218
- "description": "Use when generating a single, polished bust/portrait of a character for dialogue UI, character-select screens, lore cards, or codex entries. One character, locked composition, VN-style. Trigger on \"character portrait\", \"dialogue portrait\", \"VN portrait\", \"character bust\", \"headshot\", \"character select image\", \"lore card art\".",
260
+ "description": "Generate a single polished character bust for dialogue UI, character select, lore cards, or codex entries. One character, locked composition, VN-style.",
219
261
  "clients": "all",
220
262
  "recommended": true,
221
263
  "status": "stable",
@@ -228,7 +270,7 @@
228
270
  {
229
271
  "id": "skill/cinematic-cutscene",
230
272
  "name": "cinematic-cutscene",
231
- "description": "Use when generating a non-interactive cutscene clip — opening scene, story beat, character intro, ending. Locks the look with a reference image, image-to-videos a 5-10s shot, optionally adds TTS dialogue, and wires it as a VideoStreamPlayer that fades in/out. Trigger on \"cutscene\", \"intro cinematic\", \"opening scene\", \"ending cinematic\", \"story beat video\", \"character intro video\", \"in-engine cinematic\", \"non-playable scene\".",
273
+ "description": "Generate a non-interactive cutscene — reference-locked look, a 5-10s image-to-video shot, optional TTS dialogue — wired as a fading VideoStreamPlayer.",
232
274
  "clients": "all",
233
275
  "recommended": true,
234
276
  "status": "stable",
@@ -238,10 +280,24 @@
238
280
  "assets"
239
281
  ]
240
282
  },
283
+ {
284
+ "id": "skill/combat-basics",
285
+ "name": "combat-basics",
286
+ "description": "Damage in Summer Engine: hitbox and hurtbox Areas on opposing layers, a reusable Health component, damage signals, knockback, hit feedback, projectiles.",
287
+ "clients": "all",
288
+ "recommended": false,
289
+ "status": "preview",
290
+ "path": "library/skills/combat-basics/",
291
+ "domains": [
292
+ "gameplay",
293
+ "scripting",
294
+ "game-design"
295
+ ]
296
+ },
241
297
  {
242
298
  "id": "skill/concept-art",
243
299
  "name": "concept-art",
244
- "description": "Use when the user is exploring art direction — wants 3-4 rough variants of a character, environment, or prop to pick a vibe before committing to a final asset. Generates a batch of evocative concept images, not finals. Trigger on \"concept art\", \"art direction\", \"explore the look\", \"give me some variants\", \"what could this character look like\", \"mood board\", \"rough sketches\".",
300
+ "description": "Explore art direction with 3-4 rough concept variants of a character, environment, or prop to pick a vibe before committing to a final asset.",
245
301
  "clients": "all",
246
302
  "recommended": true,
247
303
  "status": "stable",
@@ -254,7 +310,7 @@
254
310
  {
255
311
  "id": "skill/create-asset-sheet",
256
312
  "name": "create-asset-sheet",
257
- "description": "Use when the user wants to generate a pack of 2D game assets from a single prompt — a tile sheet, UI kit, menu screen, character pack, or biome set. The skill plans the prompt, generates a coherent sheet, removes the background, vision-detects each item, classifies it, and saves as a single pack ArtAsset. Trigger on \"asset sheet\", \"asset pack\", \"tile sheet\", \"tileset\", \"UI kit\", \"asset pack for\", \"make me a sheet of\", \"generate a bunch of <category> assets\".",
313
+ "description": "Generate a pack of 2D game assets from one prompt — tile sheet, UI kit, character pack, or biome set — sliced, classified, and saved as one pack ArtAsset.",
258
314
  "clients": "all",
259
315
  "recommended": false,
260
316
  "status": "stable",
@@ -267,7 +323,7 @@
267
323
  {
268
324
  "id": "skill/debug",
269
325
  "name": "debug",
270
- "description": "Use when the user reports a bug, crash, error, or unexpected behavior in a Summer project, before making code or scene changes. Runs a disciplined script-errors, console, debugger, hypothesis, fix, and verify loop. Trigger on \"debug\", \"crash\", \"error\", \"broken\", \"not working\", \"freezes\", \"wrong\".",
326
+ "description": "Disciplined bug/crash/error loop for Summer projects — script errors, console, debugger, hypothesis, fix, verify — before making code or scene changes.",
271
327
  "clients": "all",
272
328
  "recommended": true,
273
329
  "status": "stable",
@@ -280,7 +336,7 @@
280
336
  {
281
337
  "id": "skill/debugging-game-feel",
282
338
  "name": "debugging-game-feel",
283
- "description": "Use when a gameplay feature works correctly but feels wrong — floaty jumps, mushy combat, sluggish camera, weightless impacts. Different from logical bug debugging; the bug is subjective and lives in tuning, timing, and feedback layers.",
339
+ "description": "Debug features that work but feel wrong — floaty jumps, mushy combat, sluggish camera — subjective bugs living in tuning, timing, and feedback layers.",
284
340
  "clients": "all",
285
341
  "recommended": false,
286
342
  "status": "stable",
@@ -293,7 +349,7 @@
293
349
  {
294
350
  "id": "skill/design-level",
295
351
  "name": "design-level",
296
- "description": "Use when designing a single level — layout, pacing, encounters, secrets, reward gating. Outputs a level design doc and a concrete node-tree skeleton for `summer_create_scene`. Trigger on \"design a level\", \"design level 1\", \"tutorial level\", \"boss arena\", \"design the encounter\", \"make a level layout\".",
352
+ "description": "Design a single level — layout, pacing, encounters, secrets, reward gating — outputs a level design doc and a node-tree skeleton for summer_create_scene.",
297
353
  "clients": "all",
298
354
  "recommended": true,
299
355
  "status": "stable",
@@ -306,7 +362,7 @@
306
362
  {
307
363
  "id": "skill/design-mechanic",
308
364
  "name": "design-mechanic",
309
- "description": "Use when designing one specific game mechanic in detail — input, response, feedback, failure modes, depth, tunables. Outputs a design doc and a scaffolding-ready node-graph sketch + GDScript stub. Trigger on \"design a mechanic\", \"how should X work\", \"design the parry\", \"design the dash\", \"design the inventory\", \"the loop is broken\".",
365
+ "description": "Design one game mechanic in detail — input, response, feedback, failure modes, depth, tunables — outputs a design doc, node-graph sketch, GDScript stub.",
310
366
  "clients": "all",
311
367
  "recommended": true,
312
368
  "status": "stable",
@@ -319,7 +375,7 @@
319
375
  {
320
376
  "id": "skill/design-npc",
321
377
  "name": "design-npc",
322
- "description": "Use when the user wants to design an enemy, NPC, boss, companion, civilian, or wave-spawned mob's behavior. Walks perception, personality knobs, intent layer, action state machine, telegraphs, defeat handling, and group emergence — outputs a state-machine GDScript stub plus the recommended node tree. Trigger on \"enemy\", \"NPC\", \"boss\", \"companion\", \"AI\", \"behavior\", \"mob\", \"perception\", \"design enemy\".",
378
+ "description": "Design enemy/NPC/boss/companion behavior — perception, personality, intent, action state machine, telegraphs — outputs a GDScript stub plus node tree.",
323
379
  "clients": "all",
324
380
  "recommended": true,
325
381
  "status": "stable",
@@ -332,7 +388,7 @@
332
388
  {
333
389
  "id": "skill/diagnosing-perf-regressions",
334
390
  "name": "diagnosing-perf-regressions",
335
- "description": "Use when frame rate, frame time, or load time has gotten worse since a known-good state — \"it used to run at 60, now it's at 30.\" Focused on finding the cause of a regression, not general performance tuning.",
391
+ "description": "Find why frame rate, frame time, or load time got worse since a known-good state — regression hunting, not general performance tuning.",
336
392
  "clients": "all",
337
393
  "recommended": false,
338
394
  "status": "stable",
@@ -345,7 +401,7 @@
345
401
  {
346
402
  "id": "skill/dispatching-parallel-agents",
347
403
  "name": "dispatching-parallel-agents",
348
- "description": "Use when facing 2+ independent tasks that can be worked on without shared state or sequential dependencies",
404
+ "description": "Work 2+ independent tasks in parallel when they share no state and have no sequential dependencies.",
349
405
  "clients": "all",
350
406
  "recommended": false,
351
407
  "status": "stable",
@@ -358,7 +414,7 @@
358
414
  {
359
415
  "id": "skill/driving-the-editor-ui",
360
416
  "name": "driving-the-editor-ui",
361
- "description": "Use when a task is an editor-workflow step a human would do with the mouse — open Project Settings or a dock, switch the 2D/3D/Script main screen, toggle a panel, clear a dialog that is blocking the editor, read what a dock shows — and when deciding whether a request is UI work or scene work. Drives the editor by NAME through summer_ui_actions, reads it as structure through summer_ui_tree, activates the long tail by path through summer_ui_activate, and treats summer_ui_screenshot as the pixels-last fallback. Preview — the ops ship with a follow-up engine build.",
417
+ "description": "Drive the editor UI by name: invoke actions, clear blocking dialogs, switch the main screen, read a dock — and route scene work to the scene tools instead.",
362
418
  "clients": "all",
363
419
  "recommended": false,
364
420
  "status": "preview",
@@ -372,7 +428,7 @@
372
428
  {
373
429
  "id": "skill/environment-kit",
374
430
  "name": "environment-kit",
375
- "description": "Use when generating a modular environment kit — wall pieces, floor tiles, pillars, doors, arches, corner blocks that snap together to form a level. Multiple meshes that share a visual style. Trigger on \"build a dungeon kit\", \"modular walls\", \"level kit\", \"tileset\", \"interior pieces\", \"snap-together pieces\", \"make a kit for the temple\".",
431
+ "description": "Generate a modular environment kit — wall pieces, floor tiles, pillars, doors, arches, corners — snap-together meshes sharing one visual style.",
376
432
  "clients": "all",
377
433
  "recommended": false,
378
434
  "status": "stable",
@@ -385,7 +441,7 @@
385
441
  {
386
442
  "id": "skill/export-and-ship",
387
443
  "name": "export-and-ship",
388
- "description": "Use when the user wants to assess or prepare a Summer game export. Inventories the templates and targets actually available in the installed Summer Engine build, validates release assets and configuration, and produces only locally supported builds after approval. It does not publish, upload, host, or submit a game. Trigger on \"export\", \"ship\", \"release\", \"build\", \"Steam\", \"itch\", \"HTML5\", \"iOS\", \"Android\", \"submit\", \"publish\".",
444
+ "description": "Assess and prepare a game export: inventory installed templates and targets, validate release assets and config, produce supported builds after approval.",
389
445
  "clients": "all",
390
446
  "recommended": true,
391
447
  "status": "stable",
@@ -398,7 +454,7 @@
398
454
  {
399
455
  "id": "skill/fabricating-assets",
400
456
  "name": "fabricating-assets",
401
- "description": "Use when an asset needs Blender's mesh tooling rather than generation or a library download — a modular kit with exact dimensions and snapping, VFX meshes (shatter fragments, curve sweeps, LOD chains), or decimating/UV-unwrapping/baking a generated model — and you are about to write a bpy script for summer_fabricate_3d. Covers the route decision (fabricate vs generate vs import), the bpy rules that survive glTF export, the script -> import -> snapshot -> screenshot loop, every failure_reason and what to do about it, and the licensing shape (the user's own Blender, never bundled).",
457
+ "description": "Fabricate meshes with a bpy script in the user's own Blender (summer_fabricate_3d) — kits with exact dimensions, VFX meshes, post-processing generated models.",
402
458
  "clients": "all",
403
459
  "recommended": false,
404
460
  "status": "preview",
@@ -413,7 +469,7 @@
413
469
  {
414
470
  "id": "skill/facial-and-lipsync",
415
471
  "name": "facial-and-lipsync",
416
- "description": "Use when the user has a voice-over (or wants one) and needs the character's mouth to actually move with the words — phoneme extraction from audio, mapping to viseme blendshapes, plus emotional facial expressions (smile, frown, surprise). Trigger on \"lipsync\", \"lip sync\", \"talking head\", \"phonemes\", \"viseme\", \"facial animation\", \"blendshapes\", \"make him talk\", \"dialogue animation\".",
472
+ "description": "Make a character's mouth move with a voice-over — phoneme extraction from audio, viseme blendshape mapping, and emotional facial expressions.",
417
473
  "clients": "all",
418
474
  "recommended": false,
419
475
  "status": "stable",
@@ -426,7 +482,7 @@
426
482
  {
427
483
  "id": "skill/fps-controller",
428
484
  "name": "fps-controller",
429
- "description": "Use when building an FPS, first-person movement, or a 3D character that walks, jumps, and reacts to external forces — production-quality first-person controller with WASD, mouse look, jump, coyote time, jump buffering, air control, and external-velocity handling. Trigger on \"FPS\", \"first-person\", \"WASD\", \"character controller\", \"mouse look\", \"player movement\", \"jump\".",
485
+ "description": "Production-quality first-person controller — WASD, mouse look, jump, coyote time, jump buffering, air control, and external-velocity handling.",
430
486
  "clients": "all",
431
487
  "recommended": true,
432
488
  "status": "stable",
@@ -439,7 +495,7 @@
439
495
  {
440
496
  "id": "skill/game-feel",
441
497
  "name": "game-feel",
442
- "description": "Use when a Summer game \"feels flat\", \"lacks impact\", \"needs juice\", or \"needs punch\", or the user asks for hit feedback, screen shake, camera shake, audio ducking, or general game feel. Walks through Summer Engine's hit-flash, trauma camera shake, and audio-ducking stack, wired so one hit fires all three. Trigger on \"vfx\", \"juice\", \"punch\", \"feels flat\", \"game feel\", \"hit flash\", \"screen shake\", \"camera shake\", \"ducking\".",
498
+ "description": "Add juice: hit-flash, trauma-based camera shake, and audio ducking wired so one hit fires all three — for games that feel flat or lack impact.",
443
499
  "clients": "all",
444
500
  "recommended": true,
445
501
  "status": "stable",
@@ -452,7 +508,7 @@
452
508
  {
453
509
  "id": "skill/gameskill",
454
510
  "name": "gameskill",
455
- "description": "Use when finishing a game-development session and you want to capture what you just learned as a reusable skill so the next session starts smarter. Trigger on \"gameskill\", \"/gameskill\", \"capture learnings\", \"save to skills\".",
511
+ "description": "Capture what a game-dev session just learned as a reusable skill (project, user or Summer library) so the next session starts smarter.",
456
512
  "clients": "all",
457
513
  "recommended": false,
458
514
  "status": "stable",
@@ -465,7 +521,7 @@
465
521
  {
466
522
  "id": "skill/gdscript-patterns",
467
523
  "name": "gdscript-patterns",
468
- "description": "Use when writing or refactoring GDScript — type hints, signals, exports, onready, lifecycle methods (`_ready` vs `_process` vs `_physics_process`), `get_node` vs `$NodePath`, naming conventions. Trigger on \"GDScript\", \"script\", \"signals\", \"exports\", \"onready\", \"_ready\", \"_process\".",
524
+ "description": "GDScript conventions — type hints, signals, exports, onready, lifecycle methods, get_node vs $NodePath, naming.",
469
525
  "clients": "all",
470
526
  "recommended": true,
471
527
  "status": "stable",
@@ -478,7 +534,7 @@
478
534
  {
479
535
  "id": "skill/generate-motion",
480
536
  "name": "generate-motion",
481
- "description": "Use when the user needs an animation clip on a rigged character — idle/walk/run/attack from the curated Meshy library. Picks the right curated motion, attaches the resulting clip to an AnimationPlayer. Trigger on \"animation\", \"animate\", \"idle\", \"walk\", \"run\", \"attack animation\", \"motion\", \"mocap\", \"dance\", \"death animation\".",
537
+ "description": "Attach an animation clip to a rigged character from the curated Meshy motion library — idle, walk, run, attack — wired via AnimationPlayer.",
482
538
  "clients": "all",
483
539
  "recommended": true,
484
540
  "status": "stable",
@@ -491,7 +547,7 @@
491
547
  {
492
548
  "id": "skill/godogen-visual-proof-game-generation",
493
549
  "name": "godogen-visual-proof-game-generation",
494
- "description": "Use when adopting Godogen's thin-runtime autonomous game generation and its 'proof over claims' visual QC loop for SummerEngine: capture frames from the running engine, let the host agent self-verify against the brief, and drive bounded fix iterations until a proof recording closes the run.",
550
+ "description": "Godogen-style game generation with a visual QC loop — capture frames from the running game, self-verify against the brief, bounded fix rounds, proof clip.",
495
551
  "clients": "all",
496
552
  "recommended": false,
497
553
  "status": "preview",
@@ -504,7 +560,7 @@
504
560
  {
505
561
  "id": "skill/headless-scripting",
506
562
  "name": "headless-scripting",
507
- "description": "Use when a Summer project needs an operation no MCP tool exposes, such as baking a navmesh, generating collision shapes, authoring an Animation, building a TileSet, re-importing assets after file changes, or preparing a supported local export. Runs a GDScript file against Summer Engine from the shell. Also use when a plan involves \"run it headless and screenshot it\", which does not work and this skill explains why.",
563
+ "description": "Run a GDScript file against Summer Engine from the shell for operations no MCP tool exposes — navmesh baking, collision shapes, TileSets, re-imports.",
508
564
  "clients": "all",
509
565
  "recommended": true,
510
566
  "status": "stable",
@@ -515,22 +571,23 @@
515
571
  ]
516
572
  },
517
573
  {
518
- "id": "skill/host-authoritative-state",
519
- "name": "host-authoritative-state",
520
- "description": "Use when designing the state layer of a multiplayer Summer game: deciding what the host owns, how clients request changes, and how the host validates and broadcasts. Pairs with `/peer-to-peer-multiplayer`. Trigger on \"host authority\", \"authoritative state\", \"state ownership\", \"MP cheating\", \"client validation\", \"RPC patterns\".",
574
+ "id": "skill/in-game-purchases",
575
+ "name": "in-game-purchases",
576
+ "description": "Sell items for Sparks and let short players buy Sparks in game via the Summer purchase sheet: checkout, Sparks purchase, results, testing, store policy.",
521
577
  "clients": "all",
522
- "recommended": true,
523
- "status": "stable",
524
- "path": "library/skills/host-authoritative-state/",
578
+ "recommended": false,
579
+ "status": "preview",
580
+ "path": "library/skills/in-game-purchases/",
525
581
  "domains": [
526
- "multiplayer",
582
+ "gameplay",
583
+ "scripting",
527
584
  "game-design"
528
585
  ]
529
586
  },
530
587
  {
531
588
  "id": "skill/instantiate-asset-pack",
532
589
  "name": "instantiate-asset-pack",
533
- "description": "Use when the user wants to import or spawn an entire asset pack (the multi-slice ArtAsset produced by `create-asset-sheet`) into the current scene — not a single slice, the whole pack. Reads the pack's per-slice metadata (zOrder, isComposite, parentSliceIndex, widget, bbox), groups composites, sorts children by paint order, and emits the Sprite2D / Node2D / NinePatchRect ops to lay it out correctly. Trigger on \"import the X pack\", \"spawn the UI from pack Y\", \"bring in that asset sheet\", \"add the panel from the pack\".",
590
+ "description": "Import a whole create-asset-sheet pack into the scene: groups composites, sorts paint order, emits Sprite2D/Node2D/NinePatchRect ops to lay it out.",
534
591
  "clients": "all",
535
592
  "recommended": false,
536
593
  "status": "stable",
@@ -543,7 +600,7 @@
543
600
  {
544
601
  "id": "skill/investigating-bugs",
545
602
  "name": "investigating-bugs",
546
- "description": "Use when encountering any bug, test failure, or unexpected behavior, before proposing fixes",
603
+ "description": "Systematic investigation of any bug, test failure, or unexpected behavior before proposing fixes.",
547
604
  "clients": "all",
548
605
  "recommended": true,
549
606
  "status": "stable",
@@ -556,7 +613,7 @@
556
613
  {
557
614
  "id": "skill/lumera-single-image-scene-reconstruction",
558
615
  "name": "lumera-single-image-scene-reconstruction",
559
- "description": "Use when building a Lumera-style single-image → editable-engine-scene pipeline in SummerEngine: VLM-parsed object boxes and parametric lights, per-object meshes, HDR environment probe, engine-native assembly, and a bounded dual-agent refinement loop.",
616
+ "description": "Lumera-style single image to editable 3D scene — VLM-parsed object boxes and parametric lights, per-object meshes, HDR probe, .tscn assembly, refinement loop.",
560
617
  "clients": "all",
561
618
  "recommended": false,
562
619
  "status": "preview",
@@ -571,7 +628,7 @@
571
628
  {
572
629
  "id": "skill/make-game",
573
630
  "name": "make-game",
574
- "description": "Use when the user says \"make me a game\", \"build me a game\", \"I want to make a [genre] game\", \"let's build something\" — the orchestration spine that runs the full game-dev pipeline: brainstorm → plan → scaffold → build core mechanics → art direction → audio → polish/VFX → verify → ship. Delegates to specialist skills with explicit checkpoints between phases. Trigger on \"make a game\", \"build me a game\", \"create a new game\", \"make me a game\", \"let's build a game\", \"I want to build [game shape]\".",
631
+ "description": "Orchestration spine for 'make me a game': brainstorm, plan, scaffold, mechanics, art, audio, polish, verify, ship — delegates to specialist skills.",
575
632
  "clients": "all",
576
633
  "recommended": true,
577
634
  "status": "stable",
@@ -581,10 +638,92 @@
581
638
  "project"
582
639
  ]
583
640
  },
641
+ {
642
+ "id": "skill/multiplayer",
643
+ "name": "multiplayer",
644
+ "description": "Start here for Summer multiplayer: how the authority, clients, Worlds and Sessions fit, and which skill comes next.",
645
+ "clients": "all",
646
+ "recommended": true,
647
+ "status": "stable",
648
+ "path": "library/skills/multiplayer/",
649
+ "domains": [
650
+ "multiplayer",
651
+ "project"
652
+ ]
653
+ },
654
+ {
655
+ "id": "skill/multiplayer-movement",
656
+ "name": "multiplayer-movement",
657
+ "description": "Client-side movement in Summer multiplayer: owners move instantly, others glide, the authority checks each pose.",
658
+ "clients": "all",
659
+ "recommended": false,
660
+ "status": "stable",
661
+ "path": "library/skills/multiplayer-movement/",
662
+ "domains": [
663
+ "multiplayer",
664
+ "character-controller",
665
+ "scripting"
666
+ ]
667
+ },
668
+ {
669
+ "id": "skill/multiplayer-project",
670
+ "name": "multiplayer-project",
671
+ "description": "Set up a Summer multiplayer project: both entry scenes, World and queue files, joining, and a first Local Play run.",
672
+ "clients": "all",
673
+ "recommended": false,
674
+ "status": "stable",
675
+ "path": "library/skills/multiplayer-project/",
676
+ "domains": [
677
+ "multiplayer",
678
+ "project",
679
+ "scripting"
680
+ ]
681
+ },
682
+ {
683
+ "id": "skill/multiplayer-publish",
684
+ "name": "multiplayer-publish",
685
+ "description": "Ship a hosted Summer multiplayer game: the summer.games bundle, server preset, pre-upload checks, and a new Build.",
686
+ "clients": "all",
687
+ "recommended": false,
688
+ "status": "preview",
689
+ "path": "library/skills/multiplayer-publish/",
690
+ "domains": [
691
+ "multiplayer",
692
+ "deployment"
693
+ ]
694
+ },
695
+ {
696
+ "id": "skill/multiplayer-state",
697
+ "name": "multiplayer-state",
698
+ "description": "Authority-owned game state in Summer multiplayer: shared and private State groups, validated Commands, and Events.",
699
+ "clients": "all",
700
+ "recommended": false,
701
+ "status": "stable",
702
+ "path": "library/skills/multiplayer-state/",
703
+ "domains": [
704
+ "multiplayer",
705
+ "game-design",
706
+ "scripting"
707
+ ]
708
+ },
709
+ {
710
+ "id": "skill/multiplayer-testing",
711
+ "name": "multiplayer-testing",
712
+ "description": "Test a Summer multiplayer game with Local Play: several players, a bad network, bots, and what a passing run shows.",
713
+ "clients": "all",
714
+ "recommended": false,
715
+ "status": "stable",
716
+ "path": "library/skills/multiplayer-testing/",
717
+ "domains": [
718
+ "multiplayer",
719
+ "playtest",
720
+ "verification"
721
+ ]
722
+ },
584
723
  {
585
724
  "id": "skill/music-track",
586
725
  "name": "music-track",
587
- "description": "Use when generating a looped or cinematic music track. Loops are authored at >=30s with a marked loop point; cinematic tracks at >=60s linear. Trigger on \"generate music\", \"make a calm track\", \"boss music\", \"title screen music\", \"main theme\", \"exploration loop\", \"combat track\".",
726
+ "description": "Generate a looped or cinematic music track — loops authored at >=30s with a marked loop point, cinematic tracks at >=60s linear.",
588
727
  "clients": "all",
589
728
  "recommended": true,
590
729
  "status": "stable",
@@ -597,7 +736,7 @@
597
736
  {
598
737
  "id": "skill/navigate-summer",
599
738
  "name": "navigate-summer",
600
- "description": "Use when the user wants to SEE, CHECK, or DECIDE something — \"show me my billing\", \"where do I change my plan\", \"open my games\", \"let me look at the scene\", \"open the MCP guide for Cursor\". Decides whether to open a Summer web page or editor surface for the user or to act through the API, and lands exactly there with summer_open.",
739
+ "description": "When to open a Summer web page or editor surface FOR the user (billing, their games, the scene just built) versus acting through the API, using summer_open.",
601
740
  "clients": "all",
602
741
  "recommended": true,
603
742
  "status": "stable",
@@ -611,7 +750,7 @@
611
750
  {
612
751
  "id": "skill/new-project",
613
752
  "name": "new-project",
614
- "description": "Use when the user wants a fresh blank Summer Engine project — not from a template. Asks one question (project name) and runs `summer create empty <name>`. Trigger on \"new project\", \"blank project\", \"empty project\", \"from scratch\", \"start fresh\", \"create new game\", \"blank canvas\", \"scaffold a project\".",
753
+ "description": "Create a fresh blank Summer Engine project — asks one question (project name) and runs summer create empty.",
615
754
  "clients": "all",
616
755
  "recommended": true,
617
756
  "status": "stable",
@@ -624,7 +763,7 @@
624
763
  {
625
764
  "id": "skill/organic-model",
626
765
  "name": "organic-model",
627
- "description": "Use when generating organic shapes — trees, rocks, mushrooms, coral, bushes, alien plants, vines, crystals, fruit, bones. The \"easy mode\" of 3D generation; AI artifacts read as natural irregularity. Trigger on \"make a tree\", \"generate rocks\", \"I need foliage\", \"mushroom prop\", \"alien plants\", \"fill the scene with shrubs\", \"scatter some boulders\".",
766
+ "description": "Generate organic 3D shapes — trees, rocks, mushrooms, coral, plants, vines, crystals — where AI artifacts read as natural irregularity.",
628
767
  "clients": "all",
629
768
  "recommended": false,
630
769
  "status": "stable",
@@ -634,23 +773,10 @@
634
773
  "assets"
635
774
  ]
636
775
  },
637
- {
638
- "id": "skill/peer-to-peer-multiplayer",
639
- "name": "peer-to-peer-multiplayer",
640
- "description": "Use when starting a multiplayer Summer game from scratch with peer-to-peer host authority. Build the network architecture top-down so authoritative state, routing rules, and real-time rendering are not bolted on later. Use before writing game logic, not after. Trigger on \"multiplayer\", \"peer-to-peer\", \"p2p\", \"co-op\", \"host\", \"multiplayer architecture\", \"add multiplayer\".",
641
- "clients": "all",
642
- "recommended": true,
643
- "status": "stable",
644
- "path": "library/skills/peer-to-peer-multiplayer/",
645
- "domains": [
646
- "multiplayer",
647
- "project"
648
- ]
649
- },
650
776
  {
651
777
  "id": "skill/pixel-art",
652
778
  "name": "pixel-art",
653
- "description": "Use when generating pixel-art assets — sprites, items, tiles, portraits in a pixel style at a specific resolution (32×32, 64×64, 128×128). Pixel-perfect grid, limited palette, retro feel. Trigger on \"pixel art\", \"8-bit art\", \"16-bit sprite\", \"pixel sprite\", \"retro tileset\", \"pixel icon\", \"pixel portrait\".",
779
+ "description": "Generate pixel-art assets — sprites, items, tiles, portraits — at a specific resolution with pixel-perfect grid, limited palette, retro feel.",
654
780
  "clients": "all",
655
781
  "recommended": true,
656
782
  "status": "stable",
@@ -663,7 +789,7 @@
663
789
  {
664
790
  "id": "skill/play",
665
791
  "name": "play",
666
- "description": "Use when the user says \"play\", \"run it\", \"test it\", \"let me see it\", or \"start the game\". Runs the project in Summer Engine, briefly waits, then reports what's happening — clean run, errors, or warnings.",
792
+ "description": "Run the project in Summer Engine, wait briefly, then report what's happening — clean run, errors, or warnings.",
667
793
  "clients": "all",
668
794
  "recommended": true,
669
795
  "status": "stable",
@@ -676,7 +802,7 @@
676
802
  {
677
803
  "id": "skill/playtesting-a-feature",
678
804
  "name": "playtesting-a-feature",
679
- "description": "Use when about to claim a gameplay feature is done, shipped, or working — requires actually running the game and walking through the feature before declaring completion. Static diagnostics and type checks do not count as playtesting.",
805
+ "description": "Before claiming a gameplay feature done: actually run the game and walk through the feature. Static diagnostics and type checks do not count.",
680
806
  "clients": "all",
681
807
  "recommended": true,
682
808
  "status": "stable",
@@ -689,7 +815,7 @@
689
815
  {
690
816
  "id": "skill/procedural-animation",
691
817
  "name": "procedural-animation",
692
- "description": "Use when the user needs runtime-driven bone modification on top of clips — head look-at, foot IK on uneven ground, hand-grabs-prop, additive lean, hit-direction recoil. Code-and-modifier patterns, not generation. Trigger on \"look at\", \"IK\", \"foot placement\", \"foot IK\", \"lean\", \"additive layer\", \"feet floating\", \"hand penetration\", \"head tracks player\", \"ragdoll\".",
818
+ "description": "Runtime bone modification on top of clips — head look-at, foot IK, hand-grabs-prop, additive lean, recoil. Code-and-modifier patterns, not generation.",
693
819
  "clients": "all",
694
820
  "recommended": false,
695
821
  "status": "stable",
@@ -702,7 +828,7 @@
702
828
  {
703
829
  "id": "skill/prop-model",
704
830
  "name": "prop-model",
705
- "description": "Use when generating a single static 3D prop — sword, barrel, chest, lantern, throne, statue, crate, key, potion, banner. One isolated object, no rigging, wired into the scene as a MeshInstance3D. Trigger on \"make a sword\", \"generate a chest\", \"I need a barrel\", \"add a lantern model\", \"give me a treasure prop\", \"create a statue\".",
831
+ "description": "Generate a single static 3D prop — sword, barrel, chest, lantern, throne, statue — one isolated object, no rigging, wired as a MeshInstance3D.",
706
832
  "clients": "all",
707
833
  "recommended": true,
708
834
  "status": "stable",
@@ -715,7 +841,7 @@
715
841
  {
716
842
  "id": "skill/psx-retro-rendering",
717
843
  "name": "psx-retro-rendering",
718
- "description": "Use when building or reviewing a hardware-informed PlayStation 1 rendering pipeline in Godot 4, including low-resolution output, RGB5 color and exact dithering, affine textures, screen-coordinate snapping, draw-order/depth approximation, vertex lighting, PS1 blend modes, and fog — when accuracy and the limits of each Godot approximation matter, not for a generic pixel-art filter.",
844
+ "description": "Hardware-informed PlayStation 1 rendering in Godot 4 — low-res output, RGB5 and exact dither, affine textures, vertex snapping, blend modes, fog; limits named.",
719
845
  "clients": "all",
720
846
  "recommended": false,
721
847
  "status": "preview",
@@ -728,7 +854,7 @@
728
854
  {
729
855
  "id": "skill/realtime-wet-surfaces",
730
856
  "name": "realtime-wet-surfaces",
731
- "description": "Use when adding real-time wetness to existing Godot 4 materials while preserving their parameter values, mapping Unity's Lit-preserving wet ShaderGraph swap onto a value-copying shader conversion with a geometry-driven wet mask and instance-uniform control.",
857
+ "description": "Real-time wetness on existing Godot 4 materials without losing their values — value-copying wet shader, geometry-driven wet mask, instance-uniform wet amount.",
732
858
  "clients": "all",
733
859
  "recommended": false,
734
860
  "status": "preview",
@@ -741,7 +867,7 @@
741
867
  {
742
868
  "id": "skill/remote-deploy",
743
869
  "name": "remote-deploy",
744
- "description": "Use when the user wants to run or test the game on a real target instead of the editor — a phone, tablet, or another computer (\"deploy to my phone\", \"run on device\", \"test on Android/iOS\", \"remote deploy\", \"one-click deploy\", \"play on hardware\"). Covers the topnav Remote Deploy button, runnable export presets, export templates, and on-device remote debugging. Use when the Remote Deploy button is greyed out and the user wants to know why.",
870
+ "description": "Run or test the game on a real device — phone, tablet, another computer — via the Remote Deploy button, runnable export presets, and on-device debugging.",
745
871
  "clients": "all",
746
872
  "recommended": true,
747
873
  "status": "stable",
@@ -754,7 +880,7 @@
754
880
  {
755
881
  "id": "skill/retarget",
756
882
  "name": "retarget",
757
- "description": "Use when the user wants to apply existing animation clips from one rigged character to a different rigged character — same library, multiple models, no regeneration. Trigger on \"retarget\", \"reuse animation\", \"apply to other character\", \"same animations on different model\", \"share animation library\".",
883
+ "description": "Apply existing animation clips from one rigged character to a different rigged character — same library, multiple models, no regeneration.",
758
884
  "clients": "all",
759
885
  "recommended": false,
760
886
  "status": "stable",
@@ -767,7 +893,7 @@
767
893
  {
768
894
  "id": "skill/running-in-the-cloud",
769
895
  "name": "running-in-the-cloud",
770
- "description": "Use when Summer Engine runs in a cloud container, CI job, remote agent sandbox, or any Linux box with no desktop — installing the engine there, launching it headless, deciding when xvfb-run and software GL are required, and authenticating without a browser. Also use when a tool reports \"engine not running\" in an environment that has no display, or when SUMMER_ENGINE_BINARY / SUMMER_TOKEN come up.",
896
+ "description": "Run Summer Engine on a Linux box with no display — install it, launch headless, know when xvfb + software GL are needed, authenticate without a browser.",
771
897
  "clients": "all",
772
898
  "recommended": false,
773
899
  "status": "stable",
@@ -777,10 +903,23 @@
777
903
  "project"
778
904
  ]
779
905
  },
906
+ {
907
+ "id": "skill/save-load",
908
+ "name": "save-load",
909
+ "description": "Persist game state in Summer Engine: user:// paths, JSON progress vs ConfigFile settings, a versioned save schema with migration, autosave hooks.",
910
+ "clients": "all",
911
+ "recommended": false,
912
+ "status": "preview",
913
+ "path": "library/skills/save-load/",
914
+ "domains": [
915
+ "scripting",
916
+ "gameplay"
917
+ ]
918
+ },
780
919
  {
781
920
  "id": "skill/scene-composition",
782
921
  "name": "scene-composition",
783
- "description": "Use when building or organizing Summer Engine scenes: node hierarchy conventions, when to extract sub-scenes, reusable prefab patterns, and instance-versus-add-node decisions. Trigger on \"scene\", \"sub-scene\", \"instance\", \"prefab\", \"node hierarchy\", \"scene structure\", \"PackedScene\".",
922
+ "description": "Scene structure conventions — node hierarchy, when to extract sub-scenes, reusable prefab patterns, and instance-versus-add-node decisions.",
784
923
  "clients": "all",
785
924
  "recommended": true,
786
925
  "status": "stable",
@@ -793,7 +932,7 @@
793
932
  {
794
933
  "id": "skill/scene-hierarchy-design",
795
934
  "name": "scene-hierarchy-design",
796
- "description": "Use when applying data-oriented hierarchy principles (from Sander Mertens' ECS hierarchies article) to structure Summer Engine scenes: split asset vs. live hierarchies, group by dominant access pattern, use sub-scenes for reuse, and keep logic path-agnostic via MCP scene tools.",
935
+ "description": "Structure Summer Engine scenes by access pattern — asset vs live hierarchies, wrapper nodes per operation, sub-scenes for reuse, path-agnostic logic.",
797
936
  "clients": "all",
798
937
  "recommended": false,
799
938
  "status": "preview",
@@ -807,7 +946,7 @@
807
946
  {
808
947
  "id": "skill/scene-scripting",
809
948
  "name": "scene-scripting",
810
- "description": "Use when building or modifying a scene takes more than a couple of node/property calls — scattering instances, procedural meshes, booleans/lathe/sweep geometry, terrain, GridMap fills, lighting rigs, keyframe animation, shader FX, 2D levels (tilemaps, sprites, bodies, cameras, parallax), HUDs and Control trees, persisted signal wiring, attached scripts, prefabs, input actions/autoloads/main scene, or anything with computed placement. Runs one GDScript inside the live editor via summer_run_script instead of long CRUD chains, verifies with summer_snapshot_diff + summer_screenshot, and checks API names with summer_api_docs instead of guessing.",
949
+ "description": "One GDScript in the live editor (summer_run_script) builds scenes, 2D levels, HUDs and gameplay wiring instead of CRUD chains; verify with diff + screenshot.",
811
950
  "clients": "all",
812
951
  "recommended": true,
813
952
  "status": "preview",
@@ -823,7 +962,7 @@
823
962
  {
824
963
  "id": "skill/scene-to-level",
825
964
  "name": "scene-to-level",
826
- "description": "Use when the user wants to go from a scene reference image or concept art to a playable Summer Engine scene populated with the right assets and terrain. Orchestrates concept, asset pack, terrain, composition, and scene assembly. Trigger on \"build this scene\", \"make this playable\", \"I want a level that looks like this\", \"from a screenshot to a game\", \"implement this concept\".",
965
+ "description": "Go from a scene reference image or concept art to a playable scene — orchestrates concept, asset pack, terrain, composition, and scene assembly.",
827
966
  "clients": "all",
828
967
  "recommended": false,
829
968
  "status": "stable",
@@ -833,23 +972,10 @@
833
972
  "game-design"
834
973
  ]
835
974
  },
836
- {
837
- "id": "skill/setup-multiplayer",
838
- "name": "setup-multiplayer",
839
- "description": "Use when the user wants to add multiplayer to an existing Summer game: co-op LAN, co-op online, competitive PvP, or a lobby. Start with Summer Engine's high-level MultiplayerAPI plus MultiplayerSpawner and MultiplayerSynchronizer; use custom networking only with a justified reason. Walks peer authority, RPC patterns, replication, and irreversible architecture decisions. It does not claim that managed matchmaking or hosting is live. Trigger on \"multiplayer\", \"co-op\", \"PvP\", \"online\", \"netcode\", \"rollback\", \"MultiplayerAPI\", \"host migration\", \"matchmaking\".",
840
- "clients": "all",
841
- "recommended": true,
842
- "status": "stable",
843
- "path": "library/skills/setup-multiplayer/",
844
- "domains": [
845
- "multiplayer",
846
- "scripting"
847
- ]
848
- },
849
975
  {
850
976
  "id": "skill/skill-create",
851
977
  "name": "skill-create",
852
- "description": "Use when a contributor wants to add a new skill to the Summer library. Bootstraps the canonical folder (library/skills/<slug>/ with resource.yaml and SKILL.md), frontmatter, and stub sections. Trigger on \"create skill\", \"add skill\", \"new skill\", \"skill-create\".",
978
+ "description": "Bootstrap a new Summer library skill (library/skills/<slug>/ with resource.yaml and SKILL.md), frontmatter, and stub sections.",
853
979
  "clients": "all",
854
980
  "recommended": false,
855
981
  "status": "stable",
@@ -862,7 +988,7 @@
862
988
  {
863
989
  "id": "skill/skill-improve",
864
990
  "name": "skill-improve",
865
- "description": "Use when a contributor wants to upgrade a Summer skill that is underperforming or to fix a regression — runs the skill against a behavioral spec with and without proposed changes via parallel-eval harness and ships the version that wins. Trigger on \"improve skill\", \"iterate on skill\", \"make this skill better\".",
991
+ "description": "Upgrade an underperforming Summer skill — run it against a behavioral spec with and without changes via a parallel-eval harness; ship the winner.",
866
992
  "clients": "all",
867
993
  "recommended": false,
868
994
  "status": "stable",
@@ -875,7 +1001,7 @@
875
1001
  {
876
1002
  "id": "skill/skill-test",
877
1003
  "name": "skill-test",
878
- "description": "Use when a contributor wants to lint a Summer skill before commit, audit the whole library, or check a behavioral spec assertion — validates against static structural rules and per-skill behavioral specs. Trigger on \"skill test\", \"lint skill\", \"validate skill\".",
1004
+ "description": "Lint a Summer skill before commit, audit the whole library, or check a behavioral spec assertion — static structural rules plus behavioral specs.",
879
1005
  "clients": "all",
880
1006
  "recommended": false,
881
1007
  "status": "stable",
@@ -888,7 +1014,7 @@
888
1014
  {
889
1015
  "id": "skill/skintokens-auto-rigging",
890
1016
  "name": "skintokens-auto-rigging",
891
- "description": "Use when auto-rigging a static GLB mesh offline with skin-tokens.cpp (LocalAI's C++/GGML port of VAST-AI SkinTokens/TokenRig) in SummerEngine's art pipeline: generate a skeleton and skin weights on CPU/Vulkan, then import the rigged GLB into Godot 4.",
1017
+ "description": "Offline auto-rigging with skin-tokens.cpp (GGML SkinTokens/TokenRig port) — skeleton and skin weights from a static GLB mesh on CPU/Vulkan, into Godot 4.",
892
1018
  "clients": "all",
893
1019
  "recommended": false,
894
1020
  "status": "preview",
@@ -903,7 +1029,7 @@
903
1029
  {
904
1030
  "id": "skill/skybox-panorama",
905
1031
  "name": "skybox-panorama",
906
- "description": "Use when generating a 360° panoramic sky image for use as a Sky resource (PanoramaSkyMaterial) in a 3D scene. Equirectangular projection, 2:1 aspect. Wires into WorldEnvironment.sky. Trigger on \"skybox\", \"sky panorama\", \"360 background\", \"environment sky\", \"HDRI sky\", \"panoramic background\", \"panorama sky\".",
1032
+ "description": "Generate a 360-degree equirectangular sky panorama and wire it as a PanoramaSkyMaterial Sky resource on WorldEnvironment in a 3D scene.",
907
1033
  "clients": "all",
908
1034
  "recommended": false,
909
1035
  "status": "stable",
@@ -916,7 +1042,7 @@
916
1042
  {
917
1043
  "id": "skill/sound-effect",
918
1044
  "name": "sound-effect",
919
- "description": "Use when generating short SFX one-shots — footsteps, weapon swings, UI clicks, hit impacts, environmental cues. Wires the resulting clip as an AudioStreamPlayer / 2D / 3D and auto-frees on finished. Trigger on \"make a sword swing sound\", \"generate a UI click\", \"I need a footstep\", \"add a hit sound\", \"spawn an SFX\".",
1045
+ "description": "Generate short SFX one-shots — footsteps, weapon swings, UI clicks, hit impacts — wired as AudioStreamPlayer/2D/3D that auto-frees on finished.",
920
1046
  "clients": "all",
921
1047
  "recommended": true,
922
1048
  "status": "stable",
@@ -929,7 +1055,7 @@
929
1055
  {
930
1056
  "id": "skill/spatial-placement",
931
1057
  "name": "spatial-placement",
932
- "description": "Use when positioning or verifying 3D objects with surrounding-scene evidence — floor and shelf support, wall gaps, collider or mesh overlap, directional clearance, alcoves, rotated props, and post-placement checks. Trigger on \"place\", \"position\", \"align\", \"sit on\", \"against the wall\", \"inside\", \"overlap\", \"clearance\", \"grounded\", \"flush\", \"spatial\", \"Starcast\".",
1058
+ "description": "Place 3D objects and modular kit pieces from measured geometry — inspect, place, starcast, measure, correct; floor, wall, facade, pipe and alcove recipes.",
933
1059
  "clients": "all",
934
1060
  "recommended": true,
935
1061
  "status": "preview",
@@ -945,7 +1071,7 @@
945
1071
  {
946
1072
  "id": "skill/sprite-sheet",
947
1073
  "name": "sprite-sheet",
948
- "description": "Use when generating animated 2D character sprites laid out as a sprite sheet (grid of frames) — walk cycle, attack frames, idle bob, death sequence. Wires into AnimatedSprite2D / SpriteFrames. Trigger on \"sprite sheet\", \"walk cycle\", \"attack frames\", \"animated sprite\", \"frame-by-frame animation\", \"2D character animation\".",
1074
+ "description": "Generate animated 2D character sprites laid out as a sprite sheet — walk cycle, attack, idle, death — wired into AnimatedSprite2D / SpriteFrames.",
949
1075
  "clients": "all",
950
1076
  "recommended": false,
951
1077
  "status": "stable",
@@ -955,10 +1081,154 @@
955
1081
  "assets"
956
1082
  ]
957
1083
  },
1084
+ {
1085
+ "id": "skill/summer-analytics",
1086
+ "name": "summer-analytics",
1087
+ "description": "Send game events to Summer analytics from the authority or client: fire-and-forget, never blocking gameplay.",
1088
+ "clients": "all",
1089
+ "recommended": false,
1090
+ "status": "preview",
1091
+ "path": "library/skills/summer-analytics/",
1092
+ "domains": [
1093
+ "multiplayer",
1094
+ "scripting"
1095
+ ]
1096
+ },
1097
+ {
1098
+ "id": "skill/summer-friends",
1099
+ "name": "summer-friends",
1100
+ "description": "Summer friends in a game: a consented friends list, profile and chat screens, direct messages. Hosted only.",
1101
+ "clients": "all",
1102
+ "recommended": false,
1103
+ "status": "preview",
1104
+ "path": "library/skills/summer-friends/",
1105
+ "domains": [
1106
+ "multiplayer",
1107
+ "ui"
1108
+ ]
1109
+ },
1110
+ {
1111
+ "id": "skill/summer-leaderboards",
1112
+ "name": "summer-leaderboards",
1113
+ "description": "Leaderboards in a Summer game: queue ratings from matches, and Game rankings your authority scores.",
1114
+ "clients": "all",
1115
+ "recommended": false,
1116
+ "status": "preview",
1117
+ "path": "library/skills/summer-leaderboards/",
1118
+ "domains": [
1119
+ "multiplayer",
1120
+ "ui"
1121
+ ]
1122
+ },
1123
+ {
1124
+ "id": "skill/summer-match-results",
1125
+ "name": "summer-match-results",
1126
+ "description": "End a Summer match: report each player's win, loss or draw, show results on clients, then close the World.",
1127
+ "clients": "all",
1128
+ "recommended": false,
1129
+ "status": "stable",
1130
+ "path": "library/skills/summer-match-results/",
1131
+ "domains": [
1132
+ "multiplayer",
1133
+ "gameplay"
1134
+ ]
1135
+ },
1136
+ {
1137
+ "id": "skill/summer-matchmaking",
1138
+ "name": "summer-matchmaking",
1139
+ "description": "Get players into matches with Summer matchmaking: queues, teams, accept prompts, join progress and failures.",
1140
+ "clients": "all",
1141
+ "recommended": false,
1142
+ "status": "preview",
1143
+ "path": "library/skills/summer-matchmaking/",
1144
+ "domains": [
1145
+ "multiplayer",
1146
+ "ux"
1147
+ ]
1148
+ },
1149
+ {
1150
+ "id": "skill/summer-parties",
1151
+ "name": "summer-parties",
1152
+ "description": "Let a Summer party play together: the leader presses Play, members follow into the same match. Hosted only.",
1153
+ "clients": "all",
1154
+ "recommended": false,
1155
+ "status": "preview",
1156
+ "path": "library/skills/summer-parties/",
1157
+ "domains": [
1158
+ "multiplayer",
1159
+ "ui"
1160
+ ]
1161
+ },
1162
+ {
1163
+ "id": "skill/summer-player-data",
1164
+ "name": "summer-player-data",
1165
+ "description": "Save a player's progress so it follows them to every match: authority load and commit, autosave, safe retries.",
1166
+ "clients": "all",
1167
+ "recommended": false,
1168
+ "status": "stable",
1169
+ "path": "library/skills/summer-player-data/",
1170
+ "domains": [
1171
+ "multiplayer",
1172
+ "scripting"
1173
+ ]
1174
+ },
1175
+ {
1176
+ "id": "skill/summer-store",
1177
+ "name": "summer-store",
1178
+ "description": "Sell Summer items for Sparks in a multiplayer game: shop, checkout, owned items, authority entitlement checks.",
1179
+ "clients": "all",
1180
+ "recommended": false,
1181
+ "status": "preview",
1182
+ "path": "library/skills/summer-store/",
1183
+ "domains": [
1184
+ "multiplayer",
1185
+ "gameplay"
1186
+ ]
1187
+ },
1188
+ {
1189
+ "id": "skill/summer-world-chat",
1190
+ "name": "summer-world-chat",
1191
+ "description": "Add match chat to a Summer game: one World channel shared by everyone in the match. Hosted only.",
1192
+ "clients": "all",
1193
+ "recommended": false,
1194
+ "status": "preview",
1195
+ "path": "library/skills/summer-world-chat/",
1196
+ "domains": [
1197
+ "multiplayer",
1198
+ "ui"
1199
+ ]
1200
+ },
1201
+ {
1202
+ "id": "skill/summer-world-saves",
1203
+ "name": "summer-world-saves",
1204
+ "description": "Keep a persistent Summer World between restarts: checkpoint saves, restore before join, the final save.",
1205
+ "clients": "all",
1206
+ "recommended": false,
1207
+ "status": "preview",
1208
+ "path": "library/skills/summer-world-saves/",
1209
+ "domains": [
1210
+ "multiplayer",
1211
+ "scripting"
1212
+ ]
1213
+ },
1214
+ {
1215
+ "id": "skill/text-to-motion",
1216
+ "name": "text-to-motion",
1217
+ "description": "Custom 2-second animation clips from text prompts on any of the user's own rigged models — humanoids, animals, creatures, cartoon plants, props.",
1218
+ "clients": "all",
1219
+ "recommended": false,
1220
+ "status": "preview",
1221
+ "path": "library/skills/text-to-motion/",
1222
+ "domains": [
1223
+ "animation",
1224
+ "generate",
1225
+ "3d"
1226
+ ]
1227
+ },
958
1228
  {
959
1229
  "id": "skill/tileable-texture",
960
1230
  "name": "tileable-texture",
961
- "description": "Use when generating a seamless tileable texture for walls, floors, terrain, ceilings — square tile that repeats cleanly on all four edges. Wires onto PlaneMesh / CSGBox3D / MeshInstance3D as a StandardMaterial3D albedo. Trigger on \"tileable texture\", \"seamless texture\", \"wall texture\", \"floor texture\", \"ground texture\", \"terrain texture\", \"tiled material\".",
1231
+ "description": "Generate a seamless tileable texture for walls, floors, or terrain — repeats cleanly on all four edges, wired as a StandardMaterial3D albedo.",
962
1232
  "clients": "all",
963
1233
  "recommended": false,
964
1234
  "status": "stable",
@@ -971,7 +1241,7 @@
971
1241
  {
972
1242
  "id": "skill/trailer-shot",
973
1243
  "name": "trailer-shot",
974
- "description": "Use when generating marketing or trailer footage — slow-mo combat, dramatic establishing shots, hero beats, splash screens, pitch-deck B-roll. Optimizes for maximum visual punch in 5-10 seconds. Trigger on \"trailer\", \"marketing footage\", \"Steam capsule video\", \"splash screen\", \"hero shot\", \"pitch deck clip\", \"promo clip\", \"money shot\", \"B-roll\".",
1244
+ "description": "Generate marketing or trailer footage — slow-mo combat, establishing shots, hero beats, splash screens, pitch-deck B-roll — max punch in 5-10 seconds.",
975
1245
  "clients": "all",
976
1246
  "recommended": false,
977
1247
  "status": "stable",
@@ -984,7 +1254,7 @@
984
1254
  {
985
1255
  "id": "skill/tune-performance",
986
1256
  "name": "tune-performance",
987
- "description": "Use when the user reports the game is slow, drops framerate, stutters, takes forever to start, or runs poorly on specific hardware. Profiles the running game via summer_get_diagnostics, identifies hotspots (rendering / physics / scripting), and proposes specific fixes with before/after metric expectations. Trigger on \"slow\", \"lag\", \"fps drop\", \"stuttering\", \"performance\", \"optimize\", \"profile\", \"framerate\".",
1257
+ "description": "Profile a slow game via summer_get_diagnostics, identify rendering/physics/scripting hotspots, propose fixes with before/after metric expectations.",
988
1258
  "clients": "all",
989
1259
  "recommended": true,
990
1260
  "status": "stable",
@@ -997,7 +1267,7 @@
997
1267
  {
998
1268
  "id": "skill/ui-basics",
999
1269
  "name": "ui-basics",
1000
- "description": "Use when building Summer Engine UI: HUDs, main menus, pause menus, health bars, progress bars, dialogue boxes, or any Control-node tree. Covers anchors, containers (VBox/HBox/Margin), responsive layout, and theme versus inline styling. Trigger on \"UI\", \"HUD\", \"menu\", \"health bar\", \"Control\", \"anchors\", \"VBoxContainer\", \"main menu\", \"pause menu\".",
1270
+ "description": "Build Summer Engine UI — HUDs, menus, health bars, dialogue boxes, Control trees — anchors, containers, responsive layout, theme vs inline styling.",
1001
1271
  "clients": "all",
1002
1272
  "recommended": true,
1003
1273
  "status": "stable",
@@ -1010,7 +1280,7 @@
1010
1280
  {
1011
1281
  "id": "skill/ui-graphics",
1012
1282
  "name": "ui-graphics",
1013
- "description": "Use when generating UI elements — icons, buttons, panels, frames, HUD widgets, badges. Flat-design, transparent-background, game-UI style. Wires the result via TextureRect / NinePatchRect / AtlasTexture. Trigger on \"UI icon\", \"button graphic\", \"HUD element\", \"panel frame\", \"menu background\", \"inventory slot\", \"ability icon\", \"badge\".",
1283
+ "description": "Generate game-UI elements — icons, buttons, panels, frames, HUD widgets, badges — flat design, transparent background, wired via TextureRect/NinePatchRect.",
1014
1284
  "clients": "all",
1015
1285
  "recommended": false,
1016
1286
  "status": "stable",
@@ -1023,7 +1293,7 @@
1023
1293
  {
1024
1294
  "id": "skill/use-widget-asset",
1025
1295
  "name": "use-widget-asset",
1026
- "description": "Use when consuming a widget slice (panel, button, slider, progress bar, or toggle pair) from a `create-asset-sheet` pack in a Summer Engine scene. The pack's metadata.sliceMeta carries 9-slice margins, fill rects, and on/off pair links per slice. This skill explains how to wire those into NinePatchRect, TextureProgressBar, or TextureRect so the asset behaves like a real UI control instead of a static texture.",
1296
+ "description": "Wire a widget slice from a create-asset-sheet pack (panel, button, slider, bar, toggle) into NinePatchRect, TextureProgressBar, or TextureRect via sliceMeta.",
1027
1297
  "clients": "all",
1028
1298
  "recommended": false,
1029
1299
  "status": "stable",
@@ -1036,7 +1306,7 @@
1036
1306
  {
1037
1307
  "id": "skill/using-summer",
1038
1308
  "name": "using-summer",
1039
- "description": "Use when starting any conversation in a Summer Engine project — establishes how to find and use Summer skills and the summer-engine MCP, requiring Skill tool invocation before ANY response including clarifying questions.",
1309
+ "description": "Session bootstrap for Summer projects — establishes how to find and use Summer skills and the summer-engine MCP before any response.",
1040
1310
  "clients": "all",
1041
1311
  "recommended": false,
1042
1312
  "status": "stable",
@@ -1049,7 +1319,7 @@
1049
1319
  {
1050
1320
  "id": "skill/vehicle-model",
1051
1321
  "name": "vehicle-model",
1052
- "description": "Use when generating a hard-surface vehicle — car, motorcycle, spaceship, hover bike, boat, mech, tank, helicopter. Static mesh, optional secondary detail-texture pass, wired as Vehicle3D (player-driven) or MeshInstance3D (background). Trigger on \"make a car\", \"spaceship model\", \"generate a mech\", \"I need a vehicle\", \"hover bike\", \"tank model\", \"racing car\".",
1322
+ "description": "Generate a hard-surface vehicle — car, spaceship, mech, boat, tank — static mesh with optional detail-texture pass, wired as Vehicle3D or MeshInstance3D.",
1053
1323
  "clients": "all",
1054
1324
  "recommended": false,
1055
1325
  "status": "stable",
@@ -1062,7 +1332,7 @@
1062
1332
  {
1063
1333
  "id": "skill/verification-before-completion",
1064
1334
  "name": "verification-before-completion",
1065
- "description": "Use when about to claim work is complete, fixed, or passing, before committing or creating PRs - requires running verification commands and confirming output before making any success claims; evidence before assertions always",
1335
+ "description": "Run verification commands and confirm output before claiming work complete, fixed, or passing — evidence before assertions, always.",
1066
1336
  "clients": "all",
1067
1337
  "recommended": true,
1068
1338
  "status": "stable",
@@ -1075,7 +1345,7 @@
1075
1345
  {
1076
1346
  "id": "skill/verifying-scenes",
1077
1347
  "name": "verifying-scenes",
1078
- "description": "Use when verifying that scene work actually landed — after any mutation batch, asset import, lighting change, or during a playtest — and before claiming any visual or structural result. Runs the before/after discipline (summer_world_snapshot → mutate → summer_snapshot_diff + summer_screenshot), reads live runtime state with summer_get_runtime_tree / summer_inspect_runtime_node instead of stopping the game, and enforces honest-claim rules.",
1348
+ "description": "Prove scene work landed (snapshot, diff, screenshots, runtime reads), audit 3D scenes for holes and misplacement, review them with shot sheets and zooms.",
1079
1349
  "clients": "all",
1080
1350
  "recommended": true,
1081
1351
  "status": "preview",
@@ -1089,7 +1359,7 @@
1089
1359
  {
1090
1360
  "id": "skill/vfx-dissolve",
1091
1361
  "name": "vfx-dissolve",
1092
- "description": "Use when authoring a dissolve effect — an object's mesh disintegrating with a glowing burning edge, driven by a noise threshold ShaderMaterial overriding the target's existing material. Trigger on \"dissolve\", \"disintegrate\", \"burn away\", \"Thanos snap\", \"vanish into ash\", \"enemy fades out\", \"object burns up\".",
1362
+ "description": "Dissolve effect — a mesh disintegrating with a glowing burning edge, driven by a noise-threshold ShaderMaterial overriding the target's material.",
1093
1363
  "clients": "all",
1094
1364
  "recommended": false,
1095
1365
  "status": "stable",
@@ -1102,7 +1372,7 @@
1102
1372
  {
1103
1373
  "id": "skill/vfx-fire",
1104
1374
  "name": "vfx-fire",
1105
- "description": "Use when authoring a fire visual effect — animated flames built with a particle shader, GPUParticles3D, and a noise-based color ramp. Trigger on \"torch\", \"campfire\", \"bonfire\", \"flame\", \"fire effect\", \"burning\", \"make this thing on fire\", \"candle\".",
1375
+ "description": "Fire effect — animated flames built with a particle shader, GPUParticles3D, and a noise-based color ramp — torches, campfires, candles.",
1106
1376
  "clients": "all",
1107
1377
  "recommended": true,
1108
1378
  "status": "stable",
@@ -1115,7 +1385,7 @@
1115
1385
  {
1116
1386
  "id": "skill/vfx-hit-spark",
1117
1387
  "name": "vfx-hit-spark",
1118
- "description": "Use when authoring a hit-spark visual effect — a one-shot burst of additive billboard particles oriented to a surface normal, fired on impact. Trigger on \"hit spark\", \"impact spark\", \"bullet hit\", \"sword clash\", \"metal-on-metal\", \"ricochet\", \"impact effect\", \"spawn sparks at hit point\".",
1388
+ "description": "Hit-spark effect — a one-shot burst of additive billboard particles oriented to a surface normal, fired on impact.",
1119
1389
  "clients": "all",
1120
1390
  "recommended": false,
1121
1391
  "status": "stable",
@@ -1128,7 +1398,7 @@
1128
1398
  {
1129
1399
  "id": "skill/vfx-lightning",
1130
1400
  "name": "vfx-lightning",
1131
- "description": "Use when authoring a lightning bolt visual effect — procedural jagged path drawn via ImmediateMesh, glow shader, sparks at endpoints, screen shake. Trigger on \"lightning bolt\", \"chain lightning\", \"electric attack\", \"tesla coil\", \"shock spell\", \"thunderbolt\", \"energy beam\".",
1401
+ "description": "Lightning bolt effect — procedural jagged path drawn via ImmediateMesh, glow shader, sparks at endpoints, screen shake.",
1132
1402
  "clients": "all",
1133
1403
  "recommended": false,
1134
1404
  "status": "stable",
@@ -1141,7 +1411,7 @@
1141
1411
  {
1142
1412
  "id": "skill/vfx-magic-glow",
1143
1413
  "name": "vfx-magic-glow",
1144
- "description": "Use when authoring a magic-glow visual effect — a pulsing OmniLight3D plus drifting additive motes plus optional emission shader on the source mesh. Trigger on \"magic glow\", \"enchanted item\", \"soul gem\", \"pulsing aura\", \"rune glow\", \"magical orb\", \"summon circle glow\", \"fairy\", \"wisp\".",
1414
+ "description": "Magic-glow effect — a pulsing OmniLight3D plus drifting additive motes plus optional emission shader on the source mesh.",
1145
1415
  "clients": "all",
1146
1416
  "recommended": false,
1147
1417
  "status": "stable",
@@ -1154,7 +1424,7 @@
1154
1424
  {
1155
1425
  "id": "skill/vfx-muzzle-flash",
1156
1426
  "name": "vfx-muzzle-flash",
1157
- "description": "Use when authoring a muzzle-flash visual effect — a one-shot ~80 ms burst at a gun barrel built with a particle one-shot OR a flashing quad with a star-burst shader. Trigger on \"muzzle flash\", \"gun fire\", \"weapon flash\", \"barrel flash\", \"shoot a gun\", \"spell-cast burst at hand\".",
1427
+ "description": "Muzzle-flash effect — a one-shot ~80 ms burst at a gun barrel built with a particle one-shot or a flashing quad with a star-burst shader.",
1158
1428
  "clients": "all",
1159
1429
  "recommended": true,
1160
1430
  "status": "stable",
@@ -1167,7 +1437,7 @@
1167
1437
  {
1168
1438
  "id": "skill/vfx-smoke",
1169
1439
  "name": "vfx-smoke",
1170
- "description": "Use when authoring a smoke visual effect — a slow-rising column or puff of soft particles built with a noise + density falloff shader on a quad mesh, GPUParticles3D. Trigger on \"smoke\", \"smoke trail\", \"puff\", \"chimney smoke\", \"smoke from a fire\", \"steam\", \"fog cloud\", \"explosion smoke\".",
1440
+ "description": "Smoke effect — a slow-rising column or puff of soft particles built with a noise + density falloff shader on a quad mesh, GPUParticles3D.",
1171
1441
  "clients": "all",
1172
1442
  "recommended": false,
1173
1443
  "status": "stable",
@@ -1180,7 +1450,7 @@
1180
1450
  {
1181
1451
  "id": "skill/vfx-water-ripple",
1182
1452
  "name": "vfx-water-ripple",
1183
- "description": "Use when authoring a water-ripple visual effect — animated normal-distortion ripples on a water plane (or as a Decal) triggered by impacts. Trigger on \"water ripple\", \"ripples on water\", \"raindrop ripple\", \"splash ripple\", \"rain on water\", \"footstep in puddle\", \"fish jumps\".",
1453
+ "description": "Water-ripple effect — animated normal-distortion ripples on a water plane (or as a Decal) triggered by impacts.",
1184
1454
  "clients": "all",
1185
1455
  "recommended": false,
1186
1456
  "status": "stable",
@@ -1193,7 +1463,7 @@
1193
1463
  {
1194
1464
  "id": "skill/voice-line",
1195
1465
  "name": "voice-line",
1196
- "description": "Use when generating TTS voice lines — NPC barks, narrator, dialogue. Covers where voice ids come from, a character-to-voice decision tree, stability/style/similarity guidance, and the multi-line dialogue case via text_to_dialogue. Trigger on \"make a voice line\", \"narrator\", \"NPC says\", \"voice for the merchant\", \"TTS line\", \"dialogue\".",
1466
+ "description": "Generate TTS voice lines — NPC barks, narrator, dialogue — with voice-id sourcing, a character-to-voice decision tree, and multi-line dialogue support.",
1197
1467
  "clients": "all",
1198
1468
  "recommended": true,
1199
1469
  "status": "stable",
@@ -1203,10 +1473,37 @@
1203
1473
  "assets"
1204
1474
  ]
1205
1475
  },
1476
+ {
1477
+ "id": "skill/web-and-touch-input",
1478
+ "name": "web-and-touch-input",
1479
+ "description": "Input for the browser and phones: the first-click rule for sound and mouse capture, focus, and touch buttons or a virtual stick on the same actions.",
1480
+ "clients": "all",
1481
+ "recommended": true,
1482
+ "status": "preview",
1483
+ "path": "library/skills/web-and-touch-input/",
1484
+ "domains": [
1485
+ "gameplay",
1486
+ "ui"
1487
+ ]
1488
+ },
1489
+ {
1490
+ "id": "skill/web-compatibility-look",
1491
+ "name": "web-compatibility-look",
1492
+ "description": "Make a web or browser game look high-end in the Compatibility renderer (WebGL 2): what works, what to avoid, 2D and 3D recipes, web performance.",
1493
+ "clients": "all",
1494
+ "recommended": true,
1495
+ "status": "preview",
1496
+ "path": "library/skills/web-compatibility-look/",
1497
+ "domains": [
1498
+ "rendering",
1499
+ "2d",
1500
+ "3d"
1501
+ ]
1502
+ },
1206
1503
  {
1207
1504
  "id": "skill/world-building-3d",
1208
1505
  "name": "world-building-3d",
1209
- "description": "Use when composing, placing, grounding, spacing, or validating 3D objects in Summer Engine scenes. Trigger on \"world building\", \"place props\", \"snap to floor\", \"align objects\", \"distribute objects\", \"navigation reachability\", or requests to make a 3D scene look deliberately arranged rather than roughly positioned.",
1506
+ "description": "Compose, ground, space, and validate 3D scenes with Summer's four bounded spatial tools — exact paths, one geometric decision at a time, verified.",
1210
1507
  "clients": "all",
1211
1508
  "recommended": true,
1212
1509
  "status": "preview",
@@ -1222,7 +1519,7 @@
1222
1519
  {
1223
1520
  "id": "skill/writing-plans",
1224
1521
  "name": "writing-plans",
1225
- "description": "Use when you have a spec or requirements for a multi-step task, before touching code",
1522
+ "description": "Turn a spec or requirements for a multi-step task into a written implementation plan before touching code.",
1226
1523
  "clients": "all",
1227
1524
  "recommended": false,
1228
1525
  "status": "stable",
@@ -1235,7 +1532,7 @@
1235
1532
  {
1236
1533
  "id": "skill/writing-skills",
1237
1534
  "name": "writing-skills",
1238
- "description": "Use when creating new skills, editing existing skills, or verifying skills work before deployment",
1535
+ "description": "Create, edit, and verify agent skills — format, structure, testing with subagents, and best practices.",
1239
1536
  "clients": "all",
1240
1537
  "recommended": false,
1241
1538
  "status": "stable",