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
@@ -1,14 +1,16 @@
1
1
  id: tool/generate-motion
2
2
  kind: tool
3
- version: 1.0.2
4
- summary: Generate a curated mocap animation clip for a Summer-rigged humanoid; costs credits, so confirm with the user first.
3
+ version: 1.1.0
4
+ summary: Generate animation clips for a rigged model — curated humanoid mocap by name, or text-to-motion on any of your own rigs; costs credits, so confirm first.
5
5
  use_when:
6
6
  - adding idle, walk, run, or combat clips to a rigged character
7
7
  - '"make my character walk / run / swing a sword"'
8
8
  - '"I need an idle animation for the rigged NPC"'
9
+ - a custom action the curated library lacks — nod, bow, shrug, wave with the right arm
10
+ - animating a non-humanoid rig — a talking flower, animal, creature, turret or prop
9
11
  do_not_use_when:
10
- - the target model was not rigged by the Summer pipeline
11
- - the motion is not humanoid (doors, vehicles, cameras) — animate with a script or AnimationPlayer
12
+ - the target model is not rigged — rig it first
13
+ - the motion is mechanical (doors, vehicles, cameras) — animate with a script or AnimationPlayer
12
14
  facets:
13
15
  lifecycle:
14
16
  - build
@@ -34,27 +36,60 @@ input_schema:
34
36
  properties:
35
37
  rigAssetId:
36
38
  type: string
37
- description: Asset ID of a rigged character (from summer_generate_3d with options.rig=true)
39
+ description: "Asset ID of the rigged 3d_model. meshy-library: a Summer-rigged humanoid (summer_generate_3d with options.rig=true). text-to-motion: any of your own rigged GLB/FBX models"
38
40
  backend:
39
41
  type: string
40
42
  enum:
41
43
  - meshy-library
44
+ - text-to-motion
42
45
  default: meshy-library
43
- description: "Backend: meshy-library (only option today)"
46
+ description: "meshy-library (default): curated humanoid mocap clip by motionName. text-to-motion: custom clips from text prompts on any of your own rigs (humanoid, animal, creature, plant, prop)"
44
47
  motionName:
45
48
  type: string
46
- description: "Curated motion name: walk, run, attack_sword, idle, jump, etc."
49
+ description: "meshy-library only (required there): curated motion name — idle, walk, run, jump, attack, or an exact library name"
50
+ prompt:
51
+ type: string
52
+ minLength: 1
53
+ maxLength: 300
54
+ description: "text-to-motion: one action as a verb phrase, e.g. 'waves hello with the right arm' (1-300 chars). Shorthand for prompts: [prompt]"
55
+ prompts:
56
+ type: array
57
+ items:
58
+ type: string
59
+ minLength: 1
60
+ maxLength: 300
61
+ minItems: 1
62
+ maxItems: 8
63
+ description: "text-to-motion: 1-8 actions, one clip each (each 1-300 chars)"
64
+ takes:
65
+ type: integer
66
+ minimum: 1
67
+ maximum: 4
68
+ description: "text-to-motion: variations per prompt, 1-4 (default 1). Every take is a billed clip"
69
+ lockJoints:
70
+ type: array
71
+ items:
72
+ type: string
73
+ minLength: 1
74
+ description: "text-to-motion: bone names held still, e.g. ['Hips','Spine'] for a rooted plant. Never on characters that walk or jump"
75
+ cfgScale:
76
+ type: number
77
+ minimum: 1.5
78
+ maximum: 8
79
+ description: "text-to-motion: prompt adherence 1.5-8 (default 3); 5 for bigger, clearer gestures on stylized rigs"
80
+ idempotencyKey:
81
+ type: string
82
+ description: Stable retry key so the same logical request is not billed or queued twice
47
83
  wait:
48
84
  type: boolean
49
85
  default: true
50
- description: Wait for completion (default true, up to 5 min). Set false to get jobId immediately.
86
+ description: Wait for completion (default true, up to 10 min). Set false to get jobId immediately.
51
87
  options:
52
88
  type: object
53
89
  additionalProperties: {}
