summer-engine 3.7.0 → 4.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (501) hide show
  1. package/.claude-plugin/marketplace.json +2 -13
  2. package/.claude-plugin/plugin.json +25 -22
  3. package/.codex-plugin/plugin.json +8 -14
  4. package/.cursor-plugin/plugin.json +7 -13
  5. package/.factory-plugin/plugin.json +7 -13
  6. package/AGENTS.md +19 -12
  7. package/CHANGELOG.md +112 -0
  8. package/GEMINI.md +3 -3
  9. package/README.md +111 -31
  10. package/assets/icon.png +0 -0
  11. package/commands/start.md +71 -0
  12. package/commands/summer.md +5 -3
  13. package/dist/cli/banner.js +3 -0
  14. package/dist/cli/commands/login.d.ts +27 -0
  15. package/dist/cli/commands/login.js +58 -12
  16. package/dist/cli/commands/ops.d.ts +47 -0
  17. package/dist/cli/commands/ops.js +301 -0
  18. package/dist/cli/commands/setup.d.ts +2 -0
  19. package/dist/cli/commands/setup.js +37 -12
  20. package/dist/cli/commands/skills.js +11 -7
  21. package/dist/cli/index.js +7 -0
  22. package/dist/core/agent-host.d.ts +65 -0
  23. package/dist/core/agent-host.js +193 -0
  24. package/dist/core/capabilities/agent-playbook.d.ts +3 -0
  25. package/dist/core/capabilities/agent-playbook.js +54 -2
  26. package/dist/core/capabilities/apps.d.ts +341 -0
  27. package/dist/core/capabilities/apps.js +353 -0
  28. package/dist/core/capabilities/doctor.d.ts +3 -0
  29. package/dist/core/capabilities/doctor.js +20 -15
  30. package/dist/core/capabilities/enable-plugin.d.ts +27 -0
  31. package/dist/core/capabilities/enable-plugin.js +75 -0
  32. package/dist/core/capabilities/fabricate-mesh.d.ts +2 -2
  33. package/dist/core/capabilities/game-task-plan.d.ts +12 -6
  34. package/dist/core/capabilities/game-task-plan.js +80 -5
  35. package/dist/core/capabilities/motion-generation.js +2 -2
  36. package/dist/core/capabilities/navigation/open.d.ts +6 -2
  37. package/dist/core/capabilities/navigation/open.js +3 -0
  38. package/dist/core/capabilities/publish-build.js +2 -0
  39. package/dist/core/capabilities/runtime-control.d.ts +4 -4
  40. package/dist/core/capabilities/scene-script-target.d.ts +17 -0
  41. package/dist/core/capabilities/scene-script-target.js +70 -0
  42. package/dist/core/capabilities/sfx-choices.d.ts +4 -0
  43. package/dist/core/capabilities/sfx-choices.js +13 -6
  44. package/dist/core/capabilities/tool-dispatch.d.ts +12 -3
  45. package/dist/core/capabilities/tool-dispatch.js +130 -46
  46. package/dist/core/capability-skew.js +4 -0
  47. package/dist/core/embeddings.d.ts +2 -0
  48. package/dist/core/embeddings.js +1 -1
  49. package/dist/core/error-codes.d.ts +62 -0
  50. package/dist/core/error-codes.js +97 -0
  51. package/dist/core/format.d.ts +2 -0
  52. package/dist/core/format.js +2 -1
  53. package/dist/core/hosted-mcp.d.ts +22 -0
  54. package/dist/core/hosted-mcp.js +56 -1
  55. package/dist/core/library-read.js +5 -0
  56. package/dist/core/library-search.js +2 -1
  57. package/dist/core/oauth.js +4 -0
  58. package/dist/core/ops/catalog.d.ts +41 -0
  59. package/dist/core/ops/catalog.js +145 -0
  60. package/dist/core/ops/cloud.d.ts +56 -0
  61. package/dist/core/ops/cloud.js +175 -0
  62. package/dist/core/ops/contract.d.ts +119 -0
  63. package/dist/core/ops/contract.js +142 -0
  64. package/dist/core/ops/engine-answer.d.ts +25 -0
  65. package/dist/core/ops/engine-answer.js +117 -0
  66. package/dist/core/ops/engine.d.ts +55 -0
  67. package/dist/core/ops/engine.js +649 -0
  68. package/dist/core/ops/save-files.d.ts +78 -0
  69. package/dist/core/ops/save-files.js +419 -0
  70. package/dist/core/ops/search.d.ts +9 -0
  71. package/dist/core/ops/search.js +55 -0
  72. package/dist/core/skills-registry.d.ts +16 -1
  73. package/dist/core/skills-registry.js +35 -2
  74. package/dist/core/telemetry.d.ts +32 -0
  75. package/dist/core/telemetry.js +38 -10
  76. package/dist/core/tool-profiles.d.ts +25 -0
  77. package/dist/core/tool-profiles.js +41 -0
  78. package/dist/installer/agent-config.d.ts +17 -4
  79. package/dist/installer/agent-config.js +22 -6
  80. package/dist/installer/agent-table.d.ts +3 -0
  81. package/dist/installer/agent-table.js +10 -7
  82. package/dist/installer/setup.d.ts +2 -0
  83. package/dist/installer/setup.js +9 -4
  84. package/dist/installer/version-check.d.ts +29 -9
  85. package/dist/installer/version-check.js +81 -28
  86. package/dist/mcp/command.js +7 -0
  87. package/dist/mcp/hosted-mount.d.ts +27 -2
  88. package/dist/mcp/hosted-mount.js +66 -24
  89. package/dist/mcp/legacy-toolset.d.ts +27 -0
  90. package/dist/mcp/legacy-toolset.js +43 -0
  91. package/dist/mcp/ops-surface.d.ts +59 -0
  92. package/dist/mcp/ops-surface.js +443 -0
  93. package/dist/mcp/server.d.ts +35 -11
  94. package/dist/mcp/server.js +236 -89
  95. package/dist/mcp/tool-results.d.ts +26 -0
  96. package/dist/mcp/tool-results.js +81 -0
  97. package/dist/mcp/tool-surface.d.ts +65 -0
  98. package/dist/mcp/tool-surface.js +317 -0
  99. package/dist/mcp/tools/app-tools.d.ts +2 -0
  100. package/dist/mcp/tools/app-tools.js +71 -0
  101. package/dist/mcp/tools/asset-tools.js +55 -53
  102. package/dist/mcp/tools/audit-tools.js +21 -21
  103. package/dist/mcp/tools/debug-tools.js +6 -6
  104. package/dist/mcp/tools/fabricate-tools.js +6 -6
  105. package/dist/mcp/tools/generate-tools.js +76 -70
  106. package/dist/mcp/tools/project-tools.d.ts +9 -4
  107. package/dist/mcp/tools/project-tools.js +16 -10
  108. package/dist/mcp/tools/scene-tools.js +12 -23
  109. package/dist/mcp/tools/script-tools.js +9 -5
  110. package/dist/mcp/tools/with-engine.d.ts +6 -0
  111. package/dist/mcp/tools/with-engine.js +19 -0
  112. package/gemini-extension.json +6 -12
  113. package/hooks/pre-commit-doctor.sh +5 -4
  114. package/hooks/session-start.sh +24 -28
  115. package/integrations/claude-desktop/README.md +1 -1
  116. package/integrations/copilot-jetbrains/README.md +1 -1
  117. package/integrations/junie/README.md +1 -1
  118. package/integrations/lm-studio/README.md +1 -1
  119. package/integrations/trae/README.md +1 -1
  120. package/integrations/visual-studio/README.md +1 -1
  121. package/library/references/mcp-tools-reference/mcp-tools-reference.md +85 -35
  122. package/library/references/mcp-tools-reference/resource.yaml +1 -1
  123. package/library/references/product-map/resource.yaml +2 -2
  124. package/library/skills/3d-lighting/SKILL.md +53 -28
  125. package/library/skills/3d-lighting/resource.yaml +1 -1
  126. package/library/skills/README.md +126 -116
  127. package/library/skills/adaptive-music/SKILL.md +19 -23
  128. package/library/skills/adaptive-music/resource.yaml +1 -1
  129. package/library/skills/agent-playtesting/SKILL.md +1 -1
  130. package/library/skills/agent-playtesting/resource.yaml +1 -1
  131. package/library/skills/ai-characters-in-games/SKILL.md +1 -1
  132. package/library/skills/ai-characters-in-games/resource.yaml +1 -1
  133. package/library/skills/ambient-bed/SKILL.md +22 -13
  134. package/library/skills/ambient-bed/resource.yaml +1 -1
  135. package/library/skills/animated-loop/SKILL.md +41 -32
  136. package/library/skills/animated-loop/resource.yaml +1 -1
  137. package/library/skills/animation-tree/SKILL.md +1 -1
  138. package/library/skills/animation-tree/resource.yaml +1 -1
  139. package/library/skills/art-direction/SKILL.md +3 -3
  140. package/library/skills/art-direction/resource.yaml +1 -1
  141. package/library/skills/asset-strategy/SKILL.md +21 -4
  142. package/library/skills/asset-strategy/resource.yaml +2 -1
  143. package/library/skills/audio-direction/SKILL.md +10 -10
  144. package/library/skills/audio-direction/resource.yaml +1 -1
  145. package/library/skills/auto-fire-targeting/SKILL.md +1 -1
  146. package/library/skills/auto-fire-targeting/resource.yaml +1 -1
  147. package/library/skills/bounded-engine-runs/SKILL.md +1 -1
  148. package/library/skills/bounded-engine-runs/resource.yaml +1 -1
  149. package/library/skills/brainstorm-game/SKILL.md +1 -1
  150. package/library/skills/brainstorm-game/resource.yaml +1 -1
  151. package/library/skills/brainstorming/SKILL.md +1 -1
  152. package/library/skills/brainstorming/resource.yaml +1 -1
  153. package/library/skills/browse-templates/SKILL.md +1 -1
  154. package/library/skills/browse-templates/resource.yaml +1 -1
  155. package/library/skills/camera-rigs/SKILL.md +2 -2
  156. package/library/skills/camera-rigs/resource.yaml +1 -1
  157. package/library/skills/celeste-momentum-platforming/resource.yaml +1 -0
  158. package/library/skills/character-animation-wiring/SKILL.md +4 -4
  159. package/library/skills/character-animation-wiring/resource.yaml +1 -1
  160. package/library/skills/character-model/SKILL.md +55 -47
  161. package/library/skills/character-model/resource.yaml +1 -1
  162. package/library/skills/character-movement/SKILL.md +3 -3
  163. package/library/skills/character-movement/resource.yaml +1 -1
  164. package/library/skills/character-portrait/SKILL.md +24 -19
  165. package/library/skills/character-portrait/resource.yaml +1 -1
  166. package/library/skills/cinematic-cutscene/SKILL.md +58 -46
  167. package/library/skills/cinematic-cutscene/resource.yaml +1 -1
  168. package/library/skills/combat-basics/SKILL.md +1 -1
  169. package/library/skills/combat-basics/resource.yaml +1 -1
  170. package/library/skills/compatibility-renderer-traps/SKILL.md +1 -1
  171. package/library/skills/compatibility-renderer-traps/resource.yaml +1 -1
  172. package/library/skills/concept-art/SKILL.md +16 -12
  173. package/library/skills/concept-art/resource.yaml +1 -1
  174. package/library/skills/concept-to-level/SKILL.md +239 -0
  175. package/library/skills/concept-to-level/references/technical-rules.md +150 -0
  176. package/library/skills/concept-to-level/resource.yaml +44 -0
  177. package/library/skills/create-asset-sheet/SKILL.md +19 -13
  178. package/library/skills/create-asset-sheet/resource.yaml +1 -1
  179. package/library/skills/debug/SKILL.md +2 -2
  180. package/library/skills/debug/resource.yaml +1 -1
  181. package/library/skills/debugging-game-feel/SKILL.md +1 -1
  182. package/library/skills/debugging-game-feel/resource.yaml +1 -1
  183. package/library/skills/design-level/SKILL.md +23 -35
  184. package/library/skills/design-level/resource.yaml +1 -1
  185. package/library/skills/design-mechanic/SKILL.md +1 -1
  186. package/library/skills/design-mechanic/resource.yaml +1 -1
  187. package/library/skills/design-npc/SKILL.md +22 -24
  188. package/library/skills/design-npc/resource.yaml +1 -1
  189. package/library/skills/diagnosing-perf-regressions/SKILL.md +1 -1
  190. package/library/skills/diagnosing-perf-regressions/resource.yaml +1 -1
  191. package/library/skills/driving-the-editor-ui/SKILL.md +1 -1
  192. package/library/skills/driving-the-editor-ui/resource.yaml +1 -1
  193. package/library/skills/environment-kit/SKILL.md +20 -16
  194. package/library/skills/environment-kit/resource.yaml +1 -1
  195. package/library/skills/export-and-ship/SKILL.md +6 -6
  196. package/library/skills/export-and-ship/resource.yaml +1 -1
  197. package/library/skills/fabricating-assets/SKILL.md +7 -7
  198. package/library/skills/fabricating-assets/resource.yaml +3 -3
  199. package/library/skills/facial-and-lipsync/SKILL.md +14 -15
  200. package/library/skills/facial-and-lipsync/resource.yaml +1 -1
  201. package/library/skills/fps-controller/SKILL.md +33 -41
  202. package/library/skills/fps-controller/resource.yaml +1 -1
  203. package/library/skills/game-feel/SKILL.md +8 -8
  204. package/library/skills/game-feel/resource.yaml +1 -1
  205. package/library/skills/gameskill/SKILL.md +4 -4
  206. package/library/skills/gameskill/resource.yaml +1 -1
  207. package/library/skills/gdscript-patterns/SKILL.md +1 -1
  208. package/library/skills/gdscript-patterns/resource.yaml +1 -1
  209. package/library/skills/generate-motion/SKILL.md +30 -21
  210. package/library/skills/generate-motion/resource.yaml +1 -1
  211. package/library/skills/godogen-visual-proof-game-generation/SKILL.md +1 -1
  212. package/library/skills/godogen-visual-proof-game-generation/resource.yaml +1 -0
  213. package/library/skills/grow-analytics/SKILL.md +3 -3
  214. package/library/skills/grow-analytics/resource.yaml +1 -1
  215. package/library/skills/headless-scripting/SKILL.md +1 -1
  216. package/library/skills/headless-scripting/resource.yaml +1 -1
  217. package/library/skills/in-game-purchases/SKILL.md +1 -1
  218. package/library/skills/in-game-purchases/resource.yaml +1 -1
  219. package/library/skills/instantiate-asset-pack/SKILL.md +2 -2
  220. package/library/skills/instantiate-asset-pack/resource.yaml +1 -1
  221. package/library/skills/lumera-single-image-scene-reconstruction/resource.yaml +1 -0
  222. package/library/skills/make-game/SKILL.md +4 -4
  223. package/library/skills/make-game/references/2d-platformer.md +1 -1
  224. package/library/skills/make-game/references/3d-fps.md +1 -1
  225. package/library/skills/make-game/references/3d-horror.md +1 -1
  226. package/library/skills/make-game/references/3d-third-person.md +2 -2
  227. package/library/skills/make-game/resource.yaml +1 -1
  228. package/library/skills/multiplayer/SKILL.md +1 -1
  229. package/library/skills/multiplayer/resource.yaml +1 -1
  230. package/library/skills/multiplayer-movement/SKILL.md +1 -1
  231. package/library/skills/multiplayer-movement/resource.yaml +1 -1
  232. package/library/skills/multiplayer-project/SKILL.md +1 -1
  233. package/library/skills/multiplayer-project/resource.yaml +1 -1
  234. package/library/skills/multiplayer-publish/SKILL.md +8 -7
  235. package/library/skills/multiplayer-publish/resource.yaml +3 -3
  236. package/library/skills/multiplayer-state/SKILL.md +1 -1
  237. package/library/skills/multiplayer-state/resource.yaml +1 -1
  238. package/library/skills/multiplayer-testing/SKILL.md +1 -1
  239. package/library/skills/multiplayer-testing/resource.yaml +1 -1
  240. package/library/skills/music-track/SKILL.md +22 -13
  241. package/library/skills/music-track/resource.yaml +1 -1
  242. package/library/skills/navigate-summer/SKILL.md +11 -9
  243. package/library/skills/navigate-summer/resource.yaml +1 -1
  244. package/library/skills/new-project/SKILL.md +1 -1
  245. package/library/skills/new-project/resource.yaml +1 -1
  246. package/library/skills/organic-model/SKILL.md +24 -18
  247. package/library/skills/organic-model/resource.yaml +1 -1
  248. package/library/skills/pixel-art/SKILL.md +27 -23
  249. package/library/skills/pixel-art/resource.yaml +1 -1
  250. package/library/skills/play/SKILL.md +1 -1
  251. package/library/skills/play/resource.yaml +1 -1
  252. package/library/skills/playtesting-a-feature/SKILL.md +1 -1
  253. package/library/skills/playtesting-a-feature/resource.yaml +1 -1
  254. package/library/skills/procedural-animation/SKILL.md +20 -16
  255. package/library/skills/procedural-animation/resource.yaml +1 -1
  256. package/library/skills/prop-model/SKILL.md +25 -19
  257. package/library/skills/prop-model/resource.yaml +1 -1
  258. package/library/skills/psx-retro-rendering/resource.yaml +1 -0
  259. package/library/skills/publish-your-game/SKILL.md +16 -6
  260. package/library/skills/publish-your-game/resource.yaml +3 -3
  261. package/library/skills/realtime-wet-surfaces/resource.yaml +1 -0
  262. package/library/skills/release-readiness/SKILL.md +1 -1
  263. package/library/skills/release-readiness/resource.yaml +1 -1
  264. package/library/skills/remote-deploy/SKILL.md +1 -1
  265. package/library/skills/remote-deploy/resource.yaml +1 -1
  266. package/library/skills/retarget/SKILL.md +23 -20
  267. package/library/skills/retarget/resource.yaml +1 -1
  268. package/library/skills/running-in-the-cloud/SKILL.md +1 -1
  269. package/library/skills/running-in-the-cloud/resource.yaml +1 -1
  270. package/library/skills/save-load/SKILL.md +1 -1
  271. package/library/skills/save-load/resource.yaml +1 -1
  272. package/library/skills/scene-composition/SKILL.md +1 -1
  273. package/library/skills/scene-composition/resource.yaml +1 -1
  274. package/library/skills/scene-hierarchy-design/SKILL.md +2 -2
  275. package/library/skills/scene-hierarchy-design/resource.yaml +1 -1
  276. package/library/skills/scene-scripting/SKILL.md +66 -636
  277. package/library/skills/scene-scripting/references/ctx-api.md +184 -0
  278. package/library/skills/scene-scripting/references/recipes-2d-ui.md +193 -0
  279. package/library/skills/scene-scripting/references/recipes-3d.md +280 -0
  280. package/library/skills/scene-scripting/resource.yaml +4 -4
  281. package/library/skills/scene-to-level/SKILL.md +2 -2
  282. package/library/skills/scene-to-level/resource.yaml +1 -1
  283. package/library/skills/skill-create/resource.yaml +1 -0
  284. package/library/skills/skill-improve/resource.yaml +1 -0
  285. package/library/skills/skill-test/SKILL.md +2 -2
  286. package/library/skills/skill-test/resource.yaml +1 -0
  287. package/library/skills/skintokens-auto-rigging/resource.yaml +1 -0
  288. package/library/skills/skybox-panorama/SKILL.md +27 -21
  289. package/library/skills/skybox-panorama/resource.yaml +1 -1
  290. package/library/skills/sound-effect/SKILL.md +31 -20
  291. package/library/skills/sound-effect/resource.yaml +1 -1
  292. package/library/skills/spatial-placement/SKILL.md +14 -9
  293. package/library/skills/spatial-placement/resource.yaml +1 -1
  294. package/library/skills/sprite-sheet/SKILL.md +32 -27
  295. package/library/skills/sprite-sheet/resource.yaml +1 -1
  296. package/library/skills/store-art/SKILL.md +3 -3
  297. package/library/skills/store-art/resource.yaml +2 -2
  298. package/library/skills/store-listing/SKILL.md +3 -3
  299. package/library/skills/store-listing/resource.yaml +2 -2
  300. package/library/skills/summer-analytics/SKILL.md +7 -5
  301. package/library/skills/summer-analytics/resource.yaml +2 -2
  302. package/library/skills/summer-apps/SKILL.md +168 -0
  303. package/library/skills/summer-apps/manifest.md +57 -0
  304. package/library/skills/summer-apps/minimal-app.md +183 -0
  305. package/library/skills/summer-apps/resource.yaml +36 -0
  306. package/library/skills/summer-apps/sdk-reference.md +135 -0
  307. package/library/skills/summer-apps-design/SKILL.md +197 -0
  308. package/library/skills/summer-apps-design/resource.yaml +23 -0
  309. package/library/skills/summer-assets/SKILL.md +56 -0
  310. package/library/skills/summer-assets/resource.yaml +34 -0
  311. package/library/skills/summer-store/SKILL.md +1 -1
  312. package/library/skills/text-to-motion/SKILL.md +30 -23
  313. package/library/skills/text-to-motion/prompts-and-controls.md +5 -5
  314. package/library/skills/text-to-motion/resource.yaml +1 -1
  315. package/library/skills/text-to-motion/rigging-for-text-motion.md +2 -2
  316. package/library/skills/tileable-texture/SKILL.md +19 -15
  317. package/library/skills/tileable-texture/resource.yaml +1 -1
  318. package/library/skills/trailer-shot/SKILL.md +28 -24
  319. package/library/skills/trailer-shot/resource.yaml +1 -1
  320. package/library/skills/tune-performance/SKILL.md +6 -6
  321. package/library/skills/tune-performance/resource.yaml +1 -1
  322. package/library/skills/ui-basics/SKILL.md +41 -36
  323. package/library/skills/ui-basics/resource.yaml +1 -1
  324. package/library/skills/ui-graphics/SKILL.md +47 -38
  325. package/library/skills/ui-graphics/resource.yaml +1 -1
  326. package/library/skills/use-widget-asset/SKILL.md +1 -1
  327. package/library/skills/use-widget-asset/resource.yaml +1 -1
  328. package/library/skills/using-summer/SKILL.md +7 -5
  329. package/library/skills/using-summer/resource.yaml +1 -1
  330. package/library/skills/vehicle-model/SKILL.md +65 -57
  331. package/library/skills/vehicle-model/resource.yaml +1 -1
  332. package/library/skills/verification-before-completion/SKILL.md +1 -1
  333. package/library/skills/verification-before-completion/resource.yaml +1 -1
  334. package/library/skills/verifying-scenes/SKILL.md +2 -2
  335. package/library/skills/verifying-scenes/resource.yaml +1 -1
  336. package/library/skills/vfx-dissolve/SKILL.md +2 -2
  337. package/library/skills/vfx-dissolve/resource.yaml +1 -1
  338. package/library/skills/vfx-fire/SKILL.md +15 -41
  339. package/library/skills/vfx-fire/resource.yaml +1 -1
  340. package/library/skills/vfx-hit-spark/SKILL.md +1 -1
  341. package/library/skills/vfx-hit-spark/resource.yaml +1 -1
  342. package/library/skills/vfx-lightning/SKILL.md +7 -16
  343. package/library/skills/vfx-lightning/resource.yaml +1 -1
  344. package/library/skills/vfx-magic-glow/SKILL.md +23 -32
  345. package/library/skills/vfx-magic-glow/resource.yaml +1 -1
  346. package/library/skills/vfx-muzzle-flash/SKILL.md +20 -35
  347. package/library/skills/vfx-muzzle-flash/resource.yaml +1 -1
  348. package/library/skills/vfx-smoke/SKILL.md +13 -31
  349. package/library/skills/vfx-smoke/resource.yaml +1 -1
  350. package/library/skills/vfx-water-ripple/SKILL.md +12 -31
  351. package/library/skills/vfx-water-ripple/resource.yaml +1 -1
  352. package/library/skills/voice-line/SKILL.md +71 -40
  353. package/library/skills/voice-line/resource.yaml +1 -1
  354. package/library/skills/web-and-touch-input/SKILL.md +1 -1
  355. package/library/skills/web-and-touch-input/resource.yaml +1 -1
  356. package/library/skills/web-compatibility-look/SKILL.md +1 -1
  357. package/library/skills/web-compatibility-look/resource.yaml +1 -1
  358. package/library/skills/world-building-3d/SKILL.md +1 -1
  359. package/library/skills/world-building-3d/resource.yaml +1 -1
  360. package/library/skills/writing-skills/resource.yaml +1 -0
  361. package/library/tools/add-node/GUIDE.md +14 -0
  362. package/library/tools/align-distribute-3d/GUIDE.md +7 -0
  363. package/library/tools/app-call/resource.yaml +59 -0
  364. package/library/tools/app-create/resource.yaml +67 -0
  365. package/library/tools/app-data/resource.yaml +74 -0
  366. package/library/tools/app-dock/resource.yaml +59 -0
  367. package/library/tools/app-events/resource.yaml +68 -0
  368. package/library/tools/app-get/resource.yaml +46 -0
  369. package/library/tools/app-guide/resource.yaml +55 -0
  370. package/library/tools/app-list/resource.yaml +48 -0
  371. package/library/tools/app-page/resource.yaml +74 -0
  372. package/library/tools/app-publish/resource.yaml +90 -0
  373. package/library/tools/app-report-gap/resource.yaml +58 -0
  374. package/library/tools/app-screenshot/resource.yaml +103 -0
  375. package/library/tools/app-tools/resource.yaml +46 -0
  376. package/library/tools/app-update/resource.yaml +68 -0
  377. package/library/tools/attach-to-surface/GUIDE.md +15 -0
  378. package/library/tools/batch/GUIDE.md +27 -0
  379. package/library/tools/camera-bookmark/GUIDE.md +12 -0
  380. package/library/tools/capture-gameplay/GUIDE.md +3 -0
  381. package/library/tools/capture-gameplay/resource.yaml +3 -3
  382. package/library/tools/check-job/resource.yaml +1 -1
  383. package/library/tools/clear-console/GUIDE.md +3 -0
  384. package/library/tools/connect-ports/GUIDE.md +9 -0
  385. package/library/tools/connect-signal/GUIDE.md +14 -0
  386. package/library/tools/create-debug-report/GUIDE.md +10 -0
  387. package/library/tools/create-scene/GUIDE.md +10 -0
  388. package/library/tools/debug-views/GUIDE.md +7 -0
  389. package/library/tools/enable-plugin/GUIDE.md +3 -0
  390. package/library/tools/enable-plugin/resource.yaml +53 -0
  391. package/library/tools/export-game/GUIDE.md +3 -0
  392. package/library/tools/export-game/resource.yaml +3 -3
  393. package/library/tools/export-templates/GUIDE.md +3 -0
  394. package/library/tools/fabricate-3d/GUIDE.md +19 -0
  395. package/library/tools/frame-nodes/GUIDE.md +9 -0
  396. package/library/tools/frame-shot/GUIDE.md +9 -0
  397. package/library/tools/game-control/GUIDE.md +9 -0
  398. package/library/tools/game-input/GUIDE.md +9 -0
  399. package/library/tools/game-probe/GUIDE.md +9 -0
  400. package/library/tools/generate-3d/resource.yaml +3 -3
  401. package/library/tools/generate-motion/resource.yaml +2 -2
  402. package/library/tools/get-console/GUIDE.md +9 -0
  403. package/library/tools/get-console/resource.yaml +5 -0
  404. package/library/tools/get-debugger-errors/GUIDE.md +7 -0
  405. package/library/tools/get-debugger-errors/resource.yaml +5 -0
  406. package/library/tools/get-debugger-warnings/GUIDE.md +7 -0
  407. package/library/tools/get-debugger-warnings/resource.yaml +5 -0
  408. package/library/tools/get-diagnostics/GUIDE.md +13 -0
  409. package/library/tools/get-project-context/GUIDE.md +25 -0
  410. package/library/tools/get-runtime-tree/GUIDE.md +7 -0
  411. package/library/tools/get-runtime-tree/resource.yaml +5 -0
  412. package/library/tools/get-scene-tree/GUIDE.md +11 -0
  413. package/library/tools/get-scene-tree/resource.yaml +5 -0
  414. package/library/tools/get-script-errors/GUIDE.md +5 -0
  415. package/library/tools/grep/GUIDE.md +11 -0
  416. package/library/tools/import-asset/GUIDE.md +8 -0
  417. package/library/tools/import-asset-by-id/GUIDE.md +12 -0
  418. package/library/tools/import-from-url/GUIDE.md +10 -0
  419. package/library/tools/import-from-url-batch/GUIDE.md +3 -0
  420. package/library/tools/import-hdri/GUIDE.md +16 -0
  421. package/library/tools/input-map-bind/GUIDE.md +11 -0
  422. package/library/tools/inspect-asset/GUIDE.md +14 -0
  423. package/library/tools/inspect-asset/resource.yaml +5 -0
  424. package/library/tools/inspect-node/GUIDE.md +11 -0
  425. package/library/tools/inspect-node/resource.yaml +5 -0
  426. package/library/tools/inspect-resource/GUIDE.md +7 -0
  427. package/library/tools/inspect-resource/resource.yaml +5 -0
  428. package/library/tools/inspect-runtime-node/GUIDE.md +7 -0
  429. package/library/tools/inspect-runtime-node/resource.yaml +5 -0
  430. package/library/tools/instantiate-scene/GUIDE.md +12 -0
  431. package/library/tools/is-running/GUIDE.md +3 -0
  432. package/library/tools/measure/GUIDE.md +8 -0
  433. package/library/tools/navigation-probe/GUIDE.md +9 -0
  434. package/library/tools/open/resource.yaml +2 -2
  435. package/library/tools/open-main-scene/GUIDE.md +6 -0
  436. package/library/tools/open-scene/GUIDE.md +8 -0
  437. package/library/tools/place-adjacent/GUIDE.md +7 -0
  438. package/library/tools/play/GUIDE.md +13 -0
  439. package/library/tools/project-setting/GUIDE.md +9 -0
  440. package/library/tools/publish-build/resource.yaml +6 -6
  441. package/library/tools/raycast/GUIDE.md +7 -0
  442. package/library/tools/read-file/GUIDE.md +10 -0
  443. package/library/tools/read-library/resource.yaml +5 -0
  444. package/library/tools/recent-events/GUIDE.md +7 -0
  445. package/library/tools/remove-node/GUIDE.md +3 -0
  446. package/library/tools/repeat-along/GUIDE.md +5 -0
  447. package/library/tools/replace-node/GUIDE.md +9 -0
  448. package/library/tools/replace-text/GUIDE.md +5 -0
  449. package/library/tools/run-editor-script/GUIDE.md +16 -0
  450. package/library/tools/run-script/GUIDE.md +30 -0
  451. package/library/tools/run-script/resource.yaml +6 -3
  452. package/library/tools/runtime-animate/GUIDE.md +7 -0
  453. package/library/tools/runtime-call/GUIDE.md +7 -0
  454. package/library/tools/runtime-set/GUIDE.md +9 -0
  455. package/library/tools/runtime-spawn/GUIDE.md +9 -0
  456. package/library/tools/save-scene/GUIDE.md +3 -0
  457. package/library/tools/scene-audit/GUIDE.md +29 -0
  458. package/library/tools/screenshot/GUIDE.md +17 -0
  459. package/library/tools/select-node/GUIDE.md +3 -0
  460. package/library/tools/set-prop/GUIDE.md +23 -0
  461. package/library/tools/set-resource-property/GUIDE.md +8 -0
  462. package/library/tools/shot-sheet/GUIDE.md +7 -0
  463. package/library/tools/snap-to-surface/GUIDE.md +17 -0
  464. package/library/tools/snapshot-diff/GUIDE.md +7 -0
  465. package/library/tools/starcast/GUIDE.md +12 -0
  466. package/library/tools/stop/GUIDE.md +3 -0
  467. package/library/tools/test-placement/GUIDE.md +7 -0
  468. package/library/tools/ui-actions/GUIDE.md +12 -0
  469. package/library/tools/ui-activate/GUIDE.md +11 -0
  470. package/library/tools/ui-screenshot/GUIDE.md +9 -0
  471. package/library/tools/ui-tree/GUIDE.md +10 -0
  472. package/library/tools/wait-for-event/GUIDE.md +11 -0
  473. package/library/tools/world-snapshot/GUIDE.md +9 -0
  474. package/library/tools/write-file/GUIDE.md +5 -0
  475. package/library/tools/zoom/GUIDE.md +5 -0
  476. package/package.json +6 -4
  477. package/registry/generated/aliases.json +15 -0
  478. package/registry/generated/counts.json +3 -3
  479. package/registry/generated/gemini-extension.json +6 -12
  480. package/registry/generated/index.json +1155 -408
  481. package/registry/generated/marketplace.claude.json +2 -13
  482. package/registry/generated/plugin.claude.json +25 -22
  483. package/registry/generated/plugin.codex.json +8 -14
  484. package/registry/generated/plugin.cursor.json +7 -13
  485. package/registry/generated/plugin.factory.json +7 -13
  486. package/registry/generated/server.json +34 -0
  487. package/registry/generated/skills-index.md +126 -116
  488. package/registry/generated/skills-registry.json +178 -113
  489. package/registry/operations/fixtures/invalid-deprecated-without-replacement.json +60 -0
  490. package/registry/operations/fixtures/invalid-name.json +60 -0
  491. package/registry/operations/fixtures/invalid-publish-without-owner.json +82 -0
  492. package/registry/operations/fixtures/invalid-spend-without-estimate.json +42 -0
  493. package/registry/operations/fixtures/invalid-unknown-field.json +61 -0
  494. package/registry/operations/fixtures/valid-player-facing.json +82 -0
  495. package/registry/operations/fixtures/valid-read.json +60 -0
  496. package/registry/operations/fixtures/valid-spend.json +43 -0
  497. package/registry/operations/legacy-names.json +1206 -0
  498. package/registry/schemas/allowed-hosts.json +4 -2
  499. package/registry/schemas/operation.schema.json +318 -0
  500. package/registry/schemas/skill.schema.json +4 -0
  501. package/CLAUDE.md +0 -7
