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,19 +1,19 @@
1
1
  ---
2
2
  name: vehicle-model
3
- description: "Generate a hard-surface vehicle — car, spaceship, mech, boat, tank — static mesh with optional detail-texture pass, wired as VehicleBody3D or MeshInstance3D."
3
+ description: "Generate a hard-surface vehicle (car, spaceship, mech, boat, tank) as a static or VehicleBody3D mesh."
4
4
  license: MIT
5
5
  compatibility: [Cursor, Claude Code, Windsurf, Codex]
6
6
  category: 3d-assets
7
7
  user-invocable: true
8
- allowed-tools: Read Grep summer_search_assets summer_list_my_assets summer_get_asset summer_import_asset_by_id summer_generate_3d summer_generate_image summer_import_from_url summer_add_node summer_set_prop summer_inspect_node summer_inspect_resource summer_get_scene_tree summer_save_scene
8
+ allowed-tools: Read Grep summer_assets_search summer_assets_get summer_import_asset_by_id summer_assets_generate_3d summer_assets_generate_image summer_import_from_url summer_add_node summer_set_prop summer_inspect_node summer_inspect_resource summer_get_scene_tree summer_save_scene summer_jobs_wait summer_call
9
9
  paths: ["assets/vehicles/**", "assets/models/**", "**/*.tscn", "**/*.gd"]
10
10
  ---
11
11
 
12
12
  # Vehicle Model — Hard-Surface 3D Generation
13
13
 
14
- Vehicles are the hardest 3D-gen category. Hard surfaces (flat panels, sharp edges, symmetrical bodies) expose every flaw the AI mesher has — smoothing-group artifacts on flat panels, asymmetric headlights, melted door seams. This skill exists to push the success rate up by giving the model **multi-angle reference**, picking the right backend, and using a **secondary detail-texture pass** to recover crispness on the body panels.
14
+ Vehicles are the hardest 3D-gen category. Hard surfaces (flat panels, sharp edges, symmetrical bodies) expose every flaw the AI mesher has — smoothing-group artifacts on flat panels, asymmetric headlights, melted door seams. This skill exists to push the success rate up by giving the model **multi-angle reference**, picking the right backend, and using a **secondary detail pass** (decals) to recover crispness on the body panels.
15
15
 
16
- Backing tool: `summer_generate_3d`. Default model is `hunyuan` (best general quality). For pure hard-surface (clean spaceship, F1 car), try `trellis` first — it tends to preserve panel edges better.
16
+ Backing operation: `assets.generate_3d` (it answers with a job: `jobs.wait` until it finishes). Default model is `hunyuan` (best general quality). For pure hard-surface (clean spaceship, F1 car), try `trellis` first — it tends to preserve panel edges better.
17
17
 
18
18
  ## When to use
19
19
 