54
90
  description: Backend-specific passthrough
55
91
  required:
56
92
  - rigAssetId
57
- - motionName
58
93
  additionalProperties: false
59
94
  authority:
60
95
  filesystem: false
@@ -0,0 +1,50 @@
1
+ id: tool/get-board
2
+ kind: tool
3
+ version: 1.0.0
4
+ summary: Read the person's approved planning board (look, characters, place, storyboard, picks) with the look and picked cards as images to compare screenshots against.
5
+ use_when:
6
+ - starting a build step for a game made from a planning board
7
+ - '"does the game look like the board?"'
8
+ - comparing a screenshot with the chosen look and picked cards
9
+ do_not_use_when:
10
+ - the game was not made from a planning board (no project id in the brief)
11
+ facets:
12
+ lifecycle:
13
+ - build
14
+ domains:
15
+ - game-design
16
+ - verification
17
+ compatibility:
18
+ engine: ">=4.6"
19
+ source: official
20
+ license: MIT
21
+ status: stable
22
+ aliases:
23
+ - summer_get_board
24
+ implementation:
25
+ module: src/mcp/tools/generate-tools.ts
26
+ export: registerGenerateTools
27
+ surfaces:
28
+ mcp:
29
+ tool_name: summer_get_board
30
+ remote: true
31
+ input_schema:
32
+ type: object
33
+ properties:
34
+ project:
35
+ type: string
36
+ description: The game's project id (given in your build brief)
37
+ pictures:
38
+ type: boolean
39
+ description: Also return the look and the picked cards as images (default true)
40
+ required:
41
+ - project
42
+ additionalProperties: false
43
+ authority:
44
+ filesystem: false
45
+ editor_mutation: false
46
+ network: true
47
+ credentials: false
48
+ publish: false
49
+ evidence_checks:
50
+ - none
@@ -1,10 +1,11 @@
1
1
  id: tool/get-project-context
2
2
  kind: tool
3
- version: 1.1.0
4
- summary: Bind to the open project and return engine health, project name and path, current and main scene, trimmed settings, the template pin, and memory summary.
3
+ version: 2.0.0
4
+ summary: "Bind to the open project and return a compact context (project, current and main scene, health summary, template pin, memory, warnings); tree on request."
5
5
  use_when:
6
6
  - first call in every fresh session, to avoid guessing scene filenames
7
7
  - deliberately rebinding after the engine switched projects
8
+ - reading the open scene's tree, the engine's op list or project settings (include)
8
9
  facets:
9
10
  lifecycle:
10
11
  - build
@@ -28,6 +29,16 @@ surfaces:
28
29
  input_schema:
29
30
  type: object
30
31
  properties:
32
+ include:
33
+ type: array
34
+ items:
35
+ type: string
36
+ enum:
37
+ - scene_tree
38
+ - capabilities
39
+ - settings
40
+ maxItems: 3
41
+ description: "Heavy blocks to add to the compact default: 'scene_tree' (the open scene's node tree, up to 200 nodes), 'capabilities' (the engine's full op/capability lists), 'settings' (project settings, curated groups). settingsPrefix/settingsPrefixes imply 'settings'."
31
42
  settingsPrefix:
32
43
  type: string
33
44
  description: Only return project settings whose key starts with this prefix, e.g. 'audio/' or 'application/config/'. Omit for the curated default set.