@@ -1,11 +1,11 @@
1
1
  ---
2
2
  name: voice-line
3
- description: "Generate TTS voice lines — NPC barks, narrator, dialogue — with voice-id sourcing, a character-to-voice decision tree, and multi-line dialogue support."
3
+ description: "Generate voice lines (NPC barks, narrator, dialogue) with a character-to-voice choice and multi-line support."
4
4
  license: MIT
5
5
  compatibility: [Cursor, Claude Code, Windsurf, Codex]
6
6
  category: audio
7
7
  user-invocable: true
8
- allowed-tools: Read Grep Glob Write Edit summer_generate_audio summer_search_assets summer_import_from_url summer_add_node summer_set_prop summer_inspect_node
8
+ allowed-tools: Read Grep Glob Write Edit summer_assets_generate_audio summer_assets_search summer_import_from_url summer_add_node summer_set_prop summer_inspect_node summer_call
9
9
  paths: [".summer/**", "audio/voice/**", "scripts/**", "**/*.tscn"]
10
10
  ---
11
11
 
@@ -13,7 +13,7 @@ paths: [".summer/**", "audio/voice/**", "scripts/**", "**/*.tscn"]
13
13
 
14
14
  ## Overview
15
15
 
16
- The hardest part of TTS isn't the line — it's picking the right voice. ElevenLabs ships hundreds; pick wrong and a tough warlord NPC sounds like a podcast host. **There is no MCP tool that lists voices** — the only voice-related input Summer exposes is the `voiceId` string on `summer_generate_audio`. So the voice pick has to come from the user (or from the project's cast bible), and this skill's job is to get that pick made deliberately and then locked.
16
+ The hardest part of TTS isn't the line — it's picking the right voice; pick wrong and a tough warlord NPC sounds like a podcast host. On the ElevenLabs models **only Summer's game cast may speak**: the `voiceId` of `assets.generate_audio` must be one of the cast voices below, and any other id is refused (`voice_not_allowed`). The fal speech models (`minimax-speech-2.8-hd`, `gemini-3.8-flash-tts`, ...) speak with their own prebuilt voices instead. So the pick comes from the cast (or the project's cast bible), and this skill's job is to make that pick deliberately and then lock it.
17
17
 
