summer-engine 3.8.0 → 4.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (527) hide show
  1. package/.claude-plugin/marketplace.json +2 -13
  2. package/.claude-plugin/plugin.json +24 -22
  3. package/.codex-plugin/plugin.json +18 -22
  4. package/.cursor-plugin/plugin.json +8 -14
  5. package/.factory-plugin/plugin.json +6 -13
  6. package/AGENTS.md +19 -12
  7. package/CHANGELOG.md +133 -0
  8. package/GEMINI.md +3 -3
  9. package/README.md +118 -37
  10. package/assets/icon.png +0 -0
  11. package/commands/start.md +71 -0
  12. package/commands/summer.md +3 -2
  13. package/dist/cli/banner.js +3 -0
  14. package/dist/cli/commands/config.js +3 -2
  15. package/dist/cli/commands/create.js +12 -3
  16. package/dist/cli/commands/list.d.ts +5 -0
  17. package/dist/cli/commands/list.js +30 -13
  18. package/dist/cli/commands/login.d.ts +27 -0
  19. package/dist/cli/commands/login.js +58 -12
  20. package/dist/cli/commands/memory.js +6 -2
  21. package/dist/cli/commands/ops.d.ts +64 -0
  22. package/dist/cli/commands/ops.js +329 -0
  23. package/dist/cli/commands/setup.d.ts +4 -0
  24. package/dist/cli/commands/setup.js +254 -26
  25. package/dist/cli/commands/skills.js +28 -11
  26. package/dist/cli/commands/status.d.ts +26 -0
  27. package/dist/cli/commands/status.js +36 -21
  28. package/dist/cli/index.js +7 -0
  29. package/dist/core/agent-host.d.ts +65 -0
  30. package/dist/core/agent-host.js +193 -0
  31. package/dist/core/capabilities/agent-playbook.d.ts +3 -0
  32. package/dist/core/capabilities/agent-playbook.js +54 -2
  33. package/dist/core/capabilities/apps.d.ts +33 -10
  34. package/dist/core/capabilities/apps.js +25 -12
  35. package/dist/core/capabilities/audit/args.d.ts +6 -6
  36. package/dist/core/capabilities/doctor.d.ts +3 -0
  37. package/dist/core/capabilities/doctor.js +20 -15
  38. package/dist/core/capabilities/fabricate-mesh.d.ts +4 -4
  39. package/dist/core/capabilities/game-task-plan.d.ts +12 -6
  40. package/dist/core/capabilities/game-task-plan.js +80 -5
  41. package/dist/core/capabilities/hdri-import.d.ts +2 -2
  42. package/dist/core/capabilities/motion-generation.d.ts +2 -2
  43. package/dist/core/capabilities/motion-generation.js +2 -2
  44. package/dist/core/capabilities/navigation/open.d.ts +6 -2
  45. package/dist/core/capabilities/navigation/open.js +3 -0
  46. package/dist/core/capabilities/placement.d.ts +23 -23
  47. package/dist/core/capabilities/publish-build.js +2 -0
  48. package/dist/core/capabilities/runtime-control.d.ts +42 -42
  49. package/dist/core/capabilities/scene-script-target.d.ts +17 -0
  50. package/dist/core/capabilities/scene-script-target.js +70 -0
  51. package/dist/core/capabilities/seeing/args.d.ts +16 -16
  52. package/dist/core/capabilities/sfx-choices.d.ts +4 -0
  53. package/dist/core/capabilities/sfx-choices.js +13 -6
  54. package/dist/core/capabilities/tool-dispatch.d.ts +12 -3
  55. package/dist/core/capabilities/tool-dispatch.js +81 -46
  56. package/dist/core/capabilities/ui-control.d.ts +2 -2
  57. package/dist/core/capabilities/world-snapshot.d.ts +4 -4
  58. package/dist/core/embeddings.d.ts +2 -0
  59. package/dist/core/embeddings.js +1 -1
  60. package/dist/core/error-codes.d.ts +62 -0
  61. package/dist/core/error-codes.js +97 -0
  62. package/dist/core/format.d.ts +2 -0
  63. package/dist/core/format.js +2 -1
  64. package/dist/core/hosted-mcp.d.ts +22 -0
  65. package/dist/core/hosted-mcp.js +56 -1
  66. package/dist/core/library-read.js +5 -0
  67. package/dist/core/library-search.d.ts +2 -2
  68. package/dist/core/library-search.js +2 -1
  69. package/dist/core/oauth.js +4 -0
  70. package/dist/core/ops/areas.d.ts +11 -0
  71. package/dist/core/ops/areas.js +24 -0
  72. package/dist/core/ops/catalog.d.ts +45 -0
  73. package/dist/core/ops/catalog.js +157 -0
  74. package/dist/core/ops/cloud.d.ts +64 -0
  75. package/dist/core/ops/cloud.js +198 -0
  76. package/dist/core/ops/contract.d.ts +120 -0
  77. package/dist/core/ops/contract.js +134 -0
  78. package/dist/core/ops/engine-answer.d.ts +25 -0
  79. package/dist/core/ops/engine-answer.js +117 -0
  80. package/dist/core/ops/engine.d.ts +55 -0
  81. package/dist/core/ops/engine.js +649 -0
  82. package/dist/core/ops/public-catalog.d.ts +48 -0
  83. package/dist/core/ops/public-catalog.js +56 -0
  84. package/dist/core/ops/save-files.d.ts +78 -0
  85. package/dist/core/ops/save-files.js +419 -0
  86. package/dist/core/ops/search.d.ts +8 -0
  87. package/dist/core/ops/search.js +187 -0
  88. package/dist/core/skills-registry.d.ts +16 -1
  89. package/dist/core/skills-registry.js +35 -2
  90. package/dist/core/telemetry.d.ts +32 -0
  91. package/dist/core/telemetry.js +38 -10
  92. package/dist/core/tool-profiles.d.ts +25 -0
  93. package/dist/core/tool-profiles.js +41 -0
  94. package/dist/installer/agent-config.d.ts +17 -4
  95. package/dist/installer/agent-config.js +27 -6
  96. package/dist/installer/agent-table.d.ts +12 -0
  97. package/dist/installer/agent-table.js +33 -9
  98. package/dist/installer/cli-permissions.d.ts +65 -0
  99. package/dist/installer/cli-permissions.js +182 -0
  100. package/dist/installer/setup.d.ts +4 -0
  101. package/dist/installer/setup.js +12 -4
  102. package/dist/installer/skills-refresh.d.ts +29 -0
  103. package/dist/installer/skills-refresh.js +261 -0
  104. package/dist/installer/version-check.d.ts +51 -11
  105. package/dist/installer/version-check.js +147 -37
  106. package/dist/mcp/command.js +7 -0
  107. package/dist/mcp/hosted-mount.d.ts +27 -2
  108. package/dist/mcp/hosted-mount.js +53 -23
  109. package/dist/mcp/legacy-toolset.d.ts +27 -0
  110. package/dist/mcp/legacy-toolset.js +43 -0
  111. package/dist/mcp/ops-surface.d.ts +59 -0
  112. package/dist/mcp/ops-surface.js +453 -0
  113. package/dist/mcp/server.d.ts +45 -11
  114. package/dist/mcp/server.js +263 -89
  115. package/dist/mcp/tool-results.d.ts +26 -0
  116. package/dist/mcp/tool-results.js +81 -0
  117. package/dist/mcp/tool-surface.d.ts +65 -0
  118. package/dist/mcp/tool-surface.js +317 -0
  119. package/dist/mcp/tools/app-tools.js +9 -2
  120. package/dist/mcp/tools/asset-tools.js +55 -53
  121. package/dist/mcp/tools/audit-tools.js +21 -21
  122. package/dist/mcp/tools/debug-tools.js +6 -6
  123. package/dist/mcp/tools/fabricate-tools.js +6 -6
  124. package/dist/mcp/tools/generate-tools.js +76 -70
  125. package/dist/mcp/tools/project-tools.d.ts +9 -4
  126. package/dist/mcp/tools/project-tools.js +16 -10
  127. package/dist/mcp/tools/scene-tools.js +12 -23
  128. package/dist/mcp/tools/script-tools.js +9 -5
  129. package/dist/mcp/tools/with-engine.d.ts +6 -0
  130. package/dist/mcp/tools/with-engine.js +19 -0
  131. package/dist/project-memory/agent-instructions.d.ts +47 -0
  132. package/dist/project-memory/agent-instructions.js +226 -0
  133. package/gemini-extension.json +6 -13
  134. package/hooks/pre-commit-doctor.sh +5 -4
  135. package/hooks/session-start.sh +24 -28
  136. package/integrations/README.md +1 -1
  137. package/integrations/claude/README.md +6 -0
  138. package/integrations/claude/manifest-target.json +4 -0
  139. package/integrations/claude-desktop/README.md +1 -1
  140. package/integrations/copilot-jetbrains/README.md +1 -1
  141. package/integrations/gemini/README.md +11 -0
  142. package/integrations/junie/README.md +1 -1
  143. package/integrations/lm-studio/README.md +1 -1
  144. package/integrations/trae/README.md +1 -1
  145. package/integrations/visual-studio/README.md +1 -1
  146. package/integrations/windsurf/README.md +1 -1
  147. package/library/references/mcp-tools-reference/mcp-tools-reference.md +79 -51
  148. package/library/references/mcp-tools-reference/resource.yaml +1 -1
  149. package/library/references/product-map/resource.yaml +2 -2
  150. package/library/skills/3d-lighting/SKILL.md +69 -28
  151. package/library/skills/3d-lighting/resource.yaml +1 -1
  152. package/library/skills/README.md +121 -118
  153. package/library/skills/adaptive-music/SKILL.md +40 -23
  154. package/library/skills/adaptive-music/resource.yaml +1 -1
  155. package/library/skills/agent-playtesting/SKILL.md +23 -1
  156. package/library/skills/agent-playtesting/resource.yaml +1 -1
  157. package/library/skills/ai-characters-in-games/SKILL.md +16 -1
  158. package/library/skills/ai-characters-in-games/resource.yaml +1 -1
  159. package/library/skills/ambient-bed/SKILL.md +38 -13
  160. package/library/skills/ambient-bed/resource.yaml +1 -1
  161. package/library/skills/animated-loop/SKILL.md +60 -32
  162. package/library/skills/animated-loop/resource.yaml +1 -1
  163. package/library/skills/animation-tree/SKILL.md +27 -1
  164. package/library/skills/animation-tree/resource.yaml +1 -1
  165. package/library/skills/art-direction/SKILL.md +17 -3
  166. package/library/skills/art-direction/resource.yaml +1 -1
  167. package/library/skills/asset-strategy/SKILL.md +51 -4
  168. package/library/skills/asset-strategy/resource.yaml +2 -1
  169. package/library/skills/audio-direction/SKILL.md +26 -10
  170. package/library/skills/audio-direction/resource.yaml +1 -1
  171. package/library/skills/auto-fire-targeting/SKILL.md +15 -1
  172. package/library/skills/auto-fire-targeting/resource.yaml +1 -1
  173. package/library/skills/bounded-engine-runs/SKILL.md +1 -1
  174. package/library/skills/bounded-engine-runs/resource.yaml +1 -1
  175. package/library/skills/brainstorm-game/SKILL.md +14 -1
  176. package/library/skills/brainstorm-game/resource.yaml +1 -1
  177. package/library/skills/brainstorming/SKILL.md +1 -1
  178. package/library/skills/brainstorming/resource.yaml +1 -1
  179. package/library/skills/browse-templates/SKILL.md +11 -1
  180. package/library/skills/browse-templates/resource.yaml +1 -1
  181. package/library/skills/camera-rigs/SKILL.md +22 -2
  182. package/library/skills/camera-rigs/resource.yaml +1 -1
  183. package/library/skills/celeste-momentum-platforming/resource.yaml +1 -0
  184. package/library/skills/character-animation-wiring/SKILL.md +28 -4
  185. package/library/skills/character-animation-wiring/resource.yaml +1 -1
  186. package/library/skills/character-model/SKILL.md +83 -47
  187. package/library/skills/character-model/resource.yaml +1 -1
  188. package/library/skills/character-movement/SKILL.md +27 -3
  189. package/library/skills/character-movement/resource.yaml +1 -1
  190. package/library/skills/character-portrait/SKILL.md +39 -19
  191. package/library/skills/character-portrait/resource.yaml +1 -1
  192. package/library/skills/cinematic-cutscene/SKILL.md +79 -46
  193. package/library/skills/cinematic-cutscene/resource.yaml +1 -1
  194. package/library/skills/combat-basics/SKILL.md +20 -1
  195. package/library/skills/combat-basics/resource.yaml +1 -1
  196. package/library/skills/compatibility-renderer-traps/SKILL.md +12 -1
  197. package/library/skills/compatibility-renderer-traps/resource.yaml +1 -1
  198. package/library/skills/concept-art/SKILL.md +29 -12
  199. package/library/skills/concept-art/resource.yaml +1 -1
  200. package/library/skills/concept-to-level/SKILL.md +258 -0
  201. package/library/skills/concept-to-level/references/technical-rules.md +150 -0
  202. package/library/skills/concept-to-level/resource.yaml +44 -0
  203. package/library/skills/create-asset-sheet/SKILL.md +37 -13
  204. package/library/skills/create-asset-sheet/resource.yaml +1 -1
  205. package/library/skills/debug/SKILL.md +34 -2
  206. package/library/skills/debug/resource.yaml +1 -1
  207. package/library/skills/debugging-game-feel/SKILL.md +13 -1
  208. package/library/skills/debugging-game-feel/resource.yaml +1 -1
  209. package/library/skills/design-level/SKILL.md +40 -35
  210. package/library/skills/design-level/resource.yaml +1 -1
  211. package/library/skills/design-mechanic/SKILL.md +18 -1
  212. package/library/skills/design-mechanic/resource.yaml +1 -1
  213. package/library/skills/design-npc/SKILL.md +43 -24
  214. package/library/skills/design-npc/resource.yaml +1 -1
  215. package/library/skills/diagnosing-perf-regressions/SKILL.md +13 -1
  216. package/library/skills/diagnosing-perf-regressions/resource.yaml +1 -1
  217. package/library/skills/driving-the-editor-ui/SKILL.md +24 -1
  218. package/library/skills/driving-the-editor-ui/resource.yaml +1 -1
  219. package/library/skills/environment-kit/SKILL.md +43 -16
  220. package/library/skills/environment-kit/resource.yaml +1 -1
  221. package/library/skills/export-and-ship/SKILL.md +29 -6
  222. package/library/skills/export-and-ship/resource.yaml +1 -1
  223. package/library/skills/fabricating-assets/SKILL.md +30 -7
  224. package/library/skills/fabricating-assets/resource.yaml +3 -3
  225. package/library/skills/facial-and-lipsync/SKILL.md +36 -15
  226. package/library/skills/facial-and-lipsync/resource.yaml +1 -1
  227. package/library/skills/fps-controller/SKILL.md +50 -41
  228. package/library/skills/fps-controller/resource.yaml +1 -1
  229. package/library/skills/game-feel/SKILL.md +34 -8
  230. package/library/skills/game-feel/resource.yaml +1 -1
  231. package/library/skills/gameskill/SKILL.md +15 -4
  232. package/library/skills/gameskill/resource.yaml +1 -1
  233. package/library/skills/gdscript-patterns/SKILL.md +16 -1
  234. package/library/skills/gdscript-patterns/resource.yaml +1 -1
  235. package/library/skills/generate-motion/SKILL.md +51 -21
  236. package/library/skills/generate-motion/resource.yaml +1 -1
  237. package/library/skills/godogen-visual-proof-game-generation/SKILL.md +18 -1
  238. package/library/skills/godogen-visual-proof-game-generation/resource.yaml +1 -0
  239. package/library/skills/grow-analytics/SKILL.md +13 -3
  240. package/library/skills/grow-analytics/resource.yaml +1 -1
  241. package/library/skills/headless-scripting/SKILL.md +14 -1
  242. package/library/skills/headless-scripting/resource.yaml +1 -1
  243. package/library/skills/in-game-purchases/SKILL.md +12 -1
  244. package/library/skills/in-game-purchases/resource.yaml +1 -1
  245. package/library/skills/instantiate-asset-pack/SKILL.md +19 -2
  246. package/library/skills/instantiate-asset-pack/resource.yaml +1 -1
  247. package/library/skills/lumera-single-image-scene-reconstruction/resource.yaml +1 -0
  248. package/library/skills/make-game/SKILL.md +33 -4
  249. package/library/skills/make-game/references/2d-platformer.md +1 -1
  250. package/library/skills/make-game/references/3d-fps.md +1 -1
  251. package/library/skills/make-game/references/3d-horror.md +1 -1
  252. package/library/skills/make-game/references/3d-third-person.md +2 -2
  253. package/library/skills/make-game/resource.yaml +1 -1
  254. package/library/skills/multiplayer/SKILL.md +13 -1
  255. package/library/skills/multiplayer/resource.yaml +1 -1
  256. package/library/skills/multiplayer-movement/SKILL.md +19 -1
  257. package/library/skills/multiplayer-movement/resource.yaml +1 -1
  258. package/library/skills/multiplayer-project/SKILL.md +18 -1
  259. package/library/skills/multiplayer-project/resource.yaml +1 -1
  260. package/library/skills/multiplayer-publish/SKILL.md +25 -7
  261. package/library/skills/multiplayer-publish/resource.yaml +3 -3
  262. package/library/skills/multiplayer-state/SKILL.md +17 -1
  263. package/library/skills/multiplayer-state/resource.yaml +1 -1
  264. package/library/skills/multiplayer-testing/SKILL.md +16 -1
  265. package/library/skills/multiplayer-testing/resource.yaml +1 -1
  266. package/library/skills/music-track/SKILL.md +38 -13
  267. package/library/skills/music-track/resource.yaml +1 -1
  268. package/library/skills/navigate-summer/SKILL.md +26 -9
  269. package/library/skills/navigate-summer/resource.yaml +1 -1
  270. package/library/skills/new-project/SKILL.md +12 -1
  271. package/library/skills/new-project/resource.yaml +1 -1
  272. package/library/skills/organic-model/SKILL.md +48 -18
  273. package/library/skills/organic-model/resource.yaml +1 -1
  274. package/library/skills/pixel-art/SKILL.md +42 -23
  275. package/library/skills/pixel-art/resource.yaml +1 -1
  276. package/library/skills/play/SKILL.md +19 -1
  277. package/library/skills/play/resource.yaml +1 -1
  278. package/library/skills/playtesting-a-feature/SKILL.md +24 -1
  279. package/library/skills/playtesting-a-feature/resource.yaml +1 -1
  280. package/library/skills/procedural-animation/SKILL.md +38 -16
  281. package/library/skills/procedural-animation/resource.yaml +1 -1
  282. package/library/skills/prop-model/SKILL.md +48 -19
  283. package/library/skills/prop-model/resource.yaml +1 -1
  284. package/library/skills/psx-retro-rendering/resource.yaml +1 -0
  285. package/library/skills/publish-your-game/SKILL.md +43 -6
  286. package/library/skills/publish-your-game/resource.yaml +3 -3
  287. package/library/skills/realtime-wet-surfaces/resource.yaml +1 -0
  288. package/library/skills/release-readiness/SKILL.md +13 -1
  289. package/library/skills/release-readiness/resource.yaml +1 -1
  290. package/library/skills/remote-deploy/SKILL.md +15 -1
  291. package/library/skills/remote-deploy/resource.yaml +1 -1
  292. package/library/skills/retarget/SKILL.md +43 -20
  293. package/library/skills/retarget/resource.yaml +1 -1
  294. package/library/skills/running-in-the-cloud/SKILL.md +11 -1
  295. package/library/skills/running-in-the-cloud/resource.yaml +1 -1
  296. package/library/skills/save-load/SKILL.md +16 -1
  297. package/library/skills/save-load/resource.yaml +1 -1
  298. package/library/skills/scene-composition/SKILL.md +18 -1
  299. package/library/skills/scene-composition/resource.yaml +1 -1
  300. package/library/skills/scene-hierarchy-design/SKILL.md +26 -2
  301. package/library/skills/scene-hierarchy-design/resource.yaml +1 -1
  302. package/library/skills/scene-scripting/SKILL.md +96 -636
  303. package/library/skills/scene-scripting/references/ctx-api.md +184 -0
  304. package/library/skills/scene-scripting/references/recipes-2d-ui.md +193 -0
  305. package/library/skills/scene-scripting/references/recipes-3d.md +280 -0
  306. package/library/skills/scene-scripting/resource.yaml +4 -4
  307. package/library/skills/scene-to-level/SKILL.md +24 -2
  308. package/library/skills/scene-to-level/resource.yaml +1 -1
  309. package/library/skills/skill-create/resource.yaml +1 -0
  310. package/library/skills/skill-improve/resource.yaml +1 -0
  311. package/library/skills/skill-test/SKILL.md +12 -2
  312. package/library/skills/skill-test/resource.yaml +1 -0
  313. package/library/skills/skintokens-auto-rigging/resource.yaml +1 -0
  314. package/library/skills/skybox-panorama/SKILL.md +47 -21
  315. package/library/skills/skybox-panorama/resource.yaml +1 -1
  316. package/library/skills/sound-effect/SKILL.md +52 -20
  317. package/library/skills/sound-effect/resource.yaml +1 -1
  318. package/library/skills/spatial-placement/SKILL.md +44 -9
  319. package/library/skills/spatial-placement/resource.yaml +1 -1
  320. package/library/skills/sprite-sheet/SKILL.md +55 -27
  321. package/library/skills/sprite-sheet/resource.yaml +1 -1
  322. package/library/skills/store-art/SKILL.md +14 -3
  323. package/library/skills/store-art/resource.yaml +2 -2
  324. package/library/skills/store-listing/SKILL.md +13 -3
  325. package/library/skills/store-listing/resource.yaml +2 -2
  326. package/library/skills/summer-analytics/SKILL.md +22 -5
  327. package/library/skills/summer-analytics/resource.yaml +2 -2
  328. package/library/skills/summer-apps/SKILL.md +77 -32
  329. package/library/skills/summer-apps/manifest.md +1 -1
  330. package/library/skills/summer-apps/minimal-app.md +7 -7
  331. package/library/skills/summer-apps/resource.yaml +1 -1
  332. package/library/skills/summer-apps/sdk-reference.md +5 -5
  333. package/library/skills/summer-apps-design/SKILL.md +1 -1
  334. package/library/skills/summer-apps-design/resource.yaml +1 -1
  335. package/library/skills/summer-assets/SKILL.md +86 -0
  336. package/library/skills/summer-assets/resource.yaml +34 -0
  337. package/library/skills/summer-cli/SKILL.md +133 -0
  338. package/library/skills/summer-cli/resource.yaml +31 -0
  339. package/library/skills/summer-friends/SKILL.md +14 -0
  340. package/library/skills/summer-leaderboards/SKILL.md +16 -0
  341. package/library/skills/summer-match-results/SKILL.md +17 -0
  342. package/library/skills/summer-matchmaking/SKILL.md +17 -0
  343. package/library/skills/summer-parties/SKILL.md +14 -0
  344. package/library/skills/summer-player-data/SKILL.md +14 -0
  345. package/library/skills/summer-store/SKILL.md +16 -1
  346. package/library/skills/summer-world-chat/SKILL.md +14 -0
  347. package/library/skills/summer-world-saves/SKILL.md +14 -0
  348. package/library/skills/text-to-motion/SKILL.md +45 -23
  349. package/library/skills/text-to-motion/prompts-and-controls.md +5 -5
  350. package/library/skills/text-to-motion/resource.yaml +1 -1
  351. package/library/skills/text-to-motion/rigging-for-text-motion.md +2 -2
  352. package/library/skills/tileable-texture/SKILL.md +37 -15
  353. package/library/skills/tileable-texture/resource.yaml +1 -1
  354. package/library/skills/trailer-shot/SKILL.md +46 -24
  355. package/library/skills/trailer-shot/resource.yaml +1 -1
  356. package/library/skills/tune-performance/SKILL.md +32 -6
  357. package/library/skills/tune-performance/resource.yaml +1 -1
  358. package/library/skills/ui-basics/SKILL.md +55 -36
  359. package/library/skills/ui-basics/resource.yaml +1 -1
  360. package/library/skills/ui-graphics/SKILL.md +64 -38
  361. package/library/skills/ui-graphics/resource.yaml +1 -1
  362. package/library/skills/use-widget-asset/SKILL.md +15 -1
  363. package/library/skills/use-widget-asset/resource.yaml +1 -1
  364. package/library/skills/using-summer/SKILL.md +32 -5
  365. package/library/skills/using-summer/resource.yaml +3 -2
  366. package/library/skills/vehicle-model/SKILL.md +92 -57
  367. package/library/skills/vehicle-model/resource.yaml +1 -1
  368. package/library/skills/verification-before-completion/SKILL.md +1 -1
  369. package/library/skills/verification-before-completion/resource.yaml +1 -1
  370. package/library/skills/verifying-scenes/SKILL.md +31 -2
  371. package/library/skills/verifying-scenes/resource.yaml +1 -1
  372. package/library/skills/vfx-dissolve/SKILL.md +21 -2
  373. package/library/skills/vfx-dissolve/resource.yaml +1 -1
  374. package/library/skills/vfx-fire/SKILL.md +41 -41
  375. package/library/skills/vfx-fire/resource.yaml +1 -1
  376. package/library/skills/vfx-hit-spark/SKILL.md +24 -1
  377. package/library/skills/vfx-hit-spark/resource.yaml +1 -1
  378. package/library/skills/vfx-lightning/SKILL.md +30 -16
  379. package/library/skills/vfx-lightning/resource.yaml +1 -1
  380. package/library/skills/vfx-magic-glow/SKILL.md +46 -32
  381. package/library/skills/vfx-magic-glow/resource.yaml +1 -1
  382. package/library/skills/vfx-muzzle-flash/SKILL.md +43 -35
  383. package/library/skills/vfx-muzzle-flash/resource.yaml +1 -1
  384. package/library/skills/vfx-smoke/SKILL.md +39 -31
  385. package/library/skills/vfx-smoke/resource.yaml +1 -1
  386. package/library/skills/vfx-water-ripple/SKILL.md +35 -31
  387. package/library/skills/vfx-water-ripple/resource.yaml +1 -1
  388. package/library/skills/voice-line/SKILL.md +87 -40
  389. package/library/skills/voice-line/resource.yaml +1 -1
  390. package/library/skills/web-and-touch-input/SKILL.md +20 -1
  391. package/library/skills/web-and-touch-input/resource.yaml +1 -1
  392. package/library/skills/web-compatibility-look/SKILL.md +21 -1
  393. package/library/skills/web-compatibility-look/resource.yaml +1 -1
  394. package/library/skills/world-building-3d/SKILL.md +29 -1
  395. package/library/skills/world-building-3d/resource.yaml +1 -1
  396. package/library/skills/writing-skills/resource.yaml +1 -0
  397. package/library/tools/add-node/GUIDE.md +14 -0
  398. package/library/tools/align-distribute-3d/GUIDE.md +7 -0
  399. package/library/tools/app-call/resource.yaml +1 -1
  400. package/library/tools/app-guide/resource.yaml +2 -2
  401. package/library/tools/app-page/resource.yaml +1 -1
  402. package/library/tools/app-screenshot/resource.yaml +19 -1
  403. package/library/tools/app-tools/resource.yaml +1 -1
  404. package/library/tools/attach-to-surface/GUIDE.md +15 -0
  405. package/library/tools/batch/GUIDE.md +27 -0
  406. package/library/tools/camera-bookmark/GUIDE.md +12 -0
  407. package/library/tools/capture-gameplay/GUIDE.md +3 -0
  408. package/library/tools/capture-gameplay/resource.yaml +3 -3
  409. package/library/tools/check-job/resource.yaml +1 -1
  410. package/library/tools/clear-console/GUIDE.md +3 -0
  411. package/library/tools/connect-ports/GUIDE.md +9 -0
  412. package/library/tools/connect-signal/GUIDE.md +14 -0
  413. package/library/tools/create-debug-report/GUIDE.md +10 -0
  414. package/library/tools/create-scene/GUIDE.md +10 -0
  415. package/library/tools/debug-views/GUIDE.md +7 -0
  416. package/library/tools/enable-plugin/GUIDE.md +3 -0
  417. package/library/tools/export-game/GUIDE.md +3 -0
  418. package/library/tools/export-game/resource.yaml +3 -3
  419. package/library/tools/export-templates/GUIDE.md +3 -0
  420. package/library/tools/fabricate-3d/GUIDE.md +19 -0
  421. package/library/tools/frame-nodes/GUIDE.md +9 -0
  422. package/library/tools/frame-shot/GUIDE.md +9 -0
  423. package/library/tools/game-control/GUIDE.md +9 -0
  424. package/library/tools/game-input/GUIDE.md +9 -0
  425. package/library/tools/game-probe/GUIDE.md +9 -0
  426. package/library/tools/generate-3d/resource.yaml +3 -3
  427. package/library/tools/generate-motion/resource.yaml +2 -2
  428. package/library/tools/get-console/GUIDE.md +9 -0
  429. package/library/tools/get-console/resource.yaml +5 -0
  430. package/library/tools/get-debugger-errors/GUIDE.md +7 -0
  431. package/library/tools/get-debugger-errors/resource.yaml +5 -0
  432. package/library/tools/get-debugger-warnings/GUIDE.md +7 -0
  433. package/library/tools/get-debugger-warnings/resource.yaml +5 -0
  434. package/library/tools/get-diagnostics/GUIDE.md +13 -0
  435. package/library/tools/get-project-context/GUIDE.md +25 -0
  436. package/library/tools/get-runtime-tree/GUIDE.md +7 -0
  437. package/library/tools/get-runtime-tree/resource.yaml +5 -0
  438. package/library/tools/get-scene-tree/GUIDE.md +11 -0
  439. package/library/tools/get-scene-tree/resource.yaml +5 -0
  440. package/library/tools/get-script-errors/GUIDE.md +5 -0
  441. package/library/tools/grep/GUIDE.md +11 -0
  442. package/library/tools/import-asset/GUIDE.md +8 -0
  443. package/library/tools/import-asset-by-id/GUIDE.md +12 -0
  444. package/library/tools/import-from-url/GUIDE.md +10 -0
  445. package/library/tools/import-from-url-batch/GUIDE.md +3 -0
  446. package/library/tools/import-hdri/GUIDE.md +16 -0
  447. package/library/tools/input-map-bind/GUIDE.md +11 -0
  448. package/library/tools/inspect-asset/GUIDE.md +14 -0
  449. package/library/tools/inspect-asset/resource.yaml +5 -0
  450. package/library/tools/inspect-node/GUIDE.md +11 -0
  451. package/library/tools/inspect-node/resource.yaml +5 -0
  452. package/library/tools/inspect-resource/GUIDE.md +7 -0
  453. package/library/tools/inspect-resource/resource.yaml +5 -0
  454. package/library/tools/inspect-runtime-node/GUIDE.md +7 -0
  455. package/library/tools/inspect-runtime-node/resource.yaml +5 -0
  456. package/library/tools/instantiate-scene/GUIDE.md +12 -0
  457. package/library/tools/is-running/GUIDE.md +3 -0
  458. package/library/tools/measure/GUIDE.md +8 -0
  459. package/library/tools/navigation-probe/GUIDE.md +9 -0
  460. package/library/tools/open/resource.yaml +2 -2
  461. package/library/tools/open-main-scene/GUIDE.md +6 -0
  462. package/library/tools/open-scene/GUIDE.md +8 -0
  463. package/library/tools/place-adjacent/GUIDE.md +7 -0
  464. package/library/tools/play/GUIDE.md +13 -0
  465. package/library/tools/project-setting/GUIDE.md +9 -0
  466. package/library/tools/publish-build/resource.yaml +6 -6
  467. package/library/tools/raycast/GUIDE.md +7 -0
  468. package/library/tools/read-file/GUIDE.md +10 -0
  469. package/library/tools/read-library/resource.yaml +5 -0
  470. package/library/tools/recent-events/GUIDE.md +7 -0
  471. package/library/tools/remove-node/GUIDE.md +3 -0
  472. package/library/tools/repeat-along/GUIDE.md +5 -0
  473. package/library/tools/replace-node/GUIDE.md +9 -0
  474. package/library/tools/replace-text/GUIDE.md +5 -0
  475. package/library/tools/run-editor-script/GUIDE.md +16 -0
  476. package/library/tools/run-script/GUIDE.md +30 -0
  477. package/library/tools/run-script/resource.yaml +6 -3
  478. package/library/tools/runtime-animate/GUIDE.md +7 -0
  479. package/library/tools/runtime-call/GUIDE.md +7 -0
  480. package/library/tools/runtime-set/GUIDE.md +9 -0
  481. package/library/tools/runtime-spawn/GUIDE.md +9 -0
  482. package/library/tools/save-scene/GUIDE.md +3 -0
  483. package/library/tools/scene-audit/GUIDE.md +29 -0
  484. package/library/tools/screenshot/GUIDE.md +17 -0
  485. package/library/tools/select-node/GUIDE.md +3 -0
  486. package/library/tools/set-prop/GUIDE.md +23 -0
  487. package/library/tools/set-resource-property/GUIDE.md +8 -0
  488. package/library/tools/shot-sheet/GUIDE.md +7 -0
  489. package/library/tools/snap-to-surface/GUIDE.md +17 -0
  490. package/library/tools/snapshot-diff/GUIDE.md +7 -0
  491. package/library/tools/starcast/GUIDE.md +12 -0
  492. package/library/tools/stop/GUIDE.md +3 -0
  493. package/library/tools/test-placement/GUIDE.md +7 -0
  494. package/library/tools/ui-actions/GUIDE.md +12 -0
  495. package/library/tools/ui-activate/GUIDE.md +11 -0
  496. package/library/tools/ui-screenshot/GUIDE.md +9 -0
  497. package/library/tools/ui-tree/GUIDE.md +10 -0
  498. package/library/tools/wait-for-event/GUIDE.md +11 -0
  499. package/library/tools/world-snapshot/GUIDE.md +9 -0
  500. package/library/tools/write-file/GUIDE.md +5 -0
  501. package/library/tools/zoom/GUIDE.md +5 -0
  502. package/package.json +8 -5
  503. package/registry/generated/counts.json +2 -2
  504. package/registry/generated/gemini-extension.json +6 -13
  505. package/registry/generated/index.json +482 -349
  506. package/registry/generated/marketplace.claude.json +2 -13
  507. package/registry/generated/plugin.claude-directory.json +168 -0
  508. package/registry/generated/plugin.claude.json +24 -22
  509. package/registry/generated/plugin.codex.json +18 -22
  510. package/registry/generated/plugin.cursor.json +8 -14
  511. package/registry/generated/plugin.factory.json +6 -13
  512. package/registry/generated/server.json +43 -0
  513. package/registry/generated/skills-index.md +121 -118
  514. package/registry/generated/skills-registry.json +167 -115
  515. package/registry/operations/fixtures/invalid-deprecated-without-replacement.json +60 -0
  516. package/registry/operations/fixtures/invalid-name.json +60 -0
  517. package/registry/operations/fixtures/invalid-publish-without-owner.json +82 -0
  518. package/registry/operations/fixtures/invalid-spend-without-estimate.json +42 -0
  519. package/registry/operations/fixtures/invalid-unknown-field.json +61 -0
  520. package/registry/operations/fixtures/valid-player-facing.json +82 -0
  521. package/registry/operations/fixtures/valid-read.json +60 -0
  522. package/registry/operations/fixtures/valid-spend.json +43 -0
  523. package/registry/operations/legacy-names.json +1241 -0
  524. package/registry/operations/public-catalog.json +33160 -0
  525. package/registry/schemas/operation.schema.json +318 -0
  526. package/registry/schemas/skill.schema.json +4 -0
  527. package/CLAUDE.md +0 -7
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: vfx-lightning
3
- description: "Lightning bolt effect — procedural jagged path drawn via ImmediateMesh, glow shader, sparks at endpoints, screen shake."
3
+ description: "Lightning bolt effect: a jagged procedural path with a glow shader, end sparks and screen shake."
4
4
  license: MIT
