summer-engine 3.8.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 (485) hide show
  1. package/.claude-plugin/marketplace.json +2 -13
  2. package/.claude-plugin/plugin.json +23 -22
  3. package/.codex-plugin/plugin.json +4 -12
  4. package/.cursor-plugin/plugin.json +4 -12
  5. package/.factory-plugin/plugin.json +4 -12
  6. package/AGENTS.md +19 -12
  7. package/CHANGELOG.md +96 -0
  8. package/GEMINI.md +3 -3
  9. package/README.md +103 -33
  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/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 +25 -2
  27. package/dist/core/capabilities/apps.js +25 -12
  28. package/dist/core/capabilities/doctor.d.ts +3 -0
  29. package/dist/core/capabilities/doctor.js +20 -15
  30. package/dist/core/capabilities/fabricate-mesh.d.ts +2 -2
  31. package/dist/core/capabilities/game-task-plan.d.ts +12 -6
  32. package/dist/core/capabilities/game-task-plan.js +80 -5
  33. package/dist/core/capabilities/motion-generation.js +2 -2
  34. package/dist/core/capabilities/navigation/open.d.ts +6 -2
  35. package/dist/core/capabilities/navigation/open.js +3 -0
  36. package/dist/core/capabilities/publish-build.js +2 -0
  37. package/dist/core/capabilities/runtime-control.d.ts +4 -4
  38. package/dist/core/capabilities/scene-script-target.d.ts +17 -0
  39. package/dist/core/capabilities/scene-script-target.js +70 -0
  40. package/dist/core/capabilities/sfx-choices.d.ts +4 -0
  41. package/dist/core/capabilities/sfx-choices.js +13 -6
  42. package/dist/core/capabilities/tool-dispatch.d.ts +12 -3
  43. package/dist/core/capabilities/tool-dispatch.js +81 -46
  44. package/dist/core/embeddings.d.ts +2 -0
  45. package/dist/core/embeddings.js +1 -1
  46. package/dist/core/error-codes.d.ts +62 -0
  47. package/dist/core/error-codes.js +97 -0
  48. package/dist/core/format.d.ts +2 -0
  49. package/dist/core/format.js +2 -1
  50. package/dist/core/hosted-mcp.d.ts +22 -0
  51. package/dist/core/hosted-mcp.js +56 -1
  52. package/dist/core/library-read.js +5 -0
  53. package/dist/core/library-search.js +2 -1
  54. package/dist/core/oauth.js +4 -0
  55. package/dist/core/ops/catalog.d.ts +41 -0
  56. package/dist/core/ops/catalog.js +145 -0
  57. package/dist/core/ops/cloud.d.ts +56 -0
  58. package/dist/core/ops/cloud.js +175 -0
  59. package/dist/core/ops/contract.d.ts +119 -0
  60. package/dist/core/ops/contract.js +142 -0
  61. package/dist/core/ops/engine-answer.d.ts +25 -0
  62. package/dist/core/ops/engine-answer.js +117 -0
  63. package/dist/core/ops/engine.d.ts +55 -0
  64. package/dist/core/ops/engine.js +649 -0
  65. package/dist/core/ops/save-files.d.ts +78 -0
  66. package/dist/core/ops/save-files.js +419 -0
  67. package/dist/core/ops/search.d.ts +9 -0
  68. package/dist/core/ops/search.js +55 -0
  69. package/dist/core/skills-registry.d.ts +16 -1
  70. package/dist/core/skills-registry.js +35 -2
  71. package/dist/core/telemetry.d.ts +32 -0
  72. package/dist/core/telemetry.js +38 -10
  73. package/dist/core/tool-profiles.d.ts +25 -0
  74. package/dist/core/tool-profiles.js +41 -0
  75. package/dist/installer/agent-config.d.ts +17 -4
  76. package/dist/installer/agent-config.js +22 -6
  77. package/dist/installer/agent-table.d.ts +3 -0
  78. package/dist/installer/agent-table.js +10 -7
  79. package/dist/installer/setup.d.ts +2 -0
  80. package/dist/installer/setup.js +9 -4
  81. package/dist/installer/version-check.d.ts +29 -9
  82. package/dist/installer/version-check.js +81 -28
  83. package/dist/mcp/command.js +7 -0
  84. package/dist/mcp/hosted-mount.d.ts +27 -2
  85. package/dist/mcp/hosted-mount.js +53 -23
  86. package/dist/mcp/legacy-toolset.d.ts +27 -0
  87. package/dist/mcp/legacy-toolset.js +43 -0
  88. package/dist/mcp/ops-surface.d.ts +59 -0
  89. package/dist/mcp/ops-surface.js +443 -0
  90. package/dist/mcp/server.d.ts +35 -11
  91. package/dist/mcp/server.js +234 -89
  92. package/dist/mcp/tool-results.d.ts +26 -0
  93. package/dist/mcp/tool-results.js +81 -0
  94. package/dist/mcp/tool-surface.d.ts +65 -0
  95. package/dist/mcp/tool-surface.js +317 -0
  96. package/dist/mcp/tools/app-tools.js +9 -2
  97. package/dist/mcp/tools/asset-tools.js +55 -53
  98. package/dist/mcp/tools/audit-tools.js +21 -21
  99. package/dist/mcp/tools/debug-tools.js +6 -6
  100. package/dist/mcp/tools/fabricate-tools.js +6 -6
  101. package/dist/mcp/tools/generate-tools.js +76 -70
  102. package/dist/mcp/tools/project-tools.d.ts +9 -4
  103. package/dist/mcp/tools/project-tools.js +16 -10
  104. package/dist/mcp/tools/scene-tools.js +12 -23
  105. package/dist/mcp/tools/script-tools.js +9 -5
  106. package/dist/mcp/tools/with-engine.d.ts +6 -0
  107. package/dist/mcp/tools/with-engine.js +19 -0
  108. package/gemini-extension.json +4 -12
  109. package/hooks/pre-commit-doctor.sh +5 -4
  110. package/hooks/session-start.sh +24 -28
  111. package/integrations/claude-desktop/README.md +1 -1
  112. package/integrations/copilot-jetbrains/README.md +1 -1
  113. package/integrations/junie/README.md +1 -1
  114. package/integrations/lm-studio/README.md +1 -1
  115. package/integrations/trae/README.md +1 -1
  116. package/integrations/visual-studio/README.md +1 -1
  117. package/library/references/mcp-tools-reference/mcp-tools-reference.md +79 -51
  118. package/library/references/mcp-tools-reference/resource.yaml +1 -1
  119. package/library/references/product-map/resource.yaml +2 -2
  120. package/library/skills/3d-lighting/SKILL.md +53 -28
  121. package/library/skills/3d-lighting/resource.yaml +1 -1
  122. package/library/skills/README.md +119 -117
  123. package/library/skills/adaptive-music/SKILL.md +19 -23
  124. package/library/skills/adaptive-music/resource.yaml +1 -1
  125. package/library/skills/agent-playtesting/SKILL.md +1 -1
  126. package/library/skills/agent-playtesting/resource.yaml +1 -1
  127. package/library/skills/ai-characters-in-games/SKILL.md +1 -1
  128. package/library/skills/ai-characters-in-games/resource.yaml +1 -1
  129. package/library/skills/ambient-bed/SKILL.md +22 -13
  130. package/library/skills/ambient-bed/resource.yaml +1 -1
  131. package/library/skills/animated-loop/SKILL.md +41 -32
  132. package/library/skills/animated-loop/resource.yaml +1 -1
  133. package/library/skills/animation-tree/SKILL.md +1 -1
  134. package/library/skills/animation-tree/resource.yaml +1 -1
  135. package/library/skills/art-direction/SKILL.md +3 -3
  136. package/library/skills/art-direction/resource.yaml +1 -1
  137. package/library/skills/asset-strategy/SKILL.md +21 -4
  138. package/library/skills/asset-strategy/resource.yaml +2 -1
  139. package/library/skills/audio-direction/SKILL.md +10 -10
  140. package/library/skills/audio-direction/resource.yaml +1 -1
  141. package/library/skills/auto-fire-targeting/SKILL.md +1 -1
  142. package/library/skills/auto-fire-targeting/resource.yaml +1 -1
  143. package/library/skills/bounded-engine-runs/SKILL.md +1 -1
  144. package/library/skills/bounded-engine-runs/resource.yaml +1 -1
  145. package/library/skills/brainstorm-game/SKILL.md +1 -1
  146. package/library/skills/brainstorm-game/resource.yaml +1 -1
  147. package/library/skills/brainstorming/SKILL.md +1 -1
  148. package/library/skills/brainstorming/resource.yaml +1 -1
  149. package/library/skills/browse-templates/SKILL.md +1 -1
  150. package/library/skills/browse-templates/resource.yaml +1 -1
  151. package/library/skills/camera-rigs/SKILL.md +2 -2
  152. package/library/skills/camera-rigs/resource.yaml +1 -1
  153. package/library/skills/celeste-momentum-platforming/resource.yaml +1 -0
  154. package/library/skills/character-animation-wiring/SKILL.md +4 -4
  155. package/library/skills/character-animation-wiring/resource.yaml +1 -1
  156. package/library/skills/character-model/SKILL.md +55 -47
  157. package/library/skills/character-model/resource.yaml +1 -1
  158. package/library/skills/character-movement/SKILL.md +3 -3
  159. package/library/skills/character-movement/resource.yaml +1 -1
  160. package/library/skills/character-portrait/SKILL.md +24 -19
  161. package/library/skills/character-portrait/resource.yaml +1 -1
  162. package/library/skills/cinematic-cutscene/SKILL.md +58 -46
  163. package/library/skills/cinematic-cutscene/resource.yaml +1 -1
  164. package/library/skills/combat-basics/SKILL.md +1 -1
  165. package/library/skills/combat-basics/resource.yaml +1 -1
  166. package/library/skills/compatibility-renderer-traps/SKILL.md +1 -1
  167. package/library/skills/compatibility-renderer-traps/resource.yaml +1 -1
  168. package/library/skills/concept-art/SKILL.md +16 -12
  169. package/library/skills/concept-art/resource.yaml +1 -1
  170. package/library/skills/concept-to-level/SKILL.md +239 -0
  171. package/library/skills/concept-to-level/references/technical-rules.md +150 -0
  172. package/library/skills/concept-to-level/resource.yaml +44 -0
  173. package/library/skills/create-asset-sheet/SKILL.md +19 -13
  174. package/library/skills/create-asset-sheet/resource.yaml +1 -1
  175. package/library/skills/debug/SKILL.md +2 -2
  176. package/library/skills/debug/resource.yaml +1 -1
  177. package/library/skills/debugging-game-feel/SKILL.md +1 -1
  178. package/library/skills/debugging-game-feel/resource.yaml +1 -1
  179. package/library/skills/design-level/SKILL.md +23 -35
  180. package/library/skills/design-level/resource.yaml +1 -1
  181. package/library/skills/design-mechanic/SKILL.md +1 -1
  182. package/library/skills/design-mechanic/resource.yaml +1 -1
  183. package/library/skills/design-npc/SKILL.md +22 -24
  184. package/library/skills/design-npc/resource.yaml +1 -1
  185. package/library/skills/diagnosing-perf-regressions/SKILL.md +1 -1
  186. package/library/skills/diagnosing-perf-regressions/resource.yaml +1 -1
  187. package/library/skills/driving-the-editor-ui/SKILL.md +1 -1
  188. package/library/skills/driving-the-editor-ui/resource.yaml +1 -1
  189. package/library/skills/environment-kit/SKILL.md +20 -16
  190. package/library/skills/environment-kit/resource.yaml +1 -1
  191. package/library/skills/export-and-ship/SKILL.md +6 -6
  192. package/library/skills/export-and-ship/resource.yaml +1 -1
  193. package/library/skills/fabricating-assets/SKILL.md +7 -7
  194. package/library/skills/fabricating-assets/resource.yaml +3 -3
  195. package/library/skills/facial-and-lipsync/SKILL.md +14 -15
  196. package/library/skills/facial-and-lipsync/resource.yaml +1 -1
  197. package/library/skills/fps-controller/SKILL.md +33 -41
  198. package/library/skills/fps-controller/resource.yaml +1 -1
  199. package/library/skills/game-feel/SKILL.md +8 -8
  200. package/library/skills/game-feel/resource.yaml +1 -1
  201. package/library/skills/gameskill/SKILL.md +4 -4
  202. package/library/skills/gameskill/resource.yaml +1 -1
  203. package/library/skills/gdscript-patterns/SKILL.md +1 -1
  204. package/library/skills/gdscript-patterns/resource.yaml +1 -1
  205. package/library/skills/generate-motion/SKILL.md +30 -21
  206. package/library/skills/generate-motion/resource.yaml +1 -1
  207. package/library/skills/godogen-visual-proof-game-generation/SKILL.md +1 -1
  208. package/library/skills/godogen-visual-proof-game-generation/resource.yaml +1 -0
  209. package/library/skills/grow-analytics/SKILL.md +3 -3
  210. package/library/skills/grow-analytics/resource.yaml +1 -1
  211. package/library/skills/headless-scripting/SKILL.md +1 -1
  212. package/library/skills/headless-scripting/resource.yaml +1 -1
  213. package/library/skills/in-game-purchases/SKILL.md +1 -1
  214. package/library/skills/in-game-purchases/resource.yaml +1 -1
  215. package/library/skills/instantiate-asset-pack/SKILL.md +2 -2
  216. package/library/skills/instantiate-asset-pack/resource.yaml +1 -1
  217. package/library/skills/lumera-single-image-scene-reconstruction/resource.yaml +1 -0
  218. package/library/skills/make-game/SKILL.md +4 -4
  219. package/library/skills/make-game/references/2d-platformer.md +1 -1
  220. package/library/skills/make-game/references/3d-fps.md +1 -1
  221. package/library/skills/make-game/references/3d-horror.md +1 -1
  222. package/library/skills/make-game/references/3d-third-person.md +2 -2
  223. package/library/skills/make-game/resource.yaml +1 -1
  224. package/library/skills/multiplayer/SKILL.md +1 -1
  225. package/library/skills/multiplayer/resource.yaml +1 -1
  226. package/library/skills/multiplayer-movement/SKILL.md +1 -1
  227. package/library/skills/multiplayer-movement/resource.yaml +1 -1
  228. package/library/skills/multiplayer-project/SKILL.md +1 -1
  229. package/library/skills/multiplayer-project/resource.yaml +1 -1
  230. package/library/skills/multiplayer-publish/SKILL.md +8 -7
  231. package/library/skills/multiplayer-publish/resource.yaml +3 -3
  232. package/library/skills/multiplayer-state/SKILL.md +1 -1
  233. package/library/skills/multiplayer-state/resource.yaml +1 -1
  234. package/library/skills/multiplayer-testing/SKILL.md +1 -1
  235. package/library/skills/multiplayer-testing/resource.yaml +1 -1
  236. package/library/skills/music-track/SKILL.md +22 -13
  237. package/library/skills/music-track/resource.yaml +1 -1
  238. package/library/skills/navigate-summer/SKILL.md +11 -9
  239. package/library/skills/navigate-summer/resource.yaml +1 -1
  240. package/library/skills/new-project/SKILL.md +1 -1
  241. package/library/skills/new-project/resource.yaml +1 -1
  242. package/library/skills/organic-model/SKILL.md +24 -18
  243. package/library/skills/organic-model/resource.yaml +1 -1
  244. package/library/skills/pixel-art/SKILL.md +27 -23
  245. package/library/skills/pixel-art/resource.yaml +1 -1
  246. package/library/skills/play/SKILL.md +1 -1
  247. package/library/skills/play/resource.yaml +1 -1
  248. package/library/skills/playtesting-a-feature/SKILL.md +1 -1
  249. package/library/skills/playtesting-a-feature/resource.yaml +1 -1
  250. package/library/skills/procedural-animation/SKILL.md +20 -16
  251. package/library/skills/procedural-animation/resource.yaml +1 -1
  252. package/library/skills/prop-model/SKILL.md +25 -19
  253. package/library/skills/prop-model/resource.yaml +1 -1
  254. package/library/skills/psx-retro-rendering/resource.yaml +1 -0
  255. package/library/skills/publish-your-game/SKILL.md +16 -6
  256. package/library/skills/publish-your-game/resource.yaml +3 -3
  257. package/library/skills/realtime-wet-surfaces/resource.yaml +1 -0
  258. package/library/skills/release-readiness/SKILL.md +1 -1
  259. package/library/skills/release-readiness/resource.yaml +1 -1
  260. package/library/skills/remote-deploy/SKILL.md +1 -1
  261. package/library/skills/remote-deploy/resource.yaml +1 -1
  262. package/library/skills/retarget/SKILL.md +23 -20
  263. package/library/skills/retarget/resource.yaml +1 -1
  264. package/library/skills/running-in-the-cloud/SKILL.md +1 -1
  265. package/library/skills/running-in-the-cloud/resource.yaml +1 -1
  266. package/library/skills/save-load/SKILL.md +1 -1
  267. package/library/skills/save-load/resource.yaml +1 -1
  268. package/library/skills/scene-composition/SKILL.md +1 -1
  269. package/library/skills/scene-composition/resource.yaml +1 -1
  270. package/library/skills/scene-hierarchy-design/SKILL.md +2 -2
  271. package/library/skills/scene-hierarchy-design/resource.yaml +1 -1
  272. package/library/skills/scene-scripting/SKILL.md +66 -636
  273. package/library/skills/scene-scripting/references/ctx-api.md +184 -0
  274. package/library/skills/scene-scripting/references/recipes-2d-ui.md +193 -0
  275. package/library/skills/scene-scripting/references/recipes-3d.md +280 -0
  276. package/library/skills/scene-scripting/resource.yaml +4 -4
  277. package/library/skills/scene-to-level/SKILL.md +2 -2
  278. package/library/skills/scene-to-level/resource.yaml +1 -1
  279. package/library/skills/skill-create/resource.yaml +1 -0
  280. package/library/skills/skill-improve/resource.yaml +1 -0
  281. package/library/skills/skill-test/SKILL.md +2 -2
  282. package/library/skills/skill-test/resource.yaml +1 -0
  283. package/library/skills/skintokens-auto-rigging/resource.yaml +1 -0
  284. package/library/skills/skybox-panorama/SKILL.md +27 -21
  285. package/library/skills/skybox-panorama/resource.yaml +1 -1
  286. package/library/skills/sound-effect/SKILL.md +29 -20
  287. package/library/skills/sound-effect/resource.yaml +1 -1
  288. package/library/skills/spatial-placement/SKILL.md +14 -9
  289. package/library/skills/spatial-placement/resource.yaml +1 -1
  290. package/library/skills/sprite-sheet/SKILL.md +32 -27
  291. package/library/skills/sprite-sheet/resource.yaml +1 -1
  292. package/library/skills/store-art/SKILL.md +3 -3
  293. package/library/skills/store-art/resource.yaml +2 -2
  294. package/library/skills/store-listing/SKILL.md +3 -3
  295. package/library/skills/store-listing/resource.yaml +2 -2
  296. package/library/skills/summer-analytics/SKILL.md +7 -5
  297. package/library/skills/summer-analytics/resource.yaml +2 -2
  298. package/library/skills/summer-apps/SKILL.md +48 -32
  299. package/library/skills/summer-apps/manifest.md +1 -1
  300. package/library/skills/summer-apps/minimal-app.md +7 -7
  301. package/library/skills/summer-apps/resource.yaml +1 -1
  302. package/library/skills/summer-apps/sdk-reference.md +5 -5
  303. package/library/skills/summer-apps-design/SKILL.md +1 -1
  304. package/library/skills/summer-apps-design/resource.yaml +1 -1
  305. package/library/skills/summer-assets/SKILL.md +56 -0
  306. package/library/skills/summer-assets/resource.yaml +34 -0
  307. package/library/skills/summer-store/SKILL.md +1 -1
  308. package/library/skills/text-to-motion/SKILL.md +30 -23
  309. package/library/skills/text-to-motion/prompts-and-controls.md +5 -5
  310. package/library/skills/text-to-motion/resource.yaml +1 -1
  311. package/library/skills/text-to-motion/rigging-for-text-motion.md +2 -2
  312. package/library/skills/tileable-texture/SKILL.md +19 -15
  313. package/library/skills/tileable-texture/resource.yaml +1 -1
  314. package/library/skills/trailer-shot/SKILL.md +28 -24
  315. package/library/skills/trailer-shot/resource.yaml +1 -1
  316. package/library/skills/tune-performance/SKILL.md +6 -6
  317. package/library/skills/tune-performance/resource.yaml +1 -1
  318. package/library/skills/ui-basics/SKILL.md +41 -36
  319. package/library/skills/ui-basics/resource.yaml +1 -1
  320. package/library/skills/ui-graphics/SKILL.md +47 -38
  321. package/library/skills/ui-graphics/resource.yaml +1 -1
  322. package/library/skills/use-widget-asset/SKILL.md +1 -1
  323. package/library/skills/use-widget-asset/resource.yaml +1 -1
  324. package/library/skills/using-summer/SKILL.md +6 -5
  325. package/library/skills/using-summer/resource.yaml +1 -1
  326. package/library/skills/vehicle-model/SKILL.md +65 -57
  327. package/library/skills/vehicle-model/resource.yaml +1 -1
  328. package/library/skills/verification-before-completion/SKILL.md +1 -1
  329. package/library/skills/verification-before-completion/resource.yaml +1 -1
  330. package/library/skills/verifying-scenes/SKILL.md +2 -2
  331. package/library/skills/verifying-scenes/resource.yaml +1 -1
  332. package/library/skills/vfx-dissolve/SKILL.md +2 -2
  333. package/library/skills/vfx-dissolve/resource.yaml +1 -1
  334. package/library/skills/vfx-fire/SKILL.md +15 -41
  335. package/library/skills/vfx-fire/resource.yaml +1 -1
  336. package/library/skills/vfx-hit-spark/SKILL.md +1 -1
  337. package/library/skills/vfx-hit-spark/resource.yaml +1 -1
  338. package/library/skills/vfx-lightning/SKILL.md +7 -16
  339. package/library/skills/vfx-lightning/resource.yaml +1 -1
  340. package/library/skills/vfx-magic-glow/SKILL.md +23 -32
  341. package/library/skills/vfx-magic-glow/resource.yaml +1 -1
  342. package/library/skills/vfx-muzzle-flash/SKILL.md +20 -35
  343. package/library/skills/vfx-muzzle-flash/resource.yaml +1 -1
  344. package/library/skills/vfx-smoke/SKILL.md +13 -31
  345. package/library/skills/vfx-smoke/resource.yaml +1 -1
  346. package/library/skills/vfx-water-ripple/SKILL.md +12 -31
  347. package/library/skills/vfx-water-ripple/resource.yaml +1 -1
  348. package/library/skills/voice-line/SKILL.md +71 -40
  349. package/library/skills/voice-line/resource.yaml +1 -1
  350. package/library/skills/web-and-touch-input/SKILL.md +1 -1
  351. package/library/skills/web-and-touch-input/resource.yaml +1 -1
  352. package/library/skills/web-compatibility-look/SKILL.md +1 -1
  353. package/library/skills/web-compatibility-look/resource.yaml +1 -1
  354. package/library/skills/world-building-3d/SKILL.md +1 -1
  355. package/library/skills/world-building-3d/resource.yaml +1 -1
  356. package/library/skills/writing-skills/resource.yaml +1 -0
  357. package/library/tools/add-node/GUIDE.md +14 -0
  358. package/library/tools/align-distribute-3d/GUIDE.md +7 -0
  359. package/library/tools/app-call/resource.yaml +1 -1
  360. package/library/tools/app-guide/resource.yaml +2 -2
  361. package/library/tools/app-page/resource.yaml +1 -1
  362. package/library/tools/app-screenshot/resource.yaml +19 -1
  363. package/library/tools/app-tools/resource.yaml +1 -1
  364. package/library/tools/attach-to-surface/GUIDE.md +15 -0
  365. package/library/tools/batch/GUIDE.md +27 -0
  366. package/library/tools/camera-bookmark/GUIDE.md +12 -0
  367. package/library/tools/capture-gameplay/GUIDE.md +3 -0
  368. package/library/tools/capture-gameplay/resource.yaml +3 -3
  369. package/library/tools/check-job/resource.yaml +1 -1
  370. package/library/tools/clear-console/GUIDE.md +3 -0
  371. package/library/tools/connect-ports/GUIDE.md +9 -0
  372. package/library/tools/connect-signal/GUIDE.md +14 -0
  373. package/library/tools/create-debug-report/GUIDE.md +10 -0
  374. package/library/tools/create-scene/GUIDE.md +10 -0
  375. package/library/tools/debug-views/GUIDE.md +7 -0
  376. package/library/tools/enable-plugin/GUIDE.md +3 -0
  377. package/library/tools/export-game/GUIDE.md +3 -0
  378. package/library/tools/export-game/resource.yaml +3 -3
  379. package/library/tools/export-templates/GUIDE.md +3 -0
  380. package/library/tools/fabricate-3d/GUIDE.md +19 -0
  381. package/library/tools/frame-nodes/GUIDE.md +9 -0
  382. package/library/tools/frame-shot/GUIDE.md +9 -0
  383. package/library/tools/game-control/GUIDE.md +9 -0
  384. package/library/tools/game-input/GUIDE.md +9 -0
  385. package/library/tools/game-probe/GUIDE.md +9 -0
  386. package/library/tools/generate-3d/resource.yaml +3 -3
  387. package/library/tools/generate-motion/resource.yaml +2 -2
  388. package/library/tools/get-console/GUIDE.md +9 -0
  389. package/library/tools/get-console/resource.yaml +5 -0
  390. package/library/tools/get-debugger-errors/GUIDE.md +7 -0
  391. package/library/tools/get-debugger-errors/resource.yaml +5 -0
  392. package/library/tools/get-debugger-warnings/GUIDE.md +7 -0
  393. package/library/tools/get-debugger-warnings/resource.yaml +5 -0
  394. package/library/tools/get-diagnostics/GUIDE.md +13 -0
  395. package/library/tools/get-project-context/GUIDE.md +25 -0
  396. package/library/tools/get-runtime-tree/GUIDE.md +7 -0
  397. package/library/tools/get-runtime-tree/resource.yaml +5 -0
  398. package/library/tools/get-scene-tree/GUIDE.md +11 -0
  399. package/library/tools/get-scene-tree/resource.yaml +5 -0
  400. package/library/tools/get-script-errors/GUIDE.md +5 -0
  401. package/library/tools/grep/GUIDE.md +11 -0
  402. package/library/tools/import-asset/GUIDE.md +8 -0
  403. package/library/tools/import-asset-by-id/GUIDE.md +12 -0
  404. package/library/tools/import-from-url/GUIDE.md +10 -0
  405. package/library/tools/import-from-url-batch/GUIDE.md +3 -0
  406. package/library/tools/import-hdri/GUIDE.md +16 -0
  407. package/library/tools/input-map-bind/GUIDE.md +11 -0
  408. package/library/tools/inspect-asset/GUIDE.md +14 -0
  409. package/library/tools/inspect-asset/resource.yaml +5 -0
  410. package/library/tools/inspect-node/GUIDE.md +11 -0
  411. package/library/tools/inspect-node/resource.yaml +5 -0
  412. package/library/tools/inspect-resource/GUIDE.md +7 -0
  413. package/library/tools/inspect-resource/resource.yaml +5 -0
  414. package/library/tools/inspect-runtime-node/GUIDE.md +7 -0
  415. package/library/tools/inspect-runtime-node/resource.yaml +5 -0
  416. package/library/tools/instantiate-scene/GUIDE.md +12 -0
  417. package/library/tools/is-running/GUIDE.md +3 -0
  418. package/library/tools/measure/GUIDE.md +8 -0
  419. package/library/tools/navigation-probe/GUIDE.md +9 -0
  420. package/library/tools/open/resource.yaml +2 -2
  421. package/library/tools/open-main-scene/GUIDE.md +6 -0
  422. package/library/tools/open-scene/GUIDE.md +8 -0
  423. package/library/tools/place-adjacent/GUIDE.md +7 -0
  424. package/library/tools/play/GUIDE.md +13 -0
  425. package/library/tools/project-setting/GUIDE.md +9 -0
  426. package/library/tools/publish-build/resource.yaml +6 -6
  427. package/library/tools/raycast/GUIDE.md +7 -0
  428. package/library/tools/read-file/GUIDE.md +10 -0
  429. package/library/tools/read-library/resource.yaml +5 -0
  430. package/library/tools/recent-events/GUIDE.md +7 -0
  431. package/library/tools/remove-node/GUIDE.md +3 -0
  432. package/library/tools/repeat-along/GUIDE.md +5 -0
  433. package/library/tools/replace-node/GUIDE.md +9 -0
  434. package/library/tools/replace-text/GUIDE.md +5 -0
  435. package/library/tools/run-editor-script/GUIDE.md +16 -0
  436. package/library/tools/run-script/GUIDE.md +30 -0
  437. package/library/tools/run-script/resource.yaml +6 -3
  438. package/library/tools/runtime-animate/GUIDE.md +7 -0
  439. package/library/tools/runtime-call/GUIDE.md +7 -0
  440. package/library/tools/runtime-set/GUIDE.md +9 -0
  441. package/library/tools/runtime-spawn/GUIDE.md +9 -0
  442. package/library/tools/save-scene/GUIDE.md +3 -0
  443. package/library/tools/scene-audit/GUIDE.md +29 -0
  444. package/library/tools/screenshot/GUIDE.md +17 -0
  445. package/library/tools/select-node/GUIDE.md +3 -0
  446. package/library/tools/set-prop/GUIDE.md +23 -0
  447. package/library/tools/set-resource-property/GUIDE.md +8 -0
  448. package/library/tools/shot-sheet/GUIDE.md +7 -0
  449. package/library/tools/snap-to-surface/GUIDE.md +17 -0
  450. package/library/tools/snapshot-diff/GUIDE.md +7 -0
  451. package/library/tools/starcast/GUIDE.md +12 -0
  452. package/library/tools/stop/GUIDE.md +3 -0
  453. package/library/tools/test-placement/GUIDE.md +7 -0
  454. package/library/tools/ui-actions/GUIDE.md +12 -0
  455. package/library/tools/ui-activate/GUIDE.md +11 -0
  456. package/library/tools/ui-screenshot/GUIDE.md +9 -0
  457. package/library/tools/ui-tree/GUIDE.md +10 -0
  458. package/library/tools/wait-for-event/GUIDE.md +11 -0
  459. package/library/tools/world-snapshot/GUIDE.md +9 -0
  460. package/library/tools/write-file/GUIDE.md +5 -0
  461. package/library/tools/zoom/GUIDE.md +5 -0
  462. package/package.json +6 -4
  463. package/registry/generated/counts.json +2 -2
  464. package/registry/generated/gemini-extension.json +4 -12
  465. package/registry/generated/index.json +433 -339
  466. package/registry/generated/marketplace.claude.json +2 -13
  467. package/registry/generated/plugin.claude.json +23 -22
  468. package/registry/generated/plugin.codex.json +4 -12
  469. package/registry/generated/plugin.cursor.json +4 -12
  470. package/registry/generated/plugin.factory.json +4 -12
  471. package/registry/generated/server.json +34 -0
  472. package/registry/generated/skills-index.md +119 -117
  473. package/registry/generated/skills-registry.json +153 -115
  474. package/registry/operations/fixtures/invalid-deprecated-without-replacement.json +60 -0
  475. package/registry/operations/fixtures/invalid-name.json +60 -0
  476. package/registry/operations/fixtures/invalid-publish-without-owner.json +82 -0
  477. package/registry/operations/fixtures/invalid-spend-without-estimate.json +42 -0
  478. package/registry/operations/fixtures/invalid-unknown-field.json +61 -0
  479. package/registry/operations/fixtures/valid-player-facing.json +82 -0
  480. package/registry/operations/fixtures/valid-read.json +60 -0
  481. package/registry/operations/fixtures/valid-spend.json +43 -0
  482. package/registry/operations/legacy-names.json +1206 -0
  483. package/registry/schemas/operation.schema.json +318 -0
  484. package/registry/schemas/skill.schema.json +4 -0
  485. package/CLAUDE.md +0 -7