18
18
  Then it generates one line (or a multi-turn dialogue) with the right stability / style / similarity / speed for the delivery — flat for narration, expressive for a bark, fast for an excited shout.
19
19
 
@@ -48,17 +48,39 @@ If a character bible exists, the voice should match the character's age / gender
48
48
 
49
49
  Check the cast bible first (step 1). If the character already has a locked id, use it and skip to step 5.
50
50
 
51
- If not, you need a `voiceId` from the user. There is no catalog tool and no preview-URL endpoint on this surface — do not invent one, and do not claim you auditioned anything. Ask:
51
+ If not, pick from Summer's game cast with the user. There is no preview-URL endpoint on this surface — do not claim you auditioned anything; the person listens to the generated line. The cast (name, role, id):
52
52
 
53
- > I need an ElevenLabs voice id for `<character>`. Two ways to get one:
54
- > - Browse and audition at `elevenlabs.io/app/voice-library` (or your Voices page) and paste me the voice id.
55
- > - Or say "use the default" and I'll generate with Summer's default voice so you can hear the line, then we swap the id later.
56
- >
57
- > Describe the target if it helps me sanity-check the pick: gender, rough age, accent, and energy (calm / measured / excited / gruff).
53
+ | Voice | Role | Id |
54
+ |---|---|---|
55
+ | George | Storyteller, warm | `JBFqnCBsd6RMkjVDRZzb` |
56
+ | Charlie | Hero, deep, energetic | `IKne3meq5aSn9XLyUdCD` |
57
+ | Jessica | Heroine, playful | `cgSgspJ2msm6clMCkdW9` |
58
+ | Harry | Warrior, fierce | `SOYHLrjzK2X1ezoPC6cr` |
59
+ | Callum | Trickster, husky | `N2lVS1w4EtoT3dr4eOWO` |
60
+ | Brian | Narrator, deep | `nPczCjzI2devNBz1zQrb` |
61
+ | Bill | Elder, wise | `pqHfZKP75CvOlQylNhV4` |
62
+ | Sarah | Mentor, reassuring | `EXAVITQu4vr4xnSDxMaL` |
63
+ | Adam | Villain, firm | `pNInz6obpgDQGcFmaJgB` |
64
+ | Roger | Captain, laid back | `CwhRBWXzGAHq8TQ4Fs17` |
65
+ | Lily | Actress, velvety | `pFZP5JQG7iQjIQuC4Bku` |
66
+ | Liam | Streamer, energetic | `TX3LPaxmHKxFdv7VOQHJ` |
67
+ | Matilda | Guide, knowledgeable | `XrExE9yKIg1WjnnlVkGX` |
68
+ | Daniel | Broadcaster, steady | `onwK4e9ZLuTAKqWW03F9` |
69
+ | River | Courier, relaxed | `SAz9YHcvj6GT2YYXdXww` |
70
+ | Bella | Healer, bright | `hpp4J3VqNfWAUOO0d1Us` |
71
+ | Laura | Sidekick, quirky | `FGY2WhTYpPnrIDTdsKH5` |
72
+ | Alice | Oracle, clear | `Xb7hH8MSUJpSbSDYk0k2` |
73
+ | Eric | Merchant, smooth | `cjVigY5qzO86Huf0OWal` |
74
+ | Chris | Companion, charming | `iP95p4xoKVk53GoZ742B` |
75
+ | Will | Adventurer, optimistic | `bIHbv24MWmeRgasZH58o` |
76
+
77
+ Ask:
58
78
 