5
5
  compatibility: [Cursor, Claude Code, Windsurf, Codex]
6
6
  category: visual-effects
@@ -222,31 +222,22 @@ Recommended: register one `LightningCaster` as an autoload (`/root/Lightning`) s
222
222
 
223
223
  Place one `LightningCaster` per "world" (or autoload it), then call from gameplay code.
224
224
 
225
- Every scene-mutating call takes an explicit `scenePath`. `summer_set_prop` uses `key`
226
- (not `property`) and only accepts a string, number, or boolean.
225
+ Write the two files, then place the caster with ONE `summer_run_script` call
226
+ with an explicit `scenePath` — one transactional run, and several casters or
227
+ anything computed is a loop in the same script:
227
228
 
228
229
  ```
229
230
  summer_write_file(path="res://addons/vfx/lightning/lightning.gdshader", content="<section 2>", create_only=true)
230
231
  summer_write_file(path="res://addons/vfx/lightning/lightning_caster.gd", content="<section 3>", create_only=true)
231
232
 
232
- summer_add_node(scenePath="res://main.tscn", parent="./World", type="Node3D", name="LightningCaster")
233
- summer_set_prop(scenePath="res://main.tscn", path="./World/LightningCaster", key="script", value="res://addons/vfx/lightning/lightning_caster.gd")
234
- summer_set_prop(scenePath="res://main.tscn", path="./World/LightningCaster", key="bolt_color", value="Color(0.55, 0.75, 1.0)")
235
- summer_set_prop(scenePath="res://main.tscn", path="./World/LightningCaster", key="trauma_amount", value=0.6)
236
- summer_save_scene(scenePath="res://main.tscn")
237
- ```
238
-
239
- Or, on engines with `summer_run_script` (see `scene-scripting`), the two node
240
- calls collapse into one transactional ctx script — worth it when placing several
241
- casters or anything computed:
242
-
243
- ```gdscript
233
+ summer_run_script(scenePath="res://main.tscn", source="""
244
234
  func run(ctx):
245
- var caster := ctx.add_node("Node3D", "LightningCaster", null)
235
+ var caster = ctx.add_node("Node3D", "LightningCaster", ctx.find("World"))
246
236
  caster.set_script(load("res://addons/vfx/lightning/lightning_caster.gd"))
247
237
  caster.set("bolt_color", Color(0.55, 0.75, 1.0))
248
238
  caster.set("trauma_amount", 0.6)
249
239
  ctx.save_scene()
240
+ """)
250
241
  ```