@@ -0,0 +1,150 @@
1
+ # concept-to-level: technical rules in detail
2
+
3
+ Each rule says what to do, why, and what went wrong without it. They come
4
+ from one long 3D arena build in Summer Engine with several agents working
5
+ on one map.
6
+
7
+ ## The live editor
8
+
9
+ **Do not run heavy or reloading scripts in the live editor.** Recoding a
10
+ shader, reloading a scene, or instantiating and freeing a scene that an open
11
+ tab uses can hang the editor's main thread or crash it. We lost the editor
12
+ twice to a clearance checker run inside it, and once more to a script that
13
+ re-set shader code to refresh the cache ("Attempted to free invalid ID"
14
+ spam, main thread stuck). Use the editor for small property edits and
15
+ saves. Build meshes, bake data and run checks headless (see
16
+ `headless-scripting`), then let the editor import the named files.
17
+
18
+ **The editor keeps old shaders cached.** After a shader file changes on
19
+ disk, the open editor may still draw the old version. Do not force a reload
20
+ there; render from a fresh process instead.
21
+
22
+ **Edit an open scene only through the live editor.** If you text-edit the
23
+ `.tscn` on disk while it is open, the editor overwrites your change on its
24
+ next save, or saves its stale copy over yours. The reverse also happens:
25
+ pressing Play can save a stale open tab and resurrect deleted nodes. Close
26
+ tabs you are not editing.
27
+
28
+ **The editor rewrites some files on its own** (the project settings file,
29
+ some scenes and resources it touches on load). Check `git diff` before every
30
+ commit and stage only what you meant to change. To change one line of such a
31
+ file, build the commit content from the last commit plus that line rather
32
+ than staging the editor's whole rewrite.
33
+
34
+ ## Rendering previews
35
+
36
+ **Render from a separate, short-lived engine process** that loads the map
37
+ from disk, takes the frames, and exits. It sees the current shaders and
38
+ meshes, cannot disturb the editor, and frees its memory when done.
39
+
40
+ **Call `RenderingServer.force_draw()` before reading the viewport image.**
41
+ Without it, later frames can come back identical to an earlier one when the
42
+ window stops drawing in the background.
43
+
44
+ **Watch for in-game UI covering the camera.** A level script may open a menu
45
+ (class select, lobby) that hides the scene. Render the scene with that
46
+ script disabled, or from an isolated viewport.
47
+
48
+ **Fixed angles.** Keep a small set of saved cameras per map: overview, eye
49
+ level from each spawn, each hero element close, from above. Reuse them so
50
+ before and after renders are comparable.
51
+
52
+ ## Load
53
+
54
+ One heavy process at a time across all agents (imports, Blender, headless
55
+ runs, renders), at low priority. The machine overheating or the editor
56
+ freezing during a demo costs more than the time saved. See
57
+ `bounded-engine-runs` for time limits and muted runs.
58
+
59
+ ## Online constraints
60
+
61
+ Check what the online build does to a map scene before designing effects.
62
+ In our project the online client rebuilt the map's visuals, turned any node
63
+ whose type contains "Particles" into a plain node, and ran no map scripts.
64
+ Consequences:
65
+
66
+ - Fire, sparks, smoke, motes: camera-facing mesh layers driven by shaders,
67
+ with soft depth fades. No particle nodes.
68
+ - Animated set pieces (a statue floating against taut chains): bake the
69
+ motion into a vertex animation texture and play it in the vertex shader.
70
+ Set `custom_aabb` so the moving mesh is not culled. Zero CPU.
71
+ - Dynamic events: the server owns the state (timings, collision on or off);
72
+ a client presenter drives the shader parameters from that state. Write the
73
+ spec for the server with timings in ticks and the exact collision bodies.
74
+ - Lights survive, so cheap flickering lights are fine.
75
+
76
+ ## Baked versus procedural
77
+
78
+ Bake what only needs to loop (statue, cloth idle). Make procedural what must
79
+ aim or react: god hands that point their beams at a moving target need an
80
+ aim layer (look-at or two-bone IK with damped, slightly overshooting motion)
81
+ on top of the base pose, with one API all events call.
82
+
83
+ ## Fallbacks
84
+
85
+ When you swap an experimental asset into the map (the floating statue), keep
86
+ the previous scene file and say how to swap back. Do not swap untested
87
+ assets in right before a demo unless the user asks.
88
+
89
+ ## Generated and third-party assets
90
+
91
+ Generated 3D models need cleanup: decimate to a budget, check normals and
92
+ inside-out meshes, merge or split parts deliberately, ground them on their
93
+ support, give every surface a real material (a chain that rendered white
94
+ had lost its material on import). Record each in the notices file with the
95
+ tool named and its terms marked "not confirmed" until checked.
96
+
97
+ Every third-party texture: source page, author, licence, download date,
98
+ what was changed. Never guess a licence.
99
+
100
+ ## Modular kits
101
+
102
+ After every kit rebuild check: zero coplanar overlapping faces, all seams
103
+ welded (no gaps where pieces meet), a see-through scan with rays from inside
104
+ the play space, and the collision against the visible faces (within a few
105
+ cm). Rebuilds can change random block tones and baked shading on pieces you
106
+ did not mean to change: compare against the committed version and restore.
107
+
108
+ When splitting a kit piece out (to make it removable), copy its triangles
109
+ out of the exported files instead of regenerating it, prove the split looks
110
+ identical, and install the new pieces and the scene that uses them together.
111
+ Overwriting a repo piece first made parts of the live map vanish.
112
+
113
+ ## Moving things
114
+
115
+ Moving a room or structure moves the job, not one node. Re-run or re-check
116
+ everything placed relative to it: decals (snap to the actual surface, drop
117
+ what no longer fits), banners and their hooks, backdrop rock under it,
118
+ spawn markers, collision, lights. Re-measure clearances, including cloth at
119
+ full sway against the floor below.
120
+
121
+ ## Gameplay sync
122
+
123
+ After a collider, spawn or zone change: recompile the server's collision
124
+ artifact, update tests that hard-code positions, run the rules tests and the
125
+ contract check, and read their PASS lines. Spawns: centred on the axis,
126
+ mirrored exactly between teams (an exact 180 degree turn, not 180.56),
127
+ evenly spaced, facing the play space.
128
+
129
+ ## Render cost
130
+
131
+ Count early and after each lane: vertices, triangles, mesh instances, draw
132
+ calls, shadow-casting surfaces, lights (and which cast shadows), decals.
133
+ Know the biggest offenders by group. In our map, eight decorative figures
134
+ seen only through bars were a quarter of all triangles; the fix was a
135
+ low-end note to hide them and a planned decimation. Typical cuts: decimate
136
+ hidden detail, merge kit pieces into fewer draws, no shadows on small
137
+ props, shorter sun shadow distance, half-resolution post effects.
138
+
139
+ ## Dynamic events
140
+
141
+ - Agree the feel first: scale, speed, how long it stays, what the warning
142
+ reveals. Big things move slowly, with anticipation and a held impact.
143
+ - Telegraph fairly but not too precisely: a warning that draws the exact
144
+ path is too easy to dodge.
145
+ - Check the event never makes the play space impassable and never kills
146
+ without warning.
147
+ - Make what the player sees match what happens: a hole that is open in the
148
+ collision but painted over by a glow reads as solid floor.
149
+ - In a showcase or demo loop, reset destroyed pieces so the effect can be
150
+ watched again.
@@ -0,0 +1,44 @@
1
+ id: skill/concept-to-level
2
+ kind: skill
3
+ version: 1.0.0
4
+ summary: Take a 3D map from concept art to a polished, shippable level, with the questions to ask the user, owned lanes, render checks and collision kept in step.
5
+ use_when:
6
+ - polishing a 3D map or arena from concept art to shipping quality, with real materials, props, sky and effects
7
+ - reworking a level's theme and art while keeping its gameplay layout, with several agents working on one map
8
+ - deciding which questions to ask the user before building or polishing a level
9
+ do_not_use_when:
10
+ - a quick 2D or playable scene from one reference image — skill/scene-to-level
11
+ - designing layout, pacing and encounters on paper — skill/design-level
12
+ - generating a single prop or kit — skill/prop-model or skill/environment-kit
13
+ facets:
14
+ lifecycle:
15
+ - build
16
+ domains:
17
+ - level-design
18
+ - 3d
19
+ - world-building
20
+ - agent-workflow
21
+ modalities:
22
+ - scenes
23
+ - assets
24
+ - shaders
25
+ - docs
26
+ compatibility:
27
+ engine: ">=4.6"
28
+ related:
29
+ skills:
30
+ - skill/concept-art
31
+ - skill/art-direction
32
+ - skill/design-level
33
+ - skill/scene-to-level
34
+ - skill/environment-kit
35
+ - skill/fabricating-assets
36
+ - skill/headless-scripting
37
+ - skill/bounded-engine-runs
38
+ - skill/verifying-scenes
39
+ - skill/tune-performance
40
+ - skill/dispatching-parallel-agents
41
+ source: official
42
+ license: MIT
43
+ status: preview
44
+ recommended: false
@@ -1,11 +1,11 @@
1
1
  ---