59
- Omitting `voiceId` entirely is valid — `summer_generate_audio` falls back to a single default voice (`JBFqnCBsd6RMkjVDRZzb`). That is fine for a throwaway read-through, never for a shipped cast.
79
+ > For `<character>` I suggest `<voice>` (<role>). OK, or another cast voice?
60
80
 
61
- Voice is the highest-stakes audio decision in the project. Do not pick an id for the user and do not guess ids — a wrong id is a hard provider error, not a different-sounding voice.
81
+ Omitting `voiceId` entirely is valid — `assets.generate_audio` falls back to the default voice (George, `JBFqnCBsd6RMkjVDRZzb`). That is fine for a throwaway read-through, never for a shipped cast.
82
+
83
+ Voice is the highest-stakes audio decision in the project. Do not guess ids — an id outside the cast is refused, not a different-sounding voice.
62
84
 
63
85
  ### 3. Character-to-voice decision tree (when the user wants a recommendation)
64
86
 
@@ -81,7 +103,7 @@ If the user says "you pick", lean on this tree:
81
103
 
82
104
  After the pick:
83
105
 
84
- > Locked voice: `Hodge` (id `21m00Tcm4TlvDq8ikWAM`). I'll use this for all `<character>` lines unless you say otherwise.
106
+ > Locked voice: `Roger` (id `CwhRBWXzGAHq8TQ4Fs17`). I'll use this for all `<character>` lines unless you say otherwise.
85
107
 