251
242
 
252
243
  Then verify — the caster `preload`s its own shader, so a shader that failed to write
@@ -415,3 +406,26 @@ After firing this recipe, suggest:
415
406
  - `vfx-magic-glow` — pre-cast charge-up
416
407
  - `vfx-muzzle-flash` — for the cast-release flash
417
408
  - `game-feel` — full game-feel pairing
409
+
410
+ <!-- shell-commands: generated from the operation catalog by npm run generate:registry; do not edit by hand -->
411
+ ## From a shell
412
+
413
+ No Summer MCP tools in this session? Run each one as a command; when `summer --version` is missing or below 4.0, use `npx -y summer-engine@latest` in place of `summer`. Fields are flags in kebab-case (`--scene-path res://main.tscn`) or one `--input '<json>'`, and `summer ops describe <op>` prints the exact input. The `summer-cli` skill has the rest.
414
+
415
+ | In this skill | Command |
416
+ |---|---|
417
+ | `summer_add_node` | `summer engine add-node` |
418
+ | `summer_create_scene` | `summer engine create-scene` |
419
+ | `summer_get_debugger_errors` | `summer engine get-debugger-errors` |
420
+ | `summer_get_script_errors` | `summer engine get-script-errors` |
421
+ | `summer_inspect_node` | `summer engine inspect-node` |
422
+ | `summer_play` | `summer engine play` |
423
+ | `summer_project_setting` | `summer engine project-setting` |
424
+ | `summer_read_file` | `summer engine read-file` |
425
+ | `summer_run_script` | `summer engine run-script` |
426
+ | `summer_save_scene` | `summer engine save-scene` |
427
+ | `summer_set_prop` | `summer engine set-prop` |
428
+ | `summer_set_resource_property` | `summer engine set-resource-property` |
429
+ | `summer_stop` | `summer engine stop` |
430
+ | `summer_write_file` | `summer engine write-file` |
431
+ <!-- /shell-commands -->
@@ -1,7 +1,7 @@
1
1
  id: skill/vfx-lightning
