summer-engine 3.1.0 → 3.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (366) hide show
  1. package/.claude-plugin/marketplace.json +2 -2
  2. package/.claude-plugin/plugin.json +27 -5
  3. package/.codex-plugin/plugin.json +28 -6
  4. package/.cursor-plugin/plugin.json +27 -5
  5. package/.factory-plugin/plugin.json +27 -5
  6. package/.opencode/plugins/summer.js +1 -1
  7. package/CHANGELOG.md +102 -0
  8. package/README.md +18 -3
  9. package/assets/audit/scene_audit.gd +4136 -0
  10. package/assets/seeing/seeing_probe.gd +1873 -0
  11. package/dist/cli/commands/skills.js +20 -2
  12. package/dist/core/api-client.d.ts +9 -1
  13. package/dist/core/api-client.js +21 -4
  14. package/dist/core/capabilities/agent-playbook.js +46 -0
  15. package/dist/core/capabilities/audit/accept.d.ts +55 -0
  16. package/dist/core/capabilities/audit/accept.js +147 -0
  17. package/dist/core/capabilities/audit/args.d.ts +95 -0
  18. package/dist/core/capabilities/audit/args.js +89 -0
  19. package/dist/core/capabilities/audit/audit.d.ts +56 -0
  20. package/dist/core/capabilities/audit/audit.js +287 -0
  21. package/dist/core/capabilities/audit/frame.d.ts +14 -0
  22. package/dist/core/capabilities/audit/frame.js +35 -0
  23. package/dist/core/capabilities/audit/gaps.d.ts +96 -0
  24. package/dist/core/capabilities/audit/gaps.js +257 -0
  25. package/dist/core/capabilities/audit/judge.d.ts +162 -0
  26. package/dist/core/capabilities/audit/judge.js +1134 -0
  27. package/dist/core/capabilities/audit/math.d.ts +110 -0
  28. package/dist/core/capabilities/audit/math.js +263 -0
  29. package/dist/core/capabilities/audit/summary.d.ts +74 -0
  30. package/dist/core/capabilities/audit/summary.js +212 -0
  31. package/dist/core/capabilities/board.d.ts +31 -0
  32. package/dist/core/capabilities/board.js +43 -0
  33. package/dist/core/capabilities/camera-view.d.ts +4 -2
  34. package/dist/core/capabilities/camera-view.js +6 -3
  35. package/dist/core/capabilities/connect-signal.d.ts +85 -0
  36. package/dist/core/capabilities/connect-signal.js +285 -0
  37. package/dist/core/capabilities/engine-fallbacks.d.ts +5 -0
  38. package/dist/core/capabilities/engine-fallbacks.js +5 -0
  39. package/dist/core/capabilities/engine-ops.d.ts +5 -1
  40. package/dist/core/capabilities/engine-ops.js +0 -3
  41. package/dist/core/capabilities/engine-receipt.d.ts +12 -0
  42. package/dist/core/capabilities/engine-receipt.js +26 -0
  43. package/dist/core/capabilities/file-read.d.ts +64 -0
  44. package/dist/core/capabilities/file-read.js +325 -0
  45. package/dist/core/capabilities/game-task-plan.js +4 -2
  46. package/dist/core/capabilities/grep.d.ts +60 -0
  47. package/dist/core/capabilities/grep.js +190 -0
  48. package/dist/core/capabilities/inspect-node.d.ts +56 -0
  49. package/dist/core/capabilities/inspect-node.js +225 -0
  50. package/dist/core/capabilities/inspect-resource.d.ts +61 -0
  51. package/dist/core/capabilities/inspect-resource.js +376 -0
  52. package/dist/core/capabilities/math3d.d.ts +28 -0
  53. package/dist/core/capabilities/math3d.js +88 -0
  54. package/dist/core/capabilities/motion-generation.d.ts +62 -0
  55. package/dist/core/capabilities/motion-generation.js +138 -0
  56. package/dist/core/capabilities/placement-batch.d.ts +102 -0
  57. package/dist/core/capabilities/placement-batch.js +483 -0
  58. package/dist/core/capabilities/placement-math.d.ts +70 -0
  59. package/dist/core/capabilities/placement-math.js +209 -0
  60. package/dist/core/capabilities/placement-script.d.ts +42 -0
  61. package/dist/core/capabilities/placement-script.js +1096 -0
  62. package/dist/core/capabilities/placement.d.ts +485 -0
  63. package/dist/core/capabilities/placement.js +1731 -0
  64. package/dist/core/capabilities/project-context.d.ts +33 -2
  65. package/dist/core/capabilities/project-context.js +87 -4
  66. package/dist/core/capabilities/replace-node.d.ts +91 -0
  67. package/dist/core/capabilities/replace-node.js +423 -0
  68. package/dist/core/capabilities/runtime-control.d.ts +18 -2
  69. package/dist/core/capabilities/runtime-control.js +67 -2
  70. package/dist/core/capabilities/scene-batch.d.ts +63 -0
  71. package/dist/core/capabilities/scene-batch.js +394 -0
  72. package/dist/core/capabilities/scene-readback.d.ts +36 -0
  73. package/dist/core/capabilities/scene-readback.js +54 -0
  74. package/dist/core/capabilities/seeing/args.d.ts +348 -0
  75. package/dist/core/capabilities/seeing/args.js +178 -0
  76. package/dist/core/capabilities/seeing/candidates.d.ts +127 -0
  77. package/dist/core/capabilities/seeing/candidates.js +282 -0
  78. package/dist/core/capabilities/seeing/math.d.ts +134 -0
  79. package/dist/core/capabilities/seeing/math.js +269 -0
  80. package/dist/core/capabilities/seeing/probe.d.ts +62 -0
  81. package/dist/core/capabilities/seeing/probe.js +188 -0
  82. package/dist/core/capabilities/seeing/scoring.d.ts +235 -0
  83. package/dist/core/capabilities/seeing/scoring.js +639 -0
  84. package/dist/core/capabilities/seeing/seeing.d.ts +233 -0
  85. package/dist/core/capabilities/seeing/seeing.js +1341 -0
  86. package/dist/core/capabilities/seeing/shot-store.d.ts +52 -0
  87. package/dist/core/capabilities/seeing/shot-store.js +204 -0
  88. package/dist/core/capabilities/surface-snap-mesh.d.ts +88 -0
  89. package/dist/core/capabilities/surface-snap-mesh.js +425 -0
  90. package/dist/core/capabilities/surface-snap.d.ts +77 -0
  91. package/dist/core/capabilities/surface-snap.js +461 -0
  92. package/dist/core/capabilities/tool-dispatch.js +231 -72
  93. package/dist/core/capabilities/tscn.d.ts +85 -0
  94. package/dist/core/capabilities/tscn.js +391 -0
  95. package/dist/core/capabilities/world-snapshot.d.ts +58 -0
  96. package/dist/core/capabilities/world-snapshot.js +150 -0
  97. package/dist/core/capability-skew.d.ts +5 -5
  98. package/dist/core/capability-skew.js +14 -6
  99. package/dist/core/headless/worker-engine-client.d.ts +1 -1
  100. package/dist/core/headless/worker-engine-client.js +2 -2
  101. package/dist/core/library-read.d.ts +37 -5
  102. package/dist/core/library-read.js +264 -33
  103. package/dist/core/library-search.d.ts +2 -2
  104. package/dist/installer/agent-config.js +5 -3
  105. package/dist/installer/agent-table.d.ts +16 -0
  106. package/dist/installer/agent-table.js +52 -17
  107. package/dist/mcp/server.js +9 -3
  108. package/dist/mcp/tools/asset-tools.js +21 -3
  109. package/dist/mcp/tools/audit-tools.d.ts +23 -0
  110. package/dist/mcp/tools/audit-tools.js +60 -0
  111. package/dist/mcp/tools/debug-tools.js +3 -1
  112. package/dist/mcp/tools/file-tools.js +17 -4
  113. package/dist/mcp/tools/generate-tools.js +74 -66
  114. package/dist/mcp/tools/library-tools.js +2 -0
  115. package/dist/mcp/tools/perception-tools.js +6 -19
  116. package/dist/mcp/tools/placement-tools.d.ts +24 -0
  117. package/dist/mcp/tools/placement-tools.js +91 -0
  118. package/dist/mcp/tools/project-tools.js +18 -15
  119. package/dist/mcp/tools/scene-tools.js +71 -83
  120. package/dist/mcp/tools/seeing-tools.d.ts +24 -0
  121. package/dist/mcp/tools/seeing-tools.js +64 -0
  122. package/dist/mcp/tools/spatial-tools.js +17 -9
  123. package/dist/mcp/tools/visual-tools.js +59 -7
  124. package/gemini-extension.json +26 -4
  125. package/integrations/amp/README.md +1 -1
  126. package/integrations/crush/README.md +1 -1
  127. package/integrations/grok-build/README.md +1 -1
  128. package/integrations/hermes/README.md +1 -1
  129. package/integrations/kimi-code/README.md +1 -1
  130. package/integrations/mistral-vibe/README.md +1 -1
  131. package/integrations/opencode/README.md +1 -1
  132. package/integrations/rovo-dev/README.md +1 -1
  133. package/integrations/vscode-copilot/README.md +1 -1
  134. package/integrations/warp/README.md +1 -1
  135. package/integrations/windsurf/README.md +1 -1
  136. package/library/references/mcp-tools-reference/mcp-tools-reference.md +59 -15
  137. package/library/references/mcp-tools-reference/resource.yaml +1 -1
  138. package/library/references/summer-folder/resource.yaml +1 -1
  139. package/library/references/summer-folder/summer-folder.md +1 -1
  140. package/library/skills/3d-lighting/SKILL.md +1 -1
  141. package/library/skills/README.md +36 -14
  142. package/library/skills/adaptive-music/SKILL.md +1 -1
  143. package/library/skills/agent-playtesting/SKILL.md +1 -1
  144. package/library/skills/ai-characters-in-games/SKILL.md +220 -0
  145. package/library/skills/ai-characters-in-games/resource.yaml +30 -0
  146. package/library/skills/ambient-bed/SKILL.md +1 -1
  147. package/library/skills/animated-loop/SKILL.md +1 -1
  148. package/library/skills/animation-tree/SKILL.md +1 -1
  149. package/library/skills/art-direction/SKILL.md +1 -1
  150. package/library/skills/asset-strategy/SKILL.md +2 -1
  151. package/library/skills/asset-strategy/resource.yaml +2 -1
  152. package/library/skills/audio-direction/SKILL.md +1 -1
  153. package/library/skills/auto-fire-targeting/SKILL.md +1 -1
  154. package/library/skills/brainstorm-game/SKILL.md +1 -1
  155. package/library/skills/brainstorming/SKILL.md +1 -1
  156. package/library/skills/browse-templates/SKILL.md +3 -3
  157. package/library/skills/browse-templates/resource.yaml +1 -1
  158. package/library/skills/camera-rigs/SKILL.md +128 -0
  159. package/library/skills/camera-rigs/resource.yaml +29 -0
  160. package/library/skills/celeste-momentum-platforming/SKILL.md +1 -1
  161. package/library/skills/character-animation-wiring/SKILL.md +1 -1
  162. package/library/skills/character-model/SKILL.md +1 -1
  163. package/library/skills/character-movement/SKILL.md +326 -0
  164. package/library/skills/character-movement/references/default-third-person-controller.gd +201 -0
  165. package/library/skills/character-movement/references/default-third-person-verification-probe.gd +154 -0
  166. package/library/skills/character-movement/references/movement-3d.md +136 -0
  167. package/library/skills/character-movement/references/platformer-feel.md +83 -0
  168. package/library/skills/character-movement/resource.yaml +40 -0
  169. package/library/skills/character-portrait/SKILL.md +1 -1
  170. package/library/skills/cinematic-cutscene/SKILL.md +1 -1
  171. package/library/skills/combat-basics/SKILL.md +159 -0
  172. package/library/skills/combat-basics/references/projectiles-and-aoe.md +100 -0
  173. package/library/skills/combat-basics/resource.yaml +34 -0
  174. package/library/skills/concept-art/SKILL.md +1 -1
  175. package/library/skills/create-asset-sheet/SKILL.md +1 -1
  176. package/library/skills/debug/SKILL.md +1 -1
  177. package/library/skills/debugging-game-feel/SKILL.md +1 -1
  178. package/library/skills/design-level/SKILL.md +1 -1
  179. package/library/skills/design-mechanic/SKILL.md +1 -1
  180. package/library/skills/design-npc/SKILL.md +1 -1
  181. package/library/skills/diagnosing-perf-regressions/SKILL.md +1 -1
  182. package/library/skills/dispatching-parallel-agents/SKILL.md +1 -1
  183. package/library/skills/driving-the-editor-ui/SKILL.md +1 -1
  184. package/library/skills/environment-kit/SKILL.md +1 -1
  185. package/library/skills/export-and-ship/SKILL.md +1 -1
  186. package/library/skills/fabricating-assets/SKILL.md +1 -1
  187. package/library/skills/facial-and-lipsync/SKILL.md +1 -1
  188. package/library/skills/fps-controller/SKILL.md +9 -7
  189. package/library/skills/fps-controller/resource.yaml +4 -1
  190. package/library/skills/game-feel/SKILL.md +1 -1
  191. package/library/skills/gameskill/SKILL.md +1 -1
  192. package/library/skills/gdscript-patterns/SKILL.md +1 -1
  193. package/library/skills/generate-motion/SKILL.md +9 -9
  194. package/library/skills/generate-motion/resource.yaml +2 -1
  195. package/library/skills/godogen-visual-proof-game-generation/SKILL.md +1 -1
  196. package/library/skills/headless-scripting/SKILL.md +1 -1
  197. package/library/skills/in-game-purchases/SKILL.md +254 -0
  198. package/library/skills/in-game-purchases/resource.yaml +29 -0
  199. package/library/skills/instantiate-asset-pack/SKILL.md +1 -1
  200. package/library/skills/investigating-bugs/SKILL.md +1 -1
  201. package/library/skills/lumera-single-image-scene-reconstruction/SKILL.md +1 -1
  202. package/library/skills/make-game/SKILL.md +25 -3
  203. package/library/skills/make-game/references/2d-platformer-polish.md +93 -0
  204. package/library/skills/make-game/references/2d-platformer.md +117 -0
  205. package/library/skills/make-game/references/2d-rpg-content.md +234 -0
  206. package/library/skills/make-game/references/2d-rpg.md +241 -0
  207. package/library/skills/make-game/references/2d-survivors-progression.md +201 -0
  208. package/library/skills/make-game/references/2d-survivors.md +237 -0
  209. package/library/skills/make-game/references/3d-fps-systems.md +216 -0
  210. package/library/skills/make-game/references/3d-fps.md +177 -0
  211. package/library/skills/make-game/references/3d-horror-systems.md +186 -0
  212. package/library/skills/make-game/references/3d-horror.md +201 -0
  213. package/library/skills/make-game/references/3d-third-person-systems.md +220 -0
  214. package/library/skills/make-game/references/3d-third-person.md +215 -0
  215. package/library/skills/make-game/resource.yaml +6 -1
  216. package/library/skills/multiplayer/SKILL.md +150 -0
  217. package/library/skills/multiplayer/resource.yaml +33 -0
  218. package/library/skills/multiplayer-movement/SKILL.md +510 -0
  219. package/library/skills/multiplayer-movement/files.md +501 -0
  220. package/library/skills/multiplayer-movement/resource.yaml +30 -0
  221. package/library/skills/multiplayer-project/SKILL.md +521 -0
  222. package/library/skills/multiplayer-project/files.md +448 -0
  223. package/library/skills/multiplayer-project/resource.yaml +36 -0
  224. package/library/skills/multiplayer-publish/SKILL.md +229 -0
  225. package/library/skills/multiplayer-publish/export-errors.md +89 -0
  226. package/library/skills/multiplayer-publish/resource.yaml +28 -0
  227. package/library/skills/multiplayer-state/SKILL.md +438 -0
  228. package/library/skills/multiplayer-state/files.md +592 -0
  229. package/library/skills/multiplayer-state/resource.yaml +35 -0
  230. package/library/skills/multiplayer-testing/SKILL.md +236 -0
  231. package/library/skills/multiplayer-testing/resource.yaml +39 -0
  232. package/library/skills/music-track/SKILL.md +1 -1
  233. package/library/skills/navigate-summer/SKILL.md +1 -1
  234. package/library/skills/new-project/SKILL.md +1 -1
  235. package/library/skills/organic-model/SKILL.md +1 -1
  236. package/library/skills/pixel-art/SKILL.md +1 -1
  237. package/library/skills/play/SKILL.md +1 -1
  238. package/library/skills/playtesting-a-feature/SKILL.md +1 -1
  239. package/library/skills/procedural-animation/SKILL.md +2 -2
  240. package/library/skills/procedural-animation/resource.yaml +1 -1
  241. package/library/skills/prop-model/SKILL.md +1 -1
  242. package/library/skills/psx-retro-rendering/SKILL.md +1 -1
  243. package/library/skills/realtime-wet-surfaces/SKILL.md +2 -2
  244. package/library/skills/remote-deploy/SKILL.md +1 -1
  245. package/library/skills/retarget/SKILL.md +1 -1
  246. package/library/skills/running-in-the-cloud/SKILL.md +1 -1
  247. package/library/skills/save-load/SKILL.md +156 -0
  248. package/library/skills/save-load/resource.yaml +27 -0
  249. package/library/skills/scene-composition/SKILL.md +1 -1
  250. package/library/skills/scene-hierarchy-design/SKILL.md +1 -1
  251. package/library/skills/scene-scripting/SKILL.md +1 -1
  252. package/library/skills/scene-to-level/SKILL.md +1 -1
  253. package/library/skills/skill-create/SKILL.md +1 -1
  254. package/library/skills/skill-improve/SKILL.md +1 -1
  255. package/library/skills/skill-test/SKILL.md +1 -1
  256. package/library/skills/skintokens-auto-rigging/SKILL.md +1 -1
  257. package/library/skills/skybox-panorama/SKILL.md +1 -1
  258. package/library/skills/sound-effect/SKILL.md +1 -1
  259. package/library/skills/spatial-placement/SKILL.md +134 -3
  260. package/library/skills/spatial-placement/references/kit-placement-tools.md +364 -0
  261. package/library/skills/spatial-placement/resource.yaml +16 -2
  262. package/library/skills/sprite-sheet/SKILL.md +1 -1
  263. package/library/skills/summer-analytics/SKILL.md +147 -0
  264. package/library/skills/summer-analytics/resource.yaml +28 -0
  265. package/library/skills/summer-friends/SKILL.md +226 -0
  266. package/library/skills/summer-friends/resource.yaml +28 -0
  267. package/library/skills/summer-leaderboards/SKILL.md +231 -0
  268. package/library/skills/summer-leaderboards/resource.yaml +30 -0
  269. package/library/skills/summer-match-results/SKILL.md +286 -0
  270. package/library/skills/summer-match-results/resource.yaml +32 -0
  271. package/library/skills/summer-matchmaking/SKILL.md +301 -0
  272. package/library/skills/summer-matchmaking/resource.yaml +32 -0
  273. package/library/skills/summer-parties/SKILL.md +253 -0
  274. package/library/skills/summer-parties/resource.yaml +30 -0
  275. package/library/skills/summer-player-data/SKILL.md +322 -0
  276. package/library/skills/summer-player-data/resource.yaml +30 -0
  277. package/library/skills/summer-store/SKILL.md +271 -0
  278. package/library/skills/summer-store/resource.yaml +29 -0
  279. package/library/skills/summer-world-chat/SKILL.md +195 -0
  280. package/library/skills/summer-world-chat/resource.yaml +30 -0
  281. package/library/skills/summer-world-saves/SKILL.md +284 -0
  282. package/library/skills/summer-world-saves/resource.yaml +29 -0
  283. package/library/skills/text-to-motion/SKILL.md +99 -0
  284. package/library/skills/text-to-motion/prompts-and-controls.md +34 -0
  285. package/library/skills/text-to-motion/resource.yaml +41 -0
  286. package/library/skills/text-to-motion/rigging-for-text-motion.md +54 -0
  287. package/library/skills/tileable-texture/SKILL.md +1 -1
  288. package/library/skills/trailer-shot/SKILL.md +1 -1
  289. package/library/skills/tune-performance/SKILL.md +1 -1
  290. package/library/skills/ui-basics/SKILL.md +10 -1
  291. package/library/skills/ui-graphics/SKILL.md +1 -1
  292. package/library/skills/use-widget-asset/SKILL.md +1 -1
  293. package/library/skills/using-summer/SKILL.md +2 -2
  294. package/library/skills/using-summer/resource.yaml +2 -2
  295. package/library/skills/vehicle-model/SKILL.md +1 -1
  296. package/library/skills/verification-before-completion/SKILL.md +1 -1
  297. package/library/skills/verifying-scenes/SKILL.md +76 -2
  298. package/library/skills/verifying-scenes/resource.yaml +13 -2
  299. package/library/skills/vfx-dissolve/SKILL.md +1 -1
  300. package/library/skills/vfx-fire/SKILL.md +1 -1
  301. package/library/skills/vfx-hit-spark/SKILL.md +1 -1
  302. package/library/skills/vfx-lightning/SKILL.md +1 -1
  303. package/library/skills/vfx-magic-glow/SKILL.md +1 -1
  304. package/library/skills/vfx-muzzle-flash/SKILL.md +1 -1
  305. package/library/skills/vfx-smoke/SKILL.md +1 -1
  306. package/library/skills/vfx-water-ripple/SKILL.md +1 -1
  307. package/library/skills/voice-line/SKILL.md +1 -1
  308. package/library/skills/web-and-touch-input/SKILL.md +38 -0
  309. package/library/skills/web-and-touch-input/resource.yaml +28 -0
  310. package/library/skills/web-compatibility-look/SKILL.md +62 -0
  311. package/library/skills/web-compatibility-look/resource.yaml +30 -0
  312. package/library/skills/world-building-3d/SKILL.md +8 -1
  313. package/library/skills/world-building-3d/references/spatial-tools.md +1 -1
  314. package/library/skills/world-building-3d/resource.yaml +2 -1
  315. package/library/skills/writing-plans/SKILL.md +1 -1
  316. package/library/skills/writing-skills/SKILL.md +1 -1
  317. package/library/templates/3d-lan-multiplayer-starter/resource.yaml +2 -2
  318. package/library/tools/attach-to-surface/resource.yaml +142 -0
  319. package/library/tools/batch/resource.yaml +9 -3
  320. package/library/tools/connect-ports/resource.yaml +120 -0
  321. package/library/tools/connect-signal/resource.yaml +3 -2
  322. package/library/tools/debug-views/resource.yaml +94 -0
  323. package/library/tools/frame-nodes/resource.yaml +104 -0
  324. package/library/tools/frame-shot/resource.yaml +134 -0
  325. package/library/tools/generate-motion/resource.yaml +44 -9
  326. package/library/tools/get-board/resource.yaml +50 -0
  327. package/library/tools/get-project-context/resource.yaml +13 -2
  328. package/library/tools/grep/resource.yaml +77 -0
  329. package/library/tools/inspect-asset/resource.yaml +71 -0
  330. package/library/tools/inspect-node/resource.yaml +9 -2
  331. package/library/tools/inspect-resource/resource.yaml +16 -5
  332. package/library/tools/instantiate-scene/resource.yaml +27 -2
  333. package/library/tools/measure/resource.yaml +96 -0
  334. package/library/tools/place-adjacent/resource.yaml +113 -0
  335. package/library/tools/play/resource.yaml +15 -2
  336. package/library/tools/raycast/resource.yaml +101 -0
  337. package/library/tools/read-file/resource.yaml +36 -2
  338. package/library/tools/read-library/resource.yaml +2 -2
  339. package/library/tools/repeat-along/resource.yaml +129 -0
  340. package/library/tools/replace-node/resource.yaml +11 -5
  341. package/library/tools/scene-audit/resource.yaml +144 -0
  342. package/library/tools/screenshot/resource.yaml +13 -2
  343. package/library/tools/search-assets/resource.yaml +18 -0
  344. package/library/tools/shot-sheet/resource.yaml +110 -0
  345. package/library/tools/snap-to-surface/resource.yaml +4 -1
  346. package/library/tools/world-snapshot/resource.yaml +24 -3
  347. package/library/tools/zoom/resource.yaml +105 -0
  348. package/package.json +1 -1
  349. package/registry/generated/aliases.json +17 -3
  350. package/registry/generated/counts.json +3 -3
  351. package/registry/generated/gemini-extension.json +26 -4
  352. package/registry/generated/index.json +2154 -469
  353. package/registry/generated/marketplace.claude.json +2 -2
  354. package/registry/generated/plugin.claude.json +27 -5
  355. package/registry/generated/plugin.codex.json +28 -6
  356. package/registry/generated/plugin.cursor.json +27 -5
  357. package/registry/generated/plugin.factory.json +27 -5
  358. package/registry/generated/skills-index.md +36 -14
  359. package/registry/generated/skills-registry.json +421 -124
  360. package/registry/generated/templates-registry.json +2 -2
  361. package/library/skills/host-authoritative-state/SKILL.md +0 -332
  362. package/library/skills/host-authoritative-state/resource.yaml +0 -28
  363. package/library/skills/peer-to-peer-multiplayer/SKILL.md +0 -373
  364. package/library/skills/peer-to-peer-multiplayer/resource.yaml +0 -28
  365. package/library/skills/setup-multiplayer/SKILL.md +0 -336
  366. package/library/skills/setup-multiplayer/resource.yaml +0 -28