86
108
  Ask before writing:
87
109
 
@@ -104,8 +126,8 @@ providers:
104
126
 
105
127
  | Character | Voice name | Voice id | Notes |
106
128
  |---|---|---|---|
107
- | Captain Hodge | Hodge | 21m00Tcm4TlvDq8ikWAM | Calm, weathered, low-mid |
108
- | Bram the Smith | Brogan | <id> | Gruff Scottish, mid energy |
129
+ | Captain Hodge | Roger | CwhRBWXzGAHq8TQ4Fs17 | Calm, weathered, low-mid |
130
+ | Bram the Smith | Harry | SOYHLrjzK2X1ezoPC6cr | Gruff, mid energy |
109
131
  ```
110
132
 
111
133
  This is the cast bible. Every future voice line uses these ids — consistency is the point.
@@ -114,7 +136,7 @@ If legacy `.summer/voice-cast.md` already exists, read it first and either keep
114
136
 
115
137
  ### 5. Tune stability / similarity / style / speed for delivery
116
138
 
117
- These are **not** top-level tool arguments. They go inside `options.voiceSettings`, in camelCase, exactly as the ElevenLabs SDK's `VoiceSettings` type spells them — `stability`, `similarityBoost`, `style`, `speed`, `useSpeakerBoost`. `options` is spread straight into the SDK call, so a flat `similarity_boost` at the top of `options` is silently dropped.
139
+ These go in the `voiceSettings` object of `assets.generate_audio`, in camelCase — `stability`, `similarityBoost`, `style`, `speed`, `useSpeakerBoost`. A snake_case key such as `similarity_boost` is not one of its fields and does nothing.
118
140
 
119
141
  | Param | Range | Effect |
120
142
  |---|---|---|
@@ -163,18 +185,18 @@ Example lines:
163
185
  ### 7. Confirm and call
164
186
 
165
187
  ```