2
2
  kind: skill
3
3
  version: 1.0.3
4
- summary: Lightning bolt effect — procedural jagged path drawn via ImmediateMesh, glow shader, sparks at endpoints, screen shake.
4
+ summary: "Lightning bolt effect: a jagged procedural path with a glow shader, end sparks and screen shake."
5
5
  use_when:
6
6
  - authoring a lightning bolt effect — chain lightning, electric attack, tesla coil, shock spell, energy beam
7
7
  - a spell, weapon, or hazard needs a jagged electric arc with glow, endpoint sparks, and camera shake
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: vfx-magic-glow
3
- description: "Magic-glow effect — a pulsing OmniLight3D plus drifting additive motes plus optional emission shader on the source mesh."
3
+ description: "Magic-glow effect: a pulsing OmniLight3D, drifting additive motes and an optional emission shader."
4
4
  license: MIT
5
5
  compatibility: [Cursor, Claude Code, Windsurf, Codex]
6
6
  category: visual-effects
@@ -195,42 +195,16 @@ Node3D ("MagicGlow") [script: magic_glow.gd]
195
195
 
196
196
  ### 4. Wire it in (MCP calls)
197
197
 
198
- For an enchanted sword:
199
-
200
- Every scene-mutating call takes an explicit `scenePath`. `summer_set_prop` uses `key`
201
- (not `property`) and only accepts a string, number, or boolean.
198
+ Write the script once, then wire each glow with ONE `summer_run_script` call
199
+ with an explicit `scenePath` — one transactional run instead of a chain of
200
+ `summer_set_prop` calls. For an enchanted sword:
202
201
 