@@ -0,0 +1,101 @@
1
+ id: tool/raycast
2
+ kind: tool
3
+ version: 1.0.0
4
+ summary: Cast one ray from any point in an open scene — hit node, point and normal; physics first, visual AABB fallback declared. Read-only.
5
+ use_when:
6
+ - finding the wall, floor or ceiling in front of a point and its normal before anything is placed there
7
+ - choosing where a lamp, pipe or sign mounts on a facade
8
+ - checking what a line of sight or a drop line hits
9
+ do_not_use_when:
10
+ - you want clearance around an existing node in every direction — summer_starcast
11
+ - you want to mount the piece in the same call — summer_attach_to_surface casts its own ray
12
+ facets:
13
+ lifecycle:
14
+ - build
15
+ domains:
16
+ - scenes
17
+ - 3d
18
+ - world-building
19
+ modalities:
20
+ - scenes
21
+ compatibility:
22
+ engine: ">=4.6"
23
+ related:
24
+ tools:
25
+ - tool/attach-to-surface
26
+ - tool/starcast
27
+ - tool/snap-to-surface
28
+ skills:
29
+ - skill/spatial-placement
30
+ source: official
31
+ license: MIT
32
+ status: preview
33
+ aliases:
34
+ - summer_raycast
35
+ implementation:
36
+ module: src/mcp/tools/placement-tools.ts
37
+ export: registerPlacementTools
38
+ surfaces:
39
+ mcp:
40
+ tool_name: summer_raycast
41
+ remote: false
42
+ input_schema:
43
+ type: object
44
+ properties:
45
+ scenePath:
46
+ type: string
47
+ minLength: 1
48
+ maxLength: 512
49
+ description: Exact scene, e.g. 'res://levels/street.tscn'. It must be open; physics needs it to be the active tab.
50
+ origin:
51
+ type: array
52
+ minItems: 3
53
+ maxItems: 3
54
+ items:
55
+ type: number
56
+ description: Ray start [x, y, z] in scene (world) space.
57
+ direction:
58
+ type: array
59
+ minItems: 3
60
+ maxItems: 3
61
+ items:
62
+ type: number
63
+ description: Ray direction [x, y, z], non-zero; normalized for you.
64
+ maxDistance:
65
+ type: number
66
+ exclusiveMinimum: 0
67
+ maximum: 10000
68
+ default: 100
69
+ description: Maximum ray length in scene units.
70
+ collisionMask:
71
+ type: integer
72
+ minimum: 0
73
+ maximum: 4294967295
74
+ default: 4294967295
75
+ description: Godot 3D physics layer mask for physics queries.
76
+ collideWithAreas:
77
+ type: boolean
78
+ default: false
79
+ description: Also hit Area3D volumes (physics only).
80
+ evidence:
81
+ type: string
82
+ enum: [auto, physics, visual_aabb]
83
+ default: auto
84
+ description: "auto: physics first, visual AABB fallback when physics finds nothing (declared). physics or visual_aabb: that channel only."
85
+ exclude:
86
+ type: array
87
+ maxItems: 16
88
+ items:
89
+ type: string
90
+ description: Nodes (with descendants) the ray ignores.
91
+ required:
92
+ - scenePath
93
+ - origin
94
+ - direction
95
+ additionalProperties: false
96
+ authority:
97
+ filesystem: false
98
+ editor_mutation: false
99
+ network: false
100
+ credentials: false
101
+ publish: false
@@ -1,10 +1,12 @@
1
1
  id: tool/read-file