@@ -0,0 +1,77 @@
1
+ id: tool/grep
2
+ kind: tool
3
+ version: 1.0.0
4
+ summary: Search project files with a regex (ripgrep through the engine) and get file, line and text per match, with optional context lines and a result cap.
5
+ use_when:
6
+ - finding where something is in big project files without reading them whole
7
+ - '"which entries of a big JSON file list fits_into?" / "every mount_side entry"'
8
+ - '"where is _on_door_body_entered defined?" / "which scenes use this material?"'
9
+ do_not_use_when:
10
+ - you already know the file and want its content — summer_read_file (offset/limit, json_path)
11
+ - searching the Summer library — summer_search_library
12
+ facets:
13
+ lifecycle:
14
+ - build
15
+ domains:
16
+ - file
17
+ - project
18
+ compatibility:
19
+ engine: ">=4.6"
20
+ related:
21
+ tools:
22
+ - tool/read-file
23
+ source: official
24
+ license: MIT
25
+ status: preview
26
+ aliases:
27
+ - summer_grep
28
+ implementation:
29
+ module: src/mcp/tools/file-tools.ts
30
+ export: registerFileTools
31
+ surfaces:
32
+ mcp:
33
+ tool_name: summer_grep
34
+ remote: false
35
+ input_schema:
36
+ type: object
37
+ properties:
38
+ pattern:
39
+ type: string
40
+ minLength: 1
41
+ description: Ripgrep regular expression, e.g. '"fits_into"' or 'func _on_.*_pressed'
42
+ path:
43
+ type: string
44
+ description: "Search scope: a res:// directory or file, e.g. 'res://kit/' or 'res://kit/kit_manifest.json'. Default: the whole project."
45
+ glob:
46
+ type: string
47
+ description: File filter passed to ripgrep --glob, e.g. '*.gd', '**/*.json', '!addons/**'. A glob also reaches files .gitignore would skip.
48
+ case_sensitive:
49
+ type: boolean
50
+ description: "Match case exactly (default false: case-insensitive)."
51
+ context_lines:
52
+ type: integer
53
+ minimum: 0
54
+ maximum: 10
55
+ description: Lines of context before and after each match (0-10, default 0).
56
+ max_results:
57
+ type: integer
58
+ exclusiveMinimum: 0
59
+ maximum: 500
60
+ description: Most matches to return (default 50, max 500). truncated:true means there were more.
61
+ max_line_chars:
62
+ type: integer
63
+ minimum: 40
64
+ maximum: 2000
65
+ description: Clip every returned line to this many characters (default 240).
66
+ multiline:
67
+ type: boolean
68
+ description: Let the pattern span lines (ripgrep -U --multiline-dotall).
69
+ required:
70
+ - pattern
71
+ additionalProperties: false
72
+ authority:
73
+ filesystem: false
74
+ editor_mutation: false
75
+ network: false
76
+ credentials: false
77
+ publish: false
@@ -0,0 +1,71 @@
1
+ id: tool/inspect-asset
2
+ kind: tool
3
+ version: 1.0.0
4
+ summary: Measure a 3D asset file without adding it to a scene — AABB, origin, meshes, largest planar faces, open pipe ends, Marker3D anchors, collision shapes.
5
+ use_when:
6
+ - learning a kit piece's real size, origin and which way it faces before placing it
7
+ - finding a piece's front and back planes (largest planar faces with their normals) or its pipe and duct ends (open boundary loops)
8
+ - reading the Marker3D anchors or collision shapes a kit piece ships with
9
+ do_not_use_when:
10
+ - the piece is already in the scene and you need what surrounds it — summer_starcast
11
+ - you need the measurement between two placed nodes — summer_measure
12
+ facets:
13
+ lifecycle:
14
+ - build
15
+ domains:
16
+ - scenes
17
+ - 3d
18
+ - world-building
19
+ - assets
20
+ modalities:
21
+ - scenes
22
+ compatibility:
23
+ engine: ">=4.6"
24
+ related:
25
+ tools:
26
+ - tool/instantiate-scene
27
+ - tool/attach-to-surface
28
+ - tool/connect-ports
29
+ - tool/starcast
30
+ skills:
31
+ - skill/spatial-placement
32
+ source: official
33
+ license: MIT
34
+ status: preview
35
+ aliases:
36
+ - summer_inspect_asset
37
+ implementation:
38
+ module: src/mcp/tools/placement-tools.ts
39
+ export: registerPlacementTools
40
+ surfaces:
41
+ mcp:
42
+ tool_name: summer_inspect_asset
43
+ remote: false
44
+ input_schema:
45
+ type: object
46
+ properties:
47
+ path:
48
+ type: string
49
+ minLength: 1
50
+ maxLength: 512
51
+ description: Asset to measure, e.g. 'res://kit/facade/wall_single_01.tscn' (.tscn, .scn, .glb, .gltf, .res, .tres, .mesh or .obj). Loaded and instanced off-scene, never added to an open scene.
52
+ maxTriangles:
53
+ type: integer
54
+ minimum: 100
55
+ maximum: 300000
56
+ default: 60000
57
+ description: Triangle budget (100-300000) for the face and open-loop analysis (AABBs and counts are always complete). summary.warnings says when the budget cut the analysis and which budget covers the whole mesh.
58
+ detail:
59
+ type: string
60
+ enum: [summary, full]
61
+ default: summary
62
+ description: "summary: open_loops lists only port-like loops (radius over 2 cm with a partner loop facing another way, or the one opening of an end piece on its bounding-box face), or none. full: every open loop, including the outline of flat sheets. Every loop has a stable id ('+Y', '+Y#2') that summer_connect_ports accepts. Both start with the summary block (AABB, origin, the two largest opposite plane pairs with one_sided flags, port-like loop ids)."
63
+ required:
64
+ - path
65
+ additionalProperties: false
66
+ authority:
67
+ filesystem: false
68
+ editor_mutation: false
69
+ network: false
70
+ credentials: false
71
+ publish: false
@@ -1,11 +1,12 @@
1
1
  id: tool/inspect-node