203
202
  ```
204
203
  summer_write_file(path="res://addons/vfx/magic-glow/magic_glow.gd", content="<section 2>", create_only=true)
205
204
 
206
- summer_add_node(scenePath="res://main.tscn", parent="./Player/Hand/Sword", type="Node3D", name="Glow")
207
- summer_set_prop(scenePath="res://main.tscn", path="./Player/Hand/Sword/Glow", key="script", value="res://addons/vfx/magic-glow/magic_glow.gd")
208
- summer_set_prop(scenePath="res://main.tscn", path="./Player/Hand/Sword/Glow", key="glow_color", value="Color(0.55, 0.85, 1.0)")
209
- summer_set_prop(scenePath="res://main.tscn", path="./Player/Hand/Sword/Glow", key="light_energy_base", value=1.2)
210
- summer_set_prop(scenePath="res://main.tscn", path="./Player/Hand/Sword/Glow", key="light_energy_amplitude", value=0.6)
211
- summer_set_prop(scenePath="res://main.tscn", path="./Player/Hand/Sword/Glow", key="mote_count", value=16)
212
- summer_set_prop(scenePath="res://main.tscn", path="./Player/Hand/Sword/Glow", key="mote_radius", value=0.20)
213
- summer_set_prop(scenePath="res://main.tscn", path="./Player/Hand/Sword/Glow", key="pulse_source_mesh", value="../Blade")
214
- summer_save_scene(scenePath="res://main.tscn")
215
- ```
216
-
217
- For a soul gem on a pedestal:
218
-
219
- ```
220
- summer_add_node(scenePath="res://main.tscn", parent="./World/Pedestal/SoulGem", type="Node3D", name="Glow")
221
- summer_set_prop(scenePath="res://main.tscn", path="./World/Pedestal/SoulGem/Glow", key="glow_color", value="Color(0.85, 0.45, 1.0)")
222
- summer_set_prop(scenePath="res://main.tscn", path="./World/Pedestal/SoulGem/Glow", key="pulse_hz", value=0.4)
223
- summer_set_prop(scenePath="res://main.tscn", path="./World/Pedestal/SoulGem/Glow", key="mote_count", value=32)
224
- summer_set_prop(scenePath="res://main.tscn", path="./World/Pedestal/SoulGem/Glow", key="mote_radius", value=0.30)
225
- ```
226
-
227
- Either wiring block is also ONE ctx script on engines with `summer_run_script`
228
- (see `scene-scripting`) — the eight `summer_set_prop` calls become one
229
- transactional run, and computed placement (a glow per gem in a ring) becomes a loop:
230
-
231
- ```gdscript
205
+ summer_run_script(scenePath="res://main.tscn", source="""
232
206
  func run(ctx):
233
- var glow := ctx.add_node("Node3D", "Glow", ctx.find("Sword"))
207
+ var glow = ctx.add_node("Node3D", "Glow", ctx.find("Sword"))
234
208
  glow.set_script(load("res://addons/vfx/magic-glow/magic_glow.gd"))
235
209
  glow.set("glow_color", Color(0.55, 0.85, 1.0))
236
210
  glow.set("light_energy_base", 1.2)
@@ -239,6 +213,23 @@ func run(ctx):
239
213
  glow.set("mote_radius", 0.20)
240
214
  glow.set("pulse_source_mesh", NodePath("../Blade"))
241
215
  ctx.save_scene()
216
+ """)
217
+ ```
218
+
219
+ For a soul gem on a pedestal (computed placement, such as a glow per gem in a
220
+ ring, is a loop in the same script):
221
+
222
+ ```
223
+ summer_run_script(scenePath="res://main.tscn", source="""
224
+ func run(ctx):
225
+ var glow = ctx.add_node("Node3D", "Glow", ctx.find("SoulGem"))
226
+ glow.set_script(load("res://addons/vfx/magic-glow/magic_glow.gd"))
227
+ glow.set("glow_color", Color(0.85, 0.45, 1.0))
228
+ glow.set("pulse_hz", 0.4)
229
+ glow.set("mote_count", 32)
230
+ glow.set("mote_radius", 0.30)
231
+ ctx.save_scene()
232
+ """)
242
233
  ```