2
2
  name: create-asset-sheet
3
- description: "Generate a pack of 2D game assets from one prompt — tile sheet, UI kit, character pack, or biome set — sliced, classified, and saved as one pack ArtAsset."
3
+ description: "Generate a pack of 2D assets from one prompt (tile sheet, UI kit, character pack, biome), sliced."
4
4
  license: MIT
5
5
  compatibility: [Cursor, Claude Code, Windsurf, Codex]
6
6
  category: 2d-assets
7
7
  user-invocable: true
8
- allowed-tools: Read Grep Glob Write Edit summer_get_studio_workflow summer_generate_image summer_slice_asset_sheet summer_search_assets summer_import_asset_by_id summer_import_from_url
8
+ allowed-tools: Read Grep Glob Write Edit summer_assets_generate_image summer_assets_slice_sheet summer_assets_search summer_import_asset_by_id summer_import_from_url summer_import_from_url_batch summer_call
9
9
  paths: ["assets/**", "art/**", "sprites/**"]
10
10
  ---
11
11
 
@@ -42,7 +42,7 @@ Categories the classifier outputs (used to route into downstream pipelines):
42
42
 
43
43
  ## The cleanest path: the studio wizard
44
44
 
45
- The most reliable way to run this flow is the **Create Asset Sheet** wizard in Summer Studio's guided workflows. Open it for the user with `summer open workflows` (or `summer_open`) if they're working in the browser. The wizard:
45
+ The most reliable way to run this flow is the **Create Asset Sheet** wizard in Summer Studio's guided workflows. Open it for the user with `summer open workflows` (or `studio.open`) if they're working in the browser. The wizard:
46
46
 