2
2
  kind: tool
3
- version: 1.0.2
4
- summary: Read a text file from the engine-bound project and return its full-file sha256 receipt for guarded overwrites.
3
+ version: 1.1.0
4
+ summary: Read a project text file, a line or byte window of it, or the entries of a .json picked by json_path/keys, with the full-file sha256 receipt.
5
5
  use_when:
6
6
  - reading project files through the engine
7
7
  - getting the sha256 required before overwriting a file
8
+ - reading a file too big for one result in pages (offset/limit)
9
+ - '"read the wall_door_b entry of a kit manifest" — json_path / keys instead of the whole file'
8
10
  facets:
9
11
  lifecycle:
10
12
  - build
@@ -18,6 +20,11 @@ license: MIT
18
20
  status: stable
19
21
  aliases:
20
22
  - summer_read_file
23
+ related:
24
+ tools:
25
+ - tool/grep
26
+ - tool/write-file
27
+ - tool/replace-text
21
28
  implementation:
22
29
  module: src/mcp/tools/file-tools.ts
23
30
  export: registerFileTools
@@ -36,6 +43,33 @@ input_schema:
36
43
  exclusiveMinimum: 0
37
44
  maximum: 1000000
38
45
  default: 200000
46
+ description: Most bytes of content to return (UTF-8). Default 200000. A window or JSON selection is cut at this size too.
47
+ offset:
48
+ type: integer
49
+ minimum: 0
50
+ description: Skip this many units (lines by default, see unit) before returning content. 0 = from the start.
51
+ limit:
52
+ type: integer
53
+ exclusiveMinimum: 0
54
+ description: Return at most this many units (lines by default). The result's window.next_offset continues the read.
55
+ unit:
56
+ type: string
57
+ enum:
58
+ - lines
59
+ - bytes
60
+ description: "What offset/limit count: 'lines' (default) or 'bytes' (cut on UTF-8 character boundaries)."
61
+ json_path:
62
+ type: string
63
+ description: "For a JSON file: return only this value, e.g. 'pieces.wall_a', 'pieces[\"a b\"]', 'items[3].size_m'."
64
+ keys:
65
+ type: array
66
+ items:
67
+ type: string
68
+ maxItems: 64
69
+ description: "For a JSON object (the file root or the json_path value): keep only these keys; * and ? wildcards, e.g. ['wall_*']."
70
+ keys_only:
71
+ type: boolean
72
+ description: "For a JSON object: return only its key names (after the keys filter), not the values — a cheap table of contents."
39
73
  required:
40
74
  - path
41
75
  additionalProperties: false
@@ -1,6 +1,6 @@
1
1
  id: tool/read-library
2
2
  kind: tool
3
- version: 1.0.0
3
+ version: 1.1.0
4
4
  summary: Load one library entry by id — a skill's body and metadata, a tool's call recipe, a template's pin, a reference's text — ending in the feedback footer.
5
5
  use_when:
6
6
  - summer_search_library returned an id and you need the entry itself before acting
@@ -48,7 +48,7 @@ input_schema:
48
48
  type: string
49
49
  minLength: 1
50
50
  maxLength: 200
51
- description: The entry id as returned by summer_search_library, <kind>/<slug>, e.g. skill/vfx-water-ripple or tool/screenshot.
51
+ description: The entry id as returned by summer_search_library, <kind>/<slug>, e.g. skill/vfx-water-ripple or tool/screenshot. A file an entry links loads by <entry id>/<link as written>, e.g. skill/spatial-placement/references/kit-placement-tools.md; the linked files list at the end of a body gives each id.
52
52
  part:
53
53
  type: string
54
54
  enum:
@@ -0,0 +1,129 @@
1
+ id: tool/repeat-along
2
+ kind: tool
3
+ version: 1.0.0
4
+ summary: Instance copies of one scene along a line in one call — clamps every 0.45 m, braces, fence posts, window rows — and get the created node paths back.
5
+ use_when:
6
+ - placing wall clamps, gutter braces or duct braces at a fixed spacing along a run
7
+ - a row of fence posts, bollards, lamps or window modules
8
+ - filling a line with as many copies as fit at a spacing
9
+ do_not_use_when:
10
+ - scattering copies over an area or a grid — summer_run_script with ctx.scatter / ctx.grid
11
+ - spacing nodes that already exist — summer_align_distribute_3d
12
+ facets:
13
+ lifecycle:
14
+ - build
15
+ domains:
16
+ - scenes
17
+ - 3d
18
+ - world-building
19
+ - level-design
20
+ modalities:
21
+ - scenes
22
+ compatibility:
23
+ engine: ">=4.6"
24
+ related:
25
+ tools:
26
+ - tool/instantiate-scene
27
+ - tool/batch
28
+ - tool/attach-to-surface
29
+ skills:
30
+ - skill/spatial-placement
31
+ source: official
32
+ license: MIT
33
+ status: preview
34
+ aliases:
35
+ - summer_repeat_along
36
+ implementation:
37
+ module: src/mcp/tools/placement-tools.ts
38
+ export: registerPlacementTools
39
+ surfaces:
40
+ mcp:
41
+ tool_name: summer_repeat_along
42
+ remote: false
43
+ input_schema:
44
+ type: object
45
+ properties:
46
+ scenePath:
47
+ type: string
48
+ minLength: 1
49
+ maxLength: 512
50
+ description: Exact scene, e.g. 'res://levels/street.tscn'.
51
+ template:
52
+ type: string
53
+ minLength: 1
54
+ maxLength: 512
55
+ description: Scene to instance for every copy (.tscn, .scn, .glb, .gltf).
56
+ parent:
57
+ type: string
58
+ minLength: 1
59
+ maxLength: 256
60
+ description: Parent for the copies; start/end/direction are in this parent's local space.
61
+ start:
62
+ type: array
63
+ minItems: 3
64
+ maxItems: 3
65
+ items:
66
+ type: number
67
+ description: First copy's position [x, y, z].
68
+ end:
69
+ type: array
70
+ minItems: 3
71
+ maxItems: 3
72
+ items:
73
+ type: number
74
+ description: Line end. With spacing as many copies as fit; with count, count copies from start to end.
75
+ direction:
76
+ type: array
77
+ minItems: 3
78
+ maxItems: 3
79
+ items:
80
+ type: number
81
+ description: Instead of end, the row direction; needs count and spacing.
82
+ count:
83
+ type: integer
84
+ minimum: 1
85
+ maximum: 64
86
+ description: Number of copies.
87
+ spacing:
88
+ type: number
89
+ exclusiveMinimum: 0
90
+ maximum: 1000
91
+ description: Distance between neighbouring copies' origins.
92
+ align:
93
+ type: string
94
+ enum: [start, center, end]
95
+ default: start
96
+ description: With end + spacing, where the leftover length goes.
97
+ rotationDegrees:
98
+ type: array
99
+ minItems: 3
100
+ maxItems: 3
101
+ items:
102
+ type: number
103
+ description: rotation_degrees for every copy.
104
+ scale:
105
+ type: array
106
+ minItems: 3
107
+ maxItems: 3
108
+ items:
109
+ type: number
110
+ description: scale for every copy.
111
+ namePrefix:
112
+ type: string
113
+ minLength: 1
114
+ maxLength: 64
115
+ description: Copies are named <namePrefix>_<n> (default the template file name).
116
+ required:
117
+ - scenePath
118
+ - template
119
+ - parent
120
+ - start
121
+ additionalProperties: false
122
+ authority:
123
+ filesystem: true
124
+ editor_mutation: true
125
+ network: false
126
+ credentials: false
127
+ publish: false
128
+ evidence_checks:
129
+ - scene-valid
@@ -1,11 +1,12 @@
1
1
  id: tool/replace-node
