summer-engine 3.7.0 → 4.0.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 (501) hide show
  1. package/.claude-plugin/marketplace.json +2 -13
  2. package/.claude-plugin/plugin.json +25 -22
  3. package/.codex-plugin/plugin.json +8 -14
  4. package/.cursor-plugin/plugin.json +7 -13
  5. package/.factory-plugin/plugin.json +7 -13
  6. package/AGENTS.md +19 -12
  7. package/CHANGELOG.md +112 -0
  8. package/GEMINI.md +3 -3
  9. package/README.md +111 -31
  10. package/assets/icon.png +0 -0
  11. package/commands/start.md +71 -0
  12. package/commands/summer.md +5 -3
  13. package/dist/cli/banner.js +3 -0
  14. package/dist/cli/commands/login.d.ts +27 -0
  15. package/dist/cli/commands/login.js +58 -12
  16. package/dist/cli/commands/ops.d.ts +47 -0
  17. package/dist/cli/commands/ops.js +301 -0
  18. package/dist/cli/commands/setup.d.ts +2 -0
  19. package/dist/cli/commands/setup.js +37 -12
  20. package/dist/cli/commands/skills.js +11 -7
  21. package/dist/cli/index.js +7 -0
  22. package/dist/core/agent-host.d.ts +65 -0
  23. package/dist/core/agent-host.js +193 -0
  24. package/dist/core/capabilities/agent-playbook.d.ts +3 -0
  25. package/dist/core/capabilities/agent-playbook.js +54 -2
  26. package/dist/core/capabilities/apps.d.ts +341 -0
  27. package/dist/core/capabilities/apps.js +353 -0
  28. package/dist/core/capabilities/doctor.d.ts +3 -0
  29. package/dist/core/capabilities/doctor.js +20 -15
  30. package/dist/core/capabilities/enable-plugin.d.ts +27 -0
  31. package/dist/core/capabilities/enable-plugin.js +75 -0
  32. package/dist/core/capabilities/fabricate-mesh.d.ts +2 -2
  33. package/dist/core/capabilities/game-task-plan.d.ts +12 -6
  34. package/dist/core/capabilities/game-task-plan.js +80 -5
  35. package/dist/core/capabilities/motion-generation.js +2 -2
  36. package/dist/core/capabilities/navigation/open.d.ts +6 -2
  37. package/dist/core/capabilities/navigation/open.js +3 -0
  38. package/dist/core/capabilities/publish-build.js +2 -0
  39. package/dist/core/capabilities/runtime-control.d.ts +4 -4
  40. package/dist/core/capabilities/scene-script-target.d.ts +17 -0
  41. package/dist/core/capabilities/scene-script-target.js +70 -0
  42. package/dist/core/capabilities/sfx-choices.d.ts +4 -0
  43. package/dist/core/capabilities/sfx-choices.js +13 -6
  44. package/dist/core/capabilities/tool-dispatch.d.ts +12 -3
  45. package/dist/core/capabilities/tool-dispatch.js +130 -46
  46. package/dist/core/capability-skew.js +4 -0
  47. package/dist/core/embeddings.d.ts +2 -0
  48. package/dist/core/embeddings.js +1 -1
  49. package/dist/core/error-codes.d.ts +62 -0
  50. package/dist/core/error-codes.js +97 -0
  51. package/dist/core/format.d.ts +2 -0
  52. package/dist/core/format.js +2 -1
  53. package/dist/core/hosted-mcp.d.ts +22 -0
  54. package/dist/core/hosted-mcp.js +56 -1
  55. package/dist/core/library-read.js +5 -0
  56. package/dist/core/library-search.js +2 -1
  57. package/dist/core/oauth.js +4 -0
  58. package/dist/core/ops/catalog.d.ts +41 -0
  59. package/dist/core/ops/catalog.js +145 -0
  60. package/dist/core/ops/cloud.d.ts +56 -0
  61. package/dist/core/ops/cloud.js +175 -0
  62. package/dist/core/ops/contract.d.ts +119 -0
  63. package/dist/core/ops/contract.js +142 -0
  64. package/dist/core/ops/engine-answer.d.ts +25 -0
  65. package/dist/core/ops/engine-answer.js +117 -0
  66. package/dist/core/ops/engine.d.ts +55 -0
  67. package/dist/core/ops/engine.js +649 -0
  68. package/dist/core/ops/save-files.d.ts +78 -0
  69. package/dist/core/ops/save-files.js +419 -0
  70. package/dist/core/ops/search.d.ts +9 -0
  71. package/dist/core/ops/search.js +55 -0
  72. package/dist/core/skills-registry.d.ts +16 -1
  73. package/dist/core/skills-registry.js +35 -2
  74. package/dist/core/telemetry.d.ts +32 -0
  75. package/dist/core/telemetry.js +38 -10
  76. package/dist/core/tool-profiles.d.ts +25 -0
  77. package/dist/core/tool-profiles.js +41 -0
  78. package/dist/installer/agent-config.d.ts +17 -4
  79. package/dist/installer/agent-config.js +22 -6
  80. package/dist/installer/agent-table.d.ts +3 -0
  81. package/dist/installer/agent-table.js +10 -7
  82. package/dist/installer/setup.d.ts +2 -0
  83. package/dist/installer/setup.js +9 -4
  84. package/dist/installer/version-check.d.ts +29 -9
  85. package/dist/installer/version-check.js +81 -28
  86. package/dist/mcp/command.js +7 -0
  87. package/dist/mcp/hosted-mount.d.ts +27 -2
  88. package/dist/mcp/hosted-mount.js +66 -24
  89. package/dist/mcp/legacy-toolset.d.ts +27 -0
  90. package/dist/mcp/legacy-toolset.js +43 -0
  91. package/dist/mcp/ops-surface.d.ts +59 -0
  92. package/dist/mcp/ops-surface.js +443 -0
  93. package/dist/mcp/server.d.ts +35 -11
  94. package/dist/mcp/server.js +236 -89
  95. package/dist/mcp/tool-results.d.ts +26 -0
  96. package/dist/mcp/tool-results.js +81 -0
  97. package/dist/mcp/tool-surface.d.ts +65 -0
  98. package/dist/mcp/tool-surface.js +317 -0
  99. package/dist/mcp/tools/app-tools.d.ts +2 -0
  100. package/dist/mcp/tools/app-tools.js +71 -0
  101. package/dist/mcp/tools/asset-tools.js +55 -53
  102. package/dist/mcp/tools/audit-tools.js +21 -21
  103. package/dist/mcp/tools/debug-tools.js +6 -6
  104. package/dist/mcp/tools/fabricate-tools.js +6 -6
  105. package/dist/mcp/tools/generate-tools.js +76 -70
  106. package/dist/mcp/tools/project-tools.d.ts +9 -4
  107. package/dist/mcp/tools/project-tools.js +16 -10
  108. package/dist/mcp/tools/scene-tools.js +12 -23
  109. package/dist/mcp/tools/script-tools.js +9 -5
  110. package/dist/mcp/tools/with-engine.d.ts +6 -0
  111. package/dist/mcp/tools/with-engine.js +19 -0
  112. package/gemini-extension.json +6 -12
  113. package/hooks/pre-commit-doctor.sh +5 -4
  114. package/hooks/session-start.sh +24 -28
  115. package/integrations/claude-desktop/README.md +1 -1
  116. package/integrations/copilot-jetbrains/README.md +1 -1
  117. package/integrations/junie/README.md +1 -1
  118. package/integrations/lm-studio/README.md +1 -1
  119. package/integrations/trae/README.md +1 -1
  120. package/integrations/visual-studio/README.md +1 -1
  121. package/library/references/mcp-tools-reference/mcp-tools-reference.md +85 -35
  122. package/library/references/mcp-tools-reference/resource.yaml +1 -1
  123. package/library/references/product-map/resource.yaml +2 -2
  124. package/library/skills/3d-lighting/SKILL.md +53 -28
  125. package/library/skills/3d-lighting/resource.yaml +1 -1
  126. package/library/skills/README.md +126 -116
  127. package/library/skills/adaptive-music/SKILL.md +19 -23
  128. package/library/skills/adaptive-music/resource.yaml +1 -1
  129. package/library/skills/agent-playtesting/SKILL.md +1 -1
  130. package/library/skills/agent-playtesting/resource.yaml +1 -1
  131. package/library/skills/ai-characters-in-games/SKILL.md +1 -1
  132. package/library/skills/ai-characters-in-games/resource.yaml +1 -1
  133. package/library/skills/ambient-bed/SKILL.md +22 -13
  134. package/library/skills/ambient-bed/resource.yaml +1 -1
  135. package/library/skills/animated-loop/SKILL.md +41 -32
  136. package/library/skills/animated-loop/resource.yaml +1 -1
  137. package/library/skills/animation-tree/SKILL.md +1 -1
  138. package/library/skills/animation-tree/resource.yaml +1 -1
  139. package/library/skills/art-direction/SKILL.md +3 -3
  140. package/library/skills/art-direction/resource.yaml +1 -1
  141. package/library/skills/asset-strategy/SKILL.md +21 -4
  142. package/library/skills/asset-strategy/resource.yaml +2 -1
  143. package/library/skills/audio-direction/SKILL.md +10 -10
  144. package/library/skills/audio-direction/resource.yaml +1 -1
  145. package/library/skills/auto-fire-targeting/SKILL.md +1 -1
  146. package/library/skills/auto-fire-targeting/resource.yaml +1 -1
  147. package/library/skills/bounded-engine-runs/SKILL.md +1 -1
  148. package/library/skills/bounded-engine-runs/resource.yaml +1 -1
  149. package/library/skills/brainstorm-game/SKILL.md +1 -1
  150. package/library/skills/brainstorm-game/resource.yaml +1 -1
  151. package/library/skills/brainstorming/SKILL.md +1 -1
  152. package/library/skills/brainstorming/resource.yaml +1 -1
  153. package/library/skills/browse-templates/SKILL.md +1 -1
  154. package/library/skills/browse-templates/resource.yaml +1 -1
  155. package/library/skills/camera-rigs/SKILL.md +2 -2
  156. package/library/skills/camera-rigs/resource.yaml +1 -1
  157. package/library/skills/celeste-momentum-platforming/resource.yaml +1 -0
  158. package/library/skills/character-animation-wiring/SKILL.md +4 -4
  159. package/library/skills/character-animation-wiring/resource.yaml +1 -1
  160. package/library/skills/character-model/SKILL.md +55 -47
  161. package/library/skills/character-model/resource.yaml +1 -1
  162. package/library/skills/character-movement/SKILL.md +3 -3
  163. package/library/skills/character-movement/resource.yaml +1 -1
  164. package/library/skills/character-portrait/SKILL.md +24 -19
  165. package/library/skills/character-portrait/resource.yaml +1 -1
  166. package/library/skills/cinematic-cutscene/SKILL.md +58 -46
  167. package/library/skills/cinematic-cutscene/resource.yaml +1 -1
  168. package/library/skills/combat-basics/SKILL.md +1 -1
  169. package/library/skills/combat-basics/resource.yaml +1 -1
  170. package/library/skills/compatibility-renderer-traps/SKILL.md +1 -1
  171. package/library/skills/compatibility-renderer-traps/resource.yaml +1 -1
  172. package/library/skills/concept-art/SKILL.md +16 -12
  173. package/library/skills/concept-art/resource.yaml +1 -1
  174. package/library/skills/concept-to-level/SKILL.md +239 -0
  175. package/library/skills/concept-to-level/references/technical-rules.md +150 -0
  176. package/library/skills/concept-to-level/resource.yaml +44 -0
  177. package/library/skills/create-asset-sheet/SKILL.md +19 -13
  178. package/library/skills/create-asset-sheet/resource.yaml +1 -1
  179. package/library/skills/debug/SKILL.md +2 -2
  180. package/library/skills/debug/resource.yaml +1 -1
  181. package/library/skills/debugging-game-feel/SKILL.md +1 -1
  182. package/library/skills/debugging-game-feel/resource.yaml +1 -1
  183. package/library/skills/design-level/SKILL.md +23 -35
  184. package/library/skills/design-level/resource.yaml +1 -1
  185. package/library/skills/design-mechanic/SKILL.md +1 -1
  186. package/library/skills/design-mechanic/resource.yaml +1 -1
  187. package/library/skills/design-npc/SKILL.md +22 -24
  188. package/library/skills/design-npc/resource.yaml +1 -1
  189. package/library/skills/diagnosing-perf-regressions/SKILL.md +1 -1
  190. package/library/skills/diagnosing-perf-regressions/resource.yaml +1 -1
  191. package/library/skills/driving-the-editor-ui/SKILL.md +1 -1
  192. package/library/skills/driving-the-editor-ui/resource.yaml +1 -1
  193. package/library/skills/environment-kit/SKILL.md +20 -16
  194. package/library/skills/environment-kit/resource.yaml +1 -1
  195. package/library/skills/export-and-ship/SKILL.md +6 -6
  196. package/library/skills/export-and-ship/resource.yaml +1 -1
  197. package/library/skills/fabricating-assets/SKILL.md +7 -7
  198. package/library/skills/fabricating-assets/resource.yaml +3 -3
  199. package/library/skills/facial-and-lipsync/SKILL.md +14 -15
  200. package/library/skills/facial-and-lipsync/resource.yaml +1 -1
  201. package/library/skills/fps-controller/SKILL.md +33 -41
  202. package/library/skills/fps-controller/resource.yaml +1 -1
  203. package/library/skills/game-feel/SKILL.md +8 -8
  204. package/library/skills/game-feel/resource.yaml +1 -1
  205. package/library/skills/gameskill/SKILL.md +4 -4
  206. package/library/skills/gameskill/resource.yaml +1 -1
  207. package/library/skills/gdscript-patterns/SKILL.md +1 -1
  208. package/library/skills/gdscript-patterns/resource.yaml +1 -1
  209. package/library/skills/generate-motion/SKILL.md +30 -21
  210. package/library/skills/generate-motion/resource.yaml +1 -1
  211. package/library/skills/godogen-visual-proof-game-generation/SKILL.md +1 -1
  212. package/library/skills/godogen-visual-proof-game-generation/resource.yaml +1 -0
  213. package/library/skills/grow-analytics/SKILL.md +3 -3
  214. package/library/skills/grow-analytics/resource.yaml +1 -1
  215. package/library/skills/headless-scripting/SKILL.md +1 -1
  216. package/library/skills/headless-scripting/resource.yaml +1 -1
  217. package/library/skills/in-game-purchases/SKILL.md +1 -1
  218. package/library/skills/in-game-purchases/resource.yaml +1 -1
  219. package/library/skills/instantiate-asset-pack/SKILL.md +2 -2
  220. package/library/skills/instantiate-asset-pack/resource.yaml +1 -1
  221. package/library/skills/lumera-single-image-scene-reconstruction/resource.yaml +1 -0
  222. package/library/skills/make-game/SKILL.md +4 -4
  223. package/library/skills/make-game/references/2d-platformer.md +1 -1
  224. package/library/skills/make-game/references/3d-fps.md +1 -1
  225. package/library/skills/make-game/references/3d-horror.md +1 -1
  226. package/library/skills/make-game/references/3d-third-person.md +2 -2
  227. package/library/skills/make-game/resource.yaml +1 -1
  228. package/library/skills/multiplayer/SKILL.md +1 -1
  229. package/library/skills/multiplayer/resource.yaml +1 -1
  230. package/library/skills/multiplayer-movement/SKILL.md +1 -1
  231. package/library/skills/multiplayer-movement/resource.yaml +1 -1
  232. package/library/skills/multiplayer-project/SKILL.md +1 -1
  233. package/library/skills/multiplayer-project/resource.yaml +1 -1
  234. package/library/skills/multiplayer-publish/SKILL.md +8 -7
  235. package/library/skills/multiplayer-publish/resource.yaml +3 -3
  236. package/library/skills/multiplayer-state/SKILL.md +1 -1
  237. package/library/skills/multiplayer-state/resource.yaml +1 -1
  238. package/library/skills/multiplayer-testing/SKILL.md +1 -1
  239. package/library/skills/multiplayer-testing/resource.yaml +1 -1
  240. package/library/skills/music-track/SKILL.md +22 -13
  241. package/library/skills/music-track/resource.yaml +1 -1
  242. package/library/skills/navigate-summer/SKILL.md +11 -9
  243. package/library/skills/navigate-summer/resource.yaml +1 -1
  244. package/library/skills/new-project/SKILL.md +1 -1
  245. package/library/skills/new-project/resource.yaml +1 -1
  246. package/library/skills/organic-model/SKILL.md +24 -18
  247. package/library/skills/organic-model/resource.yaml +1 -1
  248. package/library/skills/pixel-art/SKILL.md +27 -23
  249. package/library/skills/pixel-art/resource.yaml +1 -1
  250. package/library/skills/play/SKILL.md +1 -1
  251. package/library/skills/play/resource.yaml +1 -1
  252. package/library/skills/playtesting-a-feature/SKILL.md +1 -1
  253. package/library/skills/playtesting-a-feature/resource.yaml +1 -1
  254. package/library/skills/procedural-animation/SKILL.md +20 -16
  255. package/library/skills/procedural-animation/resource.yaml +1 -1
  256. package/library/skills/prop-model/SKILL.md +25 -19
  257. package/library/skills/prop-model/resource.yaml +1 -1
  258. package/library/skills/psx-retro-rendering/resource.yaml +1 -0
  259. package/library/skills/publish-your-game/SKILL.md +16 -6
  260. package/library/skills/publish-your-game/resource.yaml +3 -3
  261. package/library/skills/realtime-wet-surfaces/resource.yaml +1 -0
  262. package/library/skills/release-readiness/SKILL.md +1 -1
  263. package/library/skills/release-readiness/resource.yaml +1 -1
  264. package/library/skills/remote-deploy/SKILL.md +1 -1
  265. package/library/skills/remote-deploy/resource.yaml +1 -1
  266. package/library/skills/retarget/SKILL.md +23 -20
  267. package/library/skills/retarget/resource.yaml +1 -1
  268. package/library/skills/running-in-the-cloud/SKILL.md +1 -1
  269. package/library/skills/running-in-the-cloud/resource.yaml +1 -1
  270. package/library/skills/save-load/SKILL.md +1 -1
  271. package/library/skills/save-load/resource.yaml +1 -1
  272. package/library/skills/scene-composition/SKILL.md +1 -1
  273. package/library/skills/scene-composition/resource.yaml +1 -1
  274. package/library/skills/scene-hierarchy-design/SKILL.md +2 -2
  275. package/library/skills/scene-hierarchy-design/resource.yaml +1 -1
  276. package/library/skills/scene-scripting/SKILL.md +66 -636
  277. package/library/skills/scene-scripting/references/ctx-api.md +184 -0
  278. package/library/skills/scene-scripting/references/recipes-2d-ui.md +193 -0
  279. package/library/skills/scene-scripting/references/recipes-3d.md +280 -0
  280. package/library/skills/scene-scripting/resource.yaml +4 -4
  281. package/library/skills/scene-to-level/SKILL.md +2 -2
  282. package/library/skills/scene-to-level/resource.yaml +1 -1
  283. package/library/skills/skill-create/resource.yaml +1 -0
  284. package/library/skills/skill-improve/resource.yaml +1 -0
  285. package/library/skills/skill-test/SKILL.md +2 -2
  286. package/library/skills/skill-test/resource.yaml +1 -0
  287. package/library/skills/skintokens-auto-rigging/resource.yaml +1 -0
  288. package/library/skills/skybox-panorama/SKILL.md +27 -21
  289. package/library/skills/skybox-panorama/resource.yaml +1 -1
  290. package/library/skills/sound-effect/SKILL.md +31 -20
  291. package/library/skills/sound-effect/resource.yaml +1 -1
  292. package/library/skills/spatial-placement/SKILL.md +14 -9
  293. package/library/skills/spatial-placement/resource.yaml +1 -1
  294. package/library/skills/sprite-sheet/SKILL.md +32 -27
  295. package/library/skills/sprite-sheet/resource.yaml +1 -1
  296. package/library/skills/store-art/SKILL.md +3 -3
  297. package/library/skills/store-art/resource.yaml +2 -2
  298. package/library/skills/store-listing/SKILL.md +3 -3
  299. package/library/skills/store-listing/resource.yaml +2 -2
  300. package/library/skills/summer-analytics/SKILL.md +7 -5
  301. package/library/skills/summer-analytics/resource.yaml +2 -2
  302. package/library/skills/summer-apps/SKILL.md +168 -0
  303. package/library/skills/summer-apps/manifest.md +57 -0
  304. package/library/skills/summer-apps/minimal-app.md +183 -0
  305. package/library/skills/summer-apps/resource.yaml +36 -0
  306. package/library/skills/summer-apps/sdk-reference.md +135 -0
  307. package/library/skills/summer-apps-design/SKILL.md +197 -0
  308. package/library/skills/summer-apps-design/resource.yaml +23 -0
  309. package/library/skills/summer-assets/SKILL.md +56 -0
  310. package/library/skills/summer-assets/resource.yaml +34 -0
  311. package/library/skills/summer-store/SKILL.md +1 -1
  312. package/library/skills/text-to-motion/SKILL.md +30 -23
  313. package/library/skills/text-to-motion/prompts-and-controls.md +5 -5
  314. package/library/skills/text-to-motion/resource.yaml +1 -1
  315. package/library/skills/text-to-motion/rigging-for-text-motion.md +2 -2
  316. package/library/skills/tileable-texture/SKILL.md +19 -15
  317. package/library/skills/tileable-texture/resource.yaml +1 -1
  318. package/library/skills/trailer-shot/SKILL.md +28 -24
  319. package/library/skills/trailer-shot/resource.yaml +1 -1
  320. package/library/skills/tune-performance/SKILL.md +6 -6
  321. package/library/skills/tune-performance/resource.yaml +1 -1
  322. package/library/skills/ui-basics/SKILL.md +41 -36
  323. package/library/skills/ui-basics/resource.yaml +1 -1
  324. package/library/skills/ui-graphics/SKILL.md +47 -38
  325. package/library/skills/ui-graphics/resource.yaml +1 -1
  326. package/library/skills/use-widget-asset/SKILL.md +1 -1
  327. package/library/skills/use-widget-asset/resource.yaml +1 -1
  328. package/library/skills/using-summer/SKILL.md +7 -5
  329. package/library/skills/using-summer/resource.yaml +1 -1
  330. package/library/skills/vehicle-model/SKILL.md +65 -57
  331. package/library/skills/vehicle-model/resource.yaml +1 -1
  332. package/library/skills/verification-before-completion/SKILL.md +1 -1
  333. package/library/skills/verification-before-completion/resource.yaml +1 -1
  334. package/library/skills/verifying-scenes/SKILL.md +2 -2
  335. package/library/skills/verifying-scenes/resource.yaml +1 -1
  336. package/library/skills/vfx-dissolve/SKILL.md +2 -2
  337. package/library/skills/vfx-dissolve/resource.yaml +1 -1
  338. package/library/skills/vfx-fire/SKILL.md +15 -41
  339. package/library/skills/vfx-fire/resource.yaml +1 -1
  340. package/library/skills/vfx-hit-spark/SKILL.md +1 -1
  341. package/library/skills/vfx-hit-spark/resource.yaml +1 -1
  342. package/library/skills/vfx-lightning/SKILL.md +7 -16
  343. package/library/skills/vfx-lightning/resource.yaml +1 -1
  344. package/library/skills/vfx-magic-glow/SKILL.md +23 -32
  345. package/library/skills/vfx-magic-glow/resource.yaml +1 -1
  346. package/library/skills/vfx-muzzle-flash/SKILL.md +20 -35
  347. package/library/skills/vfx-muzzle-flash/resource.yaml +1 -1
  348. package/library/skills/vfx-smoke/SKILL.md +13 -31
  349. package/library/skills/vfx-smoke/resource.yaml +1 -1
  350. package/library/skills/vfx-water-ripple/SKILL.md +12 -31
  351. package/library/skills/vfx-water-ripple/resource.yaml +1 -1
  352. package/library/skills/voice-line/SKILL.md +71 -40
  353. package/library/skills/voice-line/resource.yaml +1 -1
  354. package/library/skills/web-and-touch-input/SKILL.md +1 -1
  355. package/library/skills/web-and-touch-input/resource.yaml +1 -1
  356. package/library/skills/web-compatibility-look/SKILL.md +1 -1
  357. package/library/skills/web-compatibility-look/resource.yaml +1 -1
  358. package/library/skills/world-building-3d/SKILL.md +1 -1
  359. package/library/skills/world-building-3d/resource.yaml +1 -1
  360. package/library/skills/writing-skills/resource.yaml +1 -0
  361. package/library/tools/add-node/GUIDE.md +14 -0
  362. package/library/tools/align-distribute-3d/GUIDE.md +7 -0
  363. package/library/tools/app-call/resource.yaml +59 -0
  364. package/library/tools/app-create/resource.yaml +67 -0
  365. package/library/tools/app-data/resource.yaml +74 -0
  366. package/library/tools/app-dock/resource.yaml +59 -0
  367. package/library/tools/app-events/resource.yaml +68 -0
  368. package/library/tools/app-get/resource.yaml +46 -0
  369. package/library/tools/app-guide/resource.yaml +55 -0
  370. package/library/tools/app-list/resource.yaml +48 -0
  371. package/library/tools/app-page/resource.yaml +74 -0
  372. package/library/tools/app-publish/resource.yaml +90 -0
  373. package/library/tools/app-report-gap/resource.yaml +58 -0
  374. package/library/tools/app-screenshot/resource.yaml +103 -0
  375. package/library/tools/app-tools/resource.yaml +46 -0
  376. package/library/tools/app-update/resource.yaml +68 -0
  377. package/library/tools/attach-to-surface/GUIDE.md +15 -0
  378. package/library/tools/batch/GUIDE.md +27 -0
  379. package/library/tools/camera-bookmark/GUIDE.md +12 -0
  380. package/library/tools/capture-gameplay/GUIDE.md +3 -0
  381. package/library/tools/capture-gameplay/resource.yaml +3 -3
  382. package/library/tools/check-job/resource.yaml +1 -1
  383. package/library/tools/clear-console/GUIDE.md +3 -0
  384. package/library/tools/connect-ports/GUIDE.md +9 -0
  385. package/library/tools/connect-signal/GUIDE.md +14 -0
  386. package/library/tools/create-debug-report/GUIDE.md +10 -0
  387. package/library/tools/create-scene/GUIDE.md +10 -0
  388. package/library/tools/debug-views/GUIDE.md +7 -0
  389. package/library/tools/enable-plugin/GUIDE.md +3 -0
  390. package/library/tools/enable-plugin/resource.yaml +53 -0
  391. package/library/tools/export-game/GUIDE.md +3 -0
  392. package/library/tools/export-game/resource.yaml +3 -3
  393. package/library/tools/export-templates/GUIDE.md +3 -0
  394. package/library/tools/fabricate-3d/GUIDE.md +19 -0
  395. package/library/tools/frame-nodes/GUIDE.md +9 -0
  396. package/library/tools/frame-shot/GUIDE.md +9 -0
  397. package/library/tools/game-control/GUIDE.md +9 -0
  398. package/library/tools/game-input/GUIDE.md +9 -0
  399. package/library/tools/game-probe/GUIDE.md +9 -0
  400. package/library/tools/generate-3d/resource.yaml +3 -3
  401. package/library/tools/generate-motion/resource.yaml +2 -2
  402. package/library/tools/get-console/GUIDE.md +9 -0
  403. package/library/tools/get-console/resource.yaml +5 -0
  404. package/library/tools/get-debugger-errors/GUIDE.md +7 -0
  405. package/library/tools/get-debugger-errors/resource.yaml +5 -0
  406. package/library/tools/get-debugger-warnings/GUIDE.md +7 -0
  407. package/library/tools/get-debugger-warnings/resource.yaml +5 -0
  408. package/library/tools/get-diagnostics/GUIDE.md +13 -0
  409. package/library/tools/get-project-context/GUIDE.md +25 -0
  410. package/library/tools/get-runtime-tree/GUIDE.md +7 -0
  411. package/library/tools/get-runtime-tree/resource.yaml +5 -0
  412. package/library/tools/get-scene-tree/GUIDE.md +11 -0
  413. package/library/tools/get-scene-tree/resource.yaml +5 -0
  414. package/library/tools/get-script-errors/GUIDE.md +5 -0
  415. package/library/tools/grep/GUIDE.md +11 -0
  416. package/library/tools/import-asset/GUIDE.md +8 -0
  417. package/library/tools/import-asset-by-id/GUIDE.md +12 -0
  418. package/library/tools/import-from-url/GUIDE.md +10 -0
  419. package/library/tools/import-from-url-batch/GUIDE.md +3 -0
  420. package/library/tools/import-hdri/GUIDE.md +16 -0
  421. package/library/tools/input-map-bind/GUIDE.md +11 -0
  422. package/library/tools/inspect-asset/GUIDE.md +14 -0
  423. package/library/tools/inspect-asset/resource.yaml +5 -0
  424. package/library/tools/inspect-node/GUIDE.md +11 -0
  425. package/library/tools/inspect-node/resource.yaml +5 -0
  426. package/library/tools/inspect-resource/GUIDE.md +7 -0
  427. package/library/tools/inspect-resource/resource.yaml +5 -0
  428. package/library/tools/inspect-runtime-node/GUIDE.md +7 -0
  429. package/library/tools/inspect-runtime-node/resource.yaml +5 -0
  430. package/library/tools/instantiate-scene/GUIDE.md +12 -0
  431. package/library/tools/is-running/GUIDE.md +3 -0
  432. package/library/tools/measure/GUIDE.md +8 -0
  433. package/library/tools/navigation-probe/GUIDE.md +9 -0
  434. package/library/tools/open/resource.yaml +2 -2
  435. package/library/tools/open-main-scene/GUIDE.md +6 -0
  436. package/library/tools/open-scene/GUIDE.md +8 -0
  437. package/library/tools/place-adjacent/GUIDE.md +7 -0
  438. package/library/tools/play/GUIDE.md +13 -0
  439. package/library/tools/project-setting/GUIDE.md +9 -0
  440. package/library/tools/publish-build/resource.yaml +6 -6
  441. package/library/tools/raycast/GUIDE.md +7 -0
  442. package/library/tools/read-file/GUIDE.md +10 -0
  443. package/library/tools/read-library/resource.yaml +5 -0
  444. package/library/tools/recent-events/GUIDE.md +7 -0
  445. package/library/tools/remove-node/GUIDE.md +3 -0
  446. package/library/tools/repeat-along/GUIDE.md +5 -0
  447. package/library/tools/replace-node/GUIDE.md +9 -0
  448. package/library/tools/replace-text/GUIDE.md +5 -0
  449. package/library/tools/run-editor-script/GUIDE.md +16 -0
  450. package/library/tools/run-script/GUIDE.md +30 -0
  451. package/library/tools/run-script/resource.yaml +6 -3
  452. package/library/tools/runtime-animate/GUIDE.md +7 -0
  453. package/library/tools/runtime-call/GUIDE.md +7 -0
  454. package/library/tools/runtime-set/GUIDE.md +9 -0
  455. package/library/tools/runtime-spawn/GUIDE.md +9 -0
  456. package/library/tools/save-scene/GUIDE.md +3 -0
  457. package/library/tools/scene-audit/GUIDE.md +29 -0
  458. package/library/tools/screenshot/GUIDE.md +17 -0
  459. package/library/tools/select-node/GUIDE.md +3 -0
  460. package/library/tools/set-prop/GUIDE.md +23 -0
  461. package/library/tools/set-resource-property/GUIDE.md +8 -0
  462. package/library/tools/shot-sheet/GUIDE.md +7 -0
  463. package/library/tools/snap-to-surface/GUIDE.md +17 -0
  464. package/library/tools/snapshot-diff/GUIDE.md +7 -0
  465. package/library/tools/starcast/GUIDE.md +12 -0
  466. package/library/tools/stop/GUIDE.md +3 -0
  467. package/library/tools/test-placement/GUIDE.md +7 -0
  468. package/library/tools/ui-actions/GUIDE.md +12 -0
  469. package/library/tools/ui-activate/GUIDE.md +11 -0
  470. package/library/tools/ui-screenshot/GUIDE.md +9 -0
  471. package/library/tools/ui-tree/GUIDE.md +10 -0
  472. package/library/tools/wait-for-event/GUIDE.md +11 -0
  473. package/library/tools/world-snapshot/GUIDE.md +9 -0
  474. package/library/tools/write-file/GUIDE.md +5 -0
  475. package/library/tools/zoom/GUIDE.md +5 -0
  476. package/package.json +6 -4
  477. package/registry/generated/aliases.json +15 -0
  478. package/registry/generated/counts.json +3 -3
  479. package/registry/generated/gemini-extension.json +6 -12
  480. package/registry/generated/index.json +1155 -408
  481. package/registry/generated/marketplace.claude.json +2 -13
  482. package/registry/generated/plugin.claude.json +25 -22
  483. package/registry/generated/plugin.codex.json +8 -14
  484. package/registry/generated/plugin.cursor.json +7 -13
  485. package/registry/generated/plugin.factory.json +7 -13
  486. package/registry/generated/server.json +34 -0
  487. package/registry/generated/skills-index.md +126 -116
  488. package/registry/generated/skills-registry.json +178 -113
  489. package/registry/operations/fixtures/invalid-deprecated-without-replacement.json +60 -0
  490. package/registry/operations/fixtures/invalid-name.json +60 -0
  491. package/registry/operations/fixtures/invalid-publish-without-owner.json +82 -0
  492. package/registry/operations/fixtures/invalid-spend-without-estimate.json +42 -0
  493. package/registry/operations/fixtures/invalid-unknown-field.json +61 -0
  494. package/registry/operations/fixtures/valid-player-facing.json +82 -0
  495. package/registry/operations/fixtures/valid-read.json +60 -0
  496. package/registry/operations/fixtures/valid-spend.json +43 -0
  497. package/registry/operations/legacy-names.json +1206 -0
  498. package/registry/schemas/allowed-hosts.json +4 -2
  499. package/registry/schemas/operation.schema.json +318 -0
  500. package/registry/schemas/skill.schema.json +4 -0
  501. package/CLAUDE.md +0 -7