47
47
  - Offers a 2D / 3D mode toggle (2D is the slice flow described here; 3D is a soft pointer to `concept-art` + per-asset image-to-3D for now)
48
48
  - Surfaces six prompt templates (tile sheet, UI kit, menu, character pack, biome, freeform)
@@ -58,31 +58,32 @@ calls the same server-side slicer as the Studio wizard.
58
58
  ## Programmatic path (chat / agent driving the engine)
59
59
 
60
60
  1. **Load the exact current recipe.** Call
61
- `summer_get_studio_workflow({workflowId: "asset-pack"})`. Follow its ordered
61
+ `summer_call({op: "docs.workflows", input: {workflowId: "asset-pack"}})`. Follow its ordered
62
62
  steps and report any `manual` handoff instead of pretending it ran.
63
63
 
64
- 2. **Generate the sheet.** Call `summer_generate_image` with a prompt like:
64
+ 2. **Generate the sheet.** Call `assets.generate_image` with a prompt like:
65
65
 
66
66
  ```
67
67
  <theme> asset sheet: <comma-separated list of items>. Each item isolated with empty space around it, transparent or neutral background.
68
68
  ```
69
69
 
70
70
  - Pick model by style: pixel art → `grok-imagine`, painterly / illustrative / structured grids → `gpt-image-2`.