2
2
  kind: tool
3
- version: 1.0.2
4
- summary: Replace a node with a different type or scene, preserving its tree position and children.
3
+ version: 1.1.0
4
+ summary: Replace a node with another scene or type, keeping its parent, index, name, transform and children, and verify the saved scene holds it.
5
5
  use_when:
6
6
  - swapping a placeholder for a prefab or changing a body type
7
7
  - '"turn this StaticBody3D into a RigidBody3D but keep its children"'
8
8
  - swapping the placeholder cube for the real prefab in place
9
+ - swapping one kit piece for another (a wall host for a door host) without hand-copying its transform
9
10
  do_not_use_when:
10
11
  - adding alongside instead of replacing — summer_add_node / summer_instantiate_scene
11
12
  facets:
@@ -21,6 +22,11 @@ license: MIT
21
22
  status: stable
22
23
  aliases:
23
24
  - summer_replace_node
25
+ related:
26
+ tools:
27
+ - tool/remove-node
28
+ - tool/instantiate-scene
29
+ - tool/read-file
24
30
  implementation:
25
31
  module: src/mcp/tools/scene-tools.ts
26
32
  export: registerSceneTools
@@ -36,13 +42,13 @@ input_schema:
36
42
  description: Target scene path, e.g. 'res://main.tscn'