@@ -147,8 +147,8 @@
147
147
  {
148
148
  "id": "reference/mcp-tools-reference",
149
149
  "kind": "reference",
150
- "version": "1.4.1",
151
- "content_hash": "ee626e6bac5ff34eb4a69ad44ef1c93c0c26d4b57783cc1068dd5ad4d280d473",
150
+ "version": "1.4.2",
151
+ "content_hash": "a9312ef0240d688e2754cc88840bca9ffa835156abbaf1c04ff391ca3372679e",
152
152
  "summary": "Canonical reference for which Summer MCP tool to call — skills should reference tool names exactly as written here.",
153
153
  "use_when": [
154
154
  "choosing between Summer MCP tools and host tools for an operation",
@@ -172,11 +172,11 @@
172
172
  "id": "reference/product-map",
173
173
  "kind": "reference",
174
174
  "version": "1.0.0",
175
- "content_hash": "70a87d76241b98836e3d2b6979d35b953e7a934d156452417f1e731b7b9306ed",
175
+ "content_hash": "7834e717920def6e56cb3c0b67dcc56108f69522c6c2cd8df496877f9e9ab99e",
176
176
  "summary": "The product map — every summerengine.com page and editor surface an agent can open for the user, with intent phrases, URL or op, required context, and status.",
177
177
  "use_when": [
178
178
  "resolving where a user intent lives — \"where do I change my plan\", \"where are my published games\", \"how do I get to the MCP guide for Codex\"",
179
- "deciding whether a destination needs login, a running engine, or a parameter (gameId, path, node) before calling summer_open",
179
+ "deciding whether a destination needs login, a running engine, or a parameter (gameId, path, node) before calling studio.open (3.x `summer_open`)",
180
180
  "checking whether an editor surface (assistant dock, project settings, 2D/3D switch) can be opened on this engine build or is still planned"
181
181
  ],
182
182
  "facets": {
@@ -266,8 +266,8 @@
266
266
  "id": "skill/3d-lighting",
267
267
  "kind": "skill",
268
268
  "version": "1.0.3",
269
- "content_hash": "ba016d621986d5067721a7a089fd92eaa9a8a8641085fcf283c486aea6f137ca",
270
- "summary": "Set up 3D scene lighting — DirectionalLight3D vs Omni vs Spot, WorldEnvironment, sky, shadow tuning, ambient — per current Summer conventions.",
269
+ "content_hash": "642f47e5272cdf5e6a28c2f879eb81862c6afc242ab49991a43f1a0f1560b17b",
270
+ "summary": "Light a 3D scene: sun, omni and spot lights, WorldEnvironment, sky, shadows and ambient.",
271
271
  "use_when": [
272
272
  "setting up lighting in a Summer Engine 3D scene — adding lights, configuring WorldEnvironment, sky, or shadows",
273
273
  "a 3D scene looks flat, too dark, or washed out, or has harsh or missing shadows"
@@ -300,8 +300,8 @@
300
300
  "id": "skill/adaptive-music",
301
301
  "kind": "skill",
302
302
  "version": "1.0.2",
303
- "content_hash": "412051ddd407c196e42c1114878325b50c5fa500fcde921e17510d5c17ef2b35",
304
- "summary": "Wire music stems to game state — combat/explore/boss/tension crossfades on a shared bus, paired with a state machine and AudioBus structure.",
303
+ "content_hash": "d68f6ce0dcec80dec9dbeb85f3062ea567e542ef0963ca18c2591b783975f97c",
304
+ "summary": "Wire music stems to game state: combat, explore, boss and tension crossfades on a shared bus.",
305
305
  "use_when": [
306
306
  "wiring music stems to game state — combat / explore / boss / tension crossfades on a shared bus",
307
307
  "layered or vertical music that changes when combat starts"
@@ -335,8 +335,8 @@
335
335
  "id": "skill/agent-playtesting",
336
336
  "kind": "skill",
337
337
  "version": "1.0.0",
338
- "content_hash": "db2fb6587ceaeb70b70a77e616880bf6e4e897cc84ea3c7b28d7628c4d26d64c",
339
- "summary": "Playtest by driving the LIVE game — deterministic launch, frame-stamped probes before/after each action, exact frame steps, scripted or recorded input.",
338
+ "content_hash": "57113488f74ad2f6fab09dd0479068462347adaf37b7407ed1f9a831837e1ec1",
339
+ "summary": "Playtest by driving the live game: deterministic launch, frame-stamped probes, scripted or recorded input.",
340
340
  "use_when": [
341
341
  "proving a gameplay feature works by driving the running game frame by frame with the runtime tools (summer_game_probe, summer_game_input, summer_game_control, summer_runtime_set/call/spawn/animate)",
342
342
  "a bug repro or an A/B needs a deterministic launch (seed, fixed frame rate, offscreen instance), a recorded input replay, or two instances side by side",
@@ -393,8 +393,8 @@
393
393
  "id": "skill/ai-characters-in-games",
394
394
  "kind": "skill",
395
395
  "version": "0.3.0",
396
- "content_hash": "7ccd24e2c11e17af8a05bfcb5239ccff7636dc21b70b8de31965fa749a614785",
397
- "summary": "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.",
396
+ "content_hash": "6210aae5c1e7add43324def7d0e8f0ad5fef84a37980f780e654ea45fef06faf",
397
+ "summary": "Safe AI characters in published games: no keys in the build, Summer's player AI gateway, moderation, caps.",
398
398
  "use_when": [
399
399
  "a character, creature or object should answer free-form player text or speech in a published game (talking flowers, shopkeepers, companions)",
400
400
  "about to put a model name, a provider SDK or a provider key into a game project",
@@ -430,8 +430,8 @@
430
430
  "id": "skill/ambient-bed",
431
431
  "kind": "skill",
432
432
  "version": "1.0.3",
433
- "content_hash": "019312cde595bc12813c1fe6787cd0127f37e4933985930039214c58acbbdb45",
434
- "summary": "Generate a long looping location ambience — forest, dungeon, city, spaceship, cave — a looping AudioStreamPlayer on the Ambient bus with a seamless loop.",
433
+ "content_hash": "0ced10f5e56041727523869924af8ddf4edc897e409204987f48fc3fbfcf962f",
434
+ "summary": "Generate a long looping location ambience (forest, dungeon, city, cave) on the Ambient bus.",
435
435
  "use_when": [
436
436
  "generating a long looping location ambience — forest at dawn, dungeon air, city street, spaceship hum, cave drip — non-melodic and low-energy",
437
437
  "a location feels silent and needs a continuous soundscape beneath the score and effects"
@@ -459,8 +459,8 @@
459
459
  "id": "skill/animated-loop",
460
460
  "kind": "skill",
461
461
  "version": "1.0.4",
462
- "content_hash": "f94e9340295a16fd7fe8a3293d0dab2ea89f6f42e3334fa39346faa070c5a2fe",
463
- "summary": "Generate a short seamlessly-looping video clip — splash background, animated logo backdrop, idle title-screen footage — wired as a looping VideoStreamPlayer.",
462
+ "content_hash": "4a6802a9fc1647ec476ac77d3ef8075f4b67545c1f006ce27ac1233d45ee68b0",
463
+ "summary": "Generate a short seamless video loop: splash background, animated logo backdrop, idle title screen.",
464
464
  "use_when": [
465
465
  "generating a short looping video clip — splash screen background, animated logo backdrop, idle title-screen footage, looping environment ambience",
466
466
  "an idle backdrop behind the UI needs subtle motion without a real-time animated scene"
@@ -493,8 +493,8 @@
493
493
  "id": "skill/animation-tree",
494
494
  "kind": "skill",
495
495
  "version": "1.0.1",
496
- "content_hash": "73d4d06478e756ece56c234140423378595c96714fdbf3bbcdbe6887668f3d5c",
497
- "summary": "Design and wire AnimationTree state machines and blend trees so clips respond to gameplay — locomotion blends, attack interrupts, hit reactions.",
496
+ "content_hash": "34ce142b0864ec2242a72e7c8d54e6af0857969bb036dbd0c2102c6a99f1e583",
497
+ "summary": "Wire AnimationTree state machines and blend trees: locomotion blends, attack interrupts, hit reactions.",
498
498
  "use_when": [
499
499
  "the character has clips that must play in response to gameplay — idle/walk/run blends, attacks that interrupt locomotion, hit reactions",
500
500
  "a character keeps T-posing"
@@ -533,8 +533,8 @@
533
533
  "id": "skill/art-direction",
534
534
  "kind": "skill",
535
535
  "version": "1.0.2",
536
- "content_hash": "a1f4535516d2a6588801cfe2d1c88f3c211d5316ab0049495bb9d6b337b6a02f",
537
- "summary": "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.",
536
+ "content_hash": "c1f1593d81fbb49d6f8a5163fddafa89657bef62c83cae563cc054c7cc8bcb0a",
537
+ "summary": "Define the game's visual style (palette, mood, lighting, post) as an art bible in .summer/art-bible.md.",
538
538
  "use_when": [
539
539
  "defining the visual style of the game — references, palette, mood, lighting plan, post-processing",
540
540
  "make it look like PS1, retro, low-poly, pixel art, cel-shaded, or a horror aesthetic",
@@ -569,8 +569,8 @@
569
569
  "id": "skill/asset-strategy",
570
570
  "kind": "skill",
571
571
  "version": "1.0.3",
572
- "content_hash": "50357a6e850c4930e7f621c983a03aa93fb9088f937d08a215d1d3a7e5f523b6",
573
- "summary": "Route any 'I need a [thing]' asset request to the right specialist skill — disambiguates 2D / 3D / audio / video / VFX / animation pipelines.",
572
+ "content_hash": "06d2c91e86fd90c2b6e473f3fe80fae7c32002f308848e1ffe4cea818749c439",
573
+ "summary": "Route any 'I need a [thing]' asset request to the right skill: 2D, 3D, audio, video, VFX or animation.",
574
574
  "use_when": [
575
575
  "planning asset creation, picking an asset pipeline, or routing an 'I need a [thing]' request to the right specialist skill",
576
576
  "\"I need a sword / a forest / a boss theme / an explosion\" and it is unclear which pipeline (2D, 3D, audio, video, VFX, animation) fits",
@@ -593,6 +593,7 @@
593
593
  },
594
594
  "related": {
595
595
  "skills": [
596
+ "skill/summer-assets",
596
597
  "skill/character-portrait",
597
598
  "skill/concept-art",
598
599
  "skill/pixel-art",
@@ -638,8 +639,8 @@
638
639
  "id": "skill/audio-direction",
639
640
  "kind": "skill",
640
641
  "version": "1.0.7",
641
- "content_hash": "c9d7324e75b87eb183d0e0c0787aacd75008a1797b6fb58de6bf8273971c5ce9",
642
- "summary": "Define the game's sonic identity — music style, instruments, SFX vocabulary, dynamic music plan — output as an audio bible at .summer/audio-bible.md.",
642
+ "content_hash": "4280cb8e28a7dd610c2aab68749511db71a4c097b858f4cbfa997e040d729813",
643
+ "summary": "Define the game's sound (music style, SFX vocabulary, dynamic music) as .summer/audio-bible.md.",
643
644
  "use_when": [
644
645
  "defining the sonic identity — music style, instruments, SFX vocabulary, dynamic music plan",
645
646
  "starting audio work with no audio bible, or soundtrack and SFX requests keep drifting in style",
@@ -677,8 +678,8 @@
677
678
  "id": "skill/auto-fire-targeting",
678
679
  "kind": "skill",
679
680
  "version": "1.0.0",
680
- "content_hash": "a162dd6cfb3980e873cbc878ba333857cec52ee3e37f803354a9275e42c1fdec",
681
- "summary": "Design or fix auto-fire weapon targeting (survivors, top-down ARPG, tower defense) — the pending-damage pattern that prevents over-commit and overkill.",
681
+ "content_hash": "d56fd23a4e047f92bdf7c97ca34f334e907cf2d387093c751773036936c1ac08",
682
+ "summary": "Fix auto-fire targeting (survivors, ARPG, tower defense) with pending damage to stop overkill.",
682
683
  "use_when": [
683
684
  "designing or fixing the targeting system for an auto-fire weapon (survivors-genre, top-down ARPG, tower-defense)",
684
685
  "bullet flight time longer than fire rate causes wasted bullets or overkill"
@@ -705,8 +706,8 @@
705
706
  "id": "skill/bounded-engine-runs",
706
707
  "kind": "skill",
707
708
  "version": "1.0.0",
708
- "content_hash": "59795a003543231c774238368a037e26c6fe10e25a4829761cdcadccceb72e5d",
709
- "summary": "Run Summer headless or offscreen safely from an agent: time limits, one engine per project, muted runs, import passes, tests that fail on crashes.",
709
+ "content_hash": "72fce40636e955a537daa8497200d621b0402987c600b8a09bb1fc43d1bd3247",
710
+ "summary": "Run Summer headless or offscreen safely: time limits, one engine per project, import passes, crash checks.",
710
711
  "use_when": [
711
712
  "running the engine from a shell or agent for tests, imports, captures or bots",
712
713
  "several agents or processes share one project",
@@ -743,8 +744,8 @@
743
744
  "id": "skill/brainstorm-game",
744
745
  "kind": "skill",
745
746
  "version": "1.0.3",
746
- "content_hash": "59bccd86e1345f3a2f6fe0264557d73c8194b3f196c65c1d1e45ee2dcdf6f353",
747
- "summary": "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.",
747
+ "content_hash": "cc04b16ff395a21c9bcd5ff818d2e9fbe49d94d71ae32c968d521fb9f2896f82",
748
+ "summary": "Turn a vague game idea into a 1-page brief (genre, scope, core loop, mechanics) in .summer/GameSoul.md.",
748
749
  "use_when": [
749
750
  "the user wants help deciding what game to make, scoping a new project, or turning a vague idea into a buildable plan",
750
751
  "the user has a genre, theme, or one-line pitch but no core loop, scope, or brief yet"
@@ -780,8 +781,8 @@
780
781
  "id": "skill/brainstorming",
781
782
  "kind": "skill",
782
783
  "version": "1.0.3",
783
- "content_hash": "d62ca3bc1a3ed3b31961e006f0f20de35addab3fd9b0d69cff4228162e72729d",
784
- "summary": "Explore user intent, requirements, and design before implementation — must run before any creative work: features, components, mechanics, behavior.",
784
+ "content_hash": "38b92473d672960817304b2fe6300ce9b60e3e497507e18573a53ae2a1c86440",
785
+ "summary": "Explore user intent, requirements and design before any creative work: features, mechanics, behavior.",
785
786
  "use_when": [
786
787
  "starting creative work — designing a game, picking a mechanic, building features or components, modifying behavior",
787
788
  "a request is ambiguous about goals or constraints and work would otherwise start on guesses"
@@ -808,8 +809,8 @@
808
809
  "id": "skill/browse-templates",
809
810
  "kind": "skill",
810
811
  "version": "1.0.5",
811
- "content_hash": "40839f90ee91e540ef51c46d3cc1d09d1f78136a445df6df81169c79b7ef22de",
812
- "summary": "List available Summer Engine project templates, present the choices, and create a project from the chosen one via summer create.",
812
+ "content_hash": "f89a515868f1f29b980172f753c0bfabc002edddb792071e4cf9a494c98ef417",
813
+ "summary": "List Summer Engine project templates, present the choices, and create a project from the chosen one.",
813
814
  "use_when": [
814
815
  "the user wants to see available Summer Engine project templates, start from an existing template, or asks what templates exist",
815
816
  "picking a starting point and unsure which starter templates already exist"
@@ -836,8 +837,8 @@
836
837
  "id": "skill/camera-rigs",
837
838
  "kind": "skill",
838
839
  "version": "1.0.0",
839
- "content_hash": "52cec93f1f8eb2e5d7bd2c0572fad53cace2129bc32a91005ae5675bfa9f7d00",
840
- "summary": "Camera rigs for 2D and 3D: Camera2D follow with limits, first-person head camera, SpringArm3D third-person, orthographic top-down, FOV guidance.",
840
+ "content_hash": "d8af4a06b5d3e821373bf04dda3ef282d12c4d135f6d61acc024f21b9801b41d",
841
+ "summary": "Camera rigs: Camera2D follow with limits, first-person head, SpringArm3D third-person, top-down, FOV.",
841
842
  "use_when": [
842
843
  "black screen on play, or the camera shows past the level edge",
843
844
  "jerky camera follow, wrong FOV, or the third-person camera clips into walls",
@@ -874,7 +875,7 @@
874
875
  "id": "skill/celeste-momentum-platforming",
875
876
  "kind": "skill",
876
877
  "version": "0.1.1",
877
- "content_hash": "8de0a20f2c75831147c5282b86267f1caa3ca4381c753f186ffe95eb720f929f",
878
+ "content_hash": "9f0101c592bb02a6b3b9acabd2fca32ed8cea258eb4e2593657bbd8587f4ae30",
878
879
  "summary": "Celeste-style 2D precision platformer movement — momentum running, coyote time, variable jumps, dash, wall jump/slide, climb stamina, pixel corner correction.",
879
880
  "use_when": [
880
881
  "make the platformer movement feel like Celeste",
@@ -913,8 +914,8 @@
913
914
  "id": "skill/character-animation-wiring",
914
915
  "kind": "skill",
915
916
  "version": "1.0.1",
916
- "content_hash": "304420000b2b72164f244e4a406fff8088cd77e30142a9508e855ac484d24c2c",
917
- "summary": "Wire a rigged, animated character end to end — inspect real clips and bones, locomotion state machine, method-track events, poses, blend shapes, root motion.",
917
+ "content_hash": "d9ad989d626c02d2a0e0c7404c5e0029d38c6a770d25d2297de99d1aacd9b0ca",
918
+ "summary": "Wire a rigged character end to end: real clips and bones, locomotion states, method tracks, root motion.",
918
919
  "use_when": [
919
920
  "a rigged GLB or Meshy rig with generated clips is in the scene and needs idle/walk/run wiring with blend times",
920
921
  "footstep or attack-frame events, head tracking, still poses, blend-shape facial keys, or root motion must be hooked up",
@@ -960,8 +961,8 @@
960
961
  "id": "skill/character-model",
961
962
  "kind": "skill",
962
963
  "version": "1.0.2",
963
- "content_hash": "0175a47a39e6d3cfd30abd703783a9acb48811b67a5aecdcfe9b3ad5f0d5d328",
964
- "summary": "Generate a rigged humanoid — player, NPC, enemy, boss — via T-pose reference, user-gated preview, and Meshy auto-rig, wired as CharacterBody3D or Node3D.",
964
+ "content_hash": "52255cc91031def00e12628305d603679ad0d316d96bf37797d47694d75e0084",
965
+ "summary": "Generate a rigged humanoid (player, NPC, enemy, boss) from a T-pose reference, previewed before rigging.",
965
966
  "use_when": [
966
967
  "generating a humanoid character ready for animation — player avatar, NPC, enemy, boss, companion",
967
968
  "the user asks for a rigged humanoid or a model with a skeleton"
@@ -1003,8 +1004,8 @@
1003
1004
  "id": "skill/character-movement",
1004
1005
  "kind": "skill",
1005
1006
  "version": "1.2.1",
1006
- "content_hash": "44b3db25a9e0d9d027f992c5a50b1e66b48bb65e829297cc4e16500971d0a267",
1007
- "summary": "Player controllers for 2D and 3D, plus the canonical third-person controller for Summer humanoid packages: movement owns translation, clips follow state.",
1007
+ "content_hash": "3e125c328215ef81b169b0129c2c245ec59546a886d1d49a551e7cfc2e155b52",
1008
+ "summary": "Player controllers for 2D and 3D, plus the standard third-person controller for Summer humanoids.",
1008
1009
  "use_when": [
1009
1010
  "building or fixing player movement — gravity, collision, side-scroller, top-down, or 3D walk",
1010
1011
  "wiring an imported Summer character package (character.tscn) as the playable third-person player",
@@ -1049,8 +1050,8 @@
1049
1050
  "id": "skill/character-portrait",
1050
1051
  "kind": "skill",
1051
1052
  "version": "1.0.4",
1052
- "content_hash": "9584c7d4a920b2813fa7677fddff728489a3548c0fbb1043d6246883d730871e",
1053
- "summary": "Generate a single polished character bust for dialogue UI, character select, lore cards, or codex entries. One character, locked composition, VN-style.",
1053
+ "content_hash": "2e00aee4de5bccead370e6a9f99e5a9ca177b8687afa656f49facd4ccdfdb28e",
1054
+ "summary": "Generate one polished character bust for dialogue UI, character select, lore cards or codex entries.",
1054
1055
  "use_when": [
1055
1056
  "generating a single polished bust/portrait of a character for dialogue UI, character-select screens, lore cards, or codex entries",
1056
1057
  "a dialogue box, party roster, or codex entry needs one consistent face for a named character"
@@ -1086,8 +1087,8 @@
1086
1087
  "id": "skill/cinematic-cutscene",
1087
1088
  "kind": "skill",
1088
1089
  "version": "1.0.4",
1089
- "content_hash": "a2a499d2c483b07ff3d034280387caf3ffef7c48a99ad37761e931353adbe48c",
1090
- "summary": "Generate a non-interactive cutscene — reference-locked look, a 5-10s image-to-video shot, optional TTS dialogue — wired as a fading VideoStreamPlayer.",
1090
+ "content_hash": "cc3dc8f58020a25e2eea1dee638e9c66e41dc4f22f1985b7682f1e2c5b3d3313",
1091
+ "summary": "Generate a non-interactive cutscene: a reference-locked 5-10s video shot with optional voiced dialogue.",
1091
1092
  "use_when": [
1092
1093
  "generating a non-interactive cutscene clip — opening scene, story beat, character intro, ending",
1093
1094
  "a story beat needs a short pre-rendered clip between gameplay sections — intro, transition, ending"
@@ -1122,8 +1123,8 @@
1122
1123
  "id": "skill/combat-basics",
1123
1124
  "kind": "skill",
1124
1125
  "version": "1.0.0",
1125
- "content_hash": "05ad738d3878536e1afda464941584d2c765919b1f026869d1e765428e8a46a5",
1126
- "summary": "Damage in Summer Engine: hitbox and hurtbox Areas on opposing layers, a reusable Health component, damage signals, knockback, hit feedback, projectiles.",
1126
+ "content_hash": "4ac9c26d394acdf6a968e670ba3f80d60b5f9687c168fd043903f10036579d45",
1127
+ "summary": "Damage: hitbox and hurtbox Areas, a reusable Health component, damage signals, knockback, projectiles.",
1127
1128
  "use_when": [
1128
1129
  "adding attacks, health and damage, or enemies that can be hit and hit back",
1129
1130
  "adding projectiles or bullets — homing, piercing, area-of-effect, or pooling hundreds of them",
@@ -1162,8 +1163,8 @@
1162
1163
  "id": "skill/compatibility-renderer-traps",
1163
1164
  "kind": "skill",
1164
1165
  "version": "1.0.0",
1165
- "content_hash": "7fbd6cc526c0c0776e932091e815e6914d9a2c2d6b7d5f8565c0455621b2bf08",
1166
- "summary": "Make a Forward+ Summer game also look right on the Compatibility renderer: instance-uniform budget, black MultiMesh colors, sRGB vertex colors.",
1166
+ "content_hash": "717f454dbe00afe97e7a5d29b75fa8ec5da44a79c3171b73d5f47ab52d9cbc8b",
1167
+ "summary": "Make a Forward+ game look right on the Compatibility renderer: instance uniforms, MultiMesh, vertex colors.",
1167
1168
  "use_when": [
1168
1169
  "a game must run on phones or weak GPUs that may use the Compatibility or Mobile renderer",
1169
1170
  "objects render black, pale or stop animating on one renderer but not another",
@@ -1199,8 +1200,8 @@
1199
1200
  "id": "skill/concept-art",
1200
1201
  "kind": "skill",
1201
1202
  "version": "1.0.2",
1202
- "content_hash": "605c7ada815fb013d448f43349c12b2961159041e77568cf228daa1d9420a540",
1203
- "summary": "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.",
1203
+ "content_hash": "bea296126e5eee71010085701555aea98ea45b5f50a73cfef411b991ff439ab2",
1204
+ "summary": "Explore art direction with 3-4 rough concept variants of a character, environment or prop.",
1204
1205
  "use_when": [
1205
1206
  "exploring art direction with rough variants before committing to a final asset",
1206
1207
  "the user wants a mood board, rough sketches, or 'what could this look like'"
@@ -1234,12 +1235,61 @@
1234
1235
  "status": "stable",
1235
1236
  "recommended": true
1236
1237
  },
1238
+ {
1239
+ "id": "skill/concept-to-level",
1240
+ "kind": "skill",
1241
+ "version": "1.0.0",
1242
+ "content_hash": "3de1238f87e37f5786886a06998898cca64c7616436240845b99b512a0a1097d",
1243
+ "summary": "Take a 3D map from concept art to a polished, shippable level, with the questions to ask the user, owned lanes, render checks and collision kept in step.",
1244
+ "use_when": [
1245
+ "polishing a 3D map or arena from concept art to shipping quality, with real materials, props, sky and effects",
1246
+ "reworking a level's theme and art while keeping its gameplay layout, with several agents working on one map",
1247
+ "deciding which questions to ask the user before building or polishing a level"
1248
+ ],
1249
+ "facets": {
1250
+ "lifecycle": [
1251
+ "build"
1252
+ ],
1253
+ "domains": [
1254
+ "level-design",
1255
+ "3d",
1256
+ "world-building",
1257
+ "agent-workflow"
1258
+ ],
1259
+ "modalities": [
1260
+ "scenes",
1261
+ "assets",
1262
+ "shaders",
1263
+ "docs"
1264
+ ]
1265
+ },
1266
+ "compatibility": {
1267
+ "engine": ">=4.6"
1268
+ },
1269
+ "related": {
1270
+ "skills": [
1271
+ "skill/concept-art",
1272
+ "skill/art-direction",
1273
+ "skill/design-level",
1274
+ "skill/scene-to-level",
1275
+ "skill/environment-kit",
1276
+ "skill/fabricating-assets",
1277
+ "skill/headless-scripting",
1278
+ "skill/bounded-engine-runs",
1279
+ "skill/verifying-scenes",
1280
+ "skill/tune-performance",
1281
+ "skill/dispatching-parallel-agents"
1282
+ ]
1283
+ },
1284
+ "status": "preview",
1285
+ "recommended": false
1286
+ },
1237
1287
  {
1238
1288
  "id": "skill/create-asset-sheet",
1239
1289
  "kind": "skill",
1240
1290
  "version": "1.0.3",
1241
- "content_hash": "1c4120f049dcacfa25737164312d1e9dbd409b96f06817ca4eb00986fddcd6fa",
1242
- "summary": "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.",
1291
+ "content_hash": "e9e41cad143dd457407a80a18e922559319dba79f0a42070c34ed3ae6855b0b7",
1292
+ "summary": "Generate a pack of 2D assets from one prompt (tile sheet, UI kit, character pack, biome), sliced.",
1243
1293
  "use_when": [
1244
1294
  "generating a pack of 2D game assets from a single prompt — a tile sheet, UI kit, menu screen, character pack, or biome set",
1245
1295
  "many matching sprites, tiles, or UI pieces are needed in one consistent style at once"
@@ -1278,8 +1328,8 @@
1278
1328
  "id": "skill/debug",
1279
1329
  "kind": "skill",
1280
1330
  "version": "1.0.4",
1281
- "content_hash": "8dc1a0b8e8300689e03ab0c6130969f757362d6f5267f9074d541842da857c28",
1282
- "summary": "Disciplined bug/crash/error loop for Summer projects — script errors, console, debugger, hypothesis, fix, verify — before making code or scene changes.",
1331
+ "content_hash": "4d94153a19fe0273b6e12b4e105313c9563cb1377dbd559594e7743ac1d6ac73",
1332
+ "summary": "Disciplined bug, crash and error loop: script errors, console, debugger, hypothesis, fix, verify.",
1283
1333
  "use_when": [
1284
1334
  "the user reports a bug, crash, error, or unexpected behavior in a Summer project, before making code or scene changes",
1285
1335
  "the player falls through the floor or clips through walls",
@@ -1316,8 +1366,8 @@
1316
1366
  "id": "skill/debugging-game-feel",
1317
1367
  "kind": "skill",
1318
1368
  "version": "1.0.3",
1319
- "content_hash": "e88278eea6c12420a437e5e3bc43c9f1e4aa7c9c3f64fe8419acdbe55b4f2812",
1320
- "summary": "Debug features that work but feel wrong — floaty jumps, mushy combat, sluggish camera — subjective bugs living in tuning, timing, and feedback layers.",
1369
+ "content_hash": "6a30b819be7c884d4ee08a97519dc9498277e5a7362680f701b55da545bb68b6",
1370
+ "summary": "Debug features that work but feel wrong: floaty jumps, mushy combat, sluggish camera.",
1321
1371
  "use_when": [
1322
1372
  "a gameplay feature works correctly but feels wrong — floaty jumps, mushy combat, sluggish camera, weightless impacts",
1323
1373
  "tuning jump height, gravity, camera lag, hit-stop, or impact feedback until controls feel right"
@@ -1344,8 +1394,8 @@
1344
1394
  "id": "skill/design-level",
1345
1395
  "kind": "skill",
1346
1396
  "version": "1.0.3",
1347
- "content_hash": "3d382ef56ba0c97a6e56106ecaade99186c92b12b8b08a84692fc823b6764ae2",
1348
- "summary": "Design a single level — layout, pacing, encounters, secrets, reward gating — outputs a level design doc and a node-tree skeleton for summer_create_scene.",
1397
+ "content_hash": "626ce92f5c0d43150a81f64d456f539753ae0e56e4bfc80e43b04b585ad659af",
1398
+ "summary": "Design one level (layout, pacing, encounters, secrets) as a design doc plus a node-tree skeleton.",
1349
1399
  "use_when": [
1350
1400
  "designing a single level — layout, pacing, encounters, secrets, reward gating",
1351
1401
  "turning a level idea into a layout with a critical path, encounters, secrets, and pacing beats"
@@ -1382,8 +1432,8 @@
1382
1432
  "id": "skill/design-mechanic",
1383
1433
  "kind": "skill",
1384
1434
  "version": "1.0.2",
1385
- "content_hash": "f2cdec2de023d0b21e09c2de3147cd1ee141bf18ea272323cacf93aceb7c5e2b",
1386
- "summary": "Design one game mechanic in detail — input, response, feedback, failure modes, depth, tunables — outputs a design doc, node-graph sketch, GDScript stub.",
1435
+ "content_hash": "00f443a64153ac9711f854b127c6b4e74c67fc13425a00ab95f4ef8019c33ffd",
1436
+ "summary": "Design one mechanic in detail (input, feedback, failure modes, tunables) as a doc plus a script stub.",
1387
1437
  "use_when": [
1388
1438
  "designing one specific game mechanic in detail — input, response, feedback, failure modes, depth, tunables",
1389
1439
  "add a grappling hook, dash, double jump, wall run, or parry"
@@ -1420,8 +1470,8 @@
1420
1470
  "id": "skill/design-npc",
1421
1471
  "kind": "skill",
1422
1472
  "version": "1.0.2",
1423
- "content_hash": "17afb4ce14e33b5e85ca6aab6c02f9ced74124cf5bd221bd7465c9d714052948",
1424
- "summary": "Design enemy/NPC/boss/companion behavior — perception, personality, intent, action state machine, telegraphs — outputs a GDScript stub plus node tree.",
1473
+ "content_hash": "f4d88169fe7bfb8c758a3697a035a38b8e242c690bc2ca3169871ffb91dcf70a",
1474
+ "summary": "Design enemy, NPC, boss or companion behavior: perception, state machine, telegraphs, script stub.",
1425
1475
  "use_when": [
1426
1476
  "designing an enemy, NPC, boss, companion, civilian, or wave-spawned mob's behavior — perception, intent, state machine, telegraphs, defeat handling",
1427
1477
  "enemies that patrol, chase, attack, or flee when they see the player (line of sight)"
@@ -1456,8 +1506,8 @@
1456
1506
  "id": "skill/diagnosing-perf-regressions",
1457
1507
  "kind": "skill",
1458
1508
  "version": "1.0.3",
1459
- "content_hash": "09755583fb2deae78e6c364c326c49697dba206008077faae3d8161c64db59bd",
1460
- "summary": "Find why frame rate, frame time, or load time got worse since a known-good state — regression hunting, not general performance tuning.",
1509
+ "content_hash": "acc881c5f693fece5ae59cd04abba8102312ebd76b131492fec9a7f4a8f55d05",
1510
+ "summary": "Find why frame rate, frame time or load time got worse since a known-good state.",
1461
1511
  "use_when": [
1462
1512
  "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'",
1463
1513
  "bisecting recent scene, script, or asset changes to find which one slowed frame time or loading"
@@ -1512,8 +1562,8 @@
1512
1562
  "id": "skill/driving-the-editor-ui",
1513
1563
  "kind": "skill",
1514
1564
  "version": "1.0.0",
1515
- "content_hash": "a82a77a3496e6babf61ac41887cafcbeebad328611a30a82da45e8a2debd86ce",
1516
- "summary": "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.",
1565
+ "content_hash": "d4a8fbf378c8f36cee97cec9fb60a23d8fcc9574418d624bbdb3617c082b2b0f",
1566
+ "summary": "Drive the editor UI by name: run actions, clear blocking dialogs, switch screens, read a dock.",
1517
1567
  "use_when": [
1518
1568
  "an editor-workflow step a human would do with the mouse — open the Import dock, switch the 2D/3D/Script main screen, toggle a bottom panel, open an editor dialog by name",
1519
1569
  "a dialog or popup is blocking the editor and tool calls come back modal_open — see it (summer_ui_tree root dialogs) and clear it (summer_ui_activate action dismiss_dialog)",
@@ -1563,8 +1613,8 @@
1563
1613
  "id": "skill/environment-kit",
1564
1614
  "kind": "skill",
1565
1615
  "version": "1.0.3",
1566
- "content_hash": "7589bfcd29aa233962c8747ab33218bbf42ec695f97efb506dca1a99209aa15d",
1567
- "summary": "Generate a modular environment kit — wall pieces, floor tiles, pillars, doors, arches, corners — snap-together meshes sharing one visual style.",
1616
+ "content_hash": "250bafe09e11fb0a2b46d15f9e93ca021531ea1050535739ca93db71224ff032",
1617
+ "summary": "Generate a modular environment kit: walls, floor tiles, pillars, doors, arches in one visual style.",
1568
1618
  "use_when": [
1569
1619
  "generating a modular environment kit of snap-together pieces that form a level — dungeon kit, modular walls, interior pieces",
1570
1620
  "building a dungeon, interior, or town kit from repeatable pieces that snap together in one style"
@@ -1599,8 +1649,8 @@
1599
1649
  "id": "skill/export-and-ship",
1600
1650
  "kind": "skill",
1601
1651
  "version": "1.0.3",
1602
- "content_hash": "c0ed1e67fe9a32ea1ad869dd2c1c320f74816696a87ad17ab40a26cdd138d5c9",
1603
- "summary": "Assess and prepare a game export: inventory installed templates and targets, validate release assets and config, produce supported builds after approval.",
1652
+ "content_hash": "45bb69983e128f9fb20a668938351bcb2d49bc00c99d553f1953d55125575f09",
1653
+ "summary": "Prepare a game export: check templates and targets, validate release assets, build after approval.",
1604
1654
  "use_when": [
1605
1655
  "the user wants to assess or prepare a Summer game export — Steam, itch, HTML5, iOS, Android targets as available in the installed build",
1606
1656
  "the user says 'publish my game', 'release it', or 'ship a build to players' — produce the build they will upload"
@@ -1634,8 +1684,8 @@
1634
1684
  "id": "skill/fabricating-assets",
1635
1685
  "kind": "skill",
1636
1686
  "version": "1.0.0",
1637
- "content_hash": "43f25276757fe377069a5b3e2a37ebdeb58251614c2762d82314252d10e0b596",
1638
- "summary": "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.",
1687
+ "content_hash": "a48703256e711b0d879ac0117279cd02df8aced54aa8691671f09c3a0dcc906c",
1688
+ "summary": "Fabricate meshes with a Blender script (summer_fabricate_3d): exact-size kits, VFX meshes, post-processing.",
1639
1689
  "use_when": [
1640
1690
  "writing a Blender Python (bpy) script for summer_fabricate_3d and deciding whether fabrication, generation, or the free library is the right route for an asset",
1641
1691
  "a parametric hard-surface set with exact dimensions, booleans, bevels, and shared materials that must stay consistent across many pieces",
@@ -1691,8 +1741,8 @@
1691
1741
  "id": "skill/facial-and-lipsync",
1692
1742
  "kind": "skill",
1693
1743
  "version": "1.0.2",
1694
- "content_hash": "e4c916e5e155b95fc71912a1cf039eba3b1bbe45afa2224e7a8d11529bbedbf0",
1695
- "summary": "Make a character's mouth move with a voice-over — phoneme extraction from audio, viseme blendshape mapping, and emotional facial expressions.",
1744
+ "content_hash": "f9ef604ec75b42dada1cb8e9001b4ce5a21b148f391979b7917a408c3da67e5d",
1745
+ "summary": "Make a character's mouth move with a voice-over: phonemes, viseme blendshapes, facial expressions.",
1696
1746
  "use_when": [
1697
1747
  "the user has (or wants) a voice-over and needs the character's mouth to move with the words",
1698
1748
  "adding emotional facial expressions (smile, frown, surprise)"
@@ -1730,8 +1780,8 @@
1730
1780
  "id": "skill/fps-controller",
1731
1781
  "kind": "skill",
1732
1782
  "version": "1.0.4",
1733
- "content_hash": "5192c5c10811b37fe991539bff72fa7556910af2c72acd473b87cdfcb62512b3",
1734
- "summary": "Production-quality first-person controller — WASD, mouse look, jump, coyote time, jump buffering, air control, and external-velocity handling.",
1783
+ "content_hash": "61fdc450098e144fc487cdf26b3b64193dac32520f5ae5cce8a0fb3105199547",
1784
+ "summary": "First-person controller: WASD, mouse look, jump, coyote time, jump buffering, air control.",
1735
1785
  "use_when": [
1736
1786
  "building an FPS, first-person movement, or a 3D character that walks, jumps, and reacts to external forces",
1737
1787
  "a first-person prototype needs solid movement feel — coyote time, jump buffering, air control"
@@ -1768,8 +1818,8 @@
1768
1818
  "id": "skill/game-feel",
1769
1819
  "kind": "skill",
1770
1820
  "version": "1.0.2",
1771
- "content_hash": "3e3732502504b7f6c229cc39259be215c511b5477c4723f5e1cb00baa61fa8f4",
1772
- "summary": "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.",
1821
+ "content_hash": "c46965ecb4593fb3dd86a1d770031bc40cd7e2c599f6d57d73c01f614537e9d9",
1822
+ "summary": "Add juice: hit-flash, trauma camera shake and audio ducking, one hit fires all three.",
1773
1823
  "use_when": [
1774
1824
  "a Summer game feels flat, lacks impact, needs juice or punch",
1775
1825
  "the user asks for hit feedback, screen shake, camera shake, or audio ducking"
@@ -1802,8 +1852,8 @@
1802
1852
  "id": "skill/gameskill",
1803
1853
  "kind": "skill",
1804
1854
  "version": "1.0.2",
1805
- "content_hash": "1ca30765c394269299b9cddb24e992ecd397aeb7b647cfb6ce3c493fac9fd630",
1806
- "summary": "Capture what a game-dev session just learned as a reusable skill (project, user or Summer library) so the next session starts smarter.",
1855
+ "content_hash": "02cfee643b367862f5dc9d8f14125796fe17944706ee6bfd5f5b436185da8f67",
1856
+ "summary": "Capture what a game-dev session learned as a reusable skill (project, user or Summer library) for next time.",
1807
1857
  "use_when": [
1808
1858
  "finishing a game-development session with learnings worth capturing as a reusable skill",
1809
1859
  "a session found a technique, workaround, or convention worth reusing across Summer sessions"
@@ -1830,8 +1880,8 @@
1830
1880
  "id": "skill/gdscript-patterns",
1831
1881
  "kind": "skill",
1832
1882
  "version": "1.0.3",
1833
- "content_hash": "5b8c24998b63021fd1dd9f0d6030a87d02506084eb4ced369fc3c018c6b2bac7",
1834
- "summary": "GDScript conventions — type hints, signals, exports, onready, lifecycle methods, get_node vs $NodePath, naming.",
1883
+ "content_hash": "20953fefe79c51cdeb651848b6e1f65beaff3b46a37e6ab8e12fd0789fc7f91f",
1884
+ "summary": "GDScript conventions: type hints, signals, exports, onready, lifecycle methods, node paths, naming.",
1835
1885
  "use_when": [
1836
1886
  "writing or refactoring GDScript — type hints, signals, exports, onready, lifecycle methods, naming conventions",
1837
1887
  "reviewing GDScript for idiomatic signals, exports, @onready usage, node references, and naming"
@@ -1858,8 +1908,8 @@
1858
1908
  "id": "skill/generate-motion",
1859
1909
  "kind": "skill",
1860
1910
  "version": "1.0.4",
1861
- "content_hash": "342ca77d9ff7982a2544d19ab0047abe5222a26aefdb39fd605180ba3ce9477e",
1862
- "summary": "Attach an animation clip to a rigged character from the curated Meshy motion library — idle, walk, run, attack — wired via AnimationPlayer.",
1911
+ "content_hash": "e05c637f6b9077429ee3b7fa5621aa37c26ec03f4241857d068b8318fd4e1e60",
1912
+ "summary": "Attach a library animation clip (idle, walk, run, attack) to a rigged character via AnimationPlayer.",
1863
1913
  "use_when": [
1864
1914
  "the user needs an animation clip on a rigged character — idle/walk/run/attack from the curated Meshy library",
1865
1915
  "a rigged character has no idle, walk, run, or attack animation yet"
@@ -1900,7 +1950,7 @@
1900
1950
  "id": "skill/godogen-visual-proof-game-generation",
1901
1951
  "kind": "skill",
1902
1952
  "version": "0.1.1",
1903
- "content_hash": "a4ab7a5cb7948dba0d26a3a5227d56b703de49f75f13b5ad30ec5dceee712ded",
1953
+ "content_hash": "cb7a78fb823404680440cab4a358cf33f133424e2d18120176b5c237ace56b92",
1904
1954
  "summary": "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.",
1905
1955
  "use_when": [
1906
1956
  "generate a whole small game from a short brief and prove it actually runs",
@@ -1939,8 +1989,8 @@
1939
1989
  "id": "skill/grow-analytics",
1940
1990
  "kind": "skill",
1941
1991
  "version": "1.0.0",
1942
- "content_hash": "202c5517866e6fe7cf6d15f8a89292175dbb07f67d8a2a9a56bcf25a932f1d5a",
1943
- "summary": "Read and analyse a creator's Summer Grow numbers: store page views, launches, play sessions, play time; compare windows, flag drops.",
1992
+ "content_hash": "6e4f85c2371263413b508a43cb303b27e3acbeeb96e0cadbde8908e1b44ebc76",
1993
+ "summary": "Read a creator's Summer Grow numbers (page views, launches, sessions, play time), compare windows.",
1944
1994
  "use_when": [
1945
1995
  "the user asks how their game is doing on Summer Games: views, launches, players, play time",
1946
1996
  "reading summer_grow_overview or summer_grow_analytics and turning the numbers into one next step",
@@ -1972,8 +2022,8 @@
1972
2022
  "id": "skill/headless-scripting",
1973
2023
  "kind": "skill",
1974
2024
  "version": "1.1.3",
1975
- "content_hash": "760000454f33f147e4c7a3fb6a13c836f062cd0274b635f52cb4524dcad112b8",
1976
- "summary": "Run a GDScript file against Summer Engine from the shell for operations no MCP tool exposes — navmesh baking, collision shapes, TileSets, re-imports.",
2025
+ "content_hash": "57fe6d546aa458deeb7f617eae5aea035addf34960cd169b66242ae887cadb2e",
2026
+ "summary": "Run a GDScript file against Summer Engine from the shell for what no MCP tool does: navmesh, TileSets.",
1977
2027
  "use_when": [
1978
2028
  "a Summer project needs an operation no MCP tool exposes — baking a navmesh, generating collision shapes, authoring an Animation, building a TileSet, re-importing assets",
1979
2029
  "a plan involves 'run it headless and screenshot it' (which does not work — this skill explains why)"
@@ -2006,8 +2056,8 @@
2006
2056
  "id": "skill/in-game-purchases",
2007
2057
  "kind": "skill",
2008
2058
  "version": "1.0.0",
2009
- "content_hash": "9424c160b59a7dd583a7e52d62e334d6d0cfc1f46278221436d327a7326df3a2",
2010
- "summary": "Sell items for Sparks in a game shop via the Summer purchase sheet: checkout, results, not enough Sparks, inventory unlocks, authority grants, store policy.",
2059
+ "content_hash": "60d05c3804061c86f69b7ce8e3b0932180a28dda07be2b58a5982435473d5936",
2060
+ "summary": "Sell items for Sparks via the Summer purchase sheet: checkout, not enough Sparks, unlocks, grants.",
2011
2061
  "use_when": [
2012
2062
  "adding a shop, buy button or paid item to a Summer game and wiring request_checkout",
2013
2063
  "the player does not have enough Sparks (checkout rejected with insufficient_funds) and the game should tell them how to buy more Sparks",
@@ -2042,8 +2092,8 @@
2042
2092
  "id": "skill/instantiate-asset-pack",
2043
2093
  "kind": "skill",
2044
2094
  "version": "1.0.3",
2045
- "content_hash": "3c8993a111e421c12bef81022160629235f9c8ee7530d6697e7f28464ee6085a",
2046
- "summary": "Import a whole create-asset-sheet pack into the scene: groups composites, sorts paint order, emits Sprite2D/Node2D/NinePatchRect ops to lay it out.",
2095
+ "content_hash": "d1d1d115181af5edb0deb6fbbc85faa2c946b31cc921f2bf471b28994b0a34da",
2096
+ "summary": "Lay out a whole create-asset-sheet pack in the scene: composites, paint order, Sprite2D and NinePatch.",
2047
2097
  "use_when": [
2048
2098
  "importing or spawning an entire asset pack (multi-slice ArtAsset from create-asset-sheet) into the current scene",
2049
2099
  "laying out a generated tile sheet, UI kit, or biome pack as placed Sprite2D and NinePatchRect nodes in one pass"
@@ -2106,7 +2156,7 @@
2106
2156
  "id": "skill/lumera-single-image-scene-reconstruction",
2107
2157
  "kind": "skill",
2108
2158
  "version": "0.1.1",
2109
- "content_hash": "0aaaaf86253645a5b4d2c40b3cdbb2af41ac225218a3fcee18f1d62d2bde345f",
2159
+ "content_hash": "2ee6894c02b7a23a58ac12fc81134f399bffa6534719f8ba04d58a747c293d04",
2110
2160
  "summary": "Lumera-style single image to editable 3D scene — VLM-parsed object boxes and parametric lights, per-object meshes, HDR probe, .tscn assembly, refinement loop.",
2111
2161
  "use_when": [
2112
2162
  "turn this concept art or screenshot into an editable 3D scene with separate objects and lights",
@@ -2146,8 +2196,8 @@
2146
2196
  "id": "skill/make-game",
2147
2197
  "kind": "skill",
2148
2198
  "version": "1.1.0",
2149
- "content_hash": "6b254b93c236527ecf7d7a3128aa9daa3fe264e533a011ce7cb829df4fd90a32",
2150
- "summary": "Orchestration spine for 'make me a game': brainstorm, plan, scaffold, mechanics, art, audio, polish, verify, ship — delegates to specialist skills.",
2199
+ "content_hash": "1d1ab7c2061e51c8ab293a75930ba46acc1f16af022bfac7f12b7f3ac2c40cdf",
2200
+ "summary": "Orchestrate 'make me a game': brainstorm, plan, scaffold, mechanics, art, audio, polish, verify, ship.",
2151
2201
  "use_when": [
2152
2202
  "the user says 'make me a game', 'build me a game', 'I want to make a [genre] game', or 'let's build something' — running the full game-dev pipeline",
2153
2203
  "the user wants a complete playable game end to end, from brainstorm through shipping",
@@ -2194,8 +2244,8 @@
2194
2244
  "id": "skill/multiplayer",
2195
2245
  "kind": "skill",
2196
2246
  "version": "1.0.0",
2197
- "content_hash": "06771fb6465e2ed96bb03900d98e1b53bb79e36cda4f5540d8371fc4308274d5",
2198
- "summary": "Start here for Summer multiplayer: how the authority, clients, Worlds and Sessions fit, and which skill comes next.",
2247
+ "content_hash": "2a2374cfdfc30eebbf489703a2f53347f294b0eedf374588b5f0b38fd80de316",
2248
+ "summary": "Start here for Summer multiplayer: how authority, clients, Worlds and Sessions fit, and what comes next.",
2199
2249
  "use_when": [
2200
2250
  "the user wants multiplayer, co-op, PvP, online play over the internet, or to play with friends in a Summer game",
2201
2251
  "the user asks for peer-to-peer, a player-hosted server, host migration, join-by-IP or a lobby",
@@ -2237,8 +2287,8 @@
2237
2287
  "id": "skill/multiplayer-movement",
2238
2288
  "kind": "skill",
2239
2289
  "version": "1.0.0",
2240
- "content_hash": "b48c1aa09e885071d5007ecd8863a38f9bd467fa216314bac329a6bbc8df6e68",
2241
- "summary": "Client-side movement in Summer multiplayer: owners move instantly, others glide, the authority checks each pose.",
2290
+ "content_hash": "44297cb8f8bd3f00d76a436f1db4c0f0433422c460deadd5c3a0ae9952de5ca4",
2291
+ "summary": "Movement in Summer multiplayer: owners move instantly, others glide, the authority checks each pose.",
2242
2292
  "use_when": [
2243
2293
  "moving players in a Summer multiplayer game: each player's own character, other players drawn smoothly",
2244
2294
  "remote players stutter, jitter, teleport or rubberband in a Summer multiplayer game",
@@ -2276,8 +2326,8 @@
2276
2326
  "id": "skill/multiplayer-project",
2277
2327
  "kind": "skill",
2278
2328
  "version": "1.0.0",
2279
- "content_hash": "c730c94e08e9807ad9404f4104eb1ad389c1a73e47a804929b31db29c8497b17",
2280
- "summary": "Set up a Summer multiplayer project: both entry scenes, World and queue files, joining, and a first Local Play run.",
2329
+ "content_hash": "fcced65092a535c3c0f0e594bef62eb232f2835077b2d3be51feb616f3c35016",
2330
+ "summary": "Set up a Summer multiplayer project: entry scenes, World and queue files, joining, a first Local Play.",
2281
2331
  "use_when": [
2282
2332
  "making a Summer game playable online or co-op: the first multiplayer setup",
2283
2333
  "adding multiplayer to a Summer game: the client and authority scenes, summer.build.json, world.json and joining a queue",
@@ -2320,9 +2370,9 @@
2320
2370
  {
2321
2371
  "id": "skill/multiplayer-publish",
2322
2372
  "kind": "skill",
2323
- "version": "1.0.0",
2324
- "content_hash": "e0624b497dc1e45bbe9e529817502a4e05c829189402391d0882fc0b007e8766",
2325
- "summary": "Ship a hosted Summer multiplayer game: the summer.games bundle, server preset, pre-upload checks, and a new Build.",
2373
+ "version": "1.0.1",
2374
+ "content_hash": "247570d73a5da158b2a190fc00026940ad26bcd2b27d1091159b311b98cda1e5",
2375
+ "summary": "Ship a hosted Summer multiplayer game: the bundle, server preset, pre-upload checks, a new Build.",
2326
2376
  "use_when": [
2327
2377
  "publishing a hosted Summer multiplayer game online so other players can join it",
2328
2378
  "making the summer.games bundle of a hosted game: client.pck, server.pck and the Linux server preset",
@@ -2352,15 +2402,15 @@
2352
2402
  "skill/release-readiness"
2353
2403
  ]
2354
2404
  },
2355
- "status": "preview",
2405
+ "status": "stable",
2356
2406
  "recommended": false
2357
2407
  },
2358
2408
  {
2359
2409
  "id": "skill/multiplayer-state",
2360
2410
  "kind": "skill",
2361
2411
  "version": "1.0.0",
2362
- "content_hash": "38e79fe70609234ad717f00685b6165e2dd41ee860ce0b721a07ac2f56ad80f4",
2363
- "summary": "Authority-owned game state in Summer multiplayer: shared and private State groups, validated Commands, and Events.",
2412
+ "content_hash": "8b87bf9bf688ba13d1f1de42fb0f1c81c8741ef0a6450dea7b630962746c4771",
2413
+ "summary": "Authority-owned state in Summer multiplayer: shared and private State groups, Commands, Events.",
2364
2414
  "use_when": [
2365
2415
  "score, health, doors, rounds, inventories or wallets in a Summer multiplayer game, and who owns them",
2366
2416
  "players need to collect, buy, use, open or trade things and the authority must validate it",
@@ -2403,8 +2453,8 @@
2403
2453
  "id": "skill/multiplayer-testing",
2404
2454
  "kind": "skill",
2405
2455
  "version": "1.0.0",
2406
- "content_hash": "115c160d7e42a95589bac14a572811b0c9c3b26b37c5386b6eb647f2889ef162",
2407
- "summary": "Test a Summer multiplayer game with Local Play: several players, a bad network, bots, and what a passing run shows.",
2456
+ "content_hash": "0fe3142718861eb4a4fdc55e2aad2e10486acfdc5bf74afea369c97da1b81bc0",
2457
+ "summary": "Test a Summer multiplayer game with Local Play: several players, bad network, bots, a passing run.",
2408
2458
  "use_when": [
2409
2459
  "running or testing a Summer multiplayer game locally with several players (Local Play)",
2410
2460
  "testing multiplayer under latency, jitter or packet loss, or with bots",
@@ -2452,8 +2502,8 @@
2452
2502
  "id": "skill/music-track",
2453
2503
  "kind": "skill",
2454
2504
  "version": "1.0.2",
2455
- "content_hash": "f31b8aae49f483c6d1da9b15fc084fae19a41d1f5e45b770c037a619a65de738",
2456
- "summary": "Generate a looped or cinematic music track — loops authored at >=30s with a marked loop point, cinematic tracks at >=60s linear.",
2505
+ "content_hash": "e7edc2e73b261e2d0d0c0f91eebf49b60cec4946fbc6113229cddbd3ccc7cf50",
2506
+ "summary": "Generate a music track: game loops of 30s or more with a loop point, or linear cinematic cues.",
2457
2507
  "use_when": [
2458
2508
  "generating a looped or cinematic music track — main theme, boss music, title screen, exploration loop, combat track",
2459
2509
  "a game has no music yet or needs a new track for a level, a cutscene, or the credits"
@@ -2487,8 +2537,8 @@
2487
2537
  "id": "skill/navigate-summer",
2488
2538
  "kind": "skill",
2489
2539
  "version": "1.0.0",
2490
- "content_hash": "261e7a6fc82faab880e61723cf39459596a7edaeabb90059c43c1d97c2fca079",
2491
- "summary": "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.",
2540
+ "content_hash": "144599c6e549910c66975ef6c250d207282f4f57a333c5863841c691ec12c413",
2541
+ "summary": "Open a Summer web page or editor surface for the user (billing, their games, a scene) with studio.open.",
2492
2542
  "use_when": [
2493
2543
  "the user asks 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\", \"take me to the MCP guide for Cursor\"",
2494
2544
  "deciding whether to open a surface for the user or to do the work through Summer tools",
@@ -2530,8 +2580,8 @@
2530
2580
  "id": "skill/new-project",
2531
2581
  "kind": "skill",
2532
2582
  "version": "1.0.4",
2533
- "content_hash": "fa870e1a0f8f592465fbdc6d951335f71dd59857ece4279cec50f9e88af0a3c2",
2534
- "summary": "Create a fresh blank Summer Engine project — asks one question (project name) and runs summer create empty.",
2583
+ "content_hash": "747e6c3d44ee75f48a74a18aab807f3cec14290a3ea1b3200467a3dea7460448",
2584
+ "summary": "Create a blank Summer Engine project: ask for the project name and run summer create empty.",
2535
2585
  "use_when": [
2536
2586
  "the user wants a fresh blank Summer Engine project — from scratch, blank canvas",
2537
2587
  "starting a Summer Engine project with no template, only a name, ready for an empty main scene"
@@ -2563,8 +2613,8 @@
2563
2613
  "id": "skill/organic-model",
2564
2614
  "kind": "skill",
2565
2615
  "version": "1.0.3",
2566
- "content_hash": "1ff008d9c308835e3b72ad7956d5614b9f655dec780860b36addaaf5141dea24",
2567
- "summary": "Generate organic 3D shapes — trees, rocks, mushrooms, coral, plants, vines, crystals — where AI artifacts read as natural irregularity.",
2616
+ "content_hash": "72ce63607e7fce253f8feb40e223fb11155854478f0c886dd57376772bb5beed",
2617
+ "summary": "Generate organic 3D shapes (trees, rocks, mushrooms, plants, crystals) where irregularity looks natural.",
2568
2618
  "use_when": [
2569
2619
  "generating organic shapes — trees, rocks, mushrooms, coral, bushes, alien plants, vines, crystals, fruit, bones",
2570
2620
  "a level needs vegetation, rocks, or other natural shapes where irregularity reads as realism"
@@ -2602,8 +2652,8 @@
2602
2652
  "id": "skill/pixel-art",
2603
2653
  "kind": "skill",
2604
2654
  "version": "1.0.4",
2605
- "content_hash": "c61e867cba2cbeebf5d3de182f7813a72c14f3fff442c322c4c13ab31b252ed7",
2606
- "summary": "Generate pixel-art assets — sprites, items, tiles, portraits — at a specific resolution with pixel-perfect grid, limited palette, retro feel.",
2655
+ "content_hash": "b71ddf36c82d4ccc83e1882c335615a23d8348e984cab169f3eeb63c35836dd6",
2656
+ "summary": "Generate pixel-art sprites, items, tiles and portraits at a set resolution with a limited palette.",
2607
2657
  "use_when": [
2608
2658
  "generating pixel-art assets — sprites, items, tiles, portraits — in a pixel style at a specific resolution (32x32, 64x64, 128x128)",
2609
2659
  "a retro or low-resolution 2D game needs sprites, tiles, or portraits on a fixed grid with a limited palette"
@@ -2640,8 +2690,8 @@
2640
2690
  "id": "skill/play",
2641
2691
  "kind": "skill",
2642
2692
  "version": "1.0.2",
2643
- "content_hash": "7fd83f75378bbcb605d57aeded546f63ed520b3e2c991da8bc088c71b2d3fdbc",
2644
- "summary": "Run the project in Summer Engine, wait briefly, then report what's happening — clean run, errors, or warnings.",
2693
+ "content_hash": "b5d5927156ac2c496f49330ed90f0bf2c286722dfb4480a9b329764244c77d38",
2694
+ "summary": "Run the project in Summer Engine, wait briefly, then report a clean run, errors or warnings.",
2645
2695
  "use_when": [
2646
2696
  "the user says 'play', 'run it', 'test it', 'let me see it', or 'start the game'",
2647
2697
  "checking that the project still starts and runs cleanly right after a change"
@@ -2673,8 +2723,8 @@
2673
2723
  "id": "skill/playtesting-a-feature",
2674
2724
  "kind": "skill",
2675
2725
  "version": "1.1.2",
2676
- "content_hash": "396ce66210c5199c89ba004a255cb8a0a2d05db73a45a73bfa922690ae777d67",
2677
- "summary": "Before claiming a gameplay feature done: actually run the game and walk through the feature. Static diagnostics and type checks do not count.",
2726
+ "content_hash": "6c43ee8e7f6f9fbc8d94dccc7dcf4c8cba757db556a24ab138ef4cd71214e07d",
2727
+ "summary": "Before calling a gameplay feature done, run the game and walk through it. Static checks do not count.",
2678
2728
  "use_when": [
2679
2729
  "about to claim a gameplay feature is done, shipped, or working — requires actually running the game and walking through the feature first",
2680
2730
  "a feature passes static diagnostics but nobody has actually run the game and exercised it yet",
@@ -2712,8 +2762,8 @@
2712
2762
  "id": "skill/procedural-animation",
2713
2763
  "kind": "skill",
2714
2764
  "version": "1.0.4",
2715
- "content_hash": "ad2d12af6589b92a34e7ff64c67b2d6e15f9323f89f8468e54e551ef6a4b3ffa",
2716
- "summary": "Runtime bone modification on top of clips — head look-at, foot IK, hand-grabs-prop, additive lean, recoil. Code-and-modifier patterns, not generation.",
2765
+ "content_hash": "d639e83ef04bb35207fef037fd804229f28215964e44e62bb8eff2ed2ec8ab8b",
2766
+ "summary": "Runtime bone changes on top of clips: head look-at, foot IK, hand grabs a prop, lean, recoil.",
2717
2767
  "use_when": [
2718
2768
  "the user needs runtime-driven bone modification on top of clips — head look-at, foot IK on uneven ground, additive lean, hit recoil, ragdoll",
2719
2769
  "the character's feet float above or sink into stairs and slopes (foot placement)"
@@ -2752,8 +2802,8 @@
2752
2802
  "id": "skill/prop-model",
2753
2803
  "kind": "skill",
2754
2804
  "version": "1.0.3",
2755
- "content_hash": "dc899d46afde43f3a8df3fa78de1c87b27444f9ab482bf9b798a42e83272435d",
2756
- "summary": "Generate a single static 3D prop — sword, barrel, chest, lantern, throne, statue — one isolated object, no rigging, wired as a MeshInstance3D.",
2805
+ "content_hash": "3829e436b9591e9bbfe464d40119d9965840e3926cf3bbd1d9f7d05680588ff7",
2806
+ "summary": "Generate one static 3D prop (sword, barrel, chest, lantern, statue): one object, no rig, a MeshInstance3D.",
2757
2807
  "use_when": [
2758
2808
  "generating a single static 3D prop — sword, barrel, chest, lantern, throne, statue, crate, key, potion, banner",
2759
2809
  "a scene needs one static object — furniture, weapon, container, decoration — as a MeshInstance3D without rigging"
@@ -2790,7 +2840,7 @@
2790
2840
  "id": "skill/psx-retro-rendering",
2791
2841
  "kind": "skill",
2792
2842
  "version": "0.1.1",
2793
- "content_hash": "35ee63024c9a795005f872d97cc28d30de40956bf49502369ab7d8b111c26ec3",
2843
+ "content_hash": "0c3ed03806961d6dfdcd9f3d541bb260c85500262b1408712d068e4844c2bc55",
2794
2844
  "summary": "PlayStation 1 rendering in Summer Engine — low-res output, RGB5 and exact dither, affine textures, vertex snapping, blend modes, fog; limits named.",
2795
2845
  "use_when": [
2796
2846
  "make my game render like a PlayStation 1 game, with texture warping, vertex wobble, and dithering",
@@ -2828,12 +2878,12 @@
2828
2878
  "id": "skill/publish-your-game",
2829
2879
  "kind": "skill",
2830
2880
  "version": "1.0.0",
2831
- "content_hash": "c2ed78b67c43fbcea5792ec31b97daff0ded3e0fe63e8d676ecdc8da7527de4d",
2832
- "summary": "Publish a Summer game on Summer Games through MCP: store page, art, build upload, submit, and one approval link for the owner.",
2881
+ "content_hash": "16c397ca30880eeb78222eae48951a7438702842f0947485a98df0dc61290b1d",
2882
+ "summary": "Publish a game on Summer Games through MCP: store page, art, build upload, submit, owner approval link.",
2833
2883
  "use_when": [
2834
2884
  "the user says 'publish my game', 'put it on summer.games', 'launch it on the store' or 'submit it for review'",
2835
- "taking a built Summer game to a submitted store page: listing text, art, build upload, summer_store_submit and the owner's approval link",
2836
- "an agent publishes for the owner end to end and needs the order of the summer_store_* and summer_build_* tools"
2885
+ "taking a built Summer game to a submitted store page: listing text, art, build upload, store.publish and the owner's approval link",
2886
+ "an agent publishes for the owner end to end and needs the order of the store.* operations"
2837
2887
  ],
2838
2888
  "facets": {
2839
2889
  "lifecycle": [
@@ -2863,7 +2913,7 @@
2863
2913
  "id": "skill/realtime-wet-surfaces",
2864
2914
  "kind": "skill",
2865
2915
  "version": "0.1.1",
2866
- "content_hash": "975781c2da63e650f89125455559847347e56a2741547db7cd77db0143536db4",
2916
+ "content_hash": "a6027d8277919a5e19571101dd451aac8018e69faf2acced6ac97cb943084c0d",
2867
2917
  "summary": "Real-time wetness on existing materials without losing their values — value-copying wet shader, geometry-driven wet mask, instance-uniform wet amount.",
2868
2918
  "use_when": [
2869
2919
  "make surfaces look wet when it rains and dry off afterwards",
@@ -2900,8 +2950,8 @@
2900
2950
  "id": "skill/release-readiness",
2901
2951
  "kind": "skill",
2902
2952
  "version": "1.0.0",
2903
- "content_hash": "229b468ac0f85c84e55c5cb952dd1e3fcbc8e8c8d1ebe7aca1919199d5b6090e",
2904
- "summary": "Before releasing a Summer game version, prove players can play it: server scene, online join, progress, Game ID, released Summer, packed files, app version.",
2953
+ "content_hash": "c195bfe252ad5a34bebc5f0bf0b1a932afe59411c279e1dc53c58630ecb07395",
2954
+ "summary": "Before releasing a Summer game version, prove players can play it: server, online join, progress, files.",
2905
2955
  "use_when": [
2906
2956
  "before uploading, promoting or releasing a new version to players: is it ready to release",
2907
2957
  "every online join fails with world_start_timeout, or the hosted server's log is empty, while Local Play works",
@@ -2951,8 +3001,8 @@
2951
3001
  "id": "skill/remote-deploy",
2952
3002
  "kind": "skill",
2953
3003
  "version": "1.0.2",
2954
- "content_hash": "9691ff133681cdab3d1f662978c3d92bd55b4a256a27f23eadf997f6f6b183cb",
2955
- "summary": "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.",
3004
+ "content_hash": "d04396c8e986d1033b5afafbc12eac3ac1f7383e9cfd3115892229edbaa6f92b",
3005
+ "summary": "Run or test the game on a real phone, tablet or computer with Remote Deploy and on-device debugging.",
2956
3006
  "use_when": [
2957
3007
  "the user wants to run or test the game on a real target instead of the editor — a phone, tablet, or another computer",
2958
3008
  "the Remote Deploy button is greyed out and the user wants to know why"
@@ -2979,8 +3029,8 @@
2979
3029
  "id": "skill/retarget",
2980
3030
  "kind": "skill",
2981
3031
  "version": "1.0.3",
2982
- "content_hash": "381b0916a73b07ad92b60afa318b9ca80c60f42c41cf76f3490900f29ad1086d",
2983
- "summary": "Apply existing animation clips from one rigged character to a different rigged character — same library, multiple models, no regeneration.",
3032
+ "content_hash": "337f3f0dbe2ed59dab474c2a21966aa5e6610c38818e7438ca6afc70b8be1d23",
3033
+ "summary": "Apply animation clips from one rigged character to another: one clip library, many models.",
2984
3034
  "use_when": [
2985
3035
  "applying existing animation clips from one rigged character to a different rigged character — sharing one animation library across models",
2986
3036
  "the same clips must play on several differently proportioned rigs without regenerating them"
@@ -3019,8 +3069,8 @@
3019
3069
  "id": "skill/running-in-the-cloud",
3020
3070
  "kind": "skill",
3021
3071
  "version": "1.0.3",
3022
- "content_hash": "91b995139cbea3766099c8662ce3c122e46658b11ba216dd09dcacc2b842b13b",
3023
- "summary": "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.",
3072
+ "content_hash": "f5d2434aa841e4c5f62e320ff3fd11ce3c759a045e6b1717ce027c02a7f503a5",
3073
+ "summary": "Run Summer Engine on a Linux box with no display: install, launch headless, xvfb, sign in without a browser.",
3024
3074
  "use_when": [
3025
3075
  "Summer Engine runs in a cloud container, CI job, remote agent sandbox, or any Linux machine with no desktop",
3026
3076
  "installing the engine on Linux, or a tool reports \"engine not running\" in an environment that has no display",
@@ -3056,8 +3106,8 @@
3056
3106
  "id": "skill/save-load",
3057
3107
  "kind": "skill",
3058
3108
  "version": "1.0.0",
3059
- "content_hash": "2435b5bfa043c8615accb4eec56c674f57857eec7948a5249e7c51c964d2497f",
3060
- "summary": "Persist game state in Summer Engine: user:// paths, JSON progress vs ConfigFile settings, a versioned save schema with migration, autosave hooks.",
3109
+ "content_hash": "5fe9e7e42d149c57509d0d924b8a4120c112aa0ca30f63bc95b144cb1091d5d4",
3110
+ "summary": "Save and load game state: user:// paths, JSON progress vs ConfigFile settings, versioned saves, autosave.",
3061
3111
  "use_when": [
3062
3112
  "persisting progress, settings, high scores, checkpoints, or save slots",
3063
3113
  "deciding between JSON and ConfigFile for a save or settings file",
@@ -3092,8 +3142,8 @@
3092
3142
  "id": "skill/scene-composition",
3093
3143
  "kind": "skill",
3094
3144
  "version": "1.0.3",
3095
- "content_hash": "d43d2bbc348949a445008e967aa92845b33976429deba817dac26f7e4c2db0b3",
3096
- "summary": "Scene structure conventions — node hierarchy, when to extract sub-scenes, reusable prefab patterns, and instance-versus-add-node decisions.",
3145
+ "content_hash": "bd2220bf58140f028bc757485f9394ae77042bd0e686d4fb11ee7d03db433982",
3146
+ "summary": "Scene structure: node hierarchy, when to extract sub-scenes, reusable prefabs, instance vs add node.",
3097
3147
  "use_when": [
3098
3148
  "building or organizing Summer Engine scenes: node hierarchy conventions, sub-scene extraction, prefab patterns, PackedScene decisions",
3099
3149
  "deciding whether to extract a sub-scene, instance a prefab, or add nodes inline as a scene grows"
@@ -3126,8 +3176,8 @@
3126
3176
  "id": "skill/scene-hierarchy-design",
3127
3177
  "kind": "skill",
3128
3178
  "version": "0.1.1",
3129
- "content_hash": "288acf3a2c2e66562a0cc5ce24e81277640951a6ad0766de1516a418889f737d",
3130
- "summary": "Structure Summer Engine scenes by access pattern — asset vs live hierarchies, wrapper nodes per operation, sub-scenes for reuse, path-agnostic logic.",
3179
+ "content_hash": "15e7ef93d879c13aae8e06464beade897f148374eb006f99c440553e9d45255b",
3180
+ "summary": "Structure scenes by access pattern: asset vs live hierarchies, wrapper nodes, sub-scenes, path-agnostic code.",
3131
3181
  "use_when": [
3132
3182
  "how should I structure the node hierarchy for this level or character",
3133
3183
  "reorganize a scene that grew ad hoc — long node chains, duplicated clusters, hard-to-delete groups",
@@ -3162,9 +3212,9 @@
3162
3212
  {
3163
3213
  "id": "skill/scene-scripting",
3164
3214
  "kind": "skill",
3165
- "version": "1.1.1",
3166
- "content_hash": "f1aa667b0e0547b3fd3747070b14b26c5482dcd52aab9e8084b3a53b9dc52870",
3167
- "summary": "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.",
3215
+ "version": "1.2.0",
3216
+ "content_hash": "2199eb7e7bafb79b35df51476098e2a920588496a0418f18fdcf8acabfc361f3",
3217
+ "summary": "Build scenes, levels, HUDs and wiring with one editor GDScript (summer_run_script) instead of call chains.",
3168
3218
  "use_when": [
3169
3219
  "a scene change needs 3+ related ops or any computed placement — scattering, grids, rings, procedural meshes, geometry helpers, terrain, lighting rigs, keyframe animation, shader FX",
3170
3220
  "a 2D level (tilemap paint, bodies, camera limits, parallax), an animated sprite, a HUD or Control tree, a persisted signal connection, an attached script, a prefab, input actions, an autoload, or the main scene should be built in one script",
@@ -3218,15 +3268,15 @@
3218
3268
  "template/2d-platformer"
3219
3269
  ]
3220
3270
  },
3221
- "status": "preview",
3271
+ "status": "stable",
3222
3272
  "recommended": true
3223
3273
  },
3224
3274
  {
3225
3275
  "id": "skill/scene-to-level",
3226
3276
  "kind": "skill",
3227
3277
  "version": "1.0.3",
3228
- "content_hash": "3ab5070dececd1052e7d11c08cf7be47df5cc4abf73c06142c92cc56ca53cb17",
3229
- "summary": "Go from a scene reference image or concept art to a playable scene — orchestrates concept, asset pack, terrain, composition, and scene assembly.",
3278
+ "content_hash": "9bc09ebddf9499870c1c749cf809ec50ad262e78dfd77f82a9849d7186203cf9",
3279
+ "summary": "Turn a reference image or concept art into a playable scene: concept, asset pack, terrain, assembly.",
3230
3280
  "use_when": [
3231
3281
  "going from a scene reference image or concept art to a playable Summer Engine scene populated with the right assets and terrain",
3232
3282
  "the user shares concept art or a reference screenshot and wants that location built as a playable scene"
@@ -3266,7 +3316,7 @@
3266
3316
  "id": "skill/skill-create",
3267
3317
  "kind": "skill",
3268
3318
  "version": "1.0.3",
3269
- "content_hash": "1b33e1b26d2611d3402270584da4c56f9ba15abe694b9941d4016aad3995d341",
3319
+ "content_hash": "80588283f761fc20a46ee6129d42c204d33ef3276c73ec7d7649fac63ca5a214",
3270
3320
  "summary": "Bootstrap a new Summer library skill (library/skills/<slug>/ with resource.yaml and SKILL.md), frontmatter, and stub sections.",
3271
3321
  "use_when": [
3272
3322
  "a contributor wants to add a new skill to the Summer library",
@@ -3299,7 +3349,7 @@
3299
3349
  "id": "skill/skill-improve",
3300
3350
  "kind": "skill",
3301
3351
  "version": "1.0.3",
3302
- "content_hash": "b650b10657506ffad2b47915da66dd68406c4aa2dc2d372d9a2eda9197daefe5",
3352
+ "content_hash": "83ab327f35e16952df167e8b1b51dd924e26c199aa3dec2e4efc5334d12a0a44",
3303
3353
  "summary": "Upgrade an underperforming Summer skill — run it against a behavioral spec with and without changes via a parallel-eval harness; ship the winner.",
3304
3354
  "use_when": [
3305
3355
  "a contributor wants to upgrade a Summer skill that is underperforming or to fix a regression",
@@ -3332,7 +3382,7 @@
3332
3382
  "id": "skill/skill-test",
3333
3383
  "kind": "skill",
3334
3384
  "version": "1.0.4",
3335
- "content_hash": "178c147318078a7278242ee68b0e3e95c1e5884758bbb0c96f2e47fd75dbe53f",
3385
+ "content_hash": "c99adb195eb9f44d1e913520b93a95079f00e466ed7e062bc8082de96e90d3b5",
3336
3386
  "summary": "Lint a Summer skill before commit, audit the whole library, or check a behavioral spec assertion — static structural rules plus behavioral specs.",
3337
3387
  "use_when": [
3338
3388
  "a contributor wants to lint a Summer skill before commit, audit the whole library, or check a behavioral spec assertion",
@@ -3366,7 +3416,7 @@
3366
3416
  "id": "skill/skintokens-auto-rigging",
3367
3417
  "kind": "skill",
3368
3418
  "version": "0.1.1",
3369
- "content_hash": "2a9a8cf21dfa35fefc735496ad0dd96f07115d2f23c2e7642f8a1f681096e610",
3419
+ "content_hash": "ae61c1f76bed428a73412e25b9fcc0795b59b1129236c8dfa7abbc93acb9df03",
3370
3420
  "summary": "Offline auto-rigging with skin-tokens.cpp (GGML SkinTokens/TokenRig port) — skeleton and skin weights from a static GLB mesh on CPU/Vulkan, into Summer Engine.",
3371
3421
  "use_when": [
3372
3422
  "auto-rig this static GLB mesh so I can animate it",
@@ -3405,8 +3455,8 @@
3405
3455
  "id": "skill/skybox-panorama",
3406
3456
  "kind": "skill",
3407
3457
  "version": "1.0.3",
3408
- "content_hash": "2fa5eb148d8907b64368769738de5dfb2baed0165eb1a0c3ee761a8594092cda",
3409
- "summary": "Generate a 360-degree equirectangular sky panorama and wire it as a PanoramaSkyMaterial Sky resource on WorldEnvironment in a 3D scene.",
3458
+ "content_hash": "f5a55b1c508a58938615f686b4c843d008854a48562849fbff4aaee5453f2694",
3459
+ "summary": "Generate a 360-degree sky panorama and wire it as a PanoramaSkyMaterial Sky resource on WorldEnvironment.",
3410
3460
  "use_when": [
3411
3461
  "generating a 360-degree panoramic sky image for use as a Sky resource (PanoramaSkyMaterial) in a 3D scene",
3412
3462
  "a 3D scene has a flat or default sky and needs a 360-degree backdrop matching the art direction"
@@ -3440,8 +3490,8 @@
3440
3490
  "id": "skill/sound-effect",
3441
3491
  "kind": "skill",
3442
3492
  "version": "1.1.0",
3443
- "content_hash": "4ea1cf55a48cf8e4670018c9a7b858e970acb3852b3e0023bade97e408c8eb08",
3444
- "summary": "Make SFX one-shots and timed sequences (swings, hits, whooshes, reloads, UI) - offer three model versions to pick from, then wire them as AudioStreamPlayers.",
3493
+ "content_hash": "ed90fdb591d7e1d0fb8fac6f278357e6342ac6de9d0f72f8cc130acbd63a1af7",
3494
+ "summary": "Make sound effects (swings, hits, whooshes, reloads, UI): three versions to pick from, then wire them.",
3445
3495
  "use_when": [
3446
3496
  "generating short SFX one-shots — footsteps, weapon swings, UI clicks, hit impacts, environmental cues",
3447
3497
  "an action, impact, or UI interaction is silent and needs a short one-shot sound wired to it",
@@ -3481,8 +3531,8 @@
3481
3531
  "id": "skill/spatial-placement",
3482
3532
  "kind": "skill",
3483
3533
  "version": "1.1.0",
3484
- "content_hash": "f7bb98ebb5ebfdf35a17f3bda9c652a7156257b3cdb9dd4c354578b330b9f6c1",
3485
- "summary": "Place 3D objects and modular kit pieces from measured geometry — inspect, place, starcast, measure, correct; floor, wall, facade, pipe and alcove recipes.",
3534
+ "content_hash": "1c0735c6145bd97e95163bd65b460e9780f9e57954366094956f3461a73cc9d2",
3535
+ "summary": "Place 3D objects and modular kit pieces from measured geometry: floors, walls, facades, pipes, alcoves.",
3486
3536
  "use_when": [
3487
3537
  "positioning a prop, character, collider, or platform so it sits flush, avoids overlap, or keeps clearance",
3488
3538
  "placing something against a wall, inside an alcove, or on a shelf and needing to know which side is blocked and by how much",
@@ -3541,8 +3591,8 @@
3541
3591
  "id": "skill/sprite-sheet",
3542
3592
  "kind": "skill",
3543
3593
  "version": "1.0.4",
3544
- "content_hash": "bb135a8fc2e5a3044ec68582696c7ea956339daa7fa3ffedb10c3e7f67baff8c",
3545
- "summary": "Generate animated 2D character sprites laid out as a sprite sheet — walk cycle, attack, idle, death — wired into AnimatedSprite2D / SpriteFrames.",
3594
+ "content_hash": "19345402d1981afb09cd48ea45bd52a19198f7dc197281fb5df90a3012c3d6ff",
3595
+ "summary": "Generate animated 2D character sprite sheets (walk, attack, idle, death) for AnimatedSprite2D.",
3546
3596
  "use_when": [
3547
3597
  "generating animated 2D character sprites laid out as a grid of frames — walk cycle, attack frames, idle bob, death sequence",
3548
3598
  "a 2D sprite needs its frames laid out as one grid image for AnimatedSprite2D or SpriteFrames"
@@ -3580,11 +3630,11 @@
3580
3630
  "id": "skill/store-art",
3581
3631
  "kind": "skill",
3582
3632
  "version": "1.0.0",
3583
- "content_hash": "70d6b7f61395a329958bdd0fb6abfaf8c829d6b287ef115d52db4b16184f42c3",
3584
- "summary": "Make Summer Games store art per slot and flow: key art, covers, icons, screenshots, trailer: size, shape, text rules, fallbacks.",
3633
+ "content_hash": "8a42f228c9b4c8974e2609bce57e6bc425f6b9fea1d12cd28eceb7f6f4b08efa",
3634
+ "summary": "Make Summer Games store art per slot: key art, covers, icons, screenshots, trailer, size and text rules.",
3585
3635
  "use_when": [
3586
3636
  "making or choosing store art for Summer Games: key art, cover, icon, screenshots, trailer",
3587
- "summer_store_set_art rejects an image for its shape or size, or summer_store_get_listing says an art slot is missing",
3637
+ "store.set_art rejects an image for its shape or size, or store.get_listing says an art slot is missing",
3588
3638
  "deciding whether a store image may carry text, and which slot falls back to which"
3589
3639
  ],
3590
3640
  "facets": {
@@ -3619,11 +3669,11 @@
3619
3669
  "id": "skill/store-listing",
3620
3670
  "kind": "skill",
3621
3671
  "version": "1.0.0",
3622
- "content_hash": "9a0556424d7a4573e0163ecf47dfb0becd1fee32177eb122c606fc2145968a10",
3623
- "summary": "Write a Summer Games store page per flow (desktop, mobile): targets, title, tagline, descriptions, tags, and what never to write.",
3672
+ "content_hash": "65aa999ac215f155f3fe616230bf8430c947e688f0fa5b84d031764ef2345449",
3673
+ "summary": "Write a Summer Games store page: title, tagline, descriptions, tags, per platform, and what never to write.",
3624
3674
  "use_when": [
3625
3675
  "writing or fixing a game's store page text on Summer Games: title, tagline, description, tags",
3626
- "summer_store_update_listing or summer_store_get_listing says a text field is missing or wrong",
3676
+ "store.update_listing or store.get_listing says a text field is missing or wrong",
3627
3677
  "choosing the targets (web, Mac, Windows, Linux, iPhone, Android) that decide the desktop and mobile store flows"
3628
3678
  ],
3629
3679
  "facets": {
@@ -3651,8 +3701,8 @@
3651
3701
  {
3652
3702
  "id": "skill/summer-analytics",
3653
3703
  "kind": "skill",
3654
- "version": "1.0.0",
3655
- "content_hash": "175f19b54e39a94350342e5c72255c286a7e067ba215bbf7c3de54b03cfda2d0",
3704
+ "version": "1.0.1",
3705
+ "content_hash": "e7b2af31a848ee6442e36dbf686910c3d1a0866e5755a8c968c651fedf8d2d6a",
3656
3706
  "summary": "Send game events to Summer analytics from the authority or client: fire-and-forget, never blocking gameplay.",
3657
3707
  "use_when": [
3658
3708
  "adding analytics, telemetry or event tracking to a Summer game: level completed, coin collected, tutorial funnel",
@@ -3683,7 +3733,128 @@
3683
3733
  "skill/grow-analytics"
3684
3734
  ]
3685
3735
  },
3736
+ "status": "stable",
3737
+ "recommended": false
3738
+ },
3739
+ {
3740
+ "id": "skill/summer-apps",
3741
+ "kind": "skill",
3742
+ "version": "0.1.0",
3743
+ "content_hash": "498860c0c7ea881ab78a71299a8788b7dc4976a590309217f796cc82618f8c6d",
3744
+ "summary": "Build a Summer App, a team tool inside Summer Studio (balance table, quest editor, tracker), data and tools.",
3745
+ "use_when": [
3746
+ "the person asks for a tool for their team (\"build us a loot balance tool\", \"a board to track creatures\")",
3747
+ "the person needs a UI to decide, rate or edit something they will come back to",
3748
+ "reading or changing the data of an existing Summer App",
3749
+ "calling an app's agent tools or waiting for what an app sends"
3750
+ ],
3751
+ "facets": {
3752
+ "lifecycle": [
3753
+ "build"
3754
+ ],
3755
+ "domains": [
3756
+ "tools",
3757
+ "ui",
3758
+ "agent-workflow"
3759
+ ],
3760
+ "modalities": [
3761
+ "ui",
3762
+ "docs"
3763
+ ]
3764
+ },
3765
+ "compatibility": {
3766
+ "engine": ">=4.6"
3767
+ },
3768
+ "related": {
3769
+ "skills": [
3770
+ "skill/summer-apps-design"
3771
+ ],
3772
+ "tools": [
3773
+ "tool/app-guide",
3774
+ "tool/app-create",
3775
+ "tool/app-publish",
3776
+ "tool/app-events",
3777
+ "tool/app-data",
3778
+ "tool/app-call",
3779
+ "tool/app-dock"
3780
+ ]
3781
+ },
3782
+ "status": "preview",
3783
+ "recommended": true
3784
+ },
3785
+ {
3786
+ "id": "skill/summer-apps-design",
3787
+ "kind": "skill",
3788
+ "version": "0.1.0",
3789
+ "content_hash": "794c4b5265513560fbd70fa81f79d1722f21b2e9a78f9c1c95f25edd28fdaedf",
3790
+ "summary": "How a Summer App should look: layout, Summer UI kit components, tables, charts, states, pre-ship check.",
3791
+ "use_when": [
3792
+ "building or changing the UI of a Summer App (agent-built team tool inside Summer Studio)",
3793
+ "an app looks generic, cluttered or off-brand",
3794
+ "choosing layout for a table, chart, board, pick grid or settings tool"
3795
+ ],
3796
+ "facets": {
3797
+ "lifecycle": [
3798
+ "build"
3799
+ ],
3800
+ "domains": [
3801
+ "ui",
3802
+ "tools"
3803
+ ],
3804
+ "modalities": [
3805
+ "docs"
3806
+ ]
3807
+ },
3808
+ "related": {
3809
+ "skills": [
3810
+ "skill/summer-apps"
3811
+ ]
3812
+ },
3686
3813
  "status": "preview",
3814
+ "recommended": true
3815
+ },
3816
+ {
3817
+ "id": "skill/summer-assets",
3818
+ "kind": "skill",
3819
+ "version": "1.0.0",
3820
+ "content_hash": "f07a0a80d3db32d6f872946cda7d64624eb6a11f7a193b54d47eff210bd87826",
3821
+ "summary": "Make game assets with Summer without Summer Engine: find, generate and download 3D models, images, audio and video for any engine or web app.",
3822
+ "use_when": [
3823
+ "starting a session that has the Summer assets profile (generation tools, no engine tools)",
3824
+ "the person wants assets for their own engine or web app, not a game built in Summer Engine",
3825
+ "an asset skill ends with Summer Engine steps that this session cannot run"
3826
+ ],
3827
+ "facets": {
3828
+ "lifecycle": [
3829
+ "build"
3830
+ ],
3831
+ "domains": [
3832
+ "assets",
3833
+ "agent-workflow"
3834
+ ],
3835
+ "modalities": [
3836
+ "3d-models",
3837
+ "images",
3838
+ "audio",
3839
+ "video"
3840
+ ]
3841
+ },
3842
+ "related": {
3843
+ "tools": [
3844
+ "tool/search-assets",
3845
+ "tool/list-my-assets",
3846
+ "tool/check-job",
3847
+ "tool/get-asset",
3848
+ "tool/get-asset-download-url"
3849
+ ],
3850
+ "skills": [
3851
+ "skill/asset-strategy",
3852
+ "skill/sound-effect",
3853
+ "skill/prop-model",
3854
+ "skill/concept-art"
3855
+ ]
3856
+ },
3857
+ "status": "stable",
3687
3858
  "recommended": false
3688
3859
  },
3689
3860
  {
@@ -3926,7 +4097,7 @@
3926
4097
  "id": "skill/summer-store",
3927
4098
  "kind": "skill",
3928
4099
  "version": "1.0.0",
3929
- "content_hash": "39259d53de1975ddfa53322c6237c05117e01acd3a105af69e01e4d708c4ea71",
4100
+ "content_hash": "f9b117c35283d1dfa293bb050232f7f585a65b4e3f696a4b800c5bb13d73010e",
3930
4101
  "summary": "Sell Summer items for Sparks in a multiplayer game: shop, checkout, owned items, authority entitlement checks.",
3931
4102
  "use_when": [
3932
4103
  "adding a shop, in-game purchases, cosmetics or skins sold for Sparks to a Summer game",
@@ -4041,8 +4212,8 @@
4041
4212
  "id": "skill/text-to-motion",
4042
4213
  "kind": "skill",
4043
4214
  "version": "1.0.0",
4044
- "content_hash": "a53e8434cc60354b9d56e87de63bce8d4806b4250be10c20392f42599ded4203",
4045
- "summary": "Custom 2-second animation clips from text prompts on any of the user's own rigged models — humanoids, animals, creatures, cartoon plants, props.",
4215
+ "content_hash": "39f8bbfa590e3627c403e98361c69337db6d467c44223b38e70cfdbb6423f961",
4216
+ "summary": "Make custom 2-second animation clips from text on the user's own rigged models: people, animals, props.",
4046
4217
  "use_when": [
4047
4218
  "a custom action the curated motion library lacks — nod, bow, shrug, wave with a specific arm, an emotional gesture",
4048
4219
  "animating a non-humanoid rig — a talking flower, animal, creature, turret or prop",
@@ -4085,8 +4256,8 @@
4085
4256
  "id": "skill/tileable-texture",
4086
4257
  "kind": "skill",
4087
4258
  "version": "1.0.4",
4088
- "content_hash": "8785dadfd93093c2bd2370474704cd8865721a694a2b4406b4556f4bca8b835c",
4089
- "summary": "Generate a seamless tileable texture for walls, floors, or terrain — repeats cleanly on all four edges, wired as a StandardMaterial3D albedo.",
4259
+ "content_hash": "63da23ba0b24335f9d4dd743e99ea7f1ce0579812f96a3f3524fa9442ccdd4e5",
4260
+ "summary": "Generate a seamless tileable texture for walls, floors or terrain, wired as a StandardMaterial3D albedo.",
4090
4261
  "use_when": [
4091
4262
  "generating a seamless tileable texture for walls, floors, terrain, or ceilings — a square tile that repeats cleanly on all four edges",
4092
4263
  "a wall, floor, or terrain material shows visible seams or repetition and needs a texture that tiles cleanly"
@@ -4123,8 +4294,8 @@
4123
4294
  "id": "skill/trailer-shot",
4124
4295
  "kind": "skill",
4125
4296
  "version": "1.0.4",
4126
- "content_hash": "5a52a9b984a63acc6435b7f82bc64d12402b764f784b389ca4dd8f04ee2b405e",
4127
- "summary": "Generate marketing or trailer footage — slow-mo combat, establishing shots, hero beats, splash screens, pitch-deck B-roll — max punch in 5-10 seconds.",
4297
+ "content_hash": "05788bfeb227daf1ae0efb821037cbf23a04670ed61fcf932695186899f32dca",
4298
+ "summary": "Generate trailer footage: slow-mo combat, establishing shots, hero beats, splash screens, 5-10 seconds.",
4128
4299
  "use_when": [
4129
4300
  "generating marketing or trailer footage — slow-mo combat, dramatic establishing shots, hero beats, splash screens, pitch-deck B-roll",
4130
4301
  "producing a store page, pitch deck, or social clip that shows the game at its most dramatic in seconds"
@@ -4157,8 +4328,8 @@
4157
4328
  "id": "skill/tune-performance",
4158
4329
  "kind": "skill",
4159
4330
  "version": "1.0.3",
4160
- "content_hash": "7b8de236e454cf673d6420cb152c04a3b81361d7011263dd0ce0d415cdc85da9",
4161
- "summary": "Profile a slow game with a measurement probe, identify rendering/physics/scripting hotspots, propose fixes with before/after metric expectations.",
4331
+ "content_hash": "7daf6e7ceb4772d9af925ffda61f3aeebf135d67c96046720fe29c2ceab0d519",
4332
+ "summary": "Profile a slow game, find rendering, physics or script hotspots, and propose fixes with expected gains.",
4162
4333
  "use_when": [
4163
4334
  "the game is slow, drops framerate, stutters, takes forever to start, or runs poorly on specific hardware",
4164
4335
  "fps drops or stutter when many units, projectiles, or particles spawn at once and the hotspot is unknown"
@@ -4195,8 +4366,8 @@
4195
4366
  "id": "skill/ui-basics",
4196
4367
  "kind": "skill",
4197
4368
  "version": "1.0.3",
4198
- "content_hash": "76793a56f9517ec7fb20d705ab8584955cad3e3c827a54a26220f87afde343a3",
4199
- "summary": "Build Summer Engine UI — HUDs, menus, health bars, dialogue boxes, Control trees — anchors, containers, responsive layout, theme vs inline styling.",
4369
+ "content_hash": "dc82d24a806416b8a558ec478c0d3fa833f431b73cb4924ee6942176cf4dafee",
4370
+ "summary": "Build UI: HUDs, menus, health bars, dialogue boxes, Control trees, anchors, containers and themes.",
4200
4371
  "use_when": [
4201
4372
  "building Summer Engine UI: HUDs, main menus, pause menus, health bars, progress bars, dialogue boxes, or any Control-node tree",
4202
4373
  "laying out a pause menu, settings screen, or inventory panel with anchors and containers so it stays responsive",
@@ -4225,8 +4396,8 @@
4225
4396
  "id": "skill/ui-graphics",
4226
4397
  "kind": "skill",
4227
4398
  "version": "1.0.3",
4228
- "content_hash": "12b228e15fb4d145b88387a5c1cb5195c271b6a7aaa1ac7071b500716605d817",
4229
- "summary": "Generate game-UI elements — icons, buttons, panels, frames, HUD widgets, badges — flat design, transparent background, wired via TextureRect/NinePatchRect.",
4399
+ "content_hash": "50a4c44163431ccabb1984634b982bd837b7e149c3f4eccab08f2fcbacd796ea",
4400
+ "summary": "Generate game UI art (icons, buttons, panels, frames, HUD widgets) flat, on a transparent background.",
4230
4401
  "use_when": [
4231
4402
  "generating UI elements — icons, buttons, panels, frames, HUD widgets, badges — in flat-design, transparent-background game-UI style",
4232
4403
  "a HUD still uses placeholder icons, buttons, or panels and needs consistent flat-design art"
@@ -4261,8 +4432,8 @@
4261
4432
  "id": "skill/use-widget-asset",
4262
4433
  "kind": "skill",
4263
4434
  "version": "1.0.3",
4264
- "content_hash": "ce8e4abcbcb8f2854e340c6fdf1f8c41fb25c12f703bbf113bd82b54b54f4a76",
4265
- "summary": "Wire a widget slice from a create-asset-sheet pack (panel, button, slider, bar, toggle) into NinePatchRect, TextureProgressBar, or TextureRect via sliceMeta.",
4435
+ "content_hash": "2e7ee38607a85f4cc7166a4df3c8104da92ac4230749262d6ff30977ae8e47fc",
4436
+ "summary": "Wire a widget slice from an asset pack (panel, button, bar, toggle) into NinePatchRect or TextureRect.",
4266
4437
  "use_when": [
4267
4438
  "consuming a widget slice (panel, button, slider, progress bar, toggle pair) from a create-asset-sheet pack so it behaves like a real UI control",
4268
4439
  "turning a panel, button, slider, or bar slice from a generated UI kit into a working NinePatchRect or TextureProgressBar"
@@ -4298,8 +4469,8 @@
4298
4469
  "id": "skill/using-summer",
4299
4470
  "kind": "skill",
4300
4471
  "version": "1.0.5",
4301
- "content_hash": "8051cc6e1cc6135796ba91daf32d205ddbbef202a80fddabf8623a1dcbb1914e",
4302
- "summary": "Session bootstrap for Summer projects — establishes how to find and use Summer skills and the summer-engine MCP before any response.",
4472
+ "content_hash": "ae1f6af52ab89886d2515f438ef908956a8a115ebc2a333439ba240ce7834999",
4473
+ "summary": "Session bootstrap: how to find and use Summer skills and the summer-engine MCP before any response.",
4303
4474
  "use_when": [
4304
4475
  "starting any conversation in a Summer Engine project",
4305
4476
  "deciding which Summer skill or summer_* tool applies before answering a game-development request"
@@ -4345,8 +4516,8 @@
4345
4516
  "id": "skill/vehicle-model",
4346
4517
  "kind": "skill",
4347
4518
  "version": "1.0.3",
4348
- "content_hash": "e025a4a073a0d26fb4a92f91ad25c0321daf921bd10acc82e0e3c2c82ac3db38",
4349
- "summary": "Generate a hard-surface vehicle — car, spaceship, mech, boat, tank — static mesh with optional detail-texture pass, wired as VehicleBody3D or MeshInstance3D.",
4519
+ "content_hash": "b6b507995e88a25e3bd0b2d08eceb0503fa610792d451247b3a8d15ecd9da8dc",
4520
+ "summary": "Generate a hard-surface vehicle (car, spaceship, mech, boat, tank) as a static or VehicleBody3D mesh.",
4350
4521
  "use_when": [
4351
4522
  "generating a hard-surface vehicle — car, motorcycle, spaceship, hover bike, boat, mech, tank, helicopter",
4352
4523
  "a racing, flying, or combat game needs a hard-surface vehicle mesh as a VehicleBody3D or MeshInstance3D"
@@ -4386,8 +4557,8 @@
4386
4557
  "id": "skill/verification-before-completion",
4387
4558
  "kind": "skill",
4388
4559
  "version": "1.0.3",
4389
- "content_hash": "3dd6c5a447148c8c8c65619a864bee28873e27992bb6140f181bf7016cbe7a0d",
4390
- "summary": "Run verification commands and confirm output before claiming work complete, fixed, or passing — evidence before assertions, always.",
4560
+ "content_hash": "b444a21783373c546062acb140c6234b42361c4576f6acb73d594e9288465d00",
4561
+ "summary": "Run verification and read its output before claiming work done, fixed or passing: evidence first.",
4391
4562
  "use_when": [
4392
4563
  "about to claim work is complete, fixed, or passing, before committing or creating PRs",
4393
4564
  "about to report a test, build, or fix as passing without having run the command and read its output"
@@ -4414,8 +4585,8 @@
4414
4585
  "id": "skill/verifying-scenes",
4415
4586
  "kind": "skill",
4416
4587
  "version": "1.5.0",
4417
- "content_hash": "ba03998253f61ed6a4ea7a0e21c2a9a04a52ae6e8f8879b8b38ce09abd56a2bf",
4418
- "summary": "Prove scene work landed (snapshot, diff, screenshots, runtime reads), audit 3D scenes for holes and misplacement, review them with shot sheets and zooms.",
4588
+ "content_hash": "0ba9d1be6058436fac423b75d3030cdc104d772919df25f8f792cf7048b44c2b",
4589
+ "summary": "Prove scene work landed: snapshot, diff, screenshots, runtime reads, 3D audits, shot sheets and zooms.",
4419
4590
  "use_when": [
4420
4591
  "after any mutation batch, asset import, or lighting change, before claiming it worked",
4421
4592
  "during a playtest, to read live runtime state (spawned nodes, actual stats) without stopping the game",
@@ -4473,8 +4644,8 @@
4473
4644
  "id": "skill/vfx-dissolve",
4474
4645
  "kind": "skill",
4475
4646
  "version": "1.0.3",
4476
- "content_hash": "5f085214d427708abf45c48e4adcee6576d85a1f99281502354cadb66e312150",
4477
- "summary": "Dissolve effect — a mesh disintegrating with a glowing burning edge, driven by a noise-threshold ShaderMaterial overriding the target's material.",
4647
+ "content_hash": "48ccfce786a518356738dbe3affbe9ba20552f650d9fa7d5801c47b44013bcbc",
4648
+ "summary": "Dissolve effect: a mesh burns away with a glowing edge, from a noise-threshold ShaderMaterial.",
4478
4649
  "use_when": [
4479
4650
  "authoring a dissolve effect — an object disintegrating with a glowing burning edge (disintegrate, burn away, vanish into ash)",
4480
4651
  "a defeated unit, teleport exit, or removed object should burn away with a glowing edge instead of vanishing"
@@ -4512,8 +4683,8 @@
4512
4683
  "id": "skill/vfx-fire",
4513
4684
  "kind": "skill",
4514
4685
  "version": "1.0.3",
4515
- "content_hash": "503ac3cfe7e7b1f73624cd5c11645b1f629a86fd8393e6d4ee7a779aa23edc12",
4516
- "summary": "Fire effect — animated flames built with a particle shader, GPUParticles3D, and a noise-based color ramp — torches, campfires, candles.",
4686
+ "content_hash": "ddd13584921c84ace9b768013974163ba45e01f4c5025506adc03d4523774215",
4687
+ "summary": "Fire effect: animated flames from GPUParticles3D, a particle shader and a noise color ramp.",
4517
4688
  "use_when": [
4518
4689
  "authoring a fire visual effect — torch, campfire, bonfire, flame, burning object, candle",
4519
4690
  "adding fire to props, hazards, or projectiles — torches, braziers, burning wreckage, a fireball or flame jet"
@@ -4553,8 +4724,8 @@
4553
4724
  "id": "skill/vfx-hit-spark",
4554
4725
  "kind": "skill",
4555
4726
  "version": "1.0.2",
4556
- "content_hash": "0b4f46bc6ff5ecbaec05ee1116c7d4c7e196037bbef17f284bbc274601fc05e0",
4557
- "summary": "Hit-spark effect — a one-shot burst of additive billboard particles oriented to a surface normal, fired on impact.",
4727
+ "content_hash": "7b6a5bb0c04124490cfe2d347a59344ac557cc9cf72d43f63df5f4fd3b8e55dc",
4728
+ "summary": "Hit-spark effect: a one-shot burst of additive particles oriented to the surface, fired on impact.",
4558
4729
  "use_when": [
4559
4730
  "authoring a hit-spark effect — impact spark, bullet hit, sword clash, ricochet, sparks at a hit point",
4560
4731
  "melee hits, bullet impacts, or ricochets have no visual feedback at the contact point"
@@ -4593,8 +4764,8 @@
4593
4764
  "id": "skill/vfx-lightning",
4594
4765
  "kind": "skill",
4595
4766
  "version": "1.0.3",
4596
- "content_hash": "5ca8f7119a1db0d6f719fa2379d2c5503f8bff574c2259b1ef7903888e668773",
4597
- "summary": "Lightning bolt effect — procedural jagged path drawn via ImmediateMesh, glow shader, sparks at endpoints, screen shake.",
4767
+ "content_hash": "6c46cb80d126ab3e2056b8c0d82b484d13191ffd7361d863604fa688f49b4ab5",
4768
+ "summary": "Lightning bolt effect: a jagged procedural path with a glow shader, end sparks and screen shake.",
4598
4769
  "use_when": [
4599
4770
  "authoring a lightning bolt effect — chain lightning, electric attack, tesla coil, shock spell, energy beam",
4600
4771
  "a spell, weapon, or hazard needs a jagged electric arc with glow, endpoint sparks, and camera shake"
@@ -4632,8 +4803,8 @@
4632
4803
  "id": "skill/vfx-magic-glow",
4633
4804
  "kind": "skill",
4634
4805
  "version": "1.0.2",
4635
- "content_hash": "a944ff77e589932f6b7569d0d441db72877ff16b44aee88a1dc64d124740414e",
4636
- "summary": "Magic-glow effect — a pulsing OmniLight3D plus drifting additive motes plus optional emission shader on the source mesh.",
4806
+ "content_hash": "fa58ec2a58f7717d4ad9ebd79283d5e04ad017ab6baf48cda640e8aeddb7280b",
4807
+ "summary": "Magic-glow effect: a pulsing OmniLight3D, drifting additive motes and an optional emission shader.",
4637
4808
  "use_when": [
4638
4809
  "authoring a magic-glow effect — enchanted item, soul gem, pulsing aura, rune glow, magical orb, wisp",
4639
4810
  "an item, altar, or portal should read as magical or important with a pulsing light and drifting motes"
@@ -4672,8 +4843,8 @@
4672
4843
  "id": "skill/vfx-muzzle-flash",
4673
4844
  "kind": "skill",
4674
4845
  "version": "1.0.3",
4675
- "content_hash": "f34b6a807eb73ddfe7e10c87903db817eb2e9fb93425b9a91da4a5fb5a2ef7e1",
4676
- "summary": "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.",
4846
+ "content_hash": "02f88dcd291a2ab93195d540614e0205d2873a3d804cf11e5f1bb8ba153adadb",
4847
+ "summary": "Muzzle-flash effect: a one-shot ~80 ms burst at a gun barrel, from particles or a star-burst quad.",
4677
4848
  "use_when": [
4678
4849
  "authoring a muzzle-flash effect — gun fire, weapon flash, barrel flash, spell-cast burst at a hand",
4679
4850
  "a gun or spell-casting hand shoots with no visible flash at the barrel or palm"
@@ -4713,8 +4884,8 @@
4713
4884
  "id": "skill/vfx-smoke",
4714
4885
  "kind": "skill",
4715
4886
  "version": "1.0.2",
4716
- "content_hash": "9b0f8d7455e88ea572402c4a776c0432da0570971b547f6ff6f32a1f432b670b",
4717
- "summary": "Smoke effect — a slow-rising column or puff of soft particles built with a noise + density falloff shader on a quad mesh, GPUParticles3D.",
4887
+ "content_hash": "75c8d6040b6a07e903da01893a926a62cf5cb8deadbb0a4f901b8e79fb2243c7",
4888
+ "summary": "Smoke effect: a rising column or puff of soft particles with a noise and density falloff shader.",
4718
4889
  "use_when": [
4719
4890
  "authoring a smoke effect — smoke trail, puff, chimney smoke, steam, fog cloud, explosion smoke",
4720
4891
  "a chimney, campfire, explosion, or vent needs a rising smoke column or puff in a 3D scene"
@@ -4751,8 +4922,8 @@
4751
4922
  "id": "skill/vfx-water-ripple",
4752
4923
  "kind": "skill",
4753
4924
  "version": "1.0.2",
4754
- "content_hash": "691ef9e922dcf1f7f19af60d897515ffaf74452194f9ef22390d449b187ade7a",
4755
- "summary": "Water-ripple effect — animated normal-distortion ripples on a water plane (or as a Decal) triggered by impacts.",
4925
+ "content_hash": "71f0f3c1a8e54148fe35af8da2b8c996943380180ddab39b9aed2ccf2e12b1b3",
4926
+ "summary": "Water-ripple effect: animated normal-distortion ripples on a water plane or Decal, set off by impacts.",
4756
4927
  "use_when": [
4757
4928
  "authoring a water-ripple effect — raindrop ripples, splash ripples, footstep in a puddle, fish jumps",
4758
4929
  "rain, footsteps, or falling objects should disturb a water surface with spreading ripples"
@@ -4788,8 +4959,8 @@
4788
4959
  "id": "skill/voice-line",
4789
4960
  "kind": "skill",
4790
4961
  "version": "1.0.2",
4791
- "content_hash": "15a8ec556f8304a100c80dbb631787d2ec1e475de33aac69e8da84572a23d2da",
4792
- "summary": "Generate TTS voice lines — NPC barks, narrator, dialogue — with voice-id sourcing, a character-to-voice decision tree, and multi-line dialogue support.",
4962
+ "content_hash": "e11779cc132e1d95ab6a7cbc89796955547a4d06ba4a16df31de1b4c8a50192c",
4963
+ "summary": "Generate voice lines (NPC barks, narrator, dialogue) with a character-to-voice choice and multi-line support.",
4793
4964
  "use_when": [
4794
4965
  "\"the NPC needs a greeting / a bark / a narrator intro read aloud\"",
4795
4966
  "giving a character a voice that fits their personality (gruff, cheerful, robotic)",
@@ -4818,8 +4989,8 @@
4818
4989
  "id": "skill/web-and-touch-input",
4819
4990
  "kind": "skill",
4820
4991
  "version": "1.0.0",
4821
- "content_hash": "5a67ec23a03e1162725652d09af7458f47070e66e80040ef671eb22da334cbe8",
4822
- "summary": "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.",
4992
+ "content_hash": "b7e007e0ef2b844ce5ad23a0d3a726543bb0ecfc7a21ae0d69a14e9614f32a4d",
4993
+ "summary": "Browser and phone input: the first-click rule for sound and mouse capture, focus, touch buttons, a stick.",
4823
4994
  "use_when": [
4824
4995
  "the game plays in the browser and sound, mouse capture or keys do not work until something is clicked",
4825
4996
  "the game should be playable on a phone or tablet with touch controls",
@@ -4855,8 +5026,8 @@
4855
5026
  "id": "skill/web-compatibility-look",
4856
5027
  "kind": "skill",
4857
5028
  "version": "1.0.0",
4858
- "content_hash": "213186fd90b4a308419f271d7a6b3c38935ccb58dca918efa33ffdf90ce2b50f",
4859
- "summary": "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.",
5029
+ "content_hash": "5f22005f3d1fcf9de6b6d9ff2423adad33b3395ba7e11a86fd746afba6b4f647",
5030
+ "summary": "Make a browser game look high-end in the Compatibility renderer (WebGL 2): what works, recipes, speed.",
4860
5031
  "use_when": [
4861
5032
  "the game plays in the browser or is exported for the web and must look finished",
4862
5033
  "the look is flat, grey or default in the web preview, or a Forward+ feature does nothing there",
@@ -4895,8 +5066,8 @@
4895
5066
  "id": "skill/world-building-3d",
4896
5067
  "kind": "skill",
4897
5068
  "version": "1.1.1",
4898
- "content_hash": "d19a3fab5ca7228da025d609599525dc7350dc3ece21120864be9bb056cde453",
4899
- "summary": "Compose, ground, space, and validate 3D scenes with Summer's four bounded spatial tools — exact paths, one geometric decision at a time, verified.",
5069
+ "content_hash": "1e9a8a886b219f1969b83e99bd10288d65947ece79f378f260664b3e90d8b568",
5070
+ "summary": "Compose, ground and space 3D scenes with Summer's four spatial tools, one geometric decision at a time.",
4900
5071
  "use_when": [
4901
5072
  "placing or grounding props on floors, shelves, ramps, or tables without hand-tuning transforms",
4902
5073
  "aligning or evenly spacing a group of 3D objects along one world axis",
@@ -4972,7 +5143,7 @@
4972
5143
  "id": "skill/writing-skills",
4973
5144
  "kind": "skill",
4974
5145
  "version": "1.0.3",
4975
- "content_hash": "2669bbbf0d912f86deb9c03fee04f53d80f2d69cebb5e508039c18225f72f30f",
5146
+ "content_hash": "1cbc07d632d281f725f471de3f1d63b28c10b95e862b6d929fce4f985ef60713",
4976
5147
  "summary": "Create, edit, and verify agent skills — format, structure, testing with subagents, and best practices.",
4977
5148
  "use_when": [
4978
5149
  "creating new skills, editing existing skills, or verifying skills work before deployment",
@@ -5454,7 +5625,7 @@
5454
5625
  "id": "tool/add-node",
5455
5626
  "kind": "tool",
5456
5627
  "version": "1.0.2",
5457
- "content_hash": "7e0cfd6870d89b063d76ae5231852430dbf958f64a658d3fb6d13db2d95c8d50",
5628
+ "content_hash": "d9ca4203d9ccc0f041d578b89c2da644b89eff4c5782692c5fb611c51edc5016",
5458
5629
  "summary": "Add a node of any Godot type to an exact scene, which does not need to be the active editor tab.",
5459
5630
  "use_when": [
5460
5631
  "building out scene structure node by node",
@@ -5488,7 +5659,7 @@
5488
5659
  "id": "tool/align-distribute-3d",
5489
5660
  "kind": "tool",
5490
5661
  "version": "1.0.0",
5491
- "content_hash": "9323fc85f7fc846bef217f369f417d048a408767bbe2173613f09b0120d3bb02",
5662
+ "content_hash": "61bfc19c91dbe8b2e91e49caee6df5ca4794abe5a621a0a1d02a9ad6fbe120c4",
5492
5663
  "summary": "Align (min/center/max) or equal-space (centers/gaps) 2-16 ordered 3D subjects along one world axis from their visible AABBs, then save the scene.",
5493
5664
  "use_when": [
5494
5665
  "lining up props, stalls, pillars, or lights along one axis",
@@ -5578,199 +5749,187 @@
5578
5749
  }
5579
5750
  },
5580
5751
  {
5581
- "id": "tool/attach-to-surface",
5752
+ "id": "tool/app-call",
5582
5753
  "kind": "tool",
5583
5754
  "version": "1.0.0",
5584
- "content_hash": "e2207bbdab1a86f499382d89314fc48ea501080d814f15ffdfb9d06b47f047db",
5585
- "summary": "Mount a piece on a wall, ceiling or floor — turn its measured back into the surface found by a ray, keep it upright, seat it at a standoff. Saves the scene.",
5755
+ "content_hash": "590d3d36a5e234a39269e104fcc5cb7ad0a2a0ce940a56f11af28e1aef566712",
5756
+ "summary": "Run one of a Summer App's agent tools inside the person's open app.",
5586
5757
  "use_when": [
5587
- "mounting a downpipe, gutter, lamp, AC unit, sign or fire escape on a facade",
5588
- "turning a piece so its back faces a wall instead of guessing its rotation",
5589
- "seating a piece against a surface at an exact standoff"
5758
+ "\"nerf the bow using the balance formula in our app\"",
5759
+ "using logic that lives in an app (a balance formula, an export) while the app is open"
5590
5760
  ],
5591
5761
  "facets": {
5592
5762
  "lifecycle": [
5593
5763
  "build"
5594
5764
  ],
5595
5765
  "domains": [
5596
- "scenes",
5597
- "3d",
5598
- "world-building",
5599
- "level-design"
5600
- ],
5601
- "modalities": [
5602
- "scenes"
5766
+ "tools",
5767
+ "ui"
5603
5768
  ]
5604
5769
  },
5605
5770
  "compatibility": {
5606
5771
  "engine": ">=4.6"
5607
5772
  },
5608
5773
  "related": {
5609
- "tools": [
5610
- "tool/raycast",
5611
- "tool/snap-to-surface",
5612
- "tool/inspect-asset",
5613
- "tool/starcast"
5614
- ],
5615
5774
  "skills": [
5616
- "skill/spatial-placement"
5775
+ "skill/summer-apps"
5617
5776
  ]
5618
5777
  },
5619
5778
  "status": "preview",
5620
- "mcp_tool_name": "summer_attach_to_surface",
5621
- "remote": false,
5779
+ "mcp_tool_name": "summer_app_call",
5780
+ "remote": true,
5622
5781
  "authority": {
5623
- "filesystem": true,
5624
- "editor_mutation": true,
5625
- "network": false,
5782
+ "filesystem": false,
5783
+ "editor_mutation": false,
5784
+ "network": true,
5626
5785
  "credentials": false,
5627
5786
  "publish": false
5628
5787
  }
5629
5788
  },
5630
5789
  {
5631
- "id": "tool/batch",
5790
+ "id": "tool/app-create",
5632
5791
  "kind": "tool",
5633
- "version": "1.1.0",
5634
- "content_hash": "ec6fa446a214a15c5562061ba0f39072f698ea69243e4326e4931683bc62f286",
5635
- "summary": "Run engine ops in one call, verbatim; one undo step unless single-only ops split it. ReparentNode keeps and verifies its subtree; raw ConnectSignal is refused.",
5792
+ "version": "1.0.0",
5793
+ "content_hash": "a9ca4527c4397e449e88bc5b058353821b75dd3368a26e031ec2cc0b02736efb",
5794
+ "summary": "Create a new scratch Summer App (a tool for the person's team inside Summer Studio) and open it in their Studio tab.",
5636
5795
  "use_when": [
5637
- "multi-node builds that should undo as one step (no single-only ops in the list)",
5638
- "reaching engine ops that have no dedicated tool",
5639
- "placing many kit pieces, one InstantiateScene op per piece with its position and rotation, read back with receipt summary"
5796
+ "\"build me a tool for…\" / \"make an app that…\"",
5797
+ "the person needs a UI to decide or edit something they will come back to"
5640
5798
  ],
5641
5799
  "facets": {
5642
5800
  "lifecycle": [
5643
5801
  "build"
5644
5802
  ],
5645
5803
  "domains": [
5646
- "scenes",
5647
- "editor"
5804
+ "tools",
5805
+ "ui"
5648
5806
  ]
5649
5807
  },
5650
5808
  "compatibility": {
5651
5809
  "engine": ">=4.6"
5652
5810
  },
5653
- "status": "stable",
5654
- "mcp_tool_name": "summer_batch",
5655
- "remote": false,
5811
+ "related": {
5812
+ "skills": [
5813
+ "skill/summer-apps"
5814
+ ]
5815
+ },
5816
+ "status": "preview",
5817
+ "mcp_tool_name": "summer_app_create",
5818
+ "remote": true,
5656
5819
  "authority": {
5657
- "filesystem": true,
5658
- "editor_mutation": true,
5659
- "network": false,
5820
+ "filesystem": false,
5821
+ "editor_mutation": false,
5822
+ "network": true,
5660
5823
  "credentials": false,
5661
5824
  "publish": false
5662
5825
  }
5663
5826
  },
5664
5827
  {
5665
- "id": "tool/camera-bookmark",
5828
+ "id": "tool/app-data",
5666
5829
  "kind": "tool",
5667
5830
  "version": "1.0.0",
5668
- "content_hash": "42c4dfe31c6634c1b583a8e831a040d3d4b5b6bbdfe97ed71a2d7810a5b39891",
5669
- "summary": "Save, list, or delete named camera viewpoints stored in the project, so before/after screenshots are taken from exactly the same pose.",
5831
+ "content_hash": "4d2652bfdfa8d9f347ac91d0c4f7244a7babc62ad675e7b38125986c47d79509",
5832
+ "summary": "Read or write a Summer App's shared data collections; works with no app open and the team sees writes live.",
5670
5833
  "use_when": [
5671
- "\"save this camera angle\" / \"remember this viewpoint\" so later screenshots line up with it",
5672
- "comparing a scene before and after a change from one fixed, repeatable camera pose",
5673
- "listing or removing the saved viewpoints of a project"
5834
+ "\"nerf the bow in our balance sheet\"",
5835
+ "seeding an app with data",
5836
+ "reading what the team entered in an app"
5674
5837
  ],
5675
5838
  "facets": {
5676
5839
  "lifecycle": [
5677
5840
  "build"
5678
5841
  ],
5679
5842
  "domains": [
5680
- "verification",
5681
- "scenes"
5682
- ],
5683
- "modalities": [
5684
- "scenes"
5843
+ "tools",
5844
+ "ui"
5685
5845
  ]
5686
5846
  },
5687
5847
  "compatibility": {
5688
5848
  "engine": ">=4.6"
5689
5849
  },
5690
5850
  "related": {
5691
- "tools": [
5692
- "tool/screenshot",
5693
- "tool/world-snapshot",
5694
- "tool/snapshot-diff"
5695
- ],
5696
5851
  "skills": [
5697
- "skill/verifying-scenes",
5698
- "skill/scene-scripting"
5852
+ "skill/summer-apps"
5699
5853
  ]
5700
5854
  },
5701
5855
  "status": "preview",
5702
- "mcp_tool_name": "summer_camera_bookmark",
5703
- "remote": false,
5856
+ "mcp_tool_name": "summer_app_data",
5857
+ "remote": true,
5704
5858
  "authority": {
5705
- "filesystem": true,
5859
+ "filesystem": false,
5706
5860
  "editor_mutation": false,
5707
- "network": false,
5861
+ "network": true,
5708
5862
  "credentials": false,
5709
5863
  "publish": false
5710
5864
  }
5711
5865
  },
5712
5866
  {
5713
- "id": "tool/capture-gameplay",
5867
+ "id": "tool/app-dock",
5714
5868
  "kind": "tool",
5715
5869
  "version": "1.0.0",
5716
- "content_hash": "7195fee358600665d2b1e0ec40eeb68a7c517e775f5cc4a366259bceba07cd03",
5717
- "summary": "Capture real gameplay PNGs (HUD included) offscreen without a running editor; game flags and player steps (press, key, click) get past the title screen.",
5870
+ "content_hash": "57cb8039759a799b9ef3c0019c620c5f072d78987d69bd7d089a29655893c676",
5871
+ "summary": "Dock a Summer App as a panel in the running Summer Engine editor, close it, or list docked apps.",
5718
5872
  "use_when": [
5719
- "\"take gameplay screenshots for my store page\"",
5720
- "\"I need screenshots but the editor is not open\"",
5721
- "\"capture a 1920x1080 frame of my game\"",
5722
- "collecting real gameplay screenshots for summer_store_set_art desktop.screenshots or mobile.screenshots",
5723
- "every capture shows the title screen — pass the game's flags in args or steps like press Play"
5873
+ "\"put the quest editor next to my scene\"",
5874
+ "keeping a team tool open while editing"
5724
5875
  ],
5725
5876
  "facets": {
5726
5877
  "lifecycle": [
5727
- "launch",
5728
5878
  "build"
5729
5879
  ],
5730
5880
  "domains": [
5731
- "creator",
5732
- "headless"
5881
+ "tools",
5882
+ "ui"
5733
5883
  ]
5734
5884
  },
5735
5885
  "compatibility": {
5736
5886
  "engine": ">=4.6"
5737
5887
  },
5888
+ "related": {
5889
+ "skills": [
5890
+ "skill/summer-apps"
5891
+ ]
5892
+ },
5738
5893
  "status": "preview",
5739
- "mcp_tool_name": "summer_capture_gameplay",
5740
- "remote": true,
5894
+ "mcp_tool_name": "summer_app_dock",
5895
+ "remote": false,
5741
5896
  "authority": {
5742
- "filesystem": true,
5743
- "editor_mutation": false,
5897
+ "filesystem": false,
5898
+ "editor_mutation": true,
5744
5899
  "network": false,
5745
5900
  "credentials": false,
5746
5901
  "publish": false
5747
5902
  }
5748
5903
  },
5749
5904
  {
5750
- "id": "tool/check-job",
5905
+ "id": "tool/app-events",
5751
5906
  "kind": "tool",
5752
- "version": "1.0.2",
5753
- "content_hash": "a17e889099781c54902facf3abcbbdd8c10c0018333fdceb40d48f24dc01f183",
5754
- "summary": "Check the status of an async generation job by id.",
5907
+ "version": "1.0.0",
5908
+ "content_hash": "08baf882083352c40ab71d36b4f51aaa50754c72b9eb6386ab7993d62494f42a",
5909
+ "summary": "Wait for what a Summer App sends to agents: summer.agent.send events, app errors, feedback and tool calls.",
5755
5910
  "use_when": [
5756
- "a generation ran without waiting, or timed out, and needs re-checking",
5757
- "\"is my 3D model / video done yet?\"",
5758
- "a generate_* call returned a job id instead of a finished asset"
5911
+ "waiting for the person to act in an app you built",
5912
+ "checking an app for errors after publishing"
5759
5913
  ],
5760
5914
  "facets": {
5761
5915
  "lifecycle": [
5762
5916
  "build"
5763
5917
  ],
5764
5918
  "domains": [
5765
- "generate",
5766
- "pipeline"
5919
+ "tools",
5920
+ "ui"
5767
5921
  ]
5768
5922
  },
5769
5923
  "compatibility": {
5770
5924
  "engine": ">=4.6"
5771
5925
  },
5772
- "status": "stable",
5773
- "mcp_tool_name": "summer_check_job",
5926
+ "related": {
5927
+ "skills": [
5928
+ "skill/summer-apps"
5929
+ ]
5930
+ },
5931
+ "status": "preview",
5932
+ "mcp_tool_name": "summer_app_events",
5774
5933
  "remote": true,
5775
5934
  "authority": {
5776
5935
  "filesystem": false,
@@ -5781,11 +5940,560 @@
5781
5940
  }
5782
5941
  },
5783
5942
  {
5784
- "id": "tool/clear-console",
5943
+ "id": "tool/app-get",
5785
5944
  "kind": "tool",
5786
- "version": "1.0.2",
5787
- "content_hash": "5d96c1b758bcb0521a2ba2f291fc5b3929487df9222b735238eb97d7a645077c",
5788
- "summary": "Clear the editor's Output panel for a clean slate before running the game.",
5945
+ "version": "1.0.0",
5946
+ "content_hash": "1aea5d5dde2b779c32fd9525cfd349e8afaacd3366bc33f2d83b3b41ae40d49a",
5947
+ "summary": "Read a Summer App's manifest, current files (or layout) and shared data summary.",
5948
+ "use_when": [
5949
+ "before changing an existing app",
5950
+ "\"what does our loot table app do\""
5951
+ ],
5952
+ "facets": {
5953
+ "lifecycle": [
5954
+ "build"
5955
+ ],
5956
+ "domains": [
5957
+ "tools",
5958
+ "ui"
5959
+ ]
5960
+ },
5961
+ "compatibility": {
5962
+ "engine": ">=4.6"
5963
+ },
5964
+ "related": {
5965
+ "skills": [
5966
+ "skill/summer-apps"
5967
+ ]
5968
+ },
5969
+ "status": "preview",
5970
+ "mcp_tool_name": "summer_app_get",
5971
+ "remote": true,
5972
+ "authority": {
5973
+ "filesystem": false,
5974
+ "editor_mutation": false,
5975
+ "network": true,
5976
+ "credentials": false,
5977
+ "publish": false
5978
+ }
5979
+ },
5980
+ {
5981
+ "id": "tool/app-guide",
5982
+ "kind": "tool",
5983
+ "version": "1.0.0",
5984
+ "content_hash": "f8c8dad7c576c3b8bdd4d9feaade4e7ce0dabf9627dfcf54396a81351d66f820",
5985
+ "summary": "Read the Summer Apps build guide: when to build an app, Layout vs code, build loop, manifest, SDK, UI kit, layout format, design rules and worked examples.",
5986
+ "use_when": [
5987
+ "before building or changing a Summer App",
5988
+ "\"build us a loot balance tool\"",
5989
+ "\"make a tool for our team to track creatures\""
5990
+ ],
5991
+ "facets": {
5992
+ "lifecycle": [
5993
+ "build"
5994
+ ],
5995
+ "domains": [
5996
+ "tools",
5997
+ "ui"
5998
+ ]
5999
+ },
6000
+ "compatibility": {
6001
+ "engine": ">=4.6"
6002
+ },
6003
+ "related": {
6004
+ "skills": [
6005
+ "skill/summer-apps"
6006
+ ]
6007
+ },
6008
+ "status": "preview",
6009
+ "mcp_tool_name": "summer_app_guide",
6010
+ "remote": true,
6011
+ "authority": {
6012
+ "filesystem": false,
6013
+ "editor_mutation": false,
6014
+ "network": true,
6015
+ "credentials": false,
6016
+ "publish": false
6017
+ }
6018
+ },
6019
+ {
6020
+ "id": "tool/app-list",
6021
+ "kind": "tool",
6022
+ "version": "1.0.0",
6023
+ "content_hash": "b1d677c0301be54ee09b640007c519876449df7f2b2afd59373402633caca576",
6024
+ "summary": "List the Summer Apps (team tools inside Summer Studio) in the person's workspaces.",
6025
+ "use_when": [
6026
+ "\"which apps do we have\"",
6027
+ "finding an app id to change or read"
6028
+ ],
6029
+ "facets": {
6030
+ "lifecycle": [
6031
+ "build"
6032
+ ],
6033
+ "domains": [
6034
+ "tools",
6035
+ "ui"
6036
+ ]
6037
+ },
6038
+ "compatibility": {
6039
+ "engine": ">=4.6"
6040
+ },
6041
+ "related": {
6042
+ "skills": [
6043
+ "skill/summer-apps"
6044
+ ]
6045
+ },
6046
+ "status": "preview",
6047
+ "mcp_tool_name": "summer_app_list",
6048
+ "remote": true,
6049
+ "authority": {
6050
+ "filesystem": false,
6051
+ "editor_mutation": false,
6052
+ "network": true,
6053
+ "credentials": false,
6054
+ "publish": false
6055
+ }
6056
+ },
6057
+ {
6058
+ "id": "tool/app-page",
6059
+ "kind": "tool",
6060
+ "version": "1.0.0",
6061
+ "content_hash": "bf782b7bfd2f8e97f4e2734b9dabdf7819694a84141aabae9427bd9e9093fd80",
6062
+ "summary": "Read or use the fields and buttons an open Summer App declared (fill values, press actions).",
6063
+ "use_when": [
6064
+ "\"set the budget to 60 in the balance app\"",
6065
+ "reading what the person has selected in an open app"
6066
+ ],
6067
+ "facets": {
6068
+ "lifecycle": [
6069
+ "build"
6070
+ ],
6071
+ "domains": [
6072
+ "tools",
6073
+ "ui"
6074
+ ]
6075
+ },
6076
+ "compatibility": {
6077
+ "engine": ">=4.6"
6078
+ },
6079
+ "related": {
6080
+ "skills": [
6081
+ "skill/summer-apps"
6082
+ ]
6083
+ },
6084
+ "status": "preview",
6085
+ "mcp_tool_name": "summer_app_page",
6086
+ "remote": true,
6087
+ "authority": {
6088
+ "filesystem": false,
6089
+ "editor_mutation": false,
6090
+ "network": true,
6091
+ "credentials": false,
6092
+ "publish": false
6093
+ }
6094
+ },
6095
+ {
6096
+ "id": "tool/app-publish",
6097
+ "kind": "tool",
6098
+ "version": "1.0.0",
6099
+ "content_hash": "0c7f946c7d677a4f5aaaa7347583eff37371f0daf64b9c3ec36dd31d8b270ba7",
6100
+ "summary": "Publish a new version of a Summer App from a local folder, files or a layout; the person's Studio tab boots it.",
6101
+ "use_when": [
6102
+ "after writing or changing an app's files",
6103
+ "fixing an app after a publish error or an app error event"
6104
+ ],
6105
+ "facets": {
6106
+ "lifecycle": [
6107
+ "build"
6108
+ ],
6109
+ "domains": [
6110
+ "tools",
6111
+ "ui"
6112
+ ]
6113
+ },
6114
+ "compatibility": {
6115
+ "engine": ">=4.6"
6116
+ },
6117
+ "related": {
6118
+ "skills": [
6119
+ "skill/summer-apps"
6120
+ ]
6121
+ },
6122
+ "status": "preview",
6123
+ "mcp_tool_name": "summer_app_publish",
6124
+ "remote": true,
6125
+ "authority": {
6126
+ "filesystem": true,
6127
+ "editor_mutation": false,
6128
+ "network": true,
6129
+ "credentials": false,
6130
+ "publish": false
6131
+ }
6132
+ },
6133
+ {
6134
+ "id": "tool/app-report-gap",
6135
+ "kind": "tool",
6136
+ "version": "1.0.0",
6137
+ "content_hash": "62863e862723f8694934067bf4f5e0d253af3ddc24f9bb6c34cbf7e3eb3dabb1",
6138
+ "summary": "Report an SDK capability a Summer App needed and did not have, so Summer builds it.",
6139
+ "use_when": [
6140
+ "an app needed to reach a service or engine feature the SDK does not offer",
6141
+ "an app needs something the Summer Apps SDK cannot do"
6142
+ ],
6143
+ "facets": {
6144
+ "lifecycle": [
6145
+ "build"
6146
+ ],
6147
+ "domains": [
6148
+ "tools",
6149
+ "ui"
6150
+ ]
6151
+ },
6152
+ "compatibility": {
6153
+ "engine": ">=4.6"
6154
+ },
6155
+ "related": {
6156
+ "skills": [
6157
+ "skill/summer-apps"
6158
+ ]
6159
+ },
6160
+ "status": "preview",
6161
+ "mcp_tool_name": "summer_app_report_gap",
6162
+ "remote": true,
6163
+ "authority": {
6164
+ "filesystem": false,
6165
+ "editor_mutation": false,
6166
+ "network": true,
6167
+ "credentials": false,
6168
+ "publish": false
6169
+ }
6170
+ },
6171
+ {
6172
+ "id": "tool/app-screenshot",
6173
+ "kind": "tool",
6174
+ "version": "1.0.0",
6175
+ "content_hash": "4a32498bfb47bf69c7b67c8e9c90ae409d33c5deceddf0217cf6712eb4e300e0",
6176
+ "summary": "See a Summer App without the person - a headless, read-only render (PNG) with its console, errors, refused calls and declared page.",
6177
+ "use_when": [
6178
+ "right after every apps.publish, to check the app renders with real data",
6179
+ "\"does my app look right on a phone / in dark mode\"",
6180
+ "finding why an app shows nothing (SDK not connected, script errors)"
6181
+ ],
6182
+ "facets": {
6183
+ "lifecycle": [
6184
+ "build"
6185
+ ],
6186
+ "domains": [
6187
+ "tools",
6188
+ "ui"
6189
+ ]
6190
+ },
6191
+ "compatibility": {
6192
+ "engine": ">=4.6"
6193
+ },
6194
+ "related": {
6195
+ "skills": [
6196
+ "skill/summer-apps",
6197
+ "skill/summer-apps-design"
6198
+ ]
6199
+ },
6200
+ "status": "preview",
6201
+ "mcp_tool_name": "summer_app_screenshot",
6202
+ "remote": true,
6203
+ "authority": {
6204
+ "filesystem": true,
6205
+ "editor_mutation": false,
6206
+ "network": true,
6207
+ "credentials": false,
6208
+ "publish": false
6209
+ }
6210
+ },
6211
+ {
6212
+ "id": "tool/app-tools",
6213
+ "kind": "tool",
6214
+ "version": "1.0.0",
6215
+ "content_hash": "86ed720b987f72a0dc3ececdf9c3039ef7a898dc34b5327fafb860df463a73e5",
6216
+ "summary": "List the agent tools a Summer App declares.",
6217
+ "use_when": [
6218
+ "before calling app logic with apps.call",
6219
+ "\"what can our balance app do for me\""
6220
+ ],
6221
+ "facets": {
6222
+ "lifecycle": [
6223
+ "build"
6224
+ ],
6225
+ "domains": [
6226
+ "tools",
6227
+ "ui"
6228
+ ]
6229
+ },
6230
+ "compatibility": {
6231
+ "engine": ">=4.6"
6232
+ },
6233
+ "related": {
6234
+ "skills": [
6235
+ "skill/summer-apps"
6236
+ ]
6237
+ },
6238
+ "status": "preview",
6239
+ "mcp_tool_name": "summer_app_tools",
6240
+ "remote": true,
6241
+ "authority": {
6242
+ "filesystem": false,
6243
+ "editor_mutation": false,
6244
+ "network": true,
6245
+ "credentials": false,
6246
+ "publish": false
6247
+ }
6248
+ },
6249
+ {
6250
+ "id": "tool/app-update",
6251
+ "kind": "tool",
6252
+ "version": "1.0.0",
6253
+ "content_hash": "1233adcc99796051529958cddf35f0fd7f6716a1e9c1e09b7c8f7bfa732a1c4f",
6254
+ "summary": "Rename a Summer App, move it to a folder, or keep, archive or restore it.",
6255
+ "use_when": [
6256
+ "archiving a scratch app you made that the person did not keep",
6257
+ "\"rename the loot app to Drop tables\"",
6258
+ "\"keep this app\" (status kept)"
6259
+ ],
6260
+ "facets": {
6261
+ "lifecycle": [
6262
+ "build"
6263
+ ],
6264
+ "domains": [
6265
+ "tools",
6266
+ "ui"
6267
+ ]
6268
+ },
6269
+ "compatibility": {
6270
+ "engine": ">=4.6"
6271
+ },
6272
+ "related": {
6273
+ "skills": [
6274
+ "skill/summer-apps"
6275
+ ]
6276
+ },
6277
+ "status": "preview",
6278
+ "mcp_tool_name": "summer_app_update",
6279
+ "remote": true,
6280
+ "authority": {
6281
+ "filesystem": false,
6282
+ "editor_mutation": false,
6283
+ "network": true,
6284
+ "credentials": false,
6285
+ "publish": false
6286
+ }
6287
+ },
6288
+ {
6289
+ "id": "tool/attach-to-surface",
6290
+ "kind": "tool",
6291
+ "version": "1.0.0",
6292
+ "content_hash": "2909a46fb55a7a64373a6a7464e5f97fbbd2a68c0a8ba0c1803134effad273ed",
6293
+ "summary": "Mount a piece on a wall, ceiling or floor — turn its measured back into the surface found by a ray, keep it upright, seat it at a standoff. Saves the scene.",
6294
+ "use_when": [
6295
+ "mounting a downpipe, gutter, lamp, AC unit, sign or fire escape on a facade",
6296
+ "turning a piece so its back faces a wall instead of guessing its rotation",
6297
+ "seating a piece against a surface at an exact standoff"
6298
+ ],
6299
+ "facets": {
6300
+ "lifecycle": [
6301
+ "build"
6302
+ ],
6303
+ "domains": [
6304
+ "scenes",
6305
+ "3d",
6306
+ "world-building",
6307
+ "level-design"
6308
+ ],
6309
+ "modalities": [
6310
+ "scenes"
6311
+ ]
6312
+ },
6313
+ "compatibility": {
6314
+ "engine": ">=4.6"
6315
+ },
6316
+ "related": {
6317
+ "tools": [
6318
+ "tool/raycast",
6319
+ "tool/snap-to-surface",
6320
+ "tool/inspect-asset",
6321
+ "tool/starcast"
6322
+ ],
6323
+ "skills": [
6324
+ "skill/spatial-placement"
6325
+ ]
6326
+ },
6327
+ "status": "preview",
6328
+ "mcp_tool_name": "summer_attach_to_surface",
6329
+ "remote": false,
6330
+ "authority": {
6331
+ "filesystem": true,
6332
+ "editor_mutation": true,
6333
+ "network": false,
6334
+ "credentials": false,
6335
+ "publish": false
6336
+ }
6337
+ },
6338
+ {
6339
+ "id": "tool/batch",
6340
+ "kind": "tool",
6341
+ "version": "1.1.0",
6342
+ "content_hash": "0ba437873ed75942b3ac5199b2dcc4c2b0bbd73f015b38414fa4106b5f995ba3",
6343
+ "summary": "Run engine ops in one call, verbatim; one undo step unless single-only ops split it. ReparentNode keeps and verifies its subtree; raw ConnectSignal is refused.",
6344
+ "use_when": [
6345
+ "multi-node builds that should undo as one step (no single-only ops in the list)",
6346
+ "reaching engine ops that have no dedicated tool",
6347
+ "placing many kit pieces, one InstantiateScene op per piece with its position and rotation, read back with receipt summary"
6348
+ ],
6349
+ "facets": {
6350
+ "lifecycle": [
6351
+ "build"
6352
+ ],
6353
+ "domains": [
6354
+ "scenes",
6355
+ "editor"
6356
+ ]
6357
+ },
6358
+ "compatibility": {
6359
+ "engine": ">=4.6"
6360
+ },
6361
+ "status": "stable",
6362
+ "mcp_tool_name": "summer_batch",
6363
+ "remote": false,
6364
+ "authority": {
6365
+ "filesystem": true,
6366
+ "editor_mutation": true,
6367
+ "network": false,
6368
+ "credentials": false,
6369
+ "publish": false
6370
+ }
6371
+ },
6372
+ {
6373
+ "id": "tool/camera-bookmark",
6374
+ "kind": "tool",
6375
+ "version": "1.0.0",
6376
+ "content_hash": "fd351b49f70ac366fb61f4f4de7d8a32f1e9badbf0175cc19e4bc8a238398d10",
6377
+ "summary": "Save, list, or delete named camera viewpoints stored in the project, so before/after screenshots are taken from exactly the same pose.",
6378
+ "use_when": [
6379
+ "\"save this camera angle\" / \"remember this viewpoint\" so later screenshots line up with it",
6380
+ "comparing a scene before and after a change from one fixed, repeatable camera pose",
6381
+ "listing or removing the saved viewpoints of a project"
6382
+ ],
6383
+ "facets": {
6384
+ "lifecycle": [
6385
+ "build"
6386
+ ],
6387
+ "domains": [
6388
+ "verification",
6389
+ "scenes"
6390
+ ],
6391
+ "modalities": [
6392
+ "scenes"
6393
+ ]
6394
+ },
6395
+ "compatibility": {
6396
+ "engine": ">=4.6"
6397
+ },
6398
+ "related": {
6399
+ "tools": [
6400
+ "tool/screenshot",
6401
+ "tool/world-snapshot",
6402
+ "tool/snapshot-diff"
6403
+ ],
6404
+ "skills": [
6405
+ "skill/verifying-scenes",
6406
+ "skill/scene-scripting"
6407
+ ]
6408
+ },
6409
+ "status": "preview",
6410
+ "mcp_tool_name": "summer_camera_bookmark",
6411
+ "remote": false,
6412
+ "authority": {
6413
+ "filesystem": true,
6414
+ "editor_mutation": false,
6415
+ "network": false,
6416
+ "credentials": false,
6417
+ "publish": false
6418
+ }
6419
+ },
6420
+ {
6421
+ "id": "tool/capture-gameplay",
6422
+ "kind": "tool",
6423
+ "version": "1.0.1",
6424
+ "content_hash": "6e650359c7674783ad39e7fd1c75c856be4dd7d5da6215e8b86c7bd8e517be07",
6425
+ "summary": "Capture real gameplay PNGs (HUD included) offscreen without a running editor; game flags and player steps (press, key, click) get past the title screen.",
6426
+ "use_when": [
6427
+ "\"take gameplay screenshots for my store page\"",
6428
+ "\"I need screenshots but the editor is not open\"",
6429
+ "\"capture a 1920x1080 frame of my game\"",
6430
+ "collecting real gameplay screenshots for store.set_art desktop.screenshots or mobile.screenshots",
6431
+ "every capture shows the title screen — pass the game's flags in args or steps like press Play"
6432
+ ],
6433
+ "facets": {
6434
+ "lifecycle": [
6435
+ "launch",
6436
+ "build"
6437
+ ],
6438
+ "domains": [
6439
+ "creator",
6440
+ "headless"
6441
+ ]
6442
+ },
6443
+ "compatibility": {
6444
+ "engine": ">=4.6"
6445
+ },
6446
+ "status": "stable",
6447
+ "mcp_tool_name": "summer_capture_gameplay",
6448
+ "remote": true,
6449
+ "authority": {
6450
+ "filesystem": true,
6451
+ "editor_mutation": false,
6452
+ "network": false,
6453
+ "credentials": false,
6454
+ "publish": false
6455
+ }
6456
+ },
6457
+ {
6458
+ "id": "tool/check-job",
6459
+ "kind": "tool",
6460
+ "version": "1.0.2",
6461
+ "content_hash": "6212245eb252683666471ab80d880eedecfff561525f240be4af1311052b5340",
6462
+ "summary": "Check the status of an async generation job by id.",
6463
+ "use_when": [
6464
+ "a generation timed out and needs re-checking",
6465
+ "\"is my 3D model / video done yet?\"",
6466
+ "a generate_* call returned a job id instead of a finished asset"
6467
+ ],
6468
+ "facets": {
6469
+ "lifecycle": [
6470
+ "build"
6471
+ ],
6472
+ "domains": [
6473
+ "generate",
6474
+ "pipeline"
6475
+ ]
6476
+ },
6477
+ "compatibility": {
6478
+ "engine": ">=4.6"
6479
+ },
6480
+ "status": "stable",
6481
+ "mcp_tool_name": "summer_check_job",
6482
+ "remote": true,
6483
+ "authority": {
6484
+ "filesystem": false,
6485
+ "editor_mutation": false,
6486
+ "network": true,
6487
+ "credentials": false,
6488
+ "publish": false
6489
+ }
6490
+ },
6491
+ {
6492
+ "id": "tool/clear-console",
6493
+ "kind": "tool",
6494
+ "version": "1.0.2",
6495
+ "content_hash": "9c9505a048c77cb19991a7e736c343190909f584f4a875f6b814e871460bb815",
6496
+ "summary": "Clear the editor's Output panel for a clean slate before running the game.",
5789
6497
  "use_when": [
5790
6498
  "before a play session whose console output you want isolated",
5791
6499
  "\"the Output panel is full of old noise, wipe it\"",
@@ -5818,7 +6526,7 @@
5818
6526
  "id": "tool/connect-ports",
5819
6527
  "kind": "tool",
5820
6528
  "version": "1.0.0",
5821
- "content_hash": "d3423ce431ff8bde3f0f288d5b4bf47788fca541694390168f0b31baff40a45a",
6529
+ "content_hash": "1018251fb6ed05da7397988cde9ee05498601c48331c0d765b3abb645a85cac1",
5822
6530
  "summary": "Join one piece's port (a Marker3D, or an open pipe end id such as '+Y') to another's, facing it; refuses joins that tilt the piece. Saves the scene.",
5823
6531
  "use_when": [
5824
6532
  "joining a pipe, duct or gutter section end to end with the previous one",
@@ -5866,7 +6574,7 @@
5866
6574
  "id": "tool/connect-signal",
5867
6575
  "kind": "tool",
5868
6576
  "version": "1.1.0",
5869
- "content_hash": "d37c9147743f97b9cd6f3acd1e287ef2af7df20b273c48dca05bb6cb427d236f",
6577
+ "content_hash": "bd6c59df3479e5d60c0dac5f61dee6cde3da59054122add68bd344ffe4bc167e",
5870
6578
  "summary": "Connect a signal between two nodes so the saved scene keeps it (CONNECT_PERSIST, verified from the saved .tscn); the receiver should define the target method.",
5871
6579
  "use_when": [
5872
6580
  "wiring events like body_entered, pressed, or timeout",
@@ -5900,7 +6608,7 @@
5900
6608
  "id": "tool/create-debug-report",
5901
6609
  "kind": "tool",
5902
6610
  "version": "1.0.2",
5903
- "content_hash": "b950bca3f72f732d102142d9e233a4b27ffac33dd8a75515f0e71648742405a8",
6611
+ "content_hash": "003ad4650cc4055b187ce8ee77a98c2a1da72a5b74fb2e0faf89fbf6ab6a4094",
5904
6612
  "summary": "Create a support-ready Markdown debug report: doctor checks, engine health, diagnostics, console, and debugger output.",
5905
6613
  "use_when": [
5906
6614
  "the user wants to send Summer a bug report",
@@ -5934,7 +6642,7 @@
5934
6642
  "id": "tool/create-scene",
5935
6643
  "kind": "tool",
5936
6644
  "version": "1.0.2",
5937
- "content_hash": "cfb55fc92129fca8a2c50819242e2961f69542773822118aa04c0aa599f13dae",
6645
+ "content_hash": "8a8d28ab4feebc5cbbc9169f6320c64688ab74f950d4ad4c3fc7c089288bf21d",
5938
6646
  "summary": "Create a new minimal .tscn on disk with a create-only guard and read-back verification; never touches the open scene.",
5939
6647
  "use_when": [
5940
6648
  "starting a new level, prefab, or UI scene file",
@@ -5968,7 +6676,7 @@
5968
6676
  "id": "tool/debug-views",
5969
6677
  "kind": "tool",
5970
6678
  "version": "1.0.0",
5971
- "content_hash": "deb767453ff63dcacf4b92208baa69b49b1b15b7d3d557b1c23f839a3d45c9f8",
6679
+ "content_hash": "0fcb49a5d34ec6e1f97837a9f10c217dc5b65de667fb3e4e68484ab9b36e8f2e",
5972
6680
  "summary": "One pose as a grid of beauty, lighting-only, unshaded/albedo, world normals, overdraw and wireframe views.",
5973
6681
  "use_when": [
5974
6682
  "understanding WHY a shot reads badly: light direction and pools, texture/value balance, normal seams, overdraw hot spots, triangle density",
@@ -6014,10 +6722,49 @@
6014
6722
  }
6015
6723
  },
6016
6724
  {
6017
- "id": "tool/export-game",
6725
+ "id": "tool/enable-plugin",
6018
6726
  "kind": "tool",
6019
6727
  "version": "1.0.0",
6020
- "content_hash": "96efe498dc6c5976b482c00828c770975bb77e4c03a0df4e5f3208e8f0013e95",
6728
+ "content_hash": "aaad358162df6f1c206ae1b6e80694f35551544074250120f3afb3ae2889873a",
6729
+ "summary": "Enable an editor plugin (res://addons/<name>/) and report the real load result, or that an older engine only queued it.",
6730
+ "use_when": [
6731
+ "an agent wrote or installed an editor plugin and needs it running",
6732
+ "a Summer App's paired plugin must be enabled before the app can message it",
6733
+ "\"turn on the quest_tools plugin\""
6734
+ ],
6735
+ "facets": {
6736
+ "lifecycle": [
6737
+ "build"
6738
+ ],
6739
+ "domains": [
6740
+ "editor",
6741
+ "tools"
6742
+ ]
6743
+ },
6744
+ "compatibility": {
6745
+ "engine": ">=4.6"
6746
+ },
6747
+ "related": {
6748
+ "skills": [
6749
+ "skill/summer-apps"
6750
+ ]
6751
+ },
6752
+ "status": "preview",
6753
+ "mcp_tool_name": "summer_enable_plugin",
6754
+ "remote": false,
6755
+ "authority": {
6756
+ "filesystem": false,
6757
+ "editor_mutation": true,
6758
+ "network": false,
6759
+ "credentials": false,
6760
+ "publish": false
6761
+ }
6762
+ },
6763
+ {
6764
+ "id": "tool/export-game",
6765
+ "kind": "tool",
6766
+ "version": "1.0.1",
6767
+ "content_hash": "065d9069434d9eda25b7a69594371c52502320adf6cc4caa139fae56b9d9b480",
6021
6768
  "summary": "Export the game in the exact file the Summer Games store takes per platform (iPhone, Android, macOS, Windows bundle; web build; desktop download), headless.",
6022
6769
  "use_when": [
6023
6770
  "\"export my game for summer.games\"",
@@ -6025,7 +6772,7 @@
6025
6772
  "\"export my game for iPhone and Android on Summer Games\"",
6026
6773
  "\"make a web build of my game for summer.games\"",
6027
6774
  "\"export a Mac or Windows download for my store page\"",
6028
- "preparing the bundle that summer_publish_build uploads"
6775
+ "preparing the bundle that store.upload_file uploads"
6029
6776
  ],
6030
6777
  "facets": {
6031
6778
  "lifecycle": [
@@ -6040,7 +6787,7 @@
6040
6787
  "compatibility": {
6041
6788
  "engine": ">=4.6"
6042
6789
  },
6043
- "status": "preview",
6790
+ "status": "stable",
6044
6791
  "mcp_tool_name": "summer_export_game",
6045
6792
  "remote": true,
6046
6793
  "authority": {
@@ -6055,7 +6802,7 @@
6055
6802
  "id": "tool/export-templates",
6056
6803
  "kind": "tool",
6057
6804
  "version": "1.0.0",
6058
- "content_hash": "df384233563daadc6ed0c1edef6169f63fc7aea0307f53df4b3ae75aaef1c2ea",
6805
+ "content_hash": "347b3d0ed648ee65c250050fd8b56f7b90792192fea02cd889365f193e24448a",
6059
6806
  "summary": "List and install Summer Engine export templates (Summer's WebGPU Forward+ web template, macOS, Windows) from Summer's CDN, sha256-checked.",
6060
6807
  "use_when": [
6061
6808
  "\"install the web export template\"",
@@ -6090,7 +6837,7 @@
6090
6837
  "id": "tool/fabricate-3d",
6091
6838
  "kind": "tool",
6092
6839
  "version": "1.0.0",
6093
- "content_hash": "a81490caa6d84592309e7d06848186916263f18b7e1d98877672767ff9fa83a0",
6840
+ "content_hash": "9d8e01e15bd6e446a729b2c8e533835d85646ca277f36f62b10100db87289e17",
6094
6841
  "summary": "Fabricate a mesh with a bpy script in the user's own Blender (headless, engine-supervised), import the .glb into res://, optionally instantiate it.",
6095
6842
  "use_when": [
6096
6843
  "a modular kit with exact dimensions and snapping — walls, pipes, fences, rails — where generation cannot hold size and style across many pieces",
@@ -6151,7 +6898,7 @@
6151
6898
  "id": "tool/frame-nodes",
6152
6899
  "kind": "tool",
6153
6900
  "version": "1.0.0",
6154
- "content_hash": "4a6c94a6ad6dc741d4283434dbdd6d46a8c356793694007623ed0556024eba1b",
6901
+ "content_hash": "53477d1a8603c18a7a5ec1c7a9ccf59000c2361fb0a4c4fbb8d2ad800c2d5857",
6155
6902
  "summary": "Frame nodes by their world bounds and render with the scene's REAL environment and lights (optionally save the pose as a bookmark).",
6156
6903
  "use_when": [
6157
6904
  "\"show me the houses/props with the real lighting\" — fit a camera to one or more nodes and render it with the scene's WorldEnvironment",
@@ -6201,7 +6948,7 @@
6201
6948
  "id": "tool/frame-shot",
6202
6949
  "kind": "tool",
6203
6950
  "version": "1.0.0",
6204
- "content_hash": "896345ba57bd0d99d3d3fd2c721ee05866686c3450f9f8ec61bad24157c15cd3",
6951
+ "content_hash": "0698f5fe6cfcb89703b54caeaf06c39f649f6938f9d23be34bb3e975ea8c7bbf",
6205
6952
  "summary": "Smart framing: find, score and bookmark camera poses for a shot type (establishing, eye level, low-angle, detail, corridor) with in-engine visibility tests.",
6206
6953
  "use_when": [
6207
6954
  "\"find a good view of X\" / \"frame an establishing shot\" / \"show it from the player's eye\" / \"look down the street\"",
@@ -6252,7 +6999,7 @@
6252
6999
  "id": "tool/game-control",
6253
7000
  "kind": "tool",
6254
7001
  "version": "1.0.0",
6255
- "content_hash": "7e8656dbb2760a9a8d4952a6aeab127f54c1e26d9c2041fd19b7924c54414027",
7002
+ "content_hash": "93125d0c5bbc515930739cfe69ffc622b43f57e2b35d88a232e118a68fb236a2",
6256
7003
  "summary": "Pause the running game, resume it, step exactly N physics or process frames, set the time scale, or list the live game instances.",
6257
7004
  "use_when": [
6258
7005
  "pausing the running game and stepping one physics frame at a time to make exact frame-by-frame assertions",
@@ -6304,7 +7051,7 @@
6304
7051
  "id": "tool/game-input",
6305
7052
  "kind": "tool",
6306
7053
  "version": "1.0.1",
6307
- "content_hash": "8b66540c3f42f8eb040ee6fe6483ad59687db16c59334b737618f447132b1e53",
7054
+ "content_hash": "0023e9be570189273a214c3b64932436d2fc76be59d93822aa2c0462cd35a9b8",
6308
7055
  "summary": "Drive the running game's input — script timed synthetic events, or record the real inputs and replay them deterministically on a seeded instance.",
6309
7056
  "use_when": [
6310
7057
  "scripting a timed input sequence against the running game (walk right for 500 ms, jump at frame 30, click a button)",
@@ -6355,7 +7102,7 @@
6355
7102
  "id": "tool/game-probe",
6356
7103
  "kind": "tool",
6357
7104
  "version": "1.0.0",
6358
- "content_hash": "23e31a31694a3b656a674c81589534d526f4f47b5a0dcd05ef5686f4536098f5",
7105
+ "content_hash": "b57502fdab6416856f5ca079a8b81bbfde74146addc8b8397f52118c9a62b62e",
6359
7106
  "summary": "State AND pixels of one frame of the RUNNING game, atomically — live tree, property reads, and a screenshot stamped with the same frame counters.",
6360
7107
  "use_when": [
6361
7108
  "proving what the running game is actually doing before and after an action — the evidence read of every playtest loop",
@@ -6411,8 +7158,8 @@
6411
7158
  "id": "tool/generate-3d",
6412
7159
  "kind": "tool",
6413
7160
  "version": "1.0.2",
6414
- "content_hash": "62fccc4762a54c16d1c64da056ee21188a6a4be311fa43cc8fbe3e9be7977c85",
6415
- "summary": "Generate a 3D model from text or images via Summer Studio, with optional auto-rig and animation pipeline; waits or returns a job id.",
7161
+ "content_hash": "6668e5ca70c44f1ae291e7368a64396ce3eaf8412343f45e0b44e1899981006f",
7162
+ "summary": "Generate a 3D model from text or images via Summer Studio, with optional auto-rig and animation pipeline; returns a job id to poll with summer_check_job.",
6416
7163
  "use_when": [
6417
7164
  "creating a 3D asset or character from a prompt or reference image",
6418
7165
  "\"make me a low-poly tree / a sci-fi crate / a goblin for my game\"",
@@ -6512,7 +7259,7 @@
6512
7259
  "id": "tool/generate-motion",
6513
7260
  "kind": "tool",
6514
7261
  "version": "1.1.0",
6515
- "content_hash": "717ddb290afa9515ba84e041371c78eb5e26a875bda5c9914235fb4751f5b6ef",
7262
+ "content_hash": "e9353fcbb021788c09bf22ca0d6d0934015fd16637b831df268d40c0331f162f",
6516
7263
  "summary": "Generate animation clips for a rigged model — curated humanoid mocap by name, or text-to-motion on any of your own rigs; costs credits, so confirm first.",
6517
7264
  "use_when": [
6518
7265
  "adding idle, walk, run, or combat clips to a rigged character",
@@ -6794,7 +7541,7 @@
6794
7541
  "id": "tool/get-console",
6795
7542
  "kind": "tool",
6796
7543
  "version": "1.0.3",
6797
- "content_hash": "99bdf65dbbef0a834967d7149567addddcb8a1ffb35ca0c77786ec038b1cfbe2",
7544
+ "content_hash": "b956953bb799948c57488b7940cbd3666772a5b0685f5c713a235da8d75777bc",
6798
7545
  "summary": "Read recent editor Output panel messages, deduplicated and filterable by level, type, or substring. Editor console only - never the post-play verdict.",
6799
7546
  "use_when": [
6800
7547
  "diagnostics report console issues and you need the message bodies",
@@ -6828,7 +7575,7 @@
6828
7575
  "id": "tool/get-debugger-errors",
6829
7576
  "kind": "tool",
6830
7577
  "version": "1.0.2",
6831
- "content_hash": "86fa42010ffb8e2291a7b71ac2e33eb00cc08124da7b943b4ad4c7a4421b423b",
7578
+ "content_hash": "e1c7f166cb7316022f9a5ddc8444292a67e0e3f60d54e9e8c148a8070282715b",
6832
7579
  "summary": "Read deduplicated runtime errors from the debugger, distinct from console prints; optional stack traces.",
6833
7580
  "use_when": [
6834
7581
  "the running game hit failures like null references or missing nodes",
@@ -6862,7 +7609,7 @@
6862
7609
  "id": "tool/get-debugger-warnings",
6863
7610
  "kind": "tool",
6864
7611
  "version": "1.0.2",
6865
- "content_hash": "dc4de3ffbd4b58ea0abe2461d3787b7914f978e22073369923c8c27ceba07bf3",
7612
+ "content_hash": "ec703ca6d5112f16da7ff3be41911fa4b0ee3de8aa12076c77e2c4ae2d880d78",
6866
7613
  "summary": "Read runtime warnings from the debugger panel as structured entries with file, line, and callstack.",
6867
7614
  "use_when": [
6868
7615
  "diagnostics show a non-zero debugger warning count",
@@ -6896,7 +7643,7 @@
6896
7643
  "id": "tool/get-diagnostics",
6897
7644
  "kind": "tool",
6898
7645
  "version": "1.0.3",
6899
- "content_hash": "0e5a87fcb41bf8116a1fb33e5f3ba56a057854d873e04b0ec4e4709b6a68618a",
7646
+ "content_hash": "9b7a0053c4c8584168ad2f1ec790ddf75503f2ed856e725aaed13b273acea0b2",
6900
7647
  "summary": "Prioritized overview of editor console, runtime debugger, and script errors and warnings, with complete counts and a trimmed noise tail.",
6901
7648
  "use_when": [
6902
7649
  "first stop after any change, before targeted console or debugger reads",
@@ -6930,7 +7677,7 @@
6930
7677
  "id": "tool/get-project-context",
6931
7678
  "kind": "tool",
6932
7679
  "version": "2.0.0",
6933
- "content_hash": "c8cde53eababe6b12b5e8ca07a189673b09a84d51eea0a844815f7e648465f6e",
7680
+ "content_hash": "d1a8fbd23967b000f87e8f6b9f320597a28c5b5169afb799259fd512670c3b40",
6934
7681
  "summary": "Bind to the open project and return a compact context (project, current and main scene, health summary, template pin, memory, warnings); tree on request.",
6935
7682
  "use_when": [
6936
7683
  "first call in every fresh session, to avoid guessing scene filenames",
@@ -6964,7 +7711,7 @@
6964
7711
  "id": "tool/get-runtime-tree",
6965
7712
  "kind": "tool",
6966
7713
  "version": "1.0.1",
6967
- "content_hash": "65939a49b44d072bde0dac9b005aa32c6d173182254167f94304233bca51adfc",
7714
+ "content_hash": "5ea5e8841b9261ab86c3068b4696fe28a13e262bc041030fbdcbc5b3dd2d53bf",
6968
7715
  "summary": "Scene tree of the RUNNING game — spawned enemies, autoloads, pooled nodes — live state the editor reads can never show.",
6969
7716
  "use_when": [
6970
7717
  "inspecting what actually spawned during a playtest without stopping the game",
@@ -7012,7 +7759,7 @@
7012
7759
  "id": "tool/get-scene-tree",
7013
7760
  "kind": "tool",
7014
7761
  "version": "1.0.2",
7015
- "content_hash": "51749172f527c332e49c070c202f2d19afd3ce1e9dc49ef10c4cb332d7c687b6",
7762
+ "content_hash": "54a13cbd2e420b5da4b7ff6352eadd70ee290278490776cc5888849091c2f811",
7016
7763
  "summary": "Read a scene's node tree, with explicit depth and limit to avoid the engine's silent default truncation.",
7017
7764
  "use_when": [
7018
7765
  "inspecting scene structure before or after mutations",
@@ -7046,7 +7793,7 @@
7046
7793
  "id": "tool/get-script-errors",
7047
7794
  "kind": "tool",
7048
7795
  "version": "1.0.2",
7049
- "content_hash": "e61ba4e1e1033d821073f96be0fbdc959ccb57739465d8f581b2f2d186531ae5",
7796
+ "content_hash": "b157eb54ad6acd2761833e9b162e6e7bb738d7f06ae19d98e6924aa6352cd8ab",
7050
7797
  "summary": "Check one GDScript file for parse and compile errors without running the game.",
7051
7798
  "use_when": [
7052
7799
  "after writing or editing a .gd file, to verify it compiles",
@@ -7114,7 +7861,7 @@
7114
7861
  "id": "tool/grep",
7115
7862
  "kind": "tool",
7116
7863
  "version": "1.0.0",
7117
- "content_hash": "57676c00eaf3003becb56c41ed837102cc29f82822d52d52d4389e9dba77115f",
7864
+ "content_hash": "a03d678632dbb4478703734b9350283693dda36f03f3b8dcaede2ea9cb1982d0",
7118
7865
  "summary": "Search project files with a regex (ripgrep through the engine) and get file, line and text per match, with optional context lines and a result cap.",
7119
7866
  "use_when": [
7120
7867
  "finding where something is in big project files without reading them whole",
@@ -7153,7 +7900,7 @@
7153
7900
  "id": "tool/import-asset",
7154
7901
  "kind": "tool",
7155
7902
  "version": "1.0.2",
7156
- "content_hash": "9cec560d2c7951bbe699a917ecb6865be50e718bee67b81b06801a0ac0eae9c2",
7903
+ "content_hash": "5dc47df734f7da8f1ca91d97d0b7750b46cd2aec93dd93be20341468ecedac0a",
7157
7904
  "summary": "Search the asset library and import the best match into the project in one step, optionally adding 3D models to a scene.",
7158
7905
  "use_when": [
7159
7906
  "the user asks to add a kind of asset, like 'add a tree to the scene'",
@@ -7187,7 +7934,7 @@
7187
7934
  "id": "tool/import-asset-by-id",
7188
7935
  "kind": "tool",
7189
7936
  "version": "1.0.2",
7190
- "content_hash": "b38644fa3c91e9f0eb31864d7e092c3210a7cd2dd2bbe3a692bf4a5685a57d35",
7937
+ "content_hash": "39881bd336a3e43820a9b43040f679602e5b9ebd5067594d52f2e0f272c43788",
7191
7938
  "summary": "Import an exact Summer asset id into the open project via the engine's import pipeline; optionally instantiate 3D models into a scene.",
7192
7939
  "use_when": [
7193
7940
  "importing a just-generated or searched asset without guessing",
@@ -7220,7 +7967,7 @@
7220
7967
  "id": "tool/import-from-url",
7221
7968
  "kind": "tool",
7222
7969
  "version": "1.0.2",
7223
- "content_hash": "627132fc78ac795d7298f52e5b4abe5447bcfacb1f38b2fe4f1d0ef3c1e0be9a",
7970
+ "content_hash": "bfdfd497aba3d2513e041391028294510d2959bed94a4ad379c9246b6e0ad663",
7224
7971
  "summary": "Download one file from a URL and run Godot's full import pipeline so the asset is immediately usable.",
7225
7972
  "use_when": [
7226
7973
  "importing a model, texture, or audio file from an external URL",
@@ -7254,7 +8001,7 @@
7254
8001
  "id": "tool/import-from-url-batch",
7255
8002
  "kind": "tool",
7256
8003
  "version": "1.0.2",
7257
- "content_hash": "cbf45604d03606c044a13831156581f54f210ab0c5fe5955f5cc044f234aa805",
8004
+ "content_hash": "f9537f4cc763cda04468622de95449b9eba54b54d7b06b600eed8c27e707ed53",
7258
8005
  "summary": "Download multiple files by URL in one operation with a single filesystem scan afterwards.",
7259
8006
  "use_when": [
7260
8007
  "importing several related files, like a model plus its textures",
@@ -7288,7 +8035,7 @@
7288
8035
  "id": "tool/import-hdri",
7289
8036
  "kind": "tool",
7290
8037
  "version": "1.0.1",
7291
- "content_hash": "908a64ab271dffc9b8b4fa3f34218cafd9873235b9fe8f1d0007ca3a3f1248a9",
8038
+ "content_hash": "2f395b49c2f1c62077e1d7d0690ffdf91caee908b75072a942f0f0d0e6d51a0d",
7292
8039
  "summary": "Search Poly Haven's CC0 HDRI library and import one into res://sky/ as environment lighting, with the exact run-script snippet that wires the sky.",
7293
8040
  "use_when": [
7294
8041
  "a 3D scene needs real environment lighting and reflections — the cheapest whole-scene visual upgrade",
@@ -7338,7 +8085,7 @@
7338
8085
  "id": "tool/input-map-bind",
7339
8086
  "kind": "tool",
7340
8087
  "version": "1.0.2",
7341
- "content_hash": "b8bd70a01434e41d6108d05f2e0d31b2cc442d0fccd1c494b368ace40b7c6283",
8088
+ "content_hash": "dfdbed8111b9656cdab2a74293a96905ba8612d42907e1c9d8c25cf4eba21ab1",
7342
8089
  "summary": "Create an input action if needed and bind keyboard or mouse events to it.",
7343
8090
  "use_when": [
7344
8091
  "setting up player controls like jump, move, or interact",
@@ -7372,7 +8119,7 @@
7372
8119
  "id": "tool/inspect-asset",
7373
8120
  "kind": "tool",
7374
8121
  "version": "1.0.0",
7375
- "content_hash": "f40a87d891da6193cf9efeb91a0cc6f4d831fd536fbfcad4d02d67ea7444d38d",
8122
+ "content_hash": "44f5e9a36efc013f26f1685fb7fa74096d75e7a41f8e498b2ded2f5a1e281848",
7376
8123
  "summary": "Measure a 3D asset file without adding it to a scene — AABB, origin, meshes, largest planar faces, open pipe ends, Marker3D anchors, collision shapes.",
7377
8124
  "use_when": [
7378
8125
  "learning a kit piece's real size, origin and which way it faces before placing it",
@@ -7422,7 +8169,7 @@
7422
8169
  "id": "tool/inspect-node",
7423
8170
  "kind": "tool",
7424
8171
  "version": "1.1.0",
7425
- "content_hash": "8016dc147b6eac09b87b75f7806b4f996bc80dd8204d29f9e701f40a1d9d75fd",
8172
+ "content_hash": "87b7fa642d6b613c2e4ffc37054b8911fe1f08fe60dea881795c15e42f6869e2",
7426
8173
  "summary": "A node's editable properties with values, Variant types and resources, or only named fields plus derived transform, global_transform, scene_file_path.",
7427
8174
  "use_when": [
7428
8175
  "before modifying a node, to understand its current state",
@@ -7457,7 +8204,7 @@
7457
8204
  "id": "tool/inspect-resource",
7458
8205
  "kind": "tool",
7459
8206
  "version": "1.1.0",
7460
- "content_hash": "410f1d81c41b6b22a0bf754acf6d347b01313ee4fc0c546ba64852f951f1b5ed",
8207
+ "content_hash": "b362399fba15095ce7f7c0f8714833b19ceedc1dc066278425538e13b4364cde",
7461
8208
  "summary": "Read a resource file (a mesh's AABB, surfaces and materials; a scene's nodes; any resource's non-default properties) or a resource a node holds.",
7462
8209
  "use_when": [
7463
8210
  "reading sub-properties that the node inspector only names",
@@ -7492,7 +8239,7 @@
7492
8239
  "id": "tool/inspect-runtime-node",
7493
8240
  "kind": "tool",
7494
8241
  "version": "1.0.1",
7495
- "content_hash": "32557c8048ccd5af1d95a0d71d3d12df48ccc9802aea6b978954e3031ac8e785",
8242
+ "content_hash": "aaa22341f08b2ebb2ed1ac99872ab9a4a4b1b97ca9efbee1b963c46618e66f26",
7496
8243
  "summary": "Live properties of one node in the RUNNING game — actual stats, position, flags — without stopping the game and losing the state.",
7497
8244
  "use_when": [
7498
8245
  "answering \"where IS the player\" or \"what are this enemy's stats right now\" during a playtest",
@@ -7538,7 +8285,7 @@
7538
8285
  "id": "tool/instantiate-scene",
7539
8286
  "kind": "tool",
7540
8287
  "version": "1.1.0",
7541
- "content_hash": "f53c8c4d2df1ae52eb8d47518f780c16c910b17e9b9b443e33bc4030b7a8b039",
8288
+ "content_hash": "7b1a511fbe9f6ec3ebcfb3b6af752e65505fd7ab2caa18220397e8bc8dbe0d0d",
7542
8289
  "summary": "Add an existing scene or 3D model file as a child node, optionally placed in the same call (position, rotation_degrees, scale or transform).",
7543
8290
  "use_when": [
7544
8291
  "placing a .tscn prefab or imported 3D model into a scene",
@@ -7573,7 +8320,7 @@
7573
8320
  "id": "tool/is-running",
7574
8321
  "kind": "tool",
7575
8322
  "version": "1.0.2",
7576
- "content_hash": "d159960b358cb01ecdde97f2fa23cd5cab3e50a4aa77b9a5183d2a92e774046d",
8323
+ "content_hash": "69d9b505487c755c1ad3ff49c9d99ab9c05a0b5a164d17e7625ae4f63925bb68",
7577
8324
  "summary": "Check whether the game is running; returns the active scene path when it is.",
7578
8325
  "use_when": [
7579
8326
  "deciding whether to boot, restart, or capture the running game",
@@ -7673,7 +8420,7 @@
7673
8420
  "id": "tool/measure",
7674
8421
  "kind": "tool",
7675
8422
  "version": "1.0.0",
7676
- "content_hash": "d6104d4b6e3ace9f0397b65ffdb2f2da2c541422ba02e776d7eab0fed5400094",
8423
+ "content_hash": "6cf4decb8cc695922546875eb8e32c80746e033af939a6e350c1d793998ad089",
7677
8424
  "summary": "Gap or overlap per axis between two placed nodes, or whether one face of many nodes is coplanar — catches facade gaps and modules standing proud. Read-only.",
7678
8425
  "use_when": [
7679
8426
  "checking that two facade modules meet edge to edge, or how far apart or overlapping two pieces are on each axis",
@@ -7722,7 +8469,7 @@
7722
8469
  "id": "tool/navigation-probe",
7723
8470
  "kind": "tool",
7724
8471
  "version": "1.0.0",
7725
- "content_hash": "19a82a58187922eb9307e65d2d81fabd7c98487e1939af14b2a4cdf3985d6d9b",
8472
+ "content_hash": "0bd442a60d422fcc164f37cf5f0a4893b76823bf6c79eba14a45ceb710a61227",
7726
8473
  "summary": "Read-only reachability between two world points on the scene's Godot navigation map — readiness, snapped endpoints, route length, up to 16 route points.",
7727
8474
  "use_when": [
7728
8475
  "placing an NPC, pickup, portal, or encounter anchor whose route from spawn matters",
@@ -7771,7 +8518,7 @@
7771
8518
  "id": "tool/open",
7772
8519
  "kind": "tool",
7773
8520
  "version": "1.0.1",
7774
- "content_hash": "c1087ddd07caf7bca466f5545aa8f15c3e28dd6d4cedd41eddb28f466025ff02",
8521
+ "content_hash": "818d25fa4bde4b36dcfb7b29f74b8ee13768f264feee21288998bbf1f7017904",
7775
8522
  "summary": "Open the exact summerengine.com page or editor surface by intent name — billing, my games, an MCP guide, a scene, a node, a dock — or print the URL/op.",
7776
8523
  "use_when": [
7777
8524
  "the user wants to SEE or DECIDE something on the website — \"open my billing page\", \"show me my published games\", \"take me to pricing\", \"open the MCP setup guide for Cursor\"",
@@ -7818,7 +8565,7 @@
7818
8565
  "authority": {
7819
8566
  "filesystem": false,
7820
8567
  "editor_mutation": false,
7821
- "network": false,
8568
+ "network": true,
7822
8569
  "credentials": false,
7823
8570
  "publish": false
7824
8571
  }
@@ -7827,7 +8574,7 @@
7827
8574
  "id": "tool/open-main-scene",
7828
8575
  "kind": "tool",
7829
8576
  "version": "1.0.2",
7830
- "content_hash": "ee8c6ba7f7e0fac6bdfb4a5aa3f4afb2930840c9204c88cb956e2d8080e55900",
8577
+ "content_hash": "a737d0fa2cd6f92f8bc08e6e19846f158a2f3311772ac9fd1c328b0055dc5ba6",
7831
8578
  "summary": "Open the project's configured main scene from project settings instead of guessing scene filenames.",
7832
8579
  "use_when": [
7833
8580
  "any tool reports that no scene is open",
@@ -7861,7 +8608,7 @@
7861
8608
  "id": "tool/open-scene",
7862
8609
  "kind": "tool",
7863
8610
  "version": "1.0.2",
7864
- "content_hash": "1e0bebc35369eae6c894b02603963829bc75a5b4e2db42ae5c1b1bd92827d363",
8611
+ "content_hash": "39d8ac4fd72cd3844777da47afbf536020b4418cf8cceee54bd5aa9e59163aab",
7865
8612
  "summary": "Open a scene file in the editor to switch tabs.",
7866
8613
  "use_when": [
7867
8614
  "switching the editor to an explicitly known scene path",
@@ -7895,7 +8642,7 @@
7895
8642
  "id": "tool/place-adjacent",
7896
8643
  "kind": "tool",
7897
8644
  "version": "1.0.0",
7898
- "content_hash": "891191f1947f53ad9803922be0075636554b4279914e5a6c4e9f064c1c7f3f25",
8645
+ "content_hash": "4b06271d1a3f354e872bfb9d870109b309b14c5e121af910474d9b1358d7df96",
7899
8646
  "summary": "Move one node so its bounds face sits against another's along an axis, lining up the other axes — facade modules edge to edge, storeys stacked. Saves the scene.",
7900
8647
  "use_when": [
7901
8648
  "laying facade or wall modules edge to edge along a street line",
@@ -7945,7 +8692,7 @@
7945
8692
  "id": "tool/play",
7946
8693
  "kind": "tool",
7947
8694
  "version": "1.3.0",
7948
- "content_hash": "847dc3ae4e1602479d2198e6cfa39f31e7b6285d05f97731ffd424830f708afd",
8695
+ "content_hash": "8907087f8f29d2324d92ed9d656c74dfc7530dd55743b0de7c4768c3d3c42753",
7949
8696
  "summary": "Start the game quietly (editor keeps tab and focus) — main or a given scene, embedded or offscreen, with pins, or a local multiplayer session (players).",
7950
8697
  "use_when": [
7951
8698
  "runtime verification after edits",
@@ -7997,7 +8744,7 @@
7997
8744
  "id": "tool/project-setting",
7998
8745
  "kind": "tool",
7999
8746
  "version": "1.0.2",
8000
- "content_hash": "d5942df90e058a5536fc524629c6e34b572c4b36617aaf5246c32732dafa34f6",
8747
+ "content_hash": "6e4518f2563c690a25bf24a4801f11176cfec67dfe63b9cc3baa4776c771ff67",
8001
8748
  "summary": "Set one project.godot setting, like main scene, window size, renderer, or gravity.",
8002
8749
  "use_when": [
8003
8750
  "configuring project-level behavior",
@@ -8030,8 +8777,8 @@
8030
8777
  {
8031
8778
  "id": "tool/publish-build",
8032
8779
  "kind": "tool",
8033
- "version": "1.0.0",
8034
- "content_hash": "653ac78e87a1a84c674bfdf0bf9c03889812edd5566b2c611f327b7cf84335c5",
8780
+ "version": "1.0.1",
8781
+ "content_hash": "2f9c5ce45a996d922b2f51f66acfc6c67c99bbd82c2fd3c7babaee29e5d9f914",
8035
8782
  "summary": "Upload an export from summer_export_game to the creator's store game, confirm-gated - a store bundle as a Build, or a web or native download as a store version.",
8036
8783
  "use_when": [
8037
8784
  "\"upload my game to summer.games\"",
@@ -8054,7 +8801,7 @@
8054
8801
  "compatibility": {
8055
8802
  "engine": ">=4.6"
8056
8803
  },
8057
- "status": "preview",
8804
+ "status": "stable",
8058
8805
  "mcp_tool_name": "summer_publish_build",
8059
8806
  "remote": true,
8060
8807
  "authority": {
@@ -8069,7 +8816,7 @@
8069
8816
  "id": "tool/raycast",
8070
8817
  "kind": "tool",
8071
8818
  "version": "1.0.0",
8072
- "content_hash": "c1b0a03e470031d6c0adfaeccab2c2c8eb386cb08fec980bcfa4c0f43ea5af8e",
8819
+ "content_hash": "ebd29435c93b0650d712a35f2f1def29708a032dddb629207f9132d1f586e91a",
8073
8820
  "summary": "Cast one ray from any point in an open scene — hit node, point and normal; physics first, visual AABB fallback declared. Read-only.",
8074
8821
  "use_when": [
8075
8822
  "finding the wall, floor or ceiling in front of a point and its normal before anything is placed there",
@@ -8117,7 +8864,7 @@
8117
8864
  "id": "tool/read-file",
8118
8865
  "kind": "tool",
8119
8866
  "version": "1.1.0",
8120
- "content_hash": "a17383c044d72243bd190c4d0f4e45f16fba35ad741796a3d68d9ffb495b7f8d",
8867
+ "content_hash": "638ac6a5db54ba05762c846ca5f135ff5c775d8fde57b100be6fe56e0300dca4",
8121
8868
  "summary": "Read a project text file, a line or byte window of it, or the entries of a .json picked by json_path/keys, with the full-file sha256 receipt.",
8122
8869
  "use_when": [
8123
8870
  "reading project files through the engine",
@@ -8159,7 +8906,7 @@
8159
8906
  "id": "tool/read-library",
8160
8907
  "kind": "tool",
8161
8908
  "version": "1.1.0",
8162
- "content_hash": "ded3e95871d25d27a9a53b4f7bc70433587c9d62b81387409505a3e97fb3e2e3",
8909
+ "content_hash": "050fa0a40a40cd54bda86d283c7168863508d5ba9e6142ed57f2f8315f5e54c5",
8163
8910
  "summary": "Load one library entry by id — a skill's body and metadata, a tool's call recipe, a template's pin, a reference's text — ending in the feedback footer.",
8164
8911
  "use_when": [
8165
8912
  "summer_search_library returned an id and you need the entry itself before acting",
@@ -8209,7 +8956,7 @@
8209
8956
  "id": "tool/recent-events",
8210
8957
  "kind": "tool",
8211
8958
  "version": "1.0.0",
8212
- "content_hash": "f8f9c7fba524b0f43f8ff0af45cdaef01fa6ed4710b1c78b3f45d4de1462fed0",
8959
+ "content_hash": "4b31ef694f4acd58c9a671ea1893bfda05c65b10109bb19ad4f31311e298a89c",
8213
8960
  "summary": "Read the newest engine events (saves, plays, op receipts, script errors, imports) in one zero-wait poll — and the next_seq cursor to wait from.",
8214
8961
  "use_when": [
8215
8962
  "\"what just happened in the engine?\" / \"show me the recent events\" — the last saves, plays, op receipts, script errors, imports",
@@ -8260,7 +9007,7 @@
8260
9007
  "id": "tool/remove-node",
8261
9008
  "kind": "tool",
8262
9009
  "version": "1.0.2",
8263
- "content_hash": "5089297f1c5f4f63acba875e158f4e48ee2c84264a2ec43e9aba665bcc0c5fbf",
9010
+ "content_hash": "d7e2917a1fd9b9323f0e5272535fa43f032e691a1da17e592e319629a815a50e",
8264
9011
  "summary": "Remove a node and all its children from a scene; undoable, but destructive.",
8265
9012
  "use_when": [
8266
9013
  "deleting scene content the user asked to remove",
@@ -8294,7 +9041,7 @@
8294
9041
  "id": "tool/repeat-along",
8295
9042
  "kind": "tool",
8296
9043
  "version": "1.0.0",
8297
- "content_hash": "0f8df6a49ce6ea622343627bbf71ef997831da8830251bf6828bb5e3dcfc619e",
9044
+ "content_hash": "288d19a98e7618cb4662d4bcc740fde3fe6d67415f3117bfc24f836854b1ac2b",
8298
9045
  "summary": "Instance copies of one scene along a line in one call — clamps every 0.45 m, braces, fence posts, window rows — and get the created node paths back.",
8299
9046
  "use_when": [
8300
9047
  "placing wall clamps, gutter braces or duct braces at a fixed spacing along a run",
@@ -8343,7 +9090,7 @@
8343
9090
  "id": "tool/replace-node",
8344
9091
  "kind": "tool",
8345
9092
  "version": "1.1.0",
8346
- "content_hash": "73ffc0dc80960e12daee3ec03cdf2a92014d259c1092fb23e60b19ef680f6549",
9093
+ "content_hash": "0fb4ae84243f7d860bf9965add882f0e013445f27649abee91ffcc4681856de5",
8347
9094
  "summary": "Replace a node with another scene or type, keeping its parent, index, name, transform and children, and verify the saved scene holds it.",
8348
9095
  "use_when": [
8349
9096
  "swapping a placeholder for a prefab or changing a body type",
@@ -8385,7 +9132,7 @@
8385
9132
  "id": "tool/replace-text",
8386
9133
  "kind": "tool",
8387
9134
  "version": "1.0.2",
8388
- "content_hash": "f003a37d04d610539c822a9ad7ad22e70452683f29872545e9f29eb2bbefbdf3",
9135
+ "content_hash": "59d1f6c0200833d00053713600ab7f2c201b277b3481bcdbe0357dc272071f54",
8389
9136
  "summary": "Safely replace text in an existing project file: unique match required by default, then a sha256-guarded write.",
8390
9137
  "use_when": [
8391
9138
  "targeted edits to scripts, scenes, or config without resending the whole file",
@@ -8419,7 +9166,7 @@
8419
9166
  "id": "tool/run-editor-script",
8420
9167
  "kind": "tool",
8421
9168
  "version": "1.0.2",
8422
- "content_hash": "7cdf3b2dfcd8d1ed571484fc27347dc44ddc0165b4fc5102ace50a1071155e21",
9169
+ "content_hash": "1b5fb64108c247c1d1d4a362ab53d1c78aa83cf70e1588ce173b8253be489a93",
8423
9170
  "summary": "Run an EditorScript `func _run():` in a fresh headless child editor against the on-disk project — the cold path for batch and project-wide jobs.",
8424
9171
  "use_when": [
8425
9172
  "re-saving many scenes, sweeping resources, mass import fixes, generating .tres assets, long bakes that should not block the live editor",
@@ -8464,9 +9211,9 @@
8464
9211
  {
8465
9212
  "id": "tool/run-script",
8466
9213
  "kind": "tool",
8467
- "version": "1.0.1",
8468
- "content_hash": "048c174e32beef498a5a47a08580f369b1a0be94be2d3aeb33db41ad9a9a7278",
8469
- "summary": "Run a GDScript `func run(ctx):` inside the live editor against the open scene — one script instead of a chain of add-node/set-prop calls.",
9214
+ "version": "1.1.0",
9215
+ "content_hash": "ea06ccc917c1e4fc53944a59d14b443c9565b17e262f50bec15b13709f2ed610",
9216
+ "summary": "Run a GDScript `func run(ctx):` inside the live editor against scenePath — one script instead of a chain of add-node/set-prop calls.",
8470
9217
  "use_when": [
8471
9218
  "a change needs 3+ related ops or any computed placement (scatter, grids, procedural meshes, bulk edits)",
8472
9219
  "the ctx helpers (add_node, add_mesh, grid, scatter, light rig, environment) fit the job"
@@ -8499,7 +9246,7 @@
8499
9246
  "skill/verifying-scenes"
8500
9247
  ]
8501
9248
  },
8502
- "status": "preview",
9249
+ "status": "stable",
8503
9250
  "mcp_tool_name": "summer_run_script",
8504
9251
  "remote": false,
8505
9252
  "authority": {
@@ -8514,7 +9261,7 @@
8514
9261
  "id": "tool/runtime-animate",
8515
9262
  "kind": "tool",
8516
9263
  "version": "1.0.0",
8517
- "content_hash": "58caceb2d272f504d60e6c203ecf7288f64cde10472f402438c7740c3024b1dc",
9264
+ "content_hash": "2f89196429056b127ba70a27877345f69e7c7ad35fde711b8ecc827a77506541",
8518
9265
  "summary": "Drive and read animation in the RUNNING game — AnimationPlayer clips, AnimationTree state machines, and live Skeleton3D bone poses.",
8519
9266
  "use_when": [
8520
9267
  "checking which clip or state-machine state is actually playing in the running game, then driving it (play, seek, travel, set a blend parameter)",
@@ -8567,7 +9314,7 @@
8567
9314
  "id": "tool/runtime-call",
8568
9315
  "kind": "tool",
8569
9316
  "version": "1.0.0",
8570
- "content_hash": "4cf5cd33f6353ee9a11b889a1aa3ca4a2d24f8eb67cae42ca2f2600615d028a3",
9317
+ "content_hash": "de484153bf675702706fee051adf6e2b7f104852afc344781318693838a3e53a",
8571
9318
  "summary": "Call one method on a node in the RUNNING game and get its return value — trigger gameplay code directly instead of waiting for input or timers.",
8572
9319
  "use_when": [
8573
9320
  "triggering gameplay code in the running game and reading its answer — take_damage, start_wave, get_velocity",
@@ -8619,7 +9366,7 @@
8619
9366
  "id": "tool/runtime-set",
8620
9367
  "kind": "tool",
8621
9368
  "version": "1.0.0",
8622
- "content_hash": "19be16f4a367ab9e3aba7403c54231fb7475798972a31946c67dc9d80ba03ff5",
9369
+ "content_hash": "e590a3e770692bde55c467e118c29b720f851c2cc4493aae4e75c1bfed4c9759",
8623
9370
  "summary": "Set one property on a node in the RUNNING game — the live object, never the scene file — and read back whether it applied.",
8624
9371
  "use_when": [
8625
9372
  "putting the running game into a test state without playing there by hand — teleport the player, set health to 1, flip a flag, toggle visibility",
@@ -8671,7 +9418,7 @@
8671
9418
  "id": "tool/runtime-spawn",
8672
9419
  "kind": "tool",
8673
9420
  "version": "1.0.0",
8674
- "content_hash": "3c64559d9b9a5c41b66b6f86c0de97ed7771975e5f8b330ac44e686f68c981e7",
9421
+ "content_hash": "28df6f67219f42d92abe956925c43c4c890948d35cf12dee7f873620e67da34d",
8675
9422
  "summary": "Spawn a PackedScene into the RUNNING game (action spawn) or free a live node (action free) — stage a test in seconds without touching the scene file.",
8676
9423
  "use_when": [
8677
9424
  "staging a runtime test — place three goblins under the spawner, add a pickup next to the player, remove the boss to test the empty-arena path",
@@ -8723,7 +9470,7 @@
8723
9470
  "id": "tool/save-scene",
8724
9471
  "kind": "tool",
8725
9472
  "version": "1.0.2",
8726
- "content_hash": "fefc2489e16634edd4ed29780930e9daad8e002e6fb0d61e48913620a29bc585",
9473
+ "content_hash": "b73c2e7fb78245c5e5a039988b8b280eb4968f804ffa20cb08d3f2aba6132981",
8727
9474
  "summary": "Save an explicit scene to disk, for standalone saves or save-as.",
8728
9475
  "use_when": [
8729
9476
  "a standalone save or save-as is needed",
@@ -8757,7 +9504,7 @@
8757
9504
  "id": "tool/scene-audit",
8758
9505
  "kind": "tool",
8759
9506
  "version": "1.3.0",
8760
- "content_hash": "474abfec07fd4dc9a955bbaf7894bc5bea743f81842646b847bf091611ed2e37",
9507
+ "content_hash": "b4210d50ea13edb1ac413759b5670ebff3795cb87cb25561424223183d221436",
8761
9508
  "summary": "Read-only pass over any 3D scene, from geometry and materials: see-through holes, exposed edges, open pipe ends, floor gaps, clipping props.",
8762
9509
  "use_when": [
8763
9510
  "after each build stage of a 3D level or kit-built street: \"what is wrong with this scene and where exactly?\"",
@@ -8815,7 +9562,7 @@
8815
9562
  "id": "tool/screenshot",
8816
9563
  "kind": "tool",
8817
9564
  "version": "1.2.0",
8818
- "content_hash": "1b3955c9e46ce009b49de86f00418b60d10f55fff0f9804cea7586bcdfc1b551",
9565
+ "content_hash": "c421909fa8ea62c3be65cbbe2863ddffa1599be5b372b5b378a37e0eb435abe3",
8819
9566
  "summary": "Capture a frame from the editor viewport, an offscreen scene render (fixed or bookmarked pose, numbered labels), or the running game, as an actual image.",
8820
9567
  "use_when": [
8821
9568
  "visually verifying layout, scale, framing, or runtime state",
@@ -8947,7 +9694,7 @@
8947
9694
  "id": "tool/select-node",
8948
9695
  "kind": "tool",
8949
9696
  "version": "1.0.2",
8950
- "content_hash": "2ef5adab532c432601cf4ed7a318f3af1123edcbc9ff6298d65f0779d77857f7",
9697
+ "content_hash": "29e08a3ba3e8c523cce8311685f933f9639445e2515f6ef8de7ce6c1385df477",
8951
9698
  "summary": "Select a node in the editor scene tree and show it in the inspector.",
8952
9699
  "use_when": [
8953
9700
  "focusing the user's editor on a specific node",
@@ -8981,7 +9728,7 @@
8981
9728
  "id": "tool/set-prop",
8982
9729
  "kind": "tool",
8983
9730
  "version": "1.0.2",
8984
- "content_hash": "8cede86cfad08b52b99b72a14f6118af168f5ca05856599f0053bff9af8f5d76",
9731
+ "content_hash": "7322a8ec389c209d41c7fe0b56f47c8e8b42616d19044d9b070d7ff6721ab5f9",
8985
9732
  "summary": "Set a node property using Godot string syntax for vectors, colors, transforms, and resource class names.",
8986
9733
  "use_when": [
8987
9734
  "configuring nodes after adding them",
@@ -9015,7 +9762,7 @@
9015
9762
  "id": "tool/set-resource-property",
9016
9763
  "kind": "tool",
9017
9764
  "version": "1.0.2",
9018
- "content_hash": "1d34d2a35dd857909754857b1a5de8696ab88aacfc4a034b5e52a021b282e155",
9765
+ "content_hash": "540bb40211a70992df7971380c4fb61d3563473e90ddc9d4c2dc19791c8fc36e",
9019
9766
  "summary": "Set a nested property on a resource attached to a node, like a collision shape size or material color.",
9020
9767
  "use_when": [
9021
9768
  "modifying sub-properties of meshes, materials, or shapes",
@@ -9049,7 +9796,7 @@
9049
9796
  "id": "tool/shot-sheet",
9050
9797
  "kind": "tool",
9051
9798
  "version": "1.0.0",
9052
- "content_hash": "45db27ac2ad936e72212fc8172bc6facaddc4e8ee7eee723b9decf88f3629dbf",
9799
+ "content_hash": "9e9dddf23e353637b51db1a6ae82e0be981c0c3bbe3274262194a644e9e2a004",
9053
9800
  "summary": "Render N bookmarks and/or poses into one labelled grid image with real lighting; compare each bookmark with its previous render (difference map).",
9054
9801
  "use_when": [
9055
9802
  "seeing every hero view of an environment at once after a change, in one image",
@@ -9133,7 +9880,7 @@
9133
9880
  "id": "tool/snap-to-surface",
9134
9881
  "kind": "tool",
9135
9882
  "version": "1.2.0",
9136
- "content_hash": "b7c9d59e4c42872f02689437a4e091d0429733b4dbf93850aac3fe8e363c93f0",
9883
+ "content_hash": "be7dfce006254a9c8b01a7d4e6402e6f4bccf16c33c88ef4a0828208aeeeaf49",
9137
9884
  "summary": "Move one 3D subject along a world ray until it sits at the requested gap from the first surface (floor, ramp, shelf, table), then save the scene.",
9138
9885
  "use_when": [
9139
9886
  "seating a prop on a floor, ramp, table, or shelf instead of hand-tuning its Y position",
@@ -9184,7 +9931,7 @@
9184
9931
  "id": "tool/snapshot-diff",
9185
9932
  "kind": "tool",
9186
9933
  "version": "1.0.1",
9187
- "content_hash": "500b39603410e8dd9dc7af2526671d58efb341ceff5556f0038f831b5dbcc2b5",
9934
+ "content_hash": "996761994942d2099ccfa3e5352a59fe3eb9cc3c8637a5c1f1718625dcbe657d",
9188
9935
  "summary": "Diff two world snapshots into added/removed/changed nodes and count deltas — the structural receipt that a mutation did exactly what was intended.",
9189
9936
  "use_when": [
9190
9937
  "verifying a mutation batch against the snapshot_id taken before it",
@@ -9231,7 +9978,7 @@
9231
9978
  "id": "tool/starcast",
9232
9979
  "kind": "tool",
9233
9980
  "version": "1.0.0",
9234
- "content_hash": "149de44b173e1bc315fd87bf42d713fb4fa9eba3d7979942293ef6bf200cd222",
9981
+ "content_hash": "d60064e9567a356dbe7c2e0d36e178c0f6eb26feef100e7edf6a941f83e820d1",
9235
9982
  "summary": "Read-only 3D placement rundown for one node — 26 directional clearance casts, contact-or-overlap evidence, grounding, nearby geometry. Never moves or saves.",
9236
9983
  "use_when": [
9237
9984
  "learning what surrounds a placed prop before and after a correction — which direction is blocked, by what, and at what distance",
@@ -9318,7 +10065,7 @@
9318
10065
  "id": "tool/stop",
9319
10066
  "kind": "tool",
9320
10067
  "version": "1.1.1",
9321
- "content_hash": "9b6590d40c5badbd71497513aea70aaa5bb382fee833c3c1fac6af7dc9e73a0a",
10068
+ "content_hash": "4aaebbc1a8692a0d03a1d33bf92b1d3f5ff4adff8e73e075a1aeb3449f03e0af",
9322
10069
  "summary": "Stop the running game (or one named offscreen instance). Does not revert scene edits, undo anything, or save — the editor state is left exactly as it is.",
9323
10070
  "use_when": [
9324
10071
  "runtime verification is finished",
@@ -9359,7 +10106,7 @@
9359
10106
  "id": "tool/test-placement",
9360
10107
  "kind": "tool",
9361
10108
  "version": "1.0.0",
9362
- "content_hash": "4c1ad515f5ae70d1f256b86fb44f3c81984e3f59b8e482c55967c54c58d0e2af",
10109
+ "content_hash": "ecdf39562cc5c5250bf6fd14c092159d8ba66a7f37489b5efd7739a738a253c1",
9363
10110
  "summary": "Ghost-test one 3D node at a candidate global pose without moving it — overlap evidence, grounded state, signed floor gap. Read-only.",
9364
10111
  "use_when": [
9365
10112
  "deciding whether a prop fits in a shelf, cubby, doorway, platform, or dense set before committing the transform",
@@ -9408,7 +10155,7 @@
9408
10155
  "id": "tool/ui-actions",
9409
10156
  "kind": "tool",
9410
10157
  "version": "1.0.0",
9411
- "content_hash": "52cad0fa683ffde23b6c3b5be24ef6e87765b1d67d63c6e646860a77a4072cb5",
10158
+ "content_hash": "ff6998c3ce39f8c0fbfb94daf65e2aec7839265a6ac6b50f27017edafa85f94f",
9412
10159
  "summary": "List the editor's named actions or invoke one by name exactly as its menu item / shortcut would — open Project Settings, switch screens, toggle panels.",
9413
10160
  "use_when": [
9414
10161
  "\"open project settings in the editor\" / \"open the Import dock\" / \"toggle the animation bottom panel\" — an editor-workflow step a human would do with the mouse, driven by its stable action name",
@@ -9460,7 +10207,7 @@
9460
10207
  "id": "tool/ui-activate",
9461
10208
  "kind": "tool",
9462
10209
  "version": "1.0.0",
9463
- "content_hash": "6ef1ca9999070dd2ca3b054f3c20983b83bb4e836a73b960d3a0ca642f4941b6",
10210
+ "content_hash": "8bf16171089ebe5d92367d0357c53e6714f4855dc3ea8399d4aad46b3098120e",
9464
10211
  "summary": "Activate one editor control by tree path — press, toggle, focus, select a tab, type text, dial a value — or dismiss a blocking dialog; state is read back.",
9465
10212
  "use_when": [
9466
10213
  "\"dismiss the dialog that is blocking the editor\" / \"close that popup\" — action dismiss_dialog with the path or title from summer_ui_tree root dialogs",
@@ -9509,7 +10256,7 @@
9509
10256
  "id": "tool/ui-screenshot",
9510
10257
  "kind": "tool",
9511
10258
  "version": "1.0.0",
9512
- "content_hash": "b29c5f4908a6a816425d6281448cf0cd3830b3df91a32a62d86b2da7cebd3c51",
10259
+ "content_hash": "b8e24c872aea905d24154f1b267ab4905c006a576c40962c77bdc66ed1129319",
9513
10260
  "summary": "PNG of the editor window or one dock/dialog/control as an image — the pixels-last fallback for looking at the editor UI, never for picking click coordinates.",
9514
10261
  "use_when": [
9515
10262
  "\"show me what the editor looks like right now\" / \"screenshot the Inspector dock\" — seeing layout or an unfamiliar panel after summer_ui_tree has described it",
@@ -9558,7 +10305,7 @@
9558
10305
  "id": "tool/ui-tree",
9559
10306
  "kind": "tool",
9560
10307
  "version": "1.0.0",
9561
- "content_hash": "83f9f8f61e441eccd050f09a9fb0e12bf4884a5f2a12a0df6102f1f9108ec9d0",
10308
+ "content_hash": "33b17290e03042ae187ea83a60b37547b7a2e7fd57d694ee088e47424210f3c8",
9562
10309
  "summary": "Structured tree of the live editor UI (controls, paths, text, state) or every visible dialog with its blocking flag — the cheap alternative to a screenshot.",
9563
10310
  "use_when": [
9564
10311
  "\"is a dialog blocking the editor\" / \"what does the Inspector dock show\" / \"which main screen is active\" — read editor UI state as structure instead of pixels",
@@ -9608,7 +10355,7 @@
9608
10355
  "id": "tool/wait-for-event",
9609
10356
  "kind": "tool",
9610
10357
  "version": "1.0.0",
9611
- "content_hash": "670da1a0f9820e969ae6f72dac6dd8e253be5c5bb204e92abfb6648482ad42df",
10358
+ "content_hash": "7009939c00649bac528ed87e907fbb2cc9c22d9f4db4d7f810c5ae6ffe36d09e",
9612
10359
  "summary": "Wait for an engine event — the game starting, an op finishing, a script error, a save — instead of sleeping and re-polling; honest timeout.",
9613
10360
  "use_when": [
9614
10361
  "\"wait for the game to start\" — right after summer_play, wait for play.started instead of guessing how long boot takes",
@@ -9661,7 +10408,7 @@
9661
10408
  "id": "tool/world-snapshot",
9662
10409
  "kind": "tool",
9663
10410
  "version": "1.1.0",
9664
- "content_hash": "09d31f36f56fb04eefcd8d4c7b875e320a7525e75659f4a022ca8c5782982d58",
10411
+ "content_hash": "8f8dab1d735156630961e3bbef0b5e8985eb7f9e8e933a173aae163c56fbe9e1",
9665
10412
  "summary": "Structured scene snapshot (paths, transforms, world AABBs, fingerprints, counts), filterable by subtree, class and field; the read around every mutation.",
9666
10413
  "use_when": [
9667
10414
  "taking a diffable baseline before a mutation batch, or verifying transforms/AABBs/fingerprints after one",
@@ -9713,7 +10460,7 @@
9713
10460
  "id": "tool/write-file",
9714
10461
  "kind": "tool",
9715
10462
  "version": "1.0.2",
9716
- "content_hash": "0b2f2d341b256697ac8375e8fe501af6984c9fdf521ea431d5de34b30839ea32",
10463
+ "content_hash": "a4b39712bf00552b3729956397a16c729fdfd477e8798b88b8fdaaad01b7c761",
9717
10464
  "summary": "Create or safely overwrite one complete text file through the identity-bound engine; exactly one guard is required, so writes fail closed.",
9718
10465
  "use_when": [
9719
10466
  "creating a new project file with the create-only guard",
@@ -9746,7 +10493,7 @@
9746
10493
  "id": "tool/zoom",
9747
10494
  "kind": "tool",
9748
10495
  "version": "1.0.0",
9749
- "content_hash": "89aa4303b4c395883ffbc34ca9aa9896fd7bbc75ed23f9d3993550c17ab725ea",
10496
+ "content_hash": "a6cb76ca44426871caaf3e9a27d4d048ef57bd58c483effbff80d17f997a2b56",
9750
10497
  "summary": "High-resolution close-up of exactly a frame region or of mark N, rendered as the exact sub-frustum at full resolution (real detail, not upscaled pixels).",
9751
10498
  "use_when": [
9752
10499
  "checking seams, gaps, floating pieces, texture resolution or tiling up close",