71
- - 1024x1024 is the sweet spot. Larger sheets fragment in the slicer when individual assets get below ~64px.
71
+ - Square (`aspectRatio: "1:1"`, the default, about 1024x1024) is the sweet spot. Larger sheets fragment in the slicer when individual assets get below ~64px.
72
72
  - Keep the asset list to 6–20 items per sheet. Past 20, model attention degrades and slices get muddy.
73
73
 
74
74
  3. **Slice, remove background, detect, name, classify, crop, and save.** Pass
75
75
  the returned image asset id to:
76
76
 
77
77
  ```
78
- summer_slice_asset_sheet({ assetId: "<generated asset id>" })
78
+ assets.slice_sheet({ assetId: "<generated asset id>" })
79
79
  ```
80
80
 
81
- This is the same cloud slicing pipeline used by the Studio flow. Keep the
82
- returned slice ids/names/categories; do not reimplement the vision boxes
83
- locally.
81
+ This is the same cloud slicing pipeline used by the Studio flow. It answers
82
+ `slices` (each with `url`, `name`, `category`, `bbox`) and `source`; keep the
83
+ names and categories, and do not reimplement the vision boxes locally. Slicing
84
+ spends credits: `dryRun: true` shows how many.
84
85
 
85
- 4. **Optional upscale.** The Studio wizard has per-slice HD upscale. Over MCP, for any crop where the longest side is under 256px, call `summer_generate_image` with the slice as `referenceImageUrl` and this prompt:
86
+ 4. **Optional upscale.** The Studio wizard has per-slice HD upscale. Over MCP, for any crop where the longest side is under 256px, call `assets.generate_image` with the slice `url` as `referenceImageUrl` and this prompt:
86
87
 