2
2
  kind: tool
3
- version: 1.0.3
4
- summary: Get every editable property of a node with current values, Variant types (raw int plus type_name), and resource info.
3
+ version: 1.1.0
4
+ summary: A node's editable properties with values, Variant types and resources, or only named fields plus derived transform, global_transform, scene_file_path.
5
5
  use_when:
6
6
  - before modifying a node, to understand its current state
7
7
  - "\"what is the player's speed / position / collision layer?\""
8
8
  - '"which material and mesh does this MeshInstance3D use?"'
9
+ - '"where is this piece, locally and in the world, and which scene is it?" — fields:[transform, global_transform, scene_file_path]'
9
10
  do_not_use_when:
10
11
  - sub-properties of the material, mesh, or shape itself — summer_inspect_resource
11
12
  - live values while the game runs — summer_inspect_runtime_node
@@ -35,6 +36,12 @@ input_schema:
35
36
  path:
36
37
  type: string
37
38
  description: Node path from scene tree, e.g. 'Player', 'World/Enemies/Boss', 'DirectionalLight3D'
39
+ fields:
40
+ type: array
41
+ items:
42
+ type: string
43
+ maxItems: 48
44
+ description: "Only these fields: property names or globs (e.g. 'position', 'surface_material_override/*') and the derived fields transform, global_transform, scene_file_path, aabb, warnings. Omit for every property."
38
45
  required:
39
46
  - path
40
47
  additionalProperties: false
@@ -1,9 +1,10 @@
1
1
  id: tool/inspect-resource
2
2
  kind: tool