37
43
  path:
38
44
  type: string
39
- description: Node path to replace
45
+ description: Node path to replace, e.g. './House3/Front/G_f2_door'
40
46
  type:
41
47
  type: string
42
- description: New node type, e.g. 'RigidBody3D'
48
+ description: New node type, e.g. 'RigidBody3D'. Give exactly one of type or scene.
43
49
  scene:
44
50
  type: string
45
- description: Scene to replace with, e.g. 'res://enemies/boss.tscn'
51
+ description: Scene or model to replace with, e.g. 'res://kit/wall_door_02.tscn'. Give exactly one of type or scene.
46
52
  required:
47
53
  - scenePath
48
54
  - path
@@ -0,0 +1,144 @@
1
+ id: tool/scene-audit
2
+ kind: tool
3
+ version: 1.3.0
4
+ summary: 'Read-only pass over any 3D scene, from geometry and materials: see-through holes, exposed edges, open pipe ends, floor gaps, clipping props.'
5
+ use_when:
6
+ - 'after each build stage of a 3D level or kit-built street: "what is wrong with this scene and where exactly?"'
7
+ - 'before calling a scene done: find see-through walls (an insert narrower than its frame), floor tiles with holes, props floating, sunk or poking into walls'
8
+ - 'facade bands with an open end or a gap, seams between modules and modules out of line seen from the street; a duct or downpipe with a missing elbow, coupler or section'
9
+ - 'the same look items keep coming back: accept the ones you judged fine (accept:[{key, reason}]) so later audits count them but hide them until their evidence changes'
10
+ - 'finding props turned the wrong way against a wall (a bench standing perpendicular to it), stretched texture strips, duplicated pieces'
11
+ - 'flickering faces: coplanar overlaps anywhere (props, roofs, ledges, inserts against hosts, decals, two surfaces of one mesh), judged by the 24-bit depth precision at the view distance'
12
+ - 'bare ground at wall bases, an underlay plane covering drain channels, buried props: floor_gap and sunken say which surface a ray hits first'
13
+ - 'a lit city scene in the Compatibility renderer: meshes lit by more than the per-object light limit, hard spot rims'
14
+ do_not_use_when:
15
+ - 'you already know the spot: look at it with summer_frame_nodes or summer_zoom, measure it with summer_raycast or summer_measure'
16
+ - 'the question is gameplay or reachability: summer_navigation_probe, summer_play'
17
+ - 'the scene has unsaved edits you want audited: it reads the SAVED file, so save first'
18
+ - 'requires ScenePreview (any current Summer Engine); an engine without it answers engine_lacks_op'
19
+ facets:
20
+ lifecycle:
21
+ - build
22
+ domains:
23
+ - verification
24
+ - scenes
25
+ - 3d
26
+ - level-design
27
+ modalities:
28
+ - scenes
29
+ compatibility:
30
+ engine: ">=4.6"
31
+ related:
32
+ tools:
33
+ - tool/frame-nodes
34
+ - tool/zoom
35
+ - tool/shot-sheet
36
+ - tool/raycast
37
+ - tool/measure
38
+ - tool/inspect-asset
39
+ skills:
40
+ - skill/verifying-scenes
41
+ - skill/spatial-placement
42
+ source: official
43
+ license: MIT
44
+ status: preview
45
+ aliases:
46
+ - summer_scene_audit
47
+ implementation:
48
+ module: src/mcp/tools/audit-tools.ts
49
+ export: registerAuditTools
50
+ surfaces:
51
+ mcp:
52
+ tool_name: summer_scene_audit
53
+ remote: false
54
+ input_schema:
55
+ type: object
56
+ properties:
57
+ scenePath:
58
+ type: string
59
+ description: Scene to audit, e.g. "res://levels/town.tscn" (the SAVED file). Omit for the scene open in the editor.
60
+ checks:
61
+ type: array
62
+ items:
63
+ type: string
64
+ enum:
65
+ - through_hole
66
+ - floor_gap
67
+ - floating
68
+ - sunken
69
+ - interpenetration
70
+ - exposed_edge
71
+ - open_fixture_end
72
+ - orientation
73
+ - uv_stretch
74
+ - duplicate
75
+ - z_fight
76
+ - depth_step
77
+ - lights
78
+ - transform
79
+ - resource
80
+ minItems: 1
81
+ maxItems: 15
82
+ description: Only these checks (default all 15). Fewer checks run faster (duplicate, lights, transform and resource need no physics); rerun a check budget_ms left partial on its own.
83
+ root:
84
+ type: string
85
+ description: Report only issues under this node (subtree), e.g. "Block3". The whole scene is still loaded, so walls and floors outside it count as surroundings.
86
+ min_severity:
87
+ type: string
88
+ enum:
89
+ - error
90
+ - warn
91
+ - look
92
+ description: '"error" (only errors), "warn" (errors and warnings) or "look" (default: everything, including look items that only ask you to look).'
93
+ offset:
94
+ type: integer
95
+ minimum: 0
96
+ maximum: 100000
97
+ description: Skip this many issues of the sorted, filtered list (paging; the result names the next offset).
98
+ limit:
99
+ type: integer
100
+ minimum: 1
101
+ maximum: 50
102
+ description: Issues per page (default 15, max 50). The result is capped at 5 KB; a page that does not fit is cut and says so.
103
+ budget_ms:
104
+ type: integer
105
+ minimum: 250
106
+ maximum: 60000
107
+ description: 'Editor time for the whole audit (default 3000 ms). Each check gets a share weighted by its usual cost (unused time passes on); a check past its share stops and counts.<check>.partial gives the share it covered. Under load, rerun the partial checks with checks or a larger budget.'
108
+ accept:
109
+ type: array
110
+ maxItems: 50
111
+ items:
112
+ type: object
113
+ properties:
114
+ key:
115
+ type: string
116
+ minLength: 8
117
+ maxLength: 360
118
+ description: The issue's key from a previous result (issues[].key).
119
+ reason:
120
+ type: string
121
+ minLength: 3
122
+ maxLength: 200
123
+ description: Why it is fine, e.g. "coplanar faces hidden behind a sign".
124
+ required:
125
+ - key
126
+ - reason
127
+ additionalProperties: false
128
+ description: 'Accept look or warn items you judged fine (up to 50 per call): [{key, reason}] with keys from this scene''s issues. Written to res://.summer/audit-accept.json (the only file the audit writes), then counted (counts.<check>.accepted) but hidden on every later audit until their evidence changes materially (severity rises, or the measured size moves by over 25%): then they show again with accept_stale. Errors cannot be accepted.'
129
+ show_accepted:
130
+ type: boolean
131
+ description: 'List accepted items too (each with its accepted reason). Default false: hidden, only counted.'
132
+ render:
133
+ type: string
134
+ enum:
135
+ - sheet
136
+ - none
137
+ description: '"sheet": also return ONE inline image of the first 6 issues of this page framed up close from their open side, each tile labelled with its issue number. Default "none".'
138
+ additionalProperties: false
139
+ authority:
140
+ filesystem: true
141
+ editor_mutation: false
142
+ network: false
143
+ credentials: false
144
+ publish: false
@@ -1,6 +1,6 @@
1
1
  id: tool/screenshot