87
88
  ```
88
89
  Recreate this exact <name> at high resolution. Preserve every detail, the exact pose, the exact style. Sharper edges, more detail. Transparent background. Single isolated asset, no scene.
@@ -90,8 +91,9 @@ calls the same server-side slicer as the Studio wizard.
90
91
 
91
92
  - Don't upscale everything: each upscale is a paid generation, and large slices gain little.
92
93
 
93
- 5. **Import what the game needs.** Use the returned asset ids with
94
- `summer_import_asset_by_id`. Keep the source pack in My Assets so the agent
94
+ 5. **Import what the game needs.** The slices are image URLs, not assets: import
95
+ them with `summer_import_from_url_batch` (upscaled ones by their `assetId` with
96
+ `summer_import_asset_by_id`). Keep the source pack in My Assets so the agent
95
97
  and the human Studio session see the same result.
96
98
 
97
99
  ## Prompt patterns that work
@@ -137,6 +139,10 @@ calls the same server-side slicer as the Studio wizard.
137
139
  | Upscaled slice looks invented | Source was too small / too ambiguous | Don't upscale slices below ~32×32. Or accept the hallucination and edit |
138
140
  | Detection returns wrong category | Model misjudged context | User can override in the review step; not a blocker |
139
141
 
142
+ ## Without Summer Engine
143
+
144
+ In a session without Summer Engine tools (the assets profile; the `summer-assets` skill has the whole loop), the studio wizard path works as written. On the programmatic path, stop after `assets.slice_sheet` and skip `summer_import_asset_by_id`: save each piece where the person asked with `assets.get` and `out` (the `summer-assets` skill says how), and tell them the paths.
145
+
140
146
  ## What this skill does NOT do (yet)
141
147
 
142
148
  - Per-asset planning and individual generation, where each asset is generated separately at full resolution.
@@ -1,7 +1,7 @@
1
1
  id: skill/create-asset-sheet
2
2
  kind: skill
3
3
  version: 1.0.3
4
- summary: Generate a pack of 2D game assets from one prompt — tile sheet, UI kit, character pack, or biome set — sliced, classified, and saved as one pack ArtAsset.
4
+ summary: "Generate a pack of 2D assets from one prompt (tile sheet, UI kit, character pack, biome), sliced."
5
5
  use_when:
6
6
  - generating a pack of 2D game assets from a single prompt — a tile sheet, UI kit, menu screen, character pack, or biome set
7
7
  - many matching sprites, tiles, or UI pieces are needed in one consistent style at once
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: debug
3
- description: "Disciplined bug/crash/error loop for Summer projects — script errors, console, debugger, hypothesis, fix, verify — before making code or scene changes."
3
+ description: "Disciplined bug, crash and error loop: script errors, console, debugger, hypothesis, fix, verify."
4
4
  license: MIT
5
5
  compatibility: [Cursor, Claude Code, Codex, Windsurf, Gemini, OpenCode]
6
6
  category: debugging
@@ -143,7 +143,7 @@ Surface the proposed fix in plain language and ask permission. Two patterns:
143
143
 
144
144
  - For GDScript edits: `Read` the 20–40 lines around the error, `Edit` the exact change. Don't read the whole file. Don't reformat. Don't rename other things.
145
145
  - For scene edits: use the appropriate `summer_*` tool (`summer_add_node`, `summer_set_prop`, `summer_replace_node`). Group multi-step changes in `summer_batch` for one undo step.
146
- - **Nested resource properties:** `summer_set_resource_property` works against inline `sub_resource` targets too — pass `nodePath`, `resourceProperty`, and `subProperty` (there is no dotted `"mesh.size"` form). Structural failures (`node not found`, `property is not a resource`, `resource is null`) are explicit errors; a bad value shape is not — a JSON object instead of an engine literal string, a misspelled `key`/`subProperty`, or a wrong-typed value returns `ok:true` yet silently no-ops or coerces destructively on current engines (dict → material cleared; dict → `Color(0,0,0,1)`; newer engines reject these with `unknown_property` / `bad_value_shape` / `type_mismatch`). Pass class names and `Color(...)`/`Vector3(...)` strings, and confirm the fix in the saved `.tscn` or a snapshot diff, never from `ok` alone. See `../../references/mcp-tools-reference/mcp-tools-reference.md`.
146
+ - **Nested resource properties:** `summer_set_resource_property` works against inline `sub_resource` targets too — pass `nodePath`, `resourceProperty`, and `subProperty` (there is no dotted `"mesh.size"` form). Structural failures (`node not found`, `property is not a resource`, `resource is null`) are explicit errors; a bad value shape is not — a JSON object instead of an engine literal string, a misspelled `key`/`subProperty`, or a wrong-typed value returns `ok:true` yet silently no-ops or coerces destructively on current engines (dict → material cleared; dict → `Color(0,0,0,1)`; newer engines reject these with `unknown_property` / `bad_value_shape` / `type_mismatch`). Pass class names and `Color(...)`/`Vector3(...)` strings, and confirm the fix in the saved `.tscn` or a snapshot diff, never from `ok` alone. See `summer_docs_read` id `reference/mcp-tools-reference`.
147
147
 
148
148
  ### 6. Verify — re-run the diagnostic that found it
149
149
 
@@ -1,7 +1,7 @@
1
1
  id: skill/debug
2
2
  kind: skill
3
3
  version: 1.0.4
4
- summary: Disciplined bug/crash/error loop for Summer projects — script errors, console, debugger, hypothesis, fix, verify — before making code or scene changes.
4
+ summary: "Disciplined bug, crash and error loop: script errors, console, debugger, hypothesis, fix, verify."
5
5
  use_when:
6
6
  - the user reports a bug, crash, error, or unexpected behavior in a Summer project, before making code or scene changes
7
7
  - the player falls through the floor or clips through walls
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: debugging-game-feel
3
- description: "Debug features that work but feel wrong — floaty jumps, mushy combat, sluggish camera — subjective bugs living in tuning, timing, and feedback layers."
3
+ description: "Debug features that work but feel wrong: floaty jumps, mushy combat, sluggish camera."
4
4
  ---
5
5
 
6
6
  # Debugging Game Feel
@@ -1,7 +1,7 @@
1
1
  id: skill/debugging-game-feel
2
2
  kind: skill
3
3
  version: 1.0.3
4
- summary: Debug features that work but feel wrong — floaty jumps, mushy combat, sluggish camera — subjective bugs living in tuning, timing, and feedback layers.
4
+ summary: "Debug features that work but feel wrong: floaty jumps, mushy combat, sluggish camera."
5
5
  use_when:
6
6
  - a gameplay feature works correctly but feels wrong — floaty jumps, mushy combat, sluggish camera, weightless impacts
7
7
  - tuning jump height, gravity, camera lag, hit-stop, or impact feedback until controls feel right
@@ -1,11 +1,11 @@
1
1
  ---
2
2
  name: design-level
3
- description: "Design a single level — layout, pacing, encounters, secrets, reward gating — outputs a level design doc and a node-tree skeleton for summer_create_scene."
3
+ description: "Design one level (layout, pacing, encounters, secrets) as a design doc plus a node-tree skeleton."
4
4
  license: MIT
5
5
  compatibility: [Cursor, Claude Code, Windsurf, Codex]
6
6
  category: level-design
7
7
  user-invocable: true
8
- allowed-tools: Read Grep Glob Write Edit summer_get_scene_tree summer_create_scene summer_open_scene summer_add_node summer_set_prop summer_save_scene summer_get_script_errors
8
+ allowed-tools: Read Grep Glob Write Edit summer_get_scene_tree summer_create_scene summer_open_scene summer_run_script summer_add_node summer_set_prop summer_save_scene summer_get_script_errors
9
9
  paths: ["**/*.tscn", "**/*.gd", ".summer/**", "levels/**"]
10
10
  ---
11
11
 
@@ -148,44 +148,32 @@ Show the skeleton. Ask:
148
148
 
149
149
  ### 8. Scaffold via MCP
150
150
 
151
- **Preferred (Summer MCP):**
151
+ **Preferred (Summer MCP):** create the scene, then build the whole skeleton in one script.
152
152
 
153
- `summer_create_scene` takes `path`, `rootName`, and a mandatory safety gate.
154
- There is no `root_type` or `root_name` argument. The tool refuses to run unless
155
- `allow_temporary_scene_mutation` is explicitly true, because of how it works: it
156
- opens the currently-open scene (or the project's main scene) as a template,
157
- removes every child, renames the root, saves-as to the new path, then reopens
158
- the original. Ask the user before setting the flag.
159
-
160
- The consequence to plan around: **the new scene's root node type is copied from
161
- the template's root**, not chosen by you. Create levels from a scene whose root
162
- is already `Node3D`, or fix the root afterwards in the editor.
153
+ `summer_create_scene` takes `path`, `rootName` and `rootType` (default `Node3D`) and writes the new scene to disk without opening it. `summer_run_script` with that `scenePath` opens it, runs, and gives the user their tab back; the run is one undo step, so one Ctrl+Z removes the skeleton.
163
154
 
164
155
  ```