166
- summer_generate_audio(
167
- capability="text_to_speech",
168
- text="Hold the line. They're coming through the south gate. Ready arrows.",
169
- voiceId="21m00Tcm4TlvDq8ikWAM",
170
- modelId="eleven_multilingual_v2",
171
- options={ voiceSettings: { stability: 0.6, similarityBoost: 0.75, style: 0.2, speed: 1.0 } }
172
- )
188
+ assets.generate_audio({
189
+ capability: "text_to_speech",
190
+ text: "Hold the line. They're coming through the south gate. Ready arrows.",
191
+ voiceId: "CwhRBWXzGAHq8TQ4Fs17",
192
+ modelId: "eleven_multilingual_v2",
193
+ voiceSettings: { stability: 0.6, similarityBoost: 0.75, style: 0.2, speed: 1.0 }
194
+ })
173
195
  ```
174
196
 
175
- `modelId` defaults to `eleven_multilingual_v2`. For very short / latency-sensitive in-game barks, `eleven_turbo_v2_5` is faster; for highest fidelity, `eleven_multilingual_v2` is the default.
197
+ `modelId` defaults to `eleven_multilingual_v2`. For very short / latency-sensitive in-game barks, `eleven_flash_v2_5` is faster; for highest fidelity, `eleven_multilingual_v2` is the default. A line spends the person's credits; `dryRun: true` returns its `estimate` first.
176
198
 
177
- There is no `outputPath` — the tool returns a hosted asset (MP3, `audio/mpeg`). Land it in the project explicitly:
199
+ There is no `outputPath` — the answer is a hosted asset, `asset` (`assetId`, `fileUrl`, `durationSeconds`; MP3, `audio/mpeg`). Land it in the project explicitly:
178
200
 
179
201
  ```
180
202
  summer_import_from_url(url="<fileUrl>", path="res://audio/voice/hodge_hold_the_line.mp3")