243
234
 
244
235
  Judge the pulse with `summer_screenshot framing:"camera"` — emissive glow does not
@@ -428,3 +419,26 @@ After firing this recipe, suggest:
428
419
  - `vfx-dissolve` — for summon arrival pairing
429
420
  - `vfx-fire` — for the `magic-fire` variant
430
421
  - `gdscript-patterns` — for the controller idioms (signals, exports, `@tool`)
422
+
423
+ <!-- shell-commands: generated from the operation catalog by npm run generate:registry; do not edit by hand -->
424
+ ## From a shell
425
+
426
+ No Summer MCP tools in this session? Run each one as a command; when `summer --version` is missing or below 4.0, use `npx -y summer-engine@latest` in place of `summer`. Fields are flags in kebab-case (`--scene-path res://main.tscn`) or one `--input '<json>'`, and `summer ops describe <op>` prints the exact input. The `summer-cli` skill has the rest.
427
+
428
+ | In this skill | Command |
429
+ |---|---|
430
+ | `summer_add_node` | `summer engine add-node` |
431
+ | `summer_create_scene` | `summer engine create-scene` |
432
+ | `summer_get_debugger_errors` | `summer engine get-debugger-errors` |
433
+ | `summer_get_script_errors` | `summer engine get-script-errors` |
434
+ | `summer_inspect_node` | `summer engine inspect-node` |
435
+ | `summer_play` | `summer engine play` |
436
+ | `summer_read_file` | `summer engine read-file` |
437
+ | `summer_run_script` | `summer engine run-script` |
438
+ | `summer_save_scene` | `summer engine save-scene` |
439
+ | `summer_screenshot` | `summer engine screenshot` |
440
+ | `summer_set_prop` | `summer engine set-prop` |
441
+ | `summer_set_resource_property` | `summer engine set-resource-property` |
442
+ | `summer_stop` | `summer engine stop` |
443
+ | `summer_write_file` | `summer engine write-file` |
444
+ <!-- /shell-commands -->
@@ -1,7 +1,7 @@
1
1
  id: skill/vfx-magic-glow
2
2
  kind: skill
3
3
  version: 1.0.2
4
- summary: Magic-glow effect — a pulsing OmniLight3D plus drifting additive motes plus optional emission shader on the source mesh.
4
+ summary: "Magic-glow effect: a pulsing OmniLight3D, drifting additive motes and an optional emission shader."
5
5
  use_when:
6
6
  - authoring a magic-glow effect — enchanted item, soul gem, pulsing aura, rune glow, magical orb, wisp
7
7
  - an item, altar, or portal should read as magical or important with a pulsing light and drifting motes
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: vfx-muzzle-flash
3
- description: "Muzzle-flash effect — a one-shot ~80 ms burst at a gun barrel built with a particle one-shot or a flashing quad with a star-burst shader."
3
+ description: "Muzzle-flash effect: a one-shot ~80 ms burst at a gun barrel, from particles or a star-burst quad."
4
4
  license: MIT
5
5
  compatibility: [Cursor, Claude Code, Windsurf, Codex]
6
6
  category: visual-effects
@@ -201,54 +201,39 @@ Node3D ("MuzzleFlash") [script: muzzle_flash.gd]
201
201
 
202
202
  Place the node at the **barrel tip** of the weapon. If your gun model has a `BarrelTip` Marker3D, parent there directly.
203
203
 
204
- Every scene-mutating call takes an explicit `scenePath`. `summer_set_prop` uses `key`
205
- (not `property`) and only accepts a string, number, or boolean.
204
+ Write the two files, then mount the flash with ONE `summer_run_script` call with
205
+ an explicit `scenePath` — one transactional run, and mounting a flash on every
206
+ weapon in the scene is a loop instead of a chain of calls per gun:
206
207
 
207
208
  ```
208
209
  summer_write_file(path="res://addons/vfx/muzzle-flash/muzzle_flash.gdshader", content="<section 2>", create_only=true)
209
210
  summer_write_file(path="res://addons/vfx/muzzle-flash/muzzle_flash.gd", content="<section 3>", create_only=true)
210
211
 
211
- summer_add_node(scenePath="res://main.tscn", parent="./Player/Weapon/BarrelTip", type="Node3D", name="MuzzleFlash")
212
- summer_set_prop(scenePath="res://main.tscn", path="./Player/Weapon/BarrelTip/MuzzleFlash", key="script", value="res://addons/vfx/muzzle-flash/muzzle_flash.gd")
213
- summer_set_prop(scenePath="res://main.tscn", path="./Player/Weapon/BarrelTip/MuzzleFlash", key="flash_size", value=0.6)
214
- summer_set_prop(scenePath="res://main.tscn", path="./Player/Weapon/BarrelTip/MuzzleFlash", key="flash_duration", value=0.08)
215
- summer_set_prop(scenePath="res://main.tscn", path="./Player/Weapon/BarrelTip/MuzzleFlash", key="light_energy", value=4.0)
216
- summer_save_scene(scenePath="res://main.tscn")
217
- ```
218
-
219
- Then in your weapon script, on `fire()`:
220
-
221
- ```gdscript
222
- $BarrelTip/MuzzleFlash.fire()
223
- ```
224
-
225
- Or connect the weapon's `fired` signal in the scene:
226
-
227
- ```
228
- summer_connect_signal(scenePath="res://main.tscn", emitter="./Player/Weapon", signal="fired", receiver="./Player/Weapon/BarrelTip/MuzzleFlash", method="fire")
229
- ```
230
-
231
- ### 5a. One-script wiring (summer_run_script)
232
-
233
- On engines with `summer_run_script` (see `scene-scripting`), the node calls
234
- above are ONE transactional ctx script — and mounting a flash on every weapon in the
235
- scene becomes a loop instead of a CRUD chain per gun:
236
-
237
- ```gdscript
212
+ summer_run_script(scenePath="res://main.tscn", source="""
238
213
  func run(ctx):
239
- var tip := ctx.find("BarrelTip")
240
- var flash := ctx.add_node("Node3D", "MuzzleFlash", tip)
214
+ var tip = ctx.find("BarrelTip")
215
+ var flash = ctx.add_node("Node3D", "MuzzleFlash", tip)
241
216
  flash.set_script(load("res://addons/vfx/muzzle-flash/muzzle_flash.gd"))
242
217
  flash.set("flash_size", 0.6)
243
218
  flash.set("flash_duration", 0.08)
244
219
  flash.set("light_energy", 4.0)
245
- var weapon := ctx.find("Weapon")
220
+ var weapon = ctx.find("Weapon")
246
221
  weapon.connect("fired", Callable(flash, "fire"), CONNECT_PERSIST)
247
- # CONNECT_PERSIST is required — a bare connect() works live but is NOT saved
222
+ # CONNECT_PERSIST is required: a bare connect() works live but is NOT saved
248
223
  ctx.save_scene()
224
+ """)
249
225
  ```