165
- summer_create_scene(path="res://levels/level_01.tscn", rootName="World", allow_temporary_scene_mutation=true)
166
- summer_add_node(scenePath="res://levels/level_01.tscn", parent="./World", type="Node3D", name="Geometry")
167
- summer_add_node(parent="./World/Geometry", type="Node3D", name="IntroAtrium")
168
- summer_add_node(parent="./World/Geometry", type="Node3D", name="Corridor")
169
- summer_add_node(parent="./World/Geometry", type="Node3D", name="PeakArena")
170
- summer_add_node(parent="./World/Geometry", type="Node3D", name="BossChamber")
171
- summer_add_node(parent="./World", type="Node3D", name="Spawns")
172
- summer_add_node(parent="./World/Spawns", type="Node3D", name="PlayerSpawn")
173
- summer_add_node(parent="./World/Spawns", type="Node3D", name="E1_Spawn")
174
- # ... and so on
175
- summer_add_node(parent="./World", type="Node3D", name="Triggers")
176
- summer_add_node(parent="./World/Triggers", type="Area3D", name="E2_GateTrigger")
177
- # ... etc.
178
- summer_add_node(parent="./World", type="Node3D", name="Lighting")
179
- summer_add_node(parent="./World/Lighting", type="WorldEnvironment", name="WorldEnvironment")
180
- summer_add_node(parent="./World/Lighting", type="DirectionalLight3D", name="Sun")
181
- summer_save_scene(scenePath="res://levels/level_01.tscn")
156
+ summer_create_scene(path="res://levels/level_01.tscn", rootName="World", rootType="Node3D")
157
+ summer_run_script(scenePath="res://levels/level_01.tscn", source="""
158
+ func run(ctx):
159
+ var skeleton = {
160
+ "Geometry": [["Node3D", "IntroAtrium"], ["Node3D", "Corridor"], ["Node3D", "PeakArena"], ["Node3D", "BossChamber"]],
161
+ "Spawns": [["Node3D", "PlayerSpawn"], ["Node3D", "E1_Spawn"], ["Node3D", "E2_Spawn"], ["Node3D", "E3_Wave_Spawns"], ["Node3D", "MiniBoss_Spawn"]],
162
+ "Triggers": [["Area3D", "E2_GateTrigger"], ["Area3D", "PeakWaveTrigger"], ["Area3D", "BossDoorTrigger"]],
163
+ "Pickups": [["Node3D", "HealAfterE2"], ["Node3D", "CurrencyS1"]],
164
+ "Secrets": [["StaticBody3D", "S1_BreakableWall"], ["StaticBody3D", "S2_ParryLedge"], ["StaticBody3D", "S3_LockedDoor"]],
165
+ "Lighting": [["WorldEnvironment", "WorldEnvironment"], ["DirectionalLight3D", "Sun"]],
166
+ }
167
+ for group in skeleton:
168
+ var parent = ctx.add_node("Node3D", group)
169
+ for child in skeleton[group]:
170
+ ctx.add_node(child[0], child[1], parent)
171
+ ctx.report("skeleton", ctx.summary())
172
+ ctx.save_scene()
173
+ """)
182
174
  ```
183
175
 
184
- Every `summer_add_node` above takes the same required
185
- `scenePath="res://levels/level_01.tscn"`; it is elided after the first line only
186
- to keep the tree readable. A call without `scenePath` is rejected by the tool
187
- schema. Better still, send the whole block as one `summer_batch(scenePath=...,
188
- ops=[...])` so the user can undo the skeleton with a single Ctrl+Z.
176
+ Compare the `skeleton` report (node counts by class) with the tree you showed the user, then `summer_get_scene_tree` on the new scene.
189
177
 
190
178
  This is a **skeleton, not playable geometry**. Markers and Area3Ds, no meshes, no enemy scripts. Implementation in subsequent sessions / templates.
191
179
 
@@ -1,7 +1,7 @@
1
1
  id: skill/design-level
2
2
  kind: skill
3
3
  version: 1.0.3
4
- summary: Design a single level — layout, pacing, encounters, secrets, reward gating — outputs a level design doc and a node-tree skeleton for summer_create_scene.
4
+ summary: "Design one level (layout, pacing, encounters, secrets) as a design doc plus a node-tree skeleton."
5
5
  use_when:
6
6
  - designing a single level — layout, pacing, encounters, secrets, reward gating
7
7
  - turning a level idea into a layout with a critical path, encounters, secrets, and pacing beats
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: design-mechanic
3
- description: "Design one game mechanic in detail — input, response, feedback, failure modes, depth, tunables — outputs a design doc, node-graph sketch, GDScript stub."
3
+ description: "Design one mechanic in detail (input, feedback, failure modes, tunables) as a doc plus a script stub."
4
4
  license: MIT
5
5
  compatibility: [Cursor, Claude Code, Windsurf, Codex]
6
6
  category: gameplay-mechanics
@@ -1,7 +1,7 @@
1
1
  id: skill/design-mechanic
2
2
  kind: skill
3
3
  version: 1.0.2
4
- summary: Design one game mechanic in detail — input, response, feedback, failure modes, depth, tunables — outputs a design doc, node-graph sketch, GDScript stub.
4
+ summary: "Design one mechanic in detail (input, feedback, failure modes, tunables) as a doc plus a script stub."
5
5
  use_when:
6
6
  - designing one specific game mechanic in detail — input, response, feedback, failure modes, depth, tunables
7
7
  - add a grappling hook, dash, double jump, wall run, or parry
@@ -1,11 +1,11 @@
1
1
  ---
2
2
  name: design-npc
3
- description: "Design enemy/NPC/boss/companion behavior — perception, personality, intent, action state machine, telegraphs — outputs a GDScript stub plus node tree."
3
+ description: "Design enemy, NPC, boss or companion behavior: perception, state machine, telegraphs, script stub."
4
4
  license: MIT
5
5
  compatibility: [Cursor, Claude Code, Windsurf, Codex]
6
6
  category: ai-and-npcs
7
7
  user-invocable: true
8
- allowed-tools: Read Grep Edit Write summer_get_scene_tree summer_inspect_node summer_add_node summer_set_prop summer_set_resource_property summer_connect_signal summer_save_scene summer_get_script_errors summer_input_map_bind
8
+ allowed-tools: Read Grep Edit Write summer_get_scene_tree summer_inspect_node summer_run_script summer_add_node summer_set_prop summer_set_resource_property summer_connect_signal summer_save_scene summer_get_script_errors summer_input_map_bind
9
9
  paths: ["**/*.gd", "**/*.tscn"]
10
10
  ---
11
11
 
@@ -179,31 +179,31 @@ Identify where the NPC will live (an `Enemies` parent, or directly under World).
179
179
 
180
180
  **Preferred (Summer MCP):**
181
181
 
182
- Every tool below takes a required `scenePath` naming the exact `res://` scene;
183
- it is written out on the first line and elided after for readability. Better
184
- still, send the whole block as one `summer_batch(scenePath=..., ops=[...])` so
185
- the user can undo the enemy with a single Ctrl+Z.
182
+ One script builds the whole enemy; `scenePath` names the exact `res://` scene,
183
+ and the run is one undo step, so one Ctrl+Z removes the enemy:
186
184
 