@@ -182,33 +204,38 @@ summer_import_from_url(url="<fileUrl>", path="res://audio/voice/hodge_hold_the_l
182
204
 
183
205
  ### 8. Multi-line dialogue (two or more speakers)
184
206
 
185
- Use `summer_generate_audio` with `capability: "text_to_dialogue"`:
207
+ Use `assets.generate_audio` with `capability: "text_to_dialogue"`:
186
208
 
187
209
  There is no `speakers` roster and no `script` array. The whole conversation is one flat `inputs` array of `{ text, voiceId }` objects, in turn order — the voice id is repeated on every line:
188
210
 
189
211
  ```
190
- summer_generate_audio(
191
- capability="text_to_dialogue",
192
- inputs=[
193
- { text: "They're at the gate.", voiceId: "21m00Tcm4TlvDq8ikWAM" },
194
- { text: "Aye. Let 'em come.", voiceId: "<brogan-id>" },
195
- { text: "Steady. On my mark.", voiceId: "21m00Tcm4TlvDq8ikWAM" }
212
+ assets.generate_audio({
213
+ capability: "text_to_dialogue",
214
+ inputs: [
215
+ { text: "They're at the gate.", voiceId: "CwhRBWXzGAHq8TQ4Fs17" },
216
+ { text: "Aye. Let 'em come.", voiceId: "SOYHLrjzK2X1ezoPC6cr" },
217
+ { text: "Steady. On my mark.", voiceId: "CwhRBWXzGAHq8TQ4Fs17" }
196
218
  ]
197
- )
219
+ })
198
220
  ```
199
221
 
200
- `inputs` is required for this capability; omitting it is a 400 `inputs_required`. `modelId` defaults to `eleven_v3` here, not `eleven_multilingual_v2`. The result is a single MP3 with both voices and dialogue-aware pacing the model handles internally — import it with `summer_import_from_url` like any other clip. For very long scripts, split into chunks of ~6 turns and concatenate.
222
+ `inputs` is required for this capability; omitting it is refused as invalid input (`inputs_required`). `modelId` defaults to `eleven_v3` here, not `eleven_multilingual_v2`. The result is a single MP3 with both voices and dialogue-aware pacing the model handles internally — import it with `summer_import_from_url` like any other clip. For very long scripts, split into chunks of ~6 turns and concatenate.
201
223
 
202
224
  ### 9. Wire the line as `AudioStreamPlayer` on the Voice bus
203
225
 
204
- Every scene-mutating tool takes an explicit `scenePath`, node paths are relative to the scene root (`./`), and the property argument is named `key`, not `property`:
226
+ One script adds the player with its settings; `scenePath` is the exact scene to change:
205
227
 
206
228
  ```
207
- summer_add_node(scenePath="res://main.tscn", parent="./NPC", type="AudioStreamPlayer", name="VoiceLine")
208
- summer_set_prop(scenePath="res://main.tscn", path="./NPC/VoiceLine", key="stream", value="res://audio/voice/hodge_hold_the_line.mp3")
209
- summer_set_prop(scenePath="res://main.tscn", path="./NPC/VoiceLine", key="bus", value="Voice")
210
- summer_set_prop(scenePath="res://main.tscn", path="./NPC/VoiceLine", key="volume_db", value=0.0)
211
- summer_set_prop(scenePath="res://main.tscn", path="./NPC/VoiceLine", key="autoplay", value=false)
229
+ summer_run_script(scenePath="res://main.tscn", source="""
230
+ func run(ctx):
231
+ ctx.add_node("AudioStreamPlayer", "VoiceLine", ctx.find("NPC"), {
232
+ "stream": load("res://audio/voice/hodge_hold_the_line.mp3"),
233
+ "bus": "Voice",
234
+ "volume_db": 0.0,
235
+ "autoplay": false,
236
+ })
237
+ ctx.save_scene()
238
+ """)
212
239
  ```
213
240
 
214
241
  For positional NPCs, `AudioStreamPlayer3D` with `max_distance=15.0` so distant NPCs aren't audible.
@@ -238,7 +265,7 @@ Narrator intimate: warmer mid pitch, lower stability for breath
238
265
 
239
266
  ## Anti-patterns
240
267
 
241
- - **Inventing a voice catalog.** There is no `summer_list_models`, no voice-listing tool, and no preview URLs on this surface. Ask the user for the id.
268
+ - **Inventing voices.** On the ElevenLabs models only the cast in step 2 may speak, and there are no preview URLs on this surface. Pick from the cast with the user.
242
269
  - **Guessing a voice id.** A wrong id is a provider error, not a different voice.
243
270
  - **Reusing a voice id across two characters.** Players notice instantly. Lock the cast.
244
271
  - **Changing a locked voice without approval.** A cast voice is project memory, not a throwaway generation option.
@@ -257,6 +284,10 @@ Narrator intimate: warmer mid pitch, lower stability for breath
257
284
  - **User wants the line shorter on regen.** Edit the text first; don't try to compress with `speed` past 1.15 (artifacts).
258
285
  - **NPC bark variants.** Generate 3–5 variants of the same intent (`"They're at the gate!"`, `"Enemy approaching!"`, `"Look out!"`) and pick at random in code so the bark doesn't repeat.
259
286
 
287
+ ## Without Summer Engine
288
+
289
+ In a session without Summer Engine tools (the assets profile; the `summer-assets` skill has the whole loop), do steps 1-8 and skip step 9 (`AudioStreamPlayer`). Step 10 still applies when the project has a `.summer/` folder; otherwise give the person the voice id with the files. Save the file where the person asked with `out` (the `summer-assets` skill says how), and tell them the path and format.
290
+
260
291
  ## Fallback (no MCP)
261
292
 
262
293
  Print the call (text, voice id, params, target path). User runs via the Summer dashboard, then `summer_import_from_url` the result.
@@ -1,7 +1,7 @@
1
1
  id: skill/voice-line
2
2
  kind: skill
3
3
  version: 1.0.2
4
- summary: Generate TTS voice lines — NPC barks, narrator, dialogue — with voice-id sourcing, a character-to-voice decision tree, and multi-line dialogue support.
4
+ summary: "Generate voice lines (NPC barks, narrator, dialogue) with a character-to-voice choice and multi-line support."
5
5
  use_when:
6
6
  - '"the NPC needs a greeting / a bark / a narrator intro read aloud"'
7
7
  - giving a character a voice that fits their personality (gruff, cheerful, robotic)
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: web-and-touch-input
3
- description: "Input for the browser and phones: the first-click rule for sound and mouse capture, focus, and touch buttons or a virtual stick on the same actions."
3
+ description: "Browser and phone input: the first-click rule for sound and mouse capture, focus, touch buttons, a stick."
4
4
  license: MIT
5
5
  compatibility: [Cursor, Claude Code, Codex, Windsurf, Gemini, OpenCode]
6
6
  category: scene-and-project
@@ -1,7 +1,7 @@
1
1
  id: skill/web-and-touch-input
2
2
  kind: skill
3
3
  version: 1.0.0
4
- summary: "Input for the browser and phones: the first-click rule for sound and mouse capture, focus, and touch buttons or a virtual stick on the same actions."
4
+ summary: "Browser and phone input: the first-click rule for sound and mouse capture, focus, touch buttons, a stick."
5
5
  use_when:
6
6
  - the game plays in the browser and sound, mouse capture or keys do not work until something is clicked
7
7
  - the game should be playable on a phone or tablet with touch controls
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: web-compatibility-look
3
- description: "Make a web or browser game look high-end in the Compatibility renderer (WebGL 2): what works, what to avoid, 2D and 3D recipes, web performance."
3
+ description: "Make a browser game look high-end in the Compatibility renderer (WebGL 2): what works, recipes, speed."
4
4
  license: MIT
5
5
  compatibility: [Cursor, Claude Code, Codex, Windsurf, Gemini, OpenCode]
6
6
  category: rendering-and-lighting
@@ -1,7 +1,7 @@
1
1
  id: skill/web-compatibility-look
2
2
  kind: skill
3
3
  version: 1.0.0
4
- summary: "Make a web or browser game look high-end in the Compatibility renderer (WebGL 2): what works, what to avoid, 2D and 3D recipes, web performance."
4
+ summary: "Make a browser game look high-end in the Compatibility renderer (WebGL 2): what works, recipes, speed."
5
5
  use_when:
6
6
  - the game plays in the browser or is exported for the web and must look finished
7
7
  - the look is flat, grey or default in the web preview, or a Forward+ feature does nothing there
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: world-building-3d
3
- description: "Compose, ground, space, and validate 3D scenes with Summer's four bounded spatial tools — exact paths, one geometric decision at a time, verified."
3
+ description: "Compose, ground and space 3D scenes with Summer's four spatial tools, one geometric decision at a time."
4
4
  license: MIT
5
5
  compatibility: [Cursor, Claude Code, Windsurf, Codex]
6
6
  category: scene-and-project
@@ -1,7 +1,7 @@
1
1
  id: skill/world-building-3d
2
2
  kind: skill
3
3
  version: 1.1.1
4
- summary: Compose, ground, space, and validate 3D scenes with Summer's four bounded spatial tools — exact paths, one geometric decision at a time, verified.
4
+ summary: "Compose, ground and space 3D scenes with Summer's four spatial tools, one geometric decision at a time."
5
5
  use_when:
6
6
  - placing or grounding props on floors, shelves, ramps, or tables without hand-tuning transforms
7
7
  - aligning or evenly spacing a group of 3D objects along one world axis
@@ -22,6 +22,7 @@ source: official
22
22
  license: MIT
23
23
  status: stable
24
24
  recommended: false
25
+ bundled: false
25
26
  aliases:
26
27
  - skills/workflow/writing-skills
27
28
  lint_exceptions:
@@ -0,0 +1,14 @@
1
+ # summer_add_node
2
+
3
+ Add a new node to the scene tree.
4
+
5
+ Pass the exact res:// scenePath to mutate. The scene does not need to be the
6
+ active editor tab.
7
+
8
+ Common node types:
9
+ - 3D: Node3D, MeshInstance3D, CharacterBody3D, RigidBody3D, StaticBody3D, Camera3D, DirectionalLight3D, OmniLight3D, SpotLight3D, WorldEnvironment, CollisionShape3D, Area3D
10
+ - 2D: Node2D, Sprite2D, CharacterBody2D, RigidBody2D, StaticBody2D, Camera2D, CollisionShape2D, Area2D, TileMapLayer
11
+ - UI: Control, Label, Button, TextEdit, Panel, VBoxContainer, HBoxContainer, MarginContainer
12
+ - Audio: AudioStreamPlayer, AudioStreamPlayer3D
13
+
14
+ The parent path uses "./" prefix for relative paths from scene root. E.g., "./World" means the "World" child of the root node.
@@ -0,0 +1,7 @@
1
+ # summer_align_distribute_3d
2
+
3
+ Align or equal-space an explicit ordered list of 3D subjects along one world-space axis, then save the exact target scene.
4
+
5
+ Every anchor and extent comes from visible descendant GeometryInstance3D world AABBs (evidence: visual_aabb). The tool never uses editor selection and fails instead of fabricating bounds. It preserves each subject's authored basis and scale, translates only along the normalized axis, and records all changed transforms in one undoable editor operation.
6
+
7
+ Alignment modes use the first ordered subject's minimum, center, or maximum projected anchor. Distribution modes keep the first and last subjects fixed and honor caller order. distribute_gaps accounts for each subject's projected half-extent and fails if the endpoint span cannot fit non-overlapping equal gaps. The compact result returns ordered before/after origins, resolved spacing, and numeric residuals under 5 KB. On an engine build that predates AlignDistribute3D the result is a structured engine_lacks_op failure naming the fallback.
@@ -0,0 +1,59 @@
1
+ id: tool/app-call
2
+ kind: tool
3
+ version: 1.0.0
4
+ summary: Run one of a Summer App's agent tools inside the person's open app.
5
+ use_when:
6
+ - '"nerf the bow using the balance formula in our app"'
7
+ - using logic that lives in an app (a balance formula, an export) while the app is open
8
+ do_not_use_when:
9
+ - "plain reads and edits of app data: apps.read_data, apps.write_data"
10
+ facets:
11
+ lifecycle:
12
+ - build
13
+ domains:
14
+ - tools
15
+ - ui
16
+ compatibility:
17
+ engine: ">=4.6"
18
+ related:
19
+ skills:
20
+ - skill/summer-apps
21
+ source: official
22
+ license: MIT
23
+ status: preview
24
+ aliases:
25
+ - summer_app_call
26
+ implementation:
27
+ module: src/mcp/tools/app-tools.ts
28
+ export: registerAppTools
29
+ surfaces:
30
+ mcp:
31
+ tool_name: summer_app_call
32
+ remote: true
33
+ input_schema:
34
+ type: object
35
+ properties:
36
+ appId:
37
+ type: string
38
+ format: uuid
39
+ description: The app id from summer_app_create or summer_app_list
40
+ tool:
41
+ type: string
42
+ minLength: 1
43
+ maxLength: 64
44
+ description: The agent tool name from summer_app_tools
45
+ input:
46
+ type: object
47
+ additionalProperties: {}
48
+ default: {}
49
+ description: Input matching the tool's input schema
50
+ required:
51
+ - appId
52
+ - tool
53
+ additionalProperties: false
54
+ authority:
55
+ filesystem: false
56
+ editor_mutation: false
57
+ network: true
58
+ credentials: false
59
+ publish: false
@@ -0,0 +1,67 @@
1
+ id: tool/app-create
2
+ kind: tool
3
+ version: 1.0.0
4
+ summary: Create a new scratch Summer App (a tool for the person's team inside Summer Studio) and open it in their Studio tab.
5
+ use_when:
6
+ - '"build me a tool for…" / "make an app that…"'
7
+ - the person needs a UI to decide or edit something they will come back to
8
+ do_not_use_when:
9
+ - "a one-off answer: reply in chat"
10
+ facets:
11
+ lifecycle:
12
+ - build
13
+ domains:
14
+ - tools
15
+ - ui
16
+ compatibility:
17
+ engine: ">=4.6"
18
+ related:
19
+ skills:
20
+ - skill/summer-apps
21
+ source: official
22
+ license: MIT
23
+ status: preview
24
+ aliases:
25
+ - summer_app_create
26
+ implementation:
27
+ module: src/mcp/tools/app-tools.ts
28
+ export: registerAppTools
29
+ surfaces:
30
+ mcp:
31
+ tool_name: summer_app_create
32
+ remote: true
33
+ input_schema:
34
+ type: object
35
+ properties:
36
+ name:
37
+ type: string
38
+ minLength: 1
39
+ maxLength: 80
40
+ purpose:
41
+ type: string
42
+ maxLength: 280
43
+ description: "One line: what the tool does and where its data goes"
44
+ format:
45
+ type: string
46
+ enum:
47
+ - code
48
+ - layout
49
+ default: code
50
+ description: "code: index.html + JS/CSS (default). layout: a JSON layout of kit nodes, for quick decision UIs"
51
+ workspaceId:
52
+ type: string
53
+ format: uuid
54
+ description: "A workspace id. Default: the person's team (the one their Studio tab is on, else their latest team, else personal); the result's workspace says which"
55
+ folder:
56
+ type: string
57
+ minLength: 1
58
+ maxLength: 80
59
+ required:
60
+ - name
61
+ additionalProperties: false
62
+ authority:
63
+ filesystem: false
64
+ editor_mutation: false
65
+ network: true
66
+ credentials: false
67
+ publish: false
@@ -0,0 +1,74 @@
1
+ id: tool/app-data
2
+ kind: tool
3
+ version: 1.0.0
4
+ summary: Read or write a Summer App's shared data collections; works with no app open and the team sees writes live.
5
+ use_when:
6
+ - '"nerf the bow in our balance sheet"'
7
+ - seeding an app with data
8
+ - reading what the team entered in an app
9
+ facets:
10
+ lifecycle:
11
+ - build
12
+ domains:
13
+ - tools
14
+ - ui
15
+ compatibility:
16
+ engine: ">=4.6"
17
+ related:
18
+ skills:
19
+ - skill/summer-apps
20
+ source: official
21
+ license: MIT
22
+ status: preview
23
+ aliases:
24
+ - summer_app_data
25
+ implementation:
26
+ module: src/mcp/tools/app-tools.ts
27
+ export: registerAppTools
28
+ surfaces:
29
+ mcp:
30
+ tool_name: summer_app_data
31
+ remote: true
32
+ input_schema:
33
+ type: object
34
+ properties:
35
+ appId:
36
+ type: string
37
+ format: uuid
38
+ description: The app id from summer_app_create or summer_app_list
39
+ collection:
40
+ type: string
41
+ maxLength: 48
42
+ description: "Read: one collection. Default: all"
43
+ after:
44
+ type: string
45
+ maxLength: 200
46
+ description: "Read: the next cursor from the previous page"
47
+ limit:
48
+ type: integer
49
+ minimum: 1
50
+ maximum: 500
51
+ default: 200
52
+ ops:
53
+ type: array
54
+ items:
55
+ type: object
56
+ additionalProperties: {}
57
+ minItems: 1
58
+ maxItems: 100
59
+ description: "Write: [{op: put, collection, recordId, data}, {op: patch, collection, recordId, patch}, {op: remove, collection, recordId}]; ifRevision on an op applies it only at that record revision (0: must not exist)"
60
+ as:
61
+ type: string
62
+ enum:
63
+ - agent
64
+ - seed
65
+ description: "Write: seed for starter data that belongs to the team (no author). Default: agent"
66
+ required:
67
+ - appId
68
+ additionalProperties: false
69
+ authority:
70
+ filesystem: false
71
+ editor_mutation: false
72
+ network: true
73
+ credentials: false
74
+ publish: false
@@ -0,0 +1,59 @@
1
+ id: tool/app-dock
2
+ kind: tool
3
+ version: 1.0.0
4
+ summary: Dock a Summer App as a panel in the running Summer Engine editor, close it, or list docked apps.
5
+ use_when:
6
+ - '"put the quest editor next to my scene"'
7
+ - keeping a team tool open while editing
8
+ facets:
9
+ lifecycle:
10
+ - build
11
+ domains:
12
+ - tools
13
+ - ui
14
+ compatibility:
15
+ engine: ">=4.6"
16
+ related:
17
+ skills:
18
+ - skill/summer-apps
19
+ source: official
20
+ license: MIT
21
+ status: preview
22
+ aliases:
23
+ - summer_app_dock
24
+ implementation:
25
+ module: src/mcp/tools/app-tools.ts
26
+ export: registerAppTools
27
+ surfaces:
28
+ mcp:
29
+ tool_name: summer_app_dock
30
+ remote: false
31
+ input_schema:
32
+ type: object
33
+ properties:
34
+ action:
35
+ type: string
36
+ enum:
37
+ - open
38
+ - close
39
+ - list
40
+ default: open
41
+ appId:
42
+ type: string
43
+ format: uuid
44
+ description: "open, close: the app"
45
+ slot:
46
+ type: string
47
+ enum:
48
+ - left
49
+ - right
50
+ - bottom
51
+ default: right
52
+ description: "open: left, right or bottom"
53
+ additionalProperties: false
54
+ authority:
55
+ filesystem: false
56
+ editor_mutation: true
57
+ network: false
58
+ credentials: false
59
+ publish: false
@@ -0,0 +1,68 @@
1
+ id: tool/app-events
2
+ kind: tool
3
+ version: 1.0.0
4
+ summary: "Wait for what a Summer App sends to agents: summer.agent.send events, app errors, feedback and tool calls."
5
+ use_when:
6
+ - waiting for the person to act in an app you built
7
+ - checking an app for errors after publishing
8
+ facets:
9
+ lifecycle:
10
+ - build
11
+ domains:
12
+ - tools
13
+ - ui
14
+ compatibility:
15
+ engine: ">=4.6"
16
+ related:
17
+ skills:
18
+ - skill/summer-apps
19
+ source: official
20
+ license: MIT
21
+ status: preview
22
+ aliases:
23
+ - summer_app_events
24
+ implementation:
25
+ module: src/mcp/tools/app-tools.ts
26
+ export: registerAppTools
27
+ surfaces:
28
+ mcp:
29
+ tool_name: summer_app_events
30
+ remote: true
31
+ input_schema:
32
+ type: object
33
+ properties:
34
+ appId:
35
+ type: string
36
+ format: uuid
37
+ description: The app id from summer_app_create or summer_app_list
38
+ after:
39
+ type: integer
40
+ minimum: 0
41
+ default: 0
42
+ description: "Return events after this cursor (0: from the start). Pass the returned cursor next time"
43
+ timeoutSeconds:
44
+ type: integer
45
+ minimum: 0
46
+ maximum: 50
47
+ default: 25
48
+ description: Wait up to this long (max 50) for the first new event
49
+ kinds:
50
+ type: array
51
+ items:
52
+ type: string
53
+ enum:
54
+ - agent
55
+ - error
56
+ - feedback
57
+ - tool
58
+ maxItems: 4
59
+ description: "Default: agent, error, feedback"
60
+ required:
61
+ - appId
62
+ additionalProperties: false
63
+ authority:
64
+ filesystem: false
65
+ editor_mutation: false
66
+ network: true
67
+ credentials: false
68
+ publish: false