250
226
 
251
- ### 5b. Verify
227
+ Then in your weapon script, on `fire()`:
228
+
229
+ ```gdscript
230
+ $BarrelTip/MuzzleFlash.fire()
231
+ ```
232
+
233
+ The script above already connects the weapon's `fired` signal to the flash; the
234
+ one-call form is `summer_connect_signal(scenePath="res://main.tscn", emitter="./Player/Weapon", signal="fired", receiver="./Player/Weapon/BarrelTip/MuzzleFlash", method="fire")`.
235
+
236
+ ### 5a. Verify
252
237
 
253
238
  `muzzle_flash.gd` `preload`s its own shader, so a shader that failed to write takes
254
239
  the script down at parse time. Check before firing a shot.
@@ -387,3 +372,26 @@ After firing this recipe, suggest:
387
372
  - `vfx-hit-spark` — companion impact effect
388
373
  - `vfx-lightning` — for energy weapons (replace the flash with a beam)
389
374
  - `game-feel` — recoil + hit-stop wiring
375
+
376
+ <!-- shell-commands: generated from the operation catalog by npm run generate:registry; do not edit by hand -->
377
+ ## From a shell
378
+
379
+ No Summer MCP tools in this session? Run each one as a command; when `summer --version` is missing or below 4.0, use `npx -y summer-engine@latest` in place of `summer`. Fields are flags in kebab-case (`--scene-path res://main.tscn`) or one `--input '<json>'`, and `summer ops describe <op>` prints the exact input. The `summer-cli` skill has the rest.
380
+
381
+ | In this skill | Command |
382
+ |---|---|
383
+ | `summer_add_node` | `summer engine add-node` |
384
+ | `summer_connect_signal` | `summer engine connect-signal` |
385
+ | `summer_create_scene` | `summer engine create-scene` |
386
+ | `summer_get_debugger_errors` | `summer engine get-debugger-errors` |
387
+ | `summer_get_script_errors` | `summer engine get-script-errors` |
388
+ | `summer_inspect_node` | `summer engine inspect-node` |
389
+ | `summer_play` | `summer engine play` |
390
+ | `summer_read_file` | `summer engine read-file` |
391
+ | `summer_run_script` | `summer engine run-script` |
392
+ | `summer_save_scene` | `summer engine save-scene` |
393
+ | `summer_set_prop` | `summer engine set-prop` |
394
+ | `summer_set_resource_property` | `summer engine set-resource-property` |
395
+ | `summer_stop` | `summer engine stop` |
396
+ | `summer_write_file` | `summer engine write-file` |
397
+ <!-- /shell-commands -->
@@ -1,7 +1,7 @@
1
1
  id: skill/vfx-muzzle-flash
2
2
  kind: skill
3
3
  version: 1.0.3
4
- 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.
4
+ summary: "Muzzle-flash effect: a one-shot ~80 ms burst at a gun barrel, from particles or a star-burst quad."
5
5
  use_when:
6
6
  - authoring a muzzle-flash effect — gun fire, weapon flash, barrel flash, spell-cast burst at a hand
7
7
  - a gun or spell-casting hand shoots with no visible flash at the barrel or palm
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: vfx-smoke
3
- description: "Smoke effect — a slow-rising column or puff of soft particles built with a noise + density falloff shader on a quad mesh, GPUParticles3D."
3
+ description: "Smoke effect: a rising column or puff of soft particles with a noise and density falloff shader."
4
4
  license: MIT
5
5
  compatibility: [Cursor, Claude Code, Windsurf, Codex]
6
6
  category: visual-effects
@@ -228,42 +228,19 @@ child nodes, and `ParticleProcessMaterial` is a `Material` — you cannot
228
228
 
229
229
  ### 5. Wire it in (MCP calls)
230
230
 
231
- Every scene-mutating call takes an explicit `scenePath`. `summer_set_prop` uses `key`
232
- (not `property`) and only accepts a string, number, or boolean.
233
-
234
- For chimney smoke or fire pairing, parent the Smoke just above the heat source:
231
+ Write the three files, then wire the emitter with ONE `summer_run_script` call
232
+ with an explicit `scenePath` — transactional, and it builds the QuadMesh +
233
+ ShaderMaterial resources directly instead of `.tres` sidecars. For chimney
234
+ smoke, parent the Smoke just above the heat source:
235
235
 
236
236
  ```
237
237
  summer_write_file(path="res://addons/vfx/_building-blocks/noise-3d-fbm.gdshaderinc", content="<from this skill>", create_only=true)
238
238
  summer_write_file(path="res://addons/vfx/smoke/smoke.gdshader", content="<section 2>", create_only=true)
239
239
  summer_write_file(path="res://addons/vfx/smoke/smoke_controller.gd", content="<section 3>", create_only=true)
240
240
 
241
- summer_add_node(scenePath="res://main.tscn", parent="./World/Cottage/Chimney", type="GPUParticles3D", name="Smoke")
242
- summer_set_prop(scenePath="res://main.tscn", path="./World/Cottage/Chimney/Smoke", key="script", value="res://addons/vfx/smoke/smoke_controller.gd")
243
- summer_set_prop(scenePath="res://main.tscn", path="./World/Cottage/Chimney/Smoke", key="position", value="Vector3(0, 0.3, 0)")
244
- summer_set_prop(scenePath="res://main.tscn", path="./World/Cottage/Chimney/Smoke", key="rise_height", value=4.0)
245
- summer_set_prop(scenePath="res://main.tscn", path="./World/Cottage/Chimney/Smoke", key="particle_count", value=48)
246
- summer_set_prop(scenePath="res://main.tscn", path="./World/Cottage/Chimney/Smoke", key="wind_direction", value="Vector3(0.4, 0, 0.1)")
247
- summer_save_scene(scenePath="res://main.tscn")
248
- ```
249
-
250
- For pairing with a fire:
251
-
252
- ```
253
- summer_add_node(scenePath="res://main.tscn", parent="./World/Campfire", type="GPUParticles3D", name="Smoke")
254
- summer_set_prop(scenePath="res://main.tscn", path="./World/Campfire/Smoke", key="position", value="Vector3(0, 1.5, 0)") # above flame top
255
- summer_set_prop(scenePath="res://main.tscn", path="./World/Campfire/Smoke", key="rise_height", value=3.0)
256
- ```
257
-
258
- ### 5a. One-script wiring (summer_run_script)
259
-
260
- On engines with `summer_run_script` (see `scene-scripting`), the node wiring
261
- above is ONE ctx script — transactional, and it builds the QuadMesh + ShaderMaterial
262
- resources directly instead of `.tres` sidecars:
263
-
264
- ```gdscript
241
+ summer_run_script(scenePath="res://main.tscn", source="""
265
242
  func run(ctx):
266
- var smoke := ctx.add_node("GPUParticles3D", "Smoke", ctx.find("Chimney"))
243
+ var smoke = ctx.add_node("GPUParticles3D", "Smoke", ctx.find("Chimney"))
267
244
  smoke.set_script(load("res://addons/vfx/smoke/smoke_controller.gd"))
268
245
  smoke.process_material = ParticleProcessMaterial.new()
269
246
  var quad := QuadMesh.new()
@@ -277,11 +254,16 @@ func run(ctx):
277
254
  smoke.set("particle_count", 48)
278
255
  smoke.set("wind_direction", Vector3(0.4, 0, 0.1))
279
256
  ctx.save_scene()
257
+ """)
280
258
  ```
281
259
 
260
+ For pairing with a fire, run the same script with `ctx.find("Campfire")` as the
261
+ parent, `position = Vector3(0, 1.5, 0)` (above the flame top) and
262
+ `rise_height` 3.0.
263
+
282
264
  Verify with `summer_snapshot_diff` (exactly one node added) and a `summer_screenshot`.
283
265
 
284
- ### 5b. Verify
266
+ ### 5a. Verify
285
267
 
286
268
  The shader and the controller are compiled code. Check them before tuning anything.
287
269
 
@@ -466,3 +448,29 @@ After firing this recipe, suggest:
466
448
  - `vfx-fire` — sister recipe, almost always paired
467
449
  - `vfx-dissolve` — for ash particles after disintegration
468
450
  - `gdscript-patterns` — for the controller idioms (signals, exports, `@tool`)