3
- version: 1.0.2
4
- summary: Get all properties of a resource such as a material, mesh, shape, or environment.
3
+ version: 1.1.0
4
+ summary: Read a resource file (a mesh's AABB, surfaces and materials; a scene's nodes; any resource's non-default properties) or a resource a node holds.
5
5
  use_when:
6
6
  - reading sub-properties that the node inspector only names
7
+ - '"how many surfaces, triangles and which materials does this mesh .res have?"'
7
8
  - '"what colour is this material?" / "how big is this collision shape?"'
8
9
  - '"what settings does the WorldEnvironment resource have?"'
9
10
  do_not_use_when:
@@ -33,9 +34,19 @@ input_schema:
33
34
  properties:
34
35
  path:
35
36
  type: string
36
- description: Resource path, e.g. 'res://materials/ground.tres' or 'res://models/player.glb'
37
- required:
38
- - path
37
+ minLength: 1
38
+ maxLength: 512
39
+ description: A resource FILE, e.g. 'res://materials/ground.tres', a mesh 'res://kit/meshes/wall_01.res', or a scene/model 'res://models/player.glb'. Loaded read-only in the editor. Do not combine with nodePath.
40
+ nodePath:
41
+ type: string
42
+ minLength: 1
43
+ maxLength: 256
44
+ description: With property, a node of the ACTIVE scene tab whose resource to read, e.g. 'Floor'.
45
+ property:
46
+ type: string
47
+ minLength: 1
48
+ maxLength: 128
49
+ description: With nodePath, the node property holding the resource, e.g. 'mesh', 'material_override', 'shape', 'environment'.
39
50
  additionalProperties: false
40
51
  authority:
41
52
  filesystem: false
@@ -1,11 +1,12 @@
1
1
  id: tool/instantiate-scene
2
2
  kind: tool
3
- version: 1.0.3
4
- summary: Add an existing scene or 3D model file as a child node, composing scenes from prefabs.
3
+ version: 1.1.0
4
+ summary: Add an existing scene or 3D model file as a child node, optionally placed in the same call (position, rotation_degrees, scale or transform).
5
5
  use_when:
6
6
  - placing a .tscn prefab or imported 3D model into a scene
7
7
  - '"put three copies of the enemy prefab in the level"'
8
8
  - '"add the imported car.glb to the scene"'
9
+ - placing a kit piece at an exact position and rotation in one call per piece
9
10
  do_not_use_when:
10
11
  - a bare built-in node type like Camera3D or Timer — summer_add_node
11
12
  facets:
@@ -47,6 +48,30 @@ input_schema:
47
48
  type: number
48
49
  exclusiveMinimum: 0
49
50
  description: Normalize the instance's physical size - uniformly scale it so its largest world-AABB dimension equals this many units (chair 1.0, car 4.5, person 1.7). Strongly recommended for imported .glb/.gltf models. Older engine builds ignore it; the result then lacks scale_applied and carries a target_size_note.
51
+ position:
52
+ type: array
53
+ minItems: 3
54
+ maxItems: 3
55
+ items:
56
+ type: number
57
+ description: Parent-local position [x, y, z], set right after the instance is created (on the node path its receipt reports).
58
+ rotation_degrees:
59
+ type: array
60
+ minItems: 3
61
+ maxItems: 3
62
+ items:
63
+ type: number
64
+ description: Parent-local rotation in degrees [x, y, z].
65
+ scale:
66
+ type: array
67
+ minItems: 3
68
+ maxItems: 3
69
+ items:
70
+ type: number
71
+ description: Local scale [x, y, z]. Not with target_size.
72
+ transform:
73
+ type: string
74
+ description: Full local transform as "Transform3D(xx, xy, xz, yx, yy, yz, zx, zy, zz, ox, oy, oz)". Not with position, rotation_degrees, scale or target_size.
50
75
  required:
51
76
  - scenePath
52
77
  - parent
@@ -0,0 +1,96 @@
1
+ id: tool/measure
2
+ kind: tool
3
+ version: 1.0.0
4
+ summary: Gap or overlap per axis between two placed nodes, or whether one face of many nodes is coplanar — catches facade gaps and modules standing proud. Read-only.
5
+ use_when:
6
+ - checking that two facade modules meet edge to edge, or how far apart or overlapping two pieces are on each axis
7
+ - checking that every module of a facade line has its front on one plane (plane mode) and which ones stand proud or sit recessed
8
+ - verifying a placement numerically before the screenshot
9
+ do_not_use_when:
10
+ - you want clearance around one node in every direction — summer_starcast
11
+ - you want to test a pose before moving anything — summer_test_placement
12
+ facets:
13
+ lifecycle:
14
+ - build
15
+ domains:
16
+ - scenes
17
+ - 3d
18
+ - world-building
19
+ - verification
20
+ modalities:
21
+ - scenes
22
+ compatibility:
23
+ engine: ">=4.6"
24
+ related:
25
+ tools:
26
+ - tool/starcast
27
+ - tool/place-adjacent
28
+ - tool/screenshot
29
+ skills:
30
+ - skill/spatial-placement
31
+ source: official
32
+ license: MIT
33
+ status: preview
34
+ aliases:
35
+ - summer_measure
36
+ implementation:
37
+ module: src/mcp/tools/placement-tools.ts
38
+ export: registerPlacementTools
39
+ surfaces:
40
+ mcp:
41
+ tool_name: summer_measure
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'. It must be open in the editor (any tab).
51
+ mode:
52
+ type: string
53
+ enum: [pair, plane]
54
+ default: pair
55
+ description: "pair: gap or overlap per axis between nodes a and b. plane: whether one face of every node in nodes lies on one plane."
56
+ a:
57
+ type: string
58
+ description: pair mode, first node (exact path from the scene root).
59
+ b:
60
+ type: string
61
+ description: pair mode, second node.
62
+ axis:
63
+ type: string
64
+ enum: [x, y, z]
65
+ description: pair mode, report only this axis.
66
+ nodes:
67
+ type: array
68
+ minItems: 2
69
+ maxItems: 32
70
+ items:
71
+ type: string
72
+ description: plane mode, 2-32 nodes whose face is checked.
73
+ face:
74
+ type: string
75
+ enum: ["+x", "-x", "+y", "-y", "+z", "-z"]
76
+ description: plane mode, which face, e.g. '+z' for the face pointing along +z.
77
+ space:
78
+ type: string
79
+ enum: [world, local]
80
+ default: world
81
+ description: "world axes, or the axes of a (pair) / nodes[0] (plane) for rotated facades."
82
+ tolerance:
83
+ type: number
84
+ minimum: 0
85
+ maximum: 1
86
+ default: 0.005
87
+ description: Distance treated as touching (pair) or coplanar (plane). Default 5 mm.
88
+ required:
89
+ - scenePath
90
+ additionalProperties: false
91
+ authority:
92
+ filesystem: false
93
+ editor_mutation: false
94
+ network: false
95
+ credentials: false
96
+ publish: false
@@ -0,0 +1,113 @@
1
+ id: tool/place-adjacent
2
+ kind: tool
3
+ version: 1.0.0
4
+ summary: Move one node so its bounds face sits against another's along an axis, lining up the other axes — facade modules edge to edge, storeys stacked. Saves the scene.
5
+ use_when:
6
+ - laying facade or wall modules edge to edge along a street line
7
+ - stacking a storey, cornice or crown on the piece below
8
+ - putting a piece flush beside another with the same base height and front plane
9
+ do_not_use_when:
10
+ - aligning or spacing a whole group along one axis — summer_align_distribute_3d
11
+ - seating a piece on a floor or a wall surface — summer_snap_to_surface or summer_attach_to_surface
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/measure
27
+ - tool/align-distribute-3d
28
+ - tool/repeat-along
29
+ - tool/inspect-asset
30
+ skills:
31
+ - skill/spatial-placement
32
+ source: official
33
+ license: MIT
34
+ status: preview
35
+ aliases:
36
+ - summer_place_adjacent
37
+ implementation:
38
+ module: src/mcp/tools/placement-tools.ts
39
+ export: registerPlacementTools
40
+ surfaces:
41
+ mcp:
42
+ tool_name: summer_place_adjacent
43
+ remote: false
44
+ input_schema:
45
+ type: object
46
+ properties:
47
+ scenePath:
48
+ type: string
49
+ minLength: 1
50
+ maxLength: 512
51
+ description: Exact scene, e.g. 'res://levels/street.tscn'. It must be open in the editor (any tab).
52
+ subject:
53
+ type: string
54
+ minLength: 1
55
+ maxLength: 256
56
+ description: Node to move (exact path from the scene root).
57
+ reference:
58
+ type: string
59
+ minLength: 1
60
+ maxLength: 256
61
+ description: Node that stays put.
62
+ axis:
63
+ type: string
64
+ enum: [x, y, z]
65
+ description: Axis along which the two pieces meet.
66
+ side:
67
+ type: string
68
+ enum: [min, max]
69
+ description: "max: subject on the reference's +axis side (its min face against the reference's max face). min: the -axis side."
70
+ gap:
71
+ type: number
72
+ minimum: -100
73
+ maximum: 1000
74
+ default: 0
75
+ description: Distance between the two faces along axis. 0 = flush; negative = overlap.
76
+ alignOtherAxes:
77
+ oneOf:
78
+ - type: string
79
+ enum: [min, center, max, none]
80
+ - type: object
81
+ properties:
82
+ x:
83
+ type: string
84
+ enum: [min, center, max, none]
85
+ y:
86
+ type: string
87
+ enum: [min, center, max, none]
88
+ z:
89
+ type: string
90
+ enum: [min, center, max, none]
91
+ additionalProperties: false
92
+ default: none
93
+ description: "How to line up the other two axes: one mode for both, or per axis, e.g. {y: min, z: max} for same base height and one front plane."
94
+ space:
95
+ type: string
96
+ enum: [world, local]
97
+ default: world
98
+ description: world axes, or the reference's own axes for a rotated facade.
99
+ required:
100
+ - scenePath
101
+ - subject
102
+ - reference
103
+ - axis
104
+ - side
105
+ additionalProperties: false
106
+ authority:
107
+ filesystem: true
108
+ editor_mutation: true
109
+ network: false
110
+ credentials: false
111
+ publish: false
112
+ evidence_checks:
113
+ - scene-valid
@@ -1,13 +1,14 @@
1
1
  id: tool/play
2
2
  kind: tool
3
- version: 1.2.0
4
- summary: Start the game quietly by default (editor keeps tab and focus; focus true for a toolbar-style launch) — main or a given scene, embedded or offscreen, with pins.
3
+ version: 1.3.0
4
+ summary: Start the game quietly (editor keeps tab and focus) — main or a given scene, embedded or offscreen, with pins, or a local multiplayer session (players).
5
5
  use_when:
6
6
  - runtime verification after edits
7
7
  - the user wants to try the game or one level after a change
8
8
  - reproducing a bug that only shows at runtime
9
9
  - a deterministic, repeatable playtest run — pin the global RNG with seed and the timestep with fixed_fps
10
10
  - launching a deterministic or parallel offscreen playtest instance (seed, fixed frame rate, named offscreen instance) for the runtime tools to drive
11
+ - testing a Summer multiplayer game on this machine — players:2 (Local Play) runs its authority headless and two clients that join through the game's own Summer.client.join; no account, Docker or extra tools
11
12
  - launching while the user works on the same machine — the default (focus omitted or false) sends PlayGame agent:true, so the editor does not switch to the Game tab or grab focus; the game still runs embedded and is visible to the runtime tools
12
13
  do_not_use_when:
13
14
  - the game is already running and needs a restart — summer_stop first (seed/fixed_fps cannot reach a game that is already up)
@@ -80,6 +81,18 @@ input_schema:
80
81
  focus:
81
82
  type: boolean
82
83
  description: "Default false = QUIET play (PlayGame agent:true): the editor does not switch to the Game tab or grab focus for the embedded game, so the user keeps working. Pass true to launch the way the toolbar Play button does (Game tab + focus) — only when the user is watching and asked to see it. The result echoes agent_quiet:true when honoured; a launch result without it (posture_note) means the engine predates quiet play and most likely took focus."
84
+ players:
85
+ type: integer
86
+ minimum: 0
87
+ maximum: 64
88
+ description: "Local Play for a Summer multiplayer game (engine with Local Play): start the game's authority headless plus this many clients on this machine, each joining through the game's own Summer.client.join. The scenes and queue come from the project's summer.build.json WorldDefinition; no account, Docker or game flags are needed. Omit it and pass queue to start the queue's minPlayers from summer.build.json; 0 forces one ordinary run. The result's local_play block lists every process and persona, plus warnings when the roster is outside the queue's minPlayers..maxPlayers."
89
+ spectators:
90
+ type: integer
91
+ minimum: 0
92
+ description: "Local Play: also start this many spectator clients (only with players)."
93
+ queue:
94
+ type: string
95
+ description: "Local Play: the summer.build.json queue the local World stands in for (default: the first declared queue)."
83
96
  additionalProperties: false
84
97
  authority:
85
98
  filesystem: false