187
185
  ```
188
- summer_add_node(scenePath="res://main.tscn", parent="./World/Enemies", type="CharacterBody3D", name="Enemy")
189
- summer_add_node(parent="./World/Enemies/Enemy", type="CollisionShape3D", name="Body")
190
- summer_add_node(parent="./World/Enemies/Enemy", type="MeshInstance3D", name="Mesh")
191
- summer_add_node(parent="./World/Enemies/Enemy", type="Area3D", name="Vision")
192
- summer_add_node(parent="./World/Enemies/Enemy/Vision", type="CollisionShape3D", name="VisionShape")
193
- summer_add_node(parent="./World/Enemies/Enemy", type="RayCast3D", name="Sight")
194
- summer_set_prop(path="./World/Enemies/Enemy/Sight", key="enabled", value="true")
195
- summer_set_prop(path="./World/Enemies/Enemy/Sight", key="target_position", value="Vector3(0, 0, -12)")
186
+ summer_run_script(scenePath="res://main.tscn", source="""
187
+ func run(ctx):
188
+ var enemy = ctx.add_node("CharacterBody3D", "Enemy", ctx.find("Enemies"))
189
+ ctx.add_node("CollisionShape3D", "Body", enemy, {"shape": CapsuleShape3D.new()})
190
+ ctx.add_node("MeshInstance3D", "Mesh", enemy, {"mesh": CapsuleMesh.new()})
191
+ var vision = ctx.add_node("Area3D", "Vision", enemy)
192
+ var sight_sphere = SphereShape3D.new()
193
+ sight_sphere.radius = 12.0
194
+ ctx.add_node("CollisionShape3D", "VisionShape", vision, {"shape": sight_sphere})
195
+ ctx.add_node("RayCast3D", "Sight", enemy, {"enabled": true, "target_position": Vector3(0, 0, -12)})
196
+ ctx.save_scene()
197
+ """)
196
198
  ```
197
199
 
198
- Give the Vision area its sphere. Either form works — a class-name string embeds
199
- the resource in the scene, a `res://` path reuses a shared one. Prefer the shared
200
- `.tres` when several enemy archetypes want the same sight radius:
200
+ The script embeds the sight sphere in the scene. When several enemy archetypes
201
+ want the same sight radius, share one file instead:
202
+ `{"shape": load("res://shapes/vision_sphere.tres")}`. Tuning one value later is
203
+ one call:
201
204
 
202
205
  ```
203
- summer_set_prop(scenePath="res://main.tscn", path="./World/Enemies/Enemy/Vision/VisionShape", key="shape", value="res://shapes/vision_sphere.tres")
204
- # or, embedded, then tune it:
205
- summer_set_prop(scenePath="res://main.tscn", path="./World/Enemies/Enemy/Vision/VisionShape", key="shape", value="SphereShape3D")
206
- summer_set_resource_property(scenePath="res://main.tscn", nodePath="./World/Enemies/Enemy/Vision/VisionShape", resourceProperty="shape", subProperty="radius", value="12.0")
206
+ summer_set_resource_property(scenePath="res://main.tscn", nodePath="./World/Enemies/Enemy/Vision/VisionShape", resourceProperty="shape", subProperty="radius", value="14.0")
207
207
  ```
208
208
 
209
209
  `summer_set_resource_property` works against scene-embedded (`[sub_resource]`)
@@ -224,9 +224,7 @@ summer_connect_signal(scenePath="res://main.tscn", emitter="./World/Enemies/Enem
224
224
  ```
225
225
 
226
226
  The parameters are `scenePath`, `emitter`, `signal`, `receiver`, `method`. There
227
- is no `from` / `to`; those spellings fail schema validation. The same required
228
- `scenePath` applies to `summer_add_node`, `summer_set_prop` and
229
- `summer_save_scene` in the block above.
227
+ is no `from` / `to`; those spellings fail schema validation.
230
228
 
231
229
  **Fallback (no MCP):** write the scene as `.tscn` text. Ask the user to paste their existing scene first, then propose a unified diff.
232
230
 
@@ -1,7 +1,7 @@
1
1
  id: skill/design-npc
2
2
  kind: skill
3
3
  version: 1.0.2
4
- summary: Design enemy/NPC/boss/companion behavior — perception, personality, intent, action state machine, telegraphs — outputs a GDScript stub plus node tree.
4
+ summary: "Design enemy, NPC, boss or companion behavior: perception, state machine, telegraphs, script stub."
5
5
  use_when:
6
6
  - designing an enemy, NPC, boss, companion, civilian, or wave-spawned mob's behavior — perception, intent, state machine, telegraphs, defeat handling
7
7
  - enemies that patrol, chase, attack, or flee when they see the player (line of sight)
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: diagnosing-perf-regressions
3
- description: "Find why frame rate, frame time, or load time got worse since a known-good state — regression hunting, not general performance tuning."
3
+ description: "Find why frame rate, frame time or load time got worse since a known-good state."
4
4
  ---
5
5
 
6
6
  # Diagnosing Performance Regressions
@@ -1,7 +1,7 @@
1
1
  id: skill/diagnosing-perf-regressions
2
2
  kind: skill
3
3
  version: 1.0.3
4
- summary: Find why frame rate, frame time, or load time got worse since a known-good state — regression hunting, not general performance tuning.
4
+ summary: "Find why frame rate, frame time or load time got worse since a known-good state."
5
5
  use_when:
6
6
  - frame rate, frame time, or load time has gotten worse since a known-good state — 'it used to run at 60, now it's at 30'
7
7
  - bisecting recent scene, script, or asset changes to find which one slowed frame time or loading
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: driving-the-editor-ui
3
- description: "Drive the editor UI by name: invoke actions, clear blocking dialogs, switch the main screen, read a dock — and route scene work to the scene tools instead."
3
+ description: "Drive the editor UI by name: run actions, clear blocking dialogs, switch screens, read a dock."
4
4
  ---
5
5
 
6
6
  # Driving the Editor UI
@@ -1,7 +1,7 @@
1
1
  id: skill/driving-the-editor-ui
2
2
  kind: skill
3
3
  version: 1.0.0
4
- summary: "Drive the editor UI by name: invoke actions, clear blocking dialogs, switch the main screen, read a dock — and route scene work to the scene tools instead."
4
+ summary: "Drive the editor UI by name: run actions, clear blocking dialogs, switch screens, read a dock."
5
5
  use_when:
6
6
  - an editor-workflow step a human would do with the mouse — open the Import dock, switch the 2D/3D/Script main screen, toggle a bottom panel, open an editor dialog by name
7
7
  - a dialog or popup is blocking the editor and tool calls come back modal_open — see it (summer_ui_tree root dialogs) and clear it (summer_ui_activate action dismiss_dialog)