@@ -34,10 +34,10 @@ Backing tool: `summer_generate_3d`. Default model is `hunyuan` (best general qua
34
34
 
35
35
  | Use case | Tris | Pass via |
36
36
  |---|---|---|
37
- | Player vehicle (close camera, lots of screen time) | 15k–30k | `target_polycount: 25000` |
38
- | Hero showpiece (cinematic, garage view) | 30k–60k | `target_polycount: 50000` |
39
- | Background traffic (mid-range, multiple onscreen) | 2k–5k | `target_polycount: 4000` |
40
- | Distant flyby / parked scenery | 1k–2k | `target_polycount: 1500` |
37
+ | Player vehicle (close camera, lots of screen time) | 15k–30k | `targetPolycount: 25000` |
38
+ | Hero showpiece (cinematic, garage view) | 30k–60k | `targetPolycount: 50000` |
39
+ | Background traffic (mid-range, multiple onscreen) | 2k–5k | `targetPolycount: 4000` |
40
+ | Distant flyby / parked scenery | 1k–2k | `targetPolycount: 1500` |
41
41
 
42
42
  Vehicles benefit more from polycount than props — flat panels need edge density to look right. Don't go below 2k for anything the camera will get close to.
43
43
 
@@ -45,30 +45,31 @@ Vehicles benefit more from polycount than props — flat panels need edge densit
45
45
 
46
46
  Vehicles are highly view-dependent. A front-only reference produces a mesh with great front detail and a melted rear. There are two ways to give the mesher more than one angle, and they are not the same thing:
47
47
 
48
- **(a) A real multi-image request — prefer this.** `summer_generate_3d` takes an `imageUrls` array of up to four views. These are passed through as separate views, not fused into one picture.
48
+ **(a) A real multi-image request — prefer this.** `assets.generate_3d` takes an `imageUrls` array of two to four views. These are passed through as separate views, not fused into one picture. Several views run on Meshy (`meshy` or `meshy-7.1`; any other model is switched to Meshy).
49
49
 
50
50
  ```
51
- summer_generate_3d(
52
- kind="image-to-3d",
53
- imageUrls=["<front url>", "<3/4 rear-side url>", "<profile url>"],
54
- model="hunyuan",
55
- options={ target_polycount: 25000 }
56
- )
51
+ assets.generate_3d({
52
+ kind: "image-to-3d",
53
+ imageUrls: ["<front url>", "<3/4 rear-side url>", "<profile url>"],
54
+ model: "meshy",
55
+ targetPolycount: 25000
56
+ })
57
57
  ```
58
58
 
59
59
  **(b) A composite reference image**, when you only have one slot to work with:
60
60
 
61
61
  ```
62
- summer_generate_image(
63
- prompt="A sleek red sports car, front view AND 3/4 rear-side view side by side, two angles in one image, white background, studio lighting, clean references for 3D modeling, isolated, no scenery."
64
- )
62
+ assets.generate_image({
63
+ prompt: "A sleek red sports car, front view AND 3/4 rear-side view side by side, two angles in one image, white background, studio lighting, clean references for 3D modeling, isolated, no scenery.",
64
+ aspectRatio: "16:9"
65
+ })
65
66
 
66
- summer_generate_3d(
67
- kind="image-to-3d",
68
- imageUrl="<composite reference url>",
69
- model="hunyuan",
70
- options={ target_polycount: 25000 }
71
- )
67
+ assets.generate_3d({
68
+ kind: "image-to-3d",
69
+ imageUrl: "<composite reference url>",
70
+ model: "hunyuan",
71
+ targetPolycount: 25000
72
+ })
72
73
  ```
73
74
 
74
75
  If the user has reference images already (concept art, photos), pass them straight to `imageUrls` — do not composite them down into one image first; that throws away the multi-view path.
@@ -78,7 +79,7 @@ If the user has reference images already (concept art, photos), pass them straig
78
79
  ### 1. Search before generating
79
80
 
80
81
  ```
81
- summer_search_assets(query="<vehicle type>", assetType="3d_model", source="all")
82
+ assets.search({ query: "<vehicle type>", assetType: "3d_model", scope: "all" })
82
83
  ```
83
84
 
84
85
  ### 2. Pick model and polycount
@@ -97,20 +98,22 @@ Pattern: `<vehicle type> + <silhouette / era / style> + <materials> + <surface s
97
98
  | Mech | `A 4 meter tall bipedal combat mech, blocky armored torso, articulated arms with rifle and missile pod, thick legs with hydraulic pistons, painted olive drab with hazard stripes. Front and 3/4 side views. Game asset, hard-surface stylized, white background, isolated vehicle.` |
98
99
  | Background sedan | `A generic 90s civilian sedan, four doors, beige paint, slightly worn. Front and 3/4 side views. Game asset, low-detail stylized, white background, isolated vehicle.` |
99
100
 
100
- Nothing in the prompt text "triggers" multi-view. The phrase `front and 3/4 side views` only shapes what the *image* model draws; the 3D tool has no prompt-sniffing and sees whatever pixels you hand it. Multi-view comes from the `imageUrls` array, nothing else.
101
+ Nothing in the prompt text "triggers" multi-view. The phrase `front and 3/4 side views` only shapes what the *image* model draws; the 3D operation has no prompt-sniffing and sees whatever pixels you hand it. Multi-view comes from the `imageUrls` array, nothing else.
101
102
 
102
103
  ### 4. Confirm and call
103
104
 
104
105
  > About to generate `red_race_car` via `hunyuan`, target ~25k tris, multi-angle ref. Uses credits, ~90s. OK?
105
106
 
107
+ The same call with `dryRun: true` first gives the credits for the confirmation (`estimate.credits`, and `enough` against their balance).
108
+
106
109
  ```
107
- summer_generate_3d(
108
- prompt="A sleek modern Formula 1 race car, ...",
109
- model="hunyuan",
110
- options={ target_polycount: 25000 },
111
- wait=true
112
- )
113
- summer_get_asset(assetId="<assetId>")
110
+ assets.generate_3d({
111
+ prompt: "A sleek modern Formula 1 race car, ...",
112
+ model: "hunyuan",
113
+ targetPolycount: 25000
114
+ })
115
+ jobs.wait({ jobId: "<job.id>", timeoutSeconds: 50 }) // again until finished; result.assetId
116
+ assets.get({ assetId: "<assetId>" })
114
117
  summer_import_asset_by_id(assetId="<assetId>", path="res://assets/vehicles/race_car.glb")
115
118
  ```
116
119
 
@@ -121,24 +124,24 @@ summer_inspect_resource(path="res://assets/vehicles/race_car.glb")
121
124
  ```
122
125
 
123
126
  Open the import preview. Look for:
124
- - **Smoothing-group artifacts on flat panels** (visible as banding under light) → fix in step 6 with a detail texture, or re-import with `Generate Tangents = on` and a custom shader.
127
+ - **Smoothing-group artifacts on flat panels** (visible as banding under light) → cover with step 6's detail decals, or re-import with `Generate Tangents = on` and a custom shader.
125
128
  - **Asymmetric headlights / wheels** → regenerate with `symmetric, mirrored bilateral` added to the prompt.
126
- - **Melted door seams / panel gaps** → run the detail-texture pass (step 6).
129
+ - **Melted door seams / panel gaps** → regenerate from a cleaner multi-view reference, or paint the seams back with step 6's decals.
127
130
 
128
- ### 6. Optional: secondary detail-texture pass
131
+ ### 6. Optional: secondary detail pass
129
132
 
130
- For hero vehicles, run a texture-only pass to recover panel-line crispness without re-meshing:
133
+ There is no texture-only 3D pass among the asset operations (`assets.generate_3d` takes `text-to-3d` or `image-to-3d`). For hero vehicles, recover panel-line crispness without re-meshing by drawing the detail as images and laying it on the mesh:
131
134
 
132
135
  ```
133
- summer_generate_3d(
134
- kind="texture",
135
- imageUrl="<original front-view reference>",
136
- model="hunyuan",
137
- options={ target_polycount: 25000 } // matched to existing mesh
138
- )
136
+ assets.generate_image({
137
+ prompt: "Flat orthographic livery and panel-line decal for a red Formula 1 car side, crisp seams, sponsor stripes, transparent background",
138
+ referenceImageUrl: "<original front-view reference>",
139
+ aspectRatio: "16:9",
140
+ removeBackground: true
141
+ })
139
142
  ```
140
143
 
141
- This re-textures the existing mesh with sharper detail — panel lines, decals, weathering. Cheaper than re-meshing. Apply via material override in the editor.
144
+ Import it and apply it with `Decal` nodes or as a detail texture in a material override in the editor. Cheaper than re-meshing.
142
145
 
143
146
  ### 7. Wire into the scene
144
147
 
@@ -149,21 +152,22 @@ This re-textures the existing mesh with sharper detail — panel lines, decals,
149
152
  | Background scenery (parked, flyby) | `MeshInstance3D` under a `Node3D` | No physics, no collision needed for distant traffic |
150
153
  | Background traffic (moving but not interactive) | `Node3D` + `AnimationPlayer` driving the position | Cheap, no physics overhead |
151
154
 
152
- **Player car wiring:**
155
+ **Player car wiring** (one `summer_run_script`; `scenePath` is the exact scene to change):
153
156
 
154
157
  ```
155
- summer_add_node(scenePath="res://main.tscn", parent="./World", type="VehicleBody3D", name="RaceCar")
156
- summer_instantiate_scene(scenePath="res://main.tscn", parent="./World/RaceCar", scene="res://assets/vehicles/race_car.glb", name="Body")
157
- summer_add_node(scenePath="res://main.tscn", parent="./World/RaceCar", type="CollisionShape3D", name="Collider")
158
- summer_set_prop(scenePath="res://main.tscn", path="./World/RaceCar/Collider", key="shape", value="BoxShape3D")
159
- summer_set_resource_property(scenePath="res://main.tscn", nodePath="./World/RaceCar/Collider", resourceProperty="shape", subProperty="size", value="Vector3(4.5, 1.1, 1.9)")
160
- # Add VehicleWheel3D children at each wheel position
161
- summer_save_scene(scenePath="res://main.tscn")
158
+ summer_run_script(scenePath="res://main.tscn", source="""
159
+ func run(ctx):
160
+ var car = ctx.add_node("VehicleBody3D", "RaceCar", ctx.find("World"))
161
+ ctx.instance_scene("res://assets/vehicles/race_car.glb", car, "Body")
162
+ var box = BoxShape3D.new()
163
+ box.size = Vector3(4.5, 1.1, 1.9)
164
+ ctx.add_node("CollisionShape3D", "Collider", car, {"shape": box})
165
+ # Add one VehicleWheel3D per wheel here, at the hub positions summer_inspect_asset measured on the model.
166
+ ctx.save_scene()
167
+ """)
162
168
  ```
163
169
 
164
- A `.glb` cannot be assigned to `MeshInstance3D.mesh` — an imported `.glb` is a scene, not a `Mesh` (`ResourceLoader.get_recognized_extensions_for_type("Mesh")` on the shipped engine returns `["tres", "mesh", "res"]`, no `glb`). Instantiate it. Assigning a bare class name like `"BoxShape3D"` to a resource property auto-instantiates it, which is how you get a shape you can then size.
165
-
166
- Every scene-mutating tool takes an explicit `scenePath`; node paths are relative to that scene's root (`./`); `summer_set_prop`'s property argument is `key`; and `summer_set_resource_property` needs all five of `scenePath`, `nodePath`, `resourceProperty`, `subProperty`, `value`.
170
+ A `.glb` cannot be assigned to `MeshInstance3D.mesh` — an imported `.glb` is a scene, not a `Mesh` (`ResourceLoader.get_recognized_extensions_for_type("Mesh")` on the shipped engine returns `["tres", "mesh", "res"]`, no `glb`). Instantiate it (`ctx.instance_scene` in a script, `summer_instantiate_scene` for one model). Build and size the collision shape before you assign it.
167
171
 
168
172
  **Background scenery wiring:**
169
173
 
@@ -178,7 +182,7 @@ summer_save_scene(scenePath="res://main.tscn")
178
182
  - **Expecting the prompt to request multi-view.** It cannot. `imageUrls` is the only multi-view mechanism.
179
183
  - **Flat-shaded prompt for hard surfaces.** "Smooth shading", "rounded edges" → loses the panel-line crispness that defines vehicles. Prefer "hard-surface", "panel-lined", "crisp edges".
180
184
  - **Skipping symmetry callouts.** Vehicles are bilaterally symmetric — without `symmetric, mirrored` you get one headlight bigger than the other 30% of the time.
181
- - **Asking the mesh pass to invent decals / liveries.** It can't — the mesh has the silhouette but the decals get geometry-baked weirdly. Use the texture pass for liveries.
185
+ - **Asking the mesh pass to invent decals / liveries.** It can't — the mesh has the silhouette but the decals get geometry-baked weirdly. Use step 6's decals for liveries.
182
186
  - **Wrapping a background sedan in VehicleBody3D.** Wastes physics for a parked car. Use MeshInstance3D under Node3D.
183
187
  - **Picking `meshy` (legacy).** Worse hard-surface fidelity than hunyuan or trellis.
184
188
 
@@ -190,6 +194,10 @@ summer_save_scene(scenePath="res://main.tscn")
190
194
  - **Open-top vehicle (convertible, jeep).** Specify "open top, no roof" — defaults often add a roof.
191
195
  - **The user wants the cockpit interior visible.** Generate exterior here, then a separate `prop-model` for the interior, and switch meshes when the camera enters first-person view.
192
196
 
197
+ ## Without Summer Engine
198
+
199
+ In a session without Summer Engine tools (the assets profile; the `summer-assets` skill has the whole loop), do steps 1-6 and skip step 7 (scene wiring, `VehicleWheel3D`). Save the file where the person asked with `out` (the `summer-assets` skill says how), and tell them the path and format. The file is GLB and not at real-world size: give the person the target length (a car about 4.5 m) and tell them where the wheels are, so they can set up their engine's vehicle physics.
200
+
193
201
  ## Fallback (no MCP)
194
202
 
195
203
  1. Generate the multi-angle reference at the Summer dashboard (or Midjourney / nano-banana web).
@@ -212,4 +220,31 @@ After the vehicle is wired:
212
220
  - `character-model` — for the driver/pilot.
213
221
  - `prop-model` — for separable parts (rotors, decals as decals, modular kit pieces).
214
222
  - `asset-strategy` — meta-router.
215
- - `../../references/mcp-tools-reference/mcp-tools-reference.md` — `summer_generate_3d` schema, including `kind: "texture"` for the secondary detail pass.
223
+ - `summer_docs_read` id `reference/mcp-tools-reference` — how to call `assets.generate_3d`; `summer_search` returns its exact input.
224
+
225
+ <!-- shell-commands: generated from the operation catalog by npm run generate:registry; do not edit by hand -->
226
+ ## From a shell
227
+
228
+ 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.
229
+
230
+ | In this skill | Command |
231
+ |---|---|
232
+ | `assets.generate_3d`, `summer_assets_generate_3d` | `summer assets generate-3d` |
233
+ | `summer_assets_generate_image` | `summer assets generate-image` |
234
+ | `summer_assets_get` | `summer assets get` |
235
+ | `summer_assets_search` | `summer assets search` |
236
+ | `summer_docs_read` | `summer docs read` |
237
+ | `summer_add_node` | `summer engine add-node` |
238
+ | `summer_get_scene_tree` | `summer engine get-scene-tree` |
239
+ | `summer_import_asset_by_id` | `summer engine import-asset-by-id` |
240
+ | `summer_import_from_url` | `summer engine import-from-url` |
241
+ | `summer_inspect_asset` | `summer engine inspect-asset` |
242
+ | `summer_inspect_node` | `summer engine inspect-node` |
243
+ | `summer_inspect_resource` | `summer engine inspect-resource` |
244
+ | `summer_instantiate_scene` | `summer engine instantiate-scene` |
245
+ | `summer_run_script` | `summer engine run-script` |
246
+ | `summer_save_scene` | `summer engine save-scene` |
247
+ | `summer_set_prop` | `summer engine set-prop` |
248
+ | `jobs.wait`, `summer_jobs_wait` | `summer jobs wait` |
249
+ | `summer_search` | `summer ops search "<what you want>"` |
250
+ <!-- /shell-commands -->
@@ -1,7 +1,7 @@
1
1
  id: skill/vehicle-model
2
2
  kind: skill
3
3
  version: 1.0.3
4
- summary: Generate a hard-surface vehicle — car, spaceship, mech, boat, tank — static mesh with optional detail-texture pass, wired as VehicleBody3D or MeshInstance3D.
4
+ summary: "Generate a hard-surface vehicle (car, spaceship, mech, boat, tank) as a static or VehicleBody3D mesh."
5
5
  use_when:
6
6
  - generating a hard-surface vehicle — car, motorcycle, spaceship, hover bike, boat, mech, tank, helicopter
7
7
  - a racing, flying, or combat game needs a hard-surface vehicle mesh as a VehicleBody3D or MeshInstance3D
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: verification-before-completion
3
- description: "Run verification commands and confirm output before claiming work complete, fixed, or passing — evidence before assertions, always."
3
+ description: "Run verification and read its output before claiming work done, fixed or passing: evidence first."
4
4
  ---
5
5
 
6
6
  # Verification Before Completion
@@ -1,7 +1,7 @@
1
1
  id: skill/verification-before-completion
2
2
  kind: skill
3
3
  version: 1.0.3
4
- summary: Run verification commands and confirm output before claiming work complete, fixed, or passing — evidence before assertions, always.
4
+ summary: "Run verification and read its output before claiming work done, fixed or passing: evidence first."
5
5
  use_when:
6
6
  - about to claim work is complete, fixed, or passing, before committing or creating PRs
7
7
  - about to report a test, build, or fix as passing without having run the command and read its output
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: verifying-scenes
3
- description: "Prove scene work landed (snapshot, diff, screenshots, runtime reads), audit 3D scenes for holes and misplacement, review them with shot sheets and zooms."
3
+ description: "Prove scene work landed: snapshot, diff, screenshots, runtime reads, 3D audits, shot sheets and zooms."
4
4
  ---
5
5
 
6
6
  # Verifying Scenes
@@ -153,7 +153,7 @@ When the next step depends on the engine reaching a moment — the game booting
153
153
  - NEVER describe an image you did not receive. A failed capture is a result — report it and climb down (scene → viewport) or ask the user.
154
154
  - Preset-framing scene renders are static (t=0), synthetic-camera, flat-environment: no claims about animation, particles, lighting, or mood from them.
155
155
  - Pass structured failures (`failure_reason`, `terminalState`) through verbatim — never soften them into "it didn't work".
156
- - After the result is verified, record the outcome with `summer_library_feedback` (worked / worked with fixes / wrong / outdated / incomplete + a short note). Optional and fire-and-forget; if telemetry is off, move on.
156
+ - After the result is verified, record the outcome with `summer_call` `{"op":"docs.feedback"}` (worked / worked with fixes / wrong / outdated / incomplete + a short note). Optional and fire-and-forget; if telemetry is off, move on.
157
157
 
158
158
  ## Red Flags — STOP
159
159
 
@@ -170,3 +170,32 @@ When the next step depends on the engine reaching a moment — the game booting
170
170
  | "Looks great!" with no capture in the transcript | Fabrication. Capture, look, then claim. |
171
171
 
172
172
  **Related skills:** `scene-scripting` carries the mutation loop and ctx API this discipline wraps; `playtesting-a-feature` and `verification-before-completion` carry the broader done-claiming rules.
173
+
174
+ <!-- shell-commands: generated from the operation catalog by npm run generate:registry; do not edit by hand -->
175
+ ## From a shell
176
+
177
+ 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.
178
+
179
+ | In this skill | Command |
180
+ |---|---|
181
+ | `docs.feedback` | `summer docs feedback` |
182
+ | `summer_debug_views` | `summer engine debug-views` |
183
+ | `summer_frame_nodes` | `summer engine frame-nodes` |
184
+ | `summer_frame_shot` | `summer engine frame-shot` |
185
+ | `summer_get_runtime_tree` | `summer engine get-runtime-tree` |
186
+ | `summer_get_scene_tree` | `summer engine get-scene-tree` |
187
+ | `summer_inspect_asset` | `summer engine inspect-asset` |
188
+ | `summer_inspect_runtime_node` | `summer engine inspect-runtime-node` |
189
+ | `summer_instantiate_scene` | `summer engine instantiate-scene` |
190
+ | `summer_is_running` | `summer engine is-running` |
191
+ | `summer_camera_bookmark` | `summer engine list-camera-bookmarks`, `summer engine delete-camera-bookmark`, `summer engine save-camera-bookmark` |
192
+ | `summer_play` | `summer engine play` |
193
+ | `summer_recent_events` | `summer engine recent-events` |
194
+ | `summer_scene_audit` | `summer engine scene-audit` |
195
+ | `summer_screenshot` | `summer engine screenshot` |
196
+ | `summer_shot_sheet` | `summer engine shot-sheet` |
197
+ | `summer_snapshot_diff` | `summer engine snapshot-diff` |
198
+ | `summer_wait_for_event` | `summer engine wait-for-event` |
199
+ | `summer_world_snapshot` | `summer engine world-snapshot` |
200
+ | `summer_zoom` | `summer engine zoom` |
201
+ <!-- /shell-commands -->
@@ -1,7 +1,7 @@
1
1
  id: skill/verifying-scenes
2
2
  kind: skill
3
3
  version: 1.5.0
4
- summary: 'Prove scene work landed (snapshot, diff, screenshots, runtime reads), audit 3D scenes for holes and misplacement, review them with shot sheets and zooms.'
4
+ summary: "Prove scene work landed: snapshot, diff, screenshots, runtime reads, 3D audits, shot sheets and zooms."
5
5
  use_when:
6
6
  - after any mutation batch, asset import, or lighting change, before claiming it worked
7
7
  - during a playtest, to read live runtime state (spawned nodes, actual stats) without stopping the game
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: vfx-dissolve
3
- description: "Dissolve effect — a mesh disintegrating with a glowing burning edge, driven by a noise-threshold ShaderMaterial overriding the target's material."
3
+ description: "Dissolve effect: a mesh burns away with a glowing edge, from a noise-threshold ShaderMaterial."
4
4
  license: MIT
5
5
  compatibility: [Cursor, Claude Code, Windsurf, Codex]
6
6
  category: visual-effects
@@ -256,7 +256,7 @@ material, no play-mode round-trip:
256
256
 
257
257
  ```gdscript
258
258
  func run(ctx):
259
- var mat := ctx.make_shader("<section 2 source>", {"threshold": 0.4})
259
+ var mat = ctx.make_shader("<section 2 source>", {"threshold": 0.4})
260
260
  ctx.apply_material(ctx.find("TestDummy"), mat) # eyeball it with summer_screenshot
261
261
  ```
262
262
 
@@ -409,3 +409,22 @@ After firing this recipe, suggest:
409
409
  - `vfx-magic-glow` — for arrival/departure beams
410
410
  - `vfx-fire` — for the burn-up variant pairing
411
411
  - `gdscript-patterns` — for the static-API class pattern
412
+
413
+ <!-- shell-commands: generated from the operation catalog by npm run generate:registry; do not edit by hand -->
414
+ ## From a shell
415
+
416
+ 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.
417
+
418
+ | In this skill | Command |
419
+ |---|---|
420
+ | `summer_get_debugger_errors` | `summer engine get-debugger-errors` |
421
+ | `summer_get_script_errors` | `summer engine get-script-errors` |
422
+ | `summer_inspect_node` | `summer engine inspect-node` |
423
+ | `summer_inspect_resource` | `summer engine inspect-resource` |
424
+ | `summer_play` | `summer engine play` |
425
+ | `summer_read_file` | `summer engine read-file` |
426
+ | `summer_run_script` | `summer engine run-script` |
427
+ | `summer_screenshot` | `summer engine screenshot` |
428
+ | `summer_stop` | `summer engine stop` |
429
+ | `summer_write_file` | `summer engine write-file` |
430
+ <!-- /shell-commands -->
@@ -1,7 +1,7 @@
1
1
  id: skill/vfx-dissolve
2
2
  kind: skill
3
3
  version: 1.0.3
4
- summary: Dissolve effect — a mesh disintegrating with a glowing burning edge, driven by a noise-threshold ShaderMaterial overriding the target's material.
4
+ summary: "Dissolve effect: a mesh burns away with a glowing edge, from a noise-threshold ShaderMaterial."
5
5
  use_when:
6
6
  - authoring a dissolve effect — an object disintegrating with a glowing burning edge (disintegrate, burn away, vanish into ash)
7
7
  - a defeated unit, teleport exit, or removed object should burn away with a glowing edge instead of vanishing
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: vfx-fire
3
- description: "Fire effect — animated flames built with a particle shader, GPUParticles3D, and a noise-based color ramp — torches, campfires, candles."
3
+ description: "Fire effect: animated flames from GPUParticles3D, a particle shader and a noise color ramp."
4
4
  license: MIT
5
5
  compatibility: [Cursor, Claude Code, Windsurf, Codex]
6
6
  category: visual-effects
@@ -285,50 +285,21 @@ apply here — a draw pass mesh carries its material in `Mesh.material`.
285
285
 
286
286
  Add an OmniLight3D as a sibling (parented to the same anchor as the GPUParticles3D, NOT under it) for proper light cast. Recommended: `light_color = Color(1.0, 0.6, 0.25)`, `light_energy = 1.6`, `omni_range = 6.0`. Pulse it lightly via the controller for free atmosphere.
287
287
 
288
- ### 6. Wire it in (MCP calls)
288
+ ### 6. Wire it in
289
289
 
290
- Every scene-mutating call takes an explicit `scenePath`. `summer_set_prop` uses `key`
291
- (not `property`) and only accepts a string, number, or boolean.
290
+ Write the three files, then wire everything in ONE `summer_run_script` call with
291
+ an explicit `scenePath` — transactional (rollback on a mid-script error), no
292
+ `.tres` sidecar files needed because the script builds the resources directly:
292
293
 
293
294
  ```
294
295
  summer_write_file(path="res://addons/vfx/_building-blocks/noise-3d-fbm.gdshaderinc", content="<from this skill>", create_only=true)
295
296
  summer_write_file(path="res://addons/vfx/fire/fire.gdshader", content="<section 2>", create_only=true)
296
297
  summer_write_file(path="res://addons/vfx/fire/fire_controller.gd", content="<section 4>", create_only=true)
297
298
 
298
- summer_add_node(scenePath="res://main.tscn", parent="./World/Torch", type="GPUParticles3D", name="Fire")
299
- summer_set_prop(scenePath="res://main.tscn", path="./World/Torch/Fire", key="script", value="res://addons/vfx/fire/fire_controller.gd")
300
-
301
- # ParticleProcessMaterial is a Material, not a Node — you cannot summer_add_node it.
302
- # Assign the resource by path; the controller configures it on _ready().
303
- summer_set_prop(scenePath="res://main.tscn", path="./World/Torch/Fire", key="process_material", value="res://addons/vfx/fire/process_mat.tres")
304
-
305
- summer_set_prop(scenePath="res://main.tscn", path="./World/Torch/Fire", key="draw_pass_1", value="res://addons/vfx/fire/quad.tres")
306
- # quad.tres is a QuadMesh with size (1,1) and material = fire_material.tres (ShaderMaterial wrapping fire.gdshader)
307
- summer_set_resource_property(scenePath="res://main.tscn", nodePath="./World/Torch/Fire", resourceProperty="draw_pass_1", subProperty="size", value="Vector2(1, 1)")
308
-
309
- summer_set_prop(scenePath="res://main.tscn", path="./World/Torch/Fire", key="flame_height", value=1.2)
310
- summer_set_prop(scenePath="res://main.tscn", path="./World/Torch/Fire", key="flame_radius", value=0.35)
311
- summer_set_prop(scenePath="res://main.tscn", path="./World/Torch/Fire", key="particle_count", value=96)
312
-
313
- summer_add_node(scenePath="res://main.tscn", parent="./World/Torch", type="OmniLight3D", name="FireLight")
314
- summer_set_prop(scenePath="res://main.tscn", path="./World/Torch/FireLight", key="light_color", value="Color(1.0, 0.6, 0.25)")
315
- summer_set_prop(scenePath="res://main.tscn", path="./World/Torch/FireLight", key="light_energy", value=1.6)
316
- summer_set_prop(scenePath="res://main.tscn", path="./World/Torch/FireLight", key="omni_range", value=6.0)
317
-
318
- summer_save_scene(scenePath="res://main.tscn")
319
- ```
320
-
321
- ### 6a. One-script wiring (summer_run_script)
322
-
323
- On engines with `summer_run_script` (see `scene-scripting`), everything after
324
- the `summer_write_file` calls above is ONE ctx script — transactional (rollback on a
325
- mid-script error), no `.tres` sidecar files needed because the script builds the
326
- resources directly:
327
-
328
- ```gdscript
299
+ summer_run_script(scenePath="res://main.tscn", source="""
329
300
  func run(ctx):
330
- var anchor := ctx.find("Torch")
331
- var fire := ctx.add_node("GPUParticles3D", "Fire", anchor)
301
+ var anchor = ctx.find("Torch")
302
+ var fire = ctx.add_node("GPUParticles3D", "Fire", anchor)
332
303
  fire.set_script(load("res://addons/vfx/fire/fire_controller.gd"))
333
304
  fire.process_material = ParticleProcessMaterial.new() # controller configures it on _ready
334
305
  var quad := QuadMesh.new()
@@ -343,13 +314,16 @@ func run(ctx):
343
314
  ctx.add_node("OmniLight3D", "FireLight", anchor, {
344
315
  "light_color": Color(1.0, 0.6, 0.25), "light_energy": 1.6, "omni_range": 6.0})
345
316
  ctx.save_scene()
317
+ """)
346
318
  ```
347
319
 
348
- `ctx.add_node` sets owners for you. Take a `summer_world_snapshot` before, and verify
349
- after with `summer_snapshot_diff` (exactly `Fire` + `FireLight` added) plus a
350
- `summer_screenshot` — flames are pixels, judge them as pixels.
320
+ `ParticleProcessMaterial` is a Material, not a Node: the script assigns it to
321
+ `process_material`, it is never a child. `ctx.add_node` sets owners for you. Take
322
+ a `summer_world_snapshot` before, and verify after with `summer_snapshot_diff`
323
+ (exactly `Fire` + `FireLight` added) plus a `summer_screenshot` — flames are
324
+ pixels, judge them as pixels.
351
325
 
352
- ### 6b. Verify
326
+ ### 6a. Verify
353
327
 
354
328
  Every file this recipe writes is compiled code. Check it before claiming the fire works.
355
329
 
@@ -503,3 +477,29 @@ After firing this recipe, suggest neighbors:
503
477
  - `vfx-magic-glow` — for the light source pulsing
504
478
  - `game-feel` — non-particle game-feel pairings
505
479
  - `gdscript-patterns` — for the controller's idioms (signals, exports, `@tool`)
480
+
481
+ <!-- shell-commands: generated from the operation catalog by npm run generate:registry; do not edit by hand -->
482
+ ## From a shell
483
+
484
+ 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.
485
+
486
+ | In this skill | Command |
487
+ |---|---|
488
+ | `summer_add_node` | `summer engine add-node` |
489
+ | `summer_create_scene` | `summer engine create-scene` |
490
+ | `summer_get_debugger_errors` | `summer engine get-debugger-errors` |
491
+ | `summer_get_script_errors` | `summer engine get-script-errors` |
492
+ | `summer_inspect_node` | `summer engine inspect-node` |
493
+ | `summer_inspect_resource` | `summer engine inspect-resource` |
494
+ | `summer_play` | `summer engine play` |
495
+ | `summer_read_file` | `summer engine read-file` |
496
+ | `summer_run_script` | `summer engine run-script` |
497
+ | `summer_save_scene` | `summer engine save-scene` |
498
+ | `summer_screenshot` | `summer engine screenshot` |
499
+ | `summer_set_prop` | `summer engine set-prop` |
500
+ | `summer_set_resource_property` | `summer engine set-resource-property` |
501
+ | `summer_snapshot_diff` | `summer engine snapshot-diff` |
502
+ | `summer_stop` | `summer engine stop` |
503
+ | `summer_world_snapshot` | `summer engine world-snapshot` |
504
+ | `summer_write_file` | `summer engine write-file` |
505
+ <!-- /shell-commands -->
@@ -1,7 +1,7 @@
1
1
  id: skill/vfx-fire
2
2
  kind: skill
3
3
  version: 1.0.3
4
- summary: Fire effect — animated flames built with a particle shader, GPUParticles3D, and a noise-based color ramp — torches, campfires, candles.
4
+ summary: "Fire effect: animated flames from GPUParticles3D, a particle shader and a noise color ramp."
5
5
  use_when:
6
6
  - authoring a fire visual effect — torch, campfire, bonfire, flame, burning object, candle
7
7
  - adding fire to props, hazards, or projectiles — torches, braziers, burning wreckage, a fireball or flame jet
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: vfx-hit-spark
3
- description: "Hit-spark effect — a one-shot burst of additive billboard particles oriented to a surface normal, fired on impact."
3
+ description: "Hit-spark effect: a one-shot burst of additive particles oriented to the surface, fired on impact."
4
4
  license: MIT
5
5
  compatibility: [Cursor, Claude Code, Windsurf, Codex]
6
6
  category: visual-effects
@@ -371,3 +371,26 @@ After firing this recipe, suggest:
371
371
  - `vfx-lightning` — caller; spawns sparks at bolt endpoints
372
372
  - `vfx-water-ripple` — surface companion for water impacts
373
373
  - `game-feel` — shake/hit-stop pairings
374
+
375
+ <!-- shell-commands: generated from the operation catalog by npm run generate:registry; do not edit by hand -->
376
+ ## From a shell
377
+
378
+ 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.
379
+
380
+ | In this skill | Command |
381
+ |---|---|
382
+ | `summer_add_node` | `summer engine add-node` |
383
+ | `summer_create_scene` | `summer engine create-scene` |
384
+ | `summer_get_debugger_errors` | `summer engine get-debugger-errors` |
385
+ | `summer_get_script_errors` | `summer engine get-script-errors` |
386
+ | `summer_inspect_node` | `summer engine inspect-node` |
387
+ | `summer_play` | `summer engine play` |
388
+ | `summer_read_file` | `summer engine read-file` |
389
+ | `summer_replace_node` | `summer engine replace-node` |
390
+ | `summer_run_script` | `summer engine run-script` |
391
+ | `summer_save_scene` | `summer engine save-scene` |
392
+ | `summer_set_prop` | `summer engine set-prop` |
393
+ | `summer_set_resource_property` | `summer engine set-resource-property` |
394
+ | `summer_stop` | `summer engine stop` |
395
+ | `summer_write_file` | `summer engine write-file` |
396
+ <!-- /shell-commands -->
@@ -1,7 +1,7 @@
1
1
  id: skill/vfx-hit-spark
2
2
  kind: skill
3
3
  version: 1.0.2
4
- summary: Hit-spark effect — a one-shot burst of additive billboard particles oriented to a surface normal, fired on impact.
4
+ summary: "Hit-spark effect: a one-shot burst of additive particles oriented to the surface, fired on impact."
5
5
  use_when:
6
6
  - authoring a hit-spark effect — impact spark, bullet hit, sword clash, ricochet, sparks at a hit point
7
7
  - melee hits, bullet impacts, or ricochets have no visual feedback at the contact point