451
+
452
+ <!-- shell-commands: generated from the operation catalog by npm run generate:registry; do not edit by hand -->
453
+ ## From a shell
454
+
455
+ No Summer MCP tools in this session? Run each one as a command; when `summer --version` is missing or below 4.0, use `npx -y summer-engine@latest` in place of `summer`. Fields are flags in kebab-case (`--scene-path res://main.tscn`) or one `--input '<json>'`, and `summer ops describe <op>` prints the exact input. The `summer-cli` skill has the rest.
456
+
457
+ | In this skill | Command |
458
+ |---|---|
459
+ | `summer_add_node` | `summer engine add-node` |
460
+ | `summer_create_scene` | `summer engine create-scene` |
461
+ | `summer_get_debugger_errors` | `summer engine get-debugger-errors` |
462
+ | `summer_get_script_errors` | `summer engine get-script-errors` |
463
+ | `summer_inspect_node` | `summer engine inspect-node` |
464
+ | `summer_inspect_resource` | `summer engine inspect-resource` |
465
+ | `summer_play` | `summer engine play` |
466
+ | `summer_read_file` | `summer engine read-file` |
467
+ | `summer_run_script` | `summer engine run-script` |
468
+ | `summer_save_scene` | `summer engine save-scene` |
469
+ | `summer_screenshot` | `summer engine screenshot` |
470
+ | `summer_set_prop` | `summer engine set-prop` |
471
+ | `summer_set_resource_property` | `summer engine set-resource-property` |
472
+ | `summer_snapshot_diff` | `summer engine snapshot-diff` |
473
+ | `summer_stop` | `summer engine stop` |
474
+ | `summer_world_snapshot` | `summer engine world-snapshot` |
475
+ | `summer_write_file` | `summer engine write-file` |
476
+ <!-- /shell-commands -->
@@ -1,7 +1,7 @@
1
1
  id: skill/vfx-smoke
2
2
  kind: skill
3
3
  version: 1.0.2
4
- summary: Smoke effect — a slow-rising column or puff of soft particles built with a noise + density falloff shader on a quad mesh, GPUParticles3D.
4
+ summary: "Smoke effect: a rising column or puff of soft particles with a noise and density falloff shader."
5
5
  use_when:
6
6
  - authoring a smoke effect — smoke trail, puff, chimney smoke, steam, fog cloud, explosion smoke
7
7
  - a chimney, campfire, explosion, or vent needs a rising smoke column or puff in a 3D scene
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: vfx-water-ripple
3
- description: "Water-ripple effect — animated normal-distortion ripples on a water plane (or as a Decal) triggered by impacts."
3
+ description: "Water-ripple effect: animated normal-distortion ripples on a water plane or Decal, set off by impacts."
4
4
  license: MIT
5
5
  compatibility: [Cursor, Claude Code, Windsurf, Codex]
6
6
  category: visual-effects
@@ -221,54 +221,35 @@ MeshInstance3D ("Water") [script: water_ripple_surface.gd]
221
221
 
222
222
  ### 5. Wire it in (MCP calls)
223
223
 
224
- Every scene-mutating call takes an explicit `scenePath`. `summer_set_prop` uses `key`
225
- (not `property`); `summer_set_resource_property` always needs a `subProperty` and is
226
- for reaching *into* a resource, not for assigning one.
224
+ Write the two files, then wire the surface with ONE `summer_run_script` call
225
+ with an explicit `scenePath` — transactional, and it builds the subdivided
226
+ PlaneMesh directly, so no `plane.tres` sidecar is needed:
227
227
 
228
228
  ```
229
229
  summer_write_file(path="res://addons/vfx/water-ripple/water_ripple.gdshader", content="<section 2>", create_only=true)
230
230
  summer_write_file(path="res://addons/vfx/water-ripple/water_ripple_surface.gd", content="<section 3>", create_only=true)
231
231
 
232
- summer_add_node(scenePath="res://main.tscn", parent="./World", type="MeshInstance3D", name="Puddle")
233
- summer_set_prop(scenePath="res://main.tscn", path="./World/Puddle", key="script", value="res://addons/vfx/water-ripple/water_ripple_surface.gd")
234
- summer_set_prop(scenePath="res://main.tscn", path="./World/Puddle", key="position", value="Vector3(0, 0.01, 0)")
235
-
236
- # Whole resources are assigned by path with summer_set_prop.
237
- summer_set_prop(scenePath="res://main.tscn", path="./World/Puddle", key="mesh", value="res://addons/vfx/water-ripple/plane.tres")
238
- # `normal_texture` is an exported script property on the controller, not a
239
- # MeshInstance3D property — MeshInstance3D has no `normal_texture`.
240
- summer_set_prop(scenePath="res://main.tscn", path="./World/Puddle", key="normal_texture", value="res://addons/vfx/water-ripple/water_normals.png")
241
-
242
- # subProperty is required — this is how you reach into the PlaneMesh itself.
243
- summer_set_resource_property(scenePath="res://main.tscn", nodePath="./World/Puddle", resourceProperty="mesh", subProperty="subdivide_width", value=32)
244
- summer_set_resource_property(scenePath="res://main.tscn", nodePath="./World/Puddle", resourceProperty="mesh", subProperty="subdivide_depth", value=32)
245
-
246
- summer_save_scene(scenePath="res://main.tscn")
247
- ```
248
-
249
- ### 5a. One-script wiring (summer_run_script)
250
-
251
- On engines with `summer_run_script` (see `scene-scripting`), the node and
252
- resource wiring is ONE transactional ctx script — and it builds the subdivided
253
- PlaneMesh directly, so the `plane.tres` sidecar disappears:
254
-
255
- ```gdscript
232
+ summer_run_script(scenePath="res://main.tscn", source="""
256
233
  func run(ctx):
257
- var puddle := ctx.add_node("MeshInstance3D", "Puddle", null)
234
+ var puddle = ctx.add_node("MeshInstance3D", "Puddle", ctx.find("World"))
258
235
  var plane := PlaneMesh.new()
259
236
  plane.subdivide_width = 32
260
237
  plane.subdivide_depth = 32
261
238
  puddle.mesh = plane
262
239
  puddle.position = Vector3(0, 0.01, 0)
263
240
  puddle.set_script(load("res://addons/vfx/water-ripple/water_ripple_surface.gd"))
241
+ # normal_texture is an exported property of the controller script, not of MeshInstance3D
264
242
  puddle.set("normal_texture", load("res://addons/vfx/water-ripple/water_normals.png"))
265
243
  ctx.save_scene()
244
+ """)
266
245
  ```
267
246
 
268
247
  Set the mesh BEFORE the script if the controller reads it in `_ready`; either way,
269
- `ctx.add_node` has already owned the node, so it survives the save.
248
+ `ctx.add_node` has already owned the node, so it survives the save. Tuning one
249
+ mesh value later is one `summer_set_resource_property` call (`resourceProperty="mesh"`,
250
+ `subProperty="subdivide_width"`): it reaches into a resource, it never assigns one.
270
251
 
271
- ### 5b. Verify
252
+ ### 5a. Verify
272
253
 
273
254
  The shader and the controller are compiled code, and the controller `preload`s the
274
255
  shader — a shader that failed to write takes the script down at parse time.
@@ -420,3 +401,26 @@ After firing this recipe, suggest:
420
401
  - `vfx-hit-spark` — sister recipe for the upward droplets
421
402
  - `vfx-smoke` — for steam over hot liquids
422
403
  - `gdscript-patterns` — for the controller idioms
404
+
405
+ <!-- shell-commands: generated from the operation catalog by npm run generate:registry; do not edit by hand -->
406
+ ## From a shell
407
+
408
+ No Summer MCP tools in this session? Run each one as a command; when `summer --version` is missing or below 4.0, use `npx -y summer-engine@latest` in place of `summer`. Fields are flags in kebab-case (`--scene-path res://main.tscn`) or one `--input '<json>'`, and `summer ops describe <op>` prints the exact input. The `summer-cli` skill has the rest.
409
+
410
+ | In this skill | Command |
411
+ |---|---|
412
+ | `summer_add_node` | `summer engine add-node` |
413
+ | `summer_create_scene` | `summer engine create-scene` |
414
+ | `summer_get_debugger_errors` | `summer engine get-debugger-errors` |
415
+ | `summer_get_script_errors` | `summer engine get-script-errors` |
416
+ | `summer_inspect_node` | `summer engine inspect-node` |
417
+ | `summer_inspect_resource` | `summer engine inspect-resource` |
418
+ | `summer_play` | `summer engine play` |
419
+ | `summer_read_file` | `summer engine read-file` |
420
+ | `summer_run_script` | `summer engine run-script` |
421
+ | `summer_save_scene` | `summer engine save-scene` |
422
+ | `summer_set_prop` | `summer engine set-prop` |
423
+ | `summer_set_resource_property` | `summer engine set-resource-property` |
424
+ | `summer_stop` | `summer engine stop` |
425
+ | `summer_write_file` | `summer engine write-file` |
426
+ <!-- /shell-commands -->
@@ -1,7 +1,7 @@
1
1
  id: skill/vfx-water-ripple
2
2
  kind: skill
3
3
  version: 1.0.2
4
- summary: Water-ripple effect — animated normal-distortion ripples on a water plane (or as a Decal) triggered by impacts.
4
+ summary: "Water-ripple effect: animated normal-distortion ripples on a water plane or Decal, set off by impacts."
5
5
  use_when:
6
6
  - authoring a water-ripple effect — raindrop ripples, splash ripples, footstep in a puddle, fish jumps
7
7
  - rain, footsteps, or falling objects should disturb a water surface with spreading ripples