2
2
  kind: tool
3
- version: 1.1.2
3
+ version: 1.2.0
4
4
  summary: Capture a frame from the editor viewport, an offscreen scene render (fixed or bookmarked pose, numbered labels), or the running game, as an actual image.
5
5
  use_when:
6
6
  - visually verifying layout, scale, framing, or runtime state
@@ -8,11 +8,13 @@ use_when:
8
8
  - '"did the model land where I put it?" / "does the UI overlap?"'
9
9
  - '"take a screenshot of the game" / "screenshot the running game" — target "game" grabs the live frame'
10
10
  - before/after frames from the SAME viewpoint (framing "bookmark" / "free"), or an annotated screenshot with numbered labels mapped to node paths (marks)
11
+ - '"what changed since the last render of this view?" — framing "bookmark" with compare_previous returns previous | now | difference map in one image'
11
12
  do_not_use_when:
12
13
  - verifying lighting, mood, or environment-dependent materials with a preset framing (iso/top/front/...) of the scene target - those replace the WorldEnvironment with a flat preview; use framing "camera" (the scene's own Camera3D + real environment), a fixed pose ("free" / "bookmark", real environment too), or the game target instead
13
14
  - capturing motion or a sequence of frames (use a RunVerification probe's save_frame)
14
15
  - 'treating a uniformly black or grey "viewport" frame as evidence about lights, cameras, or content - the editor had not redrawn its viewport texture yet; the tool recaptures once and says so in the caption, otherwise recapture yourself'
15
16
  - saving or listing the viewpoints themselves — summer_camera_bookmark
17
+ - fitting a camera to nodes with the real environment, many views in one image, debug views, zooms or automatic framing — summer_frame_nodes, summer_shot_sheet, summer_debug_views, summer_zoom, summer_frame_shot
16
18
  facets:
17
19
  lifecycle:
18
20
  - build
@@ -25,6 +27,9 @@ related:
25
27
  tools:
26
28
  - tool/camera-bookmark
27
29
  - tool/world-snapshot
30
+ - tool/frame-nodes
31
+ - tool/shot-sheet
32
+ - tool/frame-shot
28
33
  skills:
29
34
  - skill/verifying-scenes
30
35
  source: official
@@ -95,12 +100,18 @@ input_schema:
95
100
  description: framing:"free" / "bookmark" only. Vertical field of view in degrees (1..179; default 60 for "free", the bookmark's own for "bookmark").
96
101
  marks:
97
102
  type: boolean
98
- description: target:"scene" only, 3D scenes. Draw a Set-of-Mark overlay - numbered tags + box outlines over the largest visible VisualInstance3D nodes (lights excluded), ranked by projected screen area. The caption lists label -> node path (scene-root-relative) so you can name what you see. Works with every framing. 2D scenes return marks_unsupported. Default false.
103
+ description: 'target:"scene" only, 3D scenes. Draw a Set-of-Mark overlay - numbered tags + box outlines over the largest visible VisualInstance3D nodes (lights excluded), ranked by projected screen area. The caption lists label -> node path (scene-root-relative) so you can name what you see, and an occlusion test (centre + 4 bounds points from the rendered camera) notes "(hidden behind <path>)" on labels whose node is hidden - ignore those. Works with every framing. 2D scenes return marks_unsupported. Default false.'
99
104
  max_marks:
100
105
  type: integer
101
106
  minimum: 1
102
107
  maximum: 128
103
108
  description: marks:true only. Cap on numbered labels (engine default 32, at most 128). The caption says when the cap truncated the list.
109
+ compare_previous:
110
+ type: boolean
111
+ description: 'framing:"bookmark" only. Return ONE image of [previous render | now | difference map] for the bookmark, with the share of changed pixels (summer_shot_sheet compare_previous with this one bookmark); this render then replaces the bookmark''s previous image in res://.summer/shots/<bookmark>.jpg. A plain bookmark render (no marks, at most 1024 px) only creates that image when it is missing and never overwrites the compare baseline.'
112
+ update_previous:
113
+ type: boolean
114
+ description: 'framing:"bookmark" only. Replace the bookmark''s previous image (its compare baseline) with this clean render. Default false: an existing baseline is kept.'
104
115
  additionalProperties: false
105
116
  authority:
106
117
  filesystem: true
@@ -56,6 +56,24 @@ input_schema:
56
56
  - all
57
57
  default: library
58
58
  description: "Where to search: library (public 25k+), my_assets (your generated assets), all"
59
+ style:
60
+ type: string
61
+ enum:
62
+ - realistic
63
+ - stylized-lowpoly
64
+ - toon
65
+ - pixel
66
+ - hand-painted
67
+ - voxel
68
+ description: "The game's one art direction: clashing styles are left out, matches come first"
69
+ preview:
70
+ type: boolean
71
+ default: false
72
+ description: Also return one picture of the first 9 results, numbered in order, to see them before importing
73
+ includeCommunity:
74
+ type: boolean
75
+ default: false
76
+ description: Also include people's own public AI generations
59
77
  required:
60
78
  - query
61
79
  additionalProperties: false
@@ -0,0 +1,110 @@
1
+ id: tool/shot-sheet
2
+ kind: tool
3
+ version: 1.0.0
4
+ summary: 'Render N bookmarks and/or poses into one labelled grid image with real lighting; compare each bookmark with its previous render (difference map).'
5
+ use_when:
6
+ - 'seeing every hero view of an environment at once after a change, in one image'
7
+ - '"did this change make it better?" — compare_previous puts previous, now and a difference map side by side per bookmark; plain sheets in between never reset that baseline'
8
+ - 'rendering several poses in one debug view (lighting, unshaded, normals, overdraw, wireframe) for a quick sweep'
9
+ do_not_use_when:
10
+ - 'one pose in all debug views — summer_debug_views'
11
+ - 'motion or a frame sequence — a RunVerification probe''s save_frame'
12
+ - 'requires ScenePreview (any current Summer Engine); bookmarks require the camera bookmark ops (0.5.66 or newer)'
13
+ facets:
14
+ lifecycle:
15
+ - build
16
+ domains:
17
+ - verification
18
+ - scenes
19
+ - 3d
20
+ modalities:
21
+ - scenes
22
+ compatibility:
23
+ engine: ">=4.6"
24
+ related:
25
+ tools:
26
+ - tool/camera-bookmark
27
+ - tool/frame-shot
28
+ - tool/debug-views
29
+ - tool/zoom
30
+ - tool/screenshot
31
+ skills:
32
+ - skill/verifying-scenes
33
+ source: official
34
+ license: MIT
35
+ status: preview
36
+ aliases:
37
+ - summer_shot_sheet
38
+ implementation:
39
+ module: src/mcp/tools/seeing-tools.ts
40
+ export: registerSeeingTools
41
+ surfaces:
42
+ mcp:
43
+ tool_name: summer_shot_sheet
44
+ remote: false
45
+ input_schema:
46
+ type: object
47
+ properties:
48
+ scenePath:
49
+ type: string
50
+ description: Scene to look at, e.g. "res://levels/town.tscn" (the SAVED file). Omit for the scene open in the editor.
51
+ shots:
52
+ type: array
53
+ items:
54
+ type: object
55
+ properties:
56
+ bookmark_name:
57
+ type: string
58
+ description: Pose from a camera bookmark (summer_camera_bookmark). Use INSTEAD of camera_position/camera_look_at.
59
+ camera_position:
60
+ type: string
61
+ description: 'Explicit pose: camera position, "Vector3(x, y, z)". Goes with camera_look_at.'
62
+ camera_look_at:
63
+ type: string
64
+ description: 'Explicit pose: point the camera looks at, "Vector3(x, y, z)".'
65
+ fov:
66
+ type: number
67
+ description: "Vertical field of view in degrees (1..179). Default: the bookmark's own, or 60."
68
+ label:
69
+ type: string
70
+ description: "Tile label (1-64 printable characters, no quotes, backslashes or $). Default: the bookmark name or 'shot N'."
71
+ additionalProperties: false
72
+ minItems: 1
73
+ maxItems: 12
74
+ description: 1-12 shots, each a bookmark_name OR camera_position + camera_look_at (+ fov), with an optional label. Rendered in this order, left to right, top to bottom.
75
+ view:
76
+ type: string
77
+ enum:
78
+ - beauty
79
+ - lighting
80
+ - unshaded
81
+ - normals
82
+ - overdraw
83
+ - wireframe
84
+ description: '"beauty" (default: real environment, lights, fog, tonemap), "lighting" (light only), "unshaded" (albedo/texture only), "normals" (world normals, x red y green z blue), "overdraw", "wireframe".'
85
+ compare_previous:
86
+ type: boolean
87
+ description: 'For bookmark shots: one row per bookmark of [previous render | now | difference map], with the share of changed pixels in the caption. The previous render is the bookmark''s slot in res://.summer/shots/; this render replaces it (it is the next baseline).'
88
+ update_previous:
89
+ type: boolean
90
+ description: 'Replace each bookmark''s previous image (its compare baseline) with this render without comparing. Default false: a sheet without compare_previous only creates a missing slot and never overwrites an existing baseline.'
91
+ max_size:
92
+ type: integer
93
+ minimum: 64
94
+ maximum: 4096
95
+ description: Longest edge of the returned JPEG in pixels (default 1536). Bigger costs more context; up to 4096 for detail work on a PC.
96
+ aspect:
97
+ type: number
98
+ description: Frame width/height (default 1.7778 = 16:9). Every tile uses it.
99
+ save_to:
100
+ type: string
101
+ description: Also write the returned image to res://.summer/shots/saved/<name>.jpg (1-64 of A-Z a-z 0-9 _ -; needs max_size <= 1024). Nothing is written without it, except one previous-image slot per rendered bookmark (created when missing; replaced only by compare_previous or update_previous).
102
+ required:
103
+ - shots
104
+ additionalProperties: false
105
+ authority:
106
+ filesystem: true
107
+ editor_mutation: false
108
+ network: false
109
+ credentials: false
110
+ publish: false