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,209 @@
1
+ /**
2
+ * Small, dependency-free 3D math for the placement tools (tool/place-adjacent,
3
+ * tool/attach-to-surface, tool/connect-ports, tool/repeat-along) and the
4
+ * Godot variant-string formatting they send through SetProp.
5
+ *
6
+ * Conventions:
7
+ * - A basis is three COLUMN vectors [x, y, z] (Godot's Basis.x/.y/.z).
8
+ * - A transform is { basis, origin } and maps local -> parent space.
9
+ * - "Scene space" is the scene root's frame, the same space GetWorldSnapshot
10
+ * and the placement scripts report; in the editor it equals world space.
11
+ * - Godot's Transform3D(...) string lists the basis ROW-major, then the origin
12
+ * (core/variant/variant_parser.cpp), so toGodotTransform transposes.
13
+ */
14
+ export const AXIS_NAMES = ["+x", "-x", "+y", "-y", "+z", "-z"];
15
+ export const WORLD_AXES = ["x", "y", "z"];
16
+ export const add = (a, b) => [a[0] + b[0], a[1] + b[1], a[2] + b[2]];
17
+ export const sub = (a, b) => [a[0] - b[0], a[1] - b[1], a[2] - b[2]];
18
+ export const scale = (a, s) => [a[0] * s, a[1] * s, a[2] * s];
19
+ export const dot = (a, b) => a[0] * b[0] + a[1] * b[1] + a[2] * b[2];
20
+ export const cross = (a, b) => [
21
+ a[1] * b[2] - a[2] * b[1],
22
+ a[2] * b[0] - a[0] * b[2],
23
+ a[0] * b[1] - a[1] * b[0],
24
+ ];
25
+ export const length = (a) => Math.hypot(a[0], a[1], a[2]);
26
+ export function normalize(a) {
27
+ const len = length(a);
28
+ if (!(len > 1e-12))
29
+ throw new Error("cannot normalize a zero-length vector");
30
+ return scale(a, 1 / len);
31
+ }
32
+ export function isFiniteVec3(value) {
33
+ return Array.isArray(value) && value.length === 3 && value.every((n) => typeof n === "number" && Number.isFinite(n));
34
+ }
35
+ export function axisIndex(axis) {
36
+ return axis === "x" ? 0 : axis === "y" ? 1 : 2;
37
+ }
38
+ /** Unit vector for a signed axis name such as "-z". */
39
+ export function signedAxisVector(axis) {
40
+ const sign = axis[0] === "-" ? -1 : 1;
41
+ const out = [0, 0, 0];
42
+ out[axisIndex(axis[1])] = sign;
43
+ return out;
44
+ }
45
+ export function sameAxisLine(a, b) {
46
+ return a[1] === b[1];
47
+ }
48
+ export const IDENTITY_BASIS = [
49
+ [1, 0, 0],
50
+ [0, 1, 0],
51
+ [0, 0, 1],
52
+ ];
53
+ export function basisMulVec(b, v) {
54
+ return [
55
+ b[0][0] * v[0] + b[1][0] * v[1] + b[2][0] * v[2],
56
+ b[0][1] * v[0] + b[1][1] * v[1] + b[2][1] * v[2],
57
+ b[0][2] * v[0] + b[1][2] * v[1] + b[2][2] * v[2],
58
+ ];
59
+ }
60
+ export function basisMul(a, b) {
61
+ return [basisMulVec(a, b[0]), basisMulVec(a, b[1]), basisMulVec(a, b[2])];
62
+ }
63
+ export function basisTranspose(b) {
64
+ return [
65
+ [b[0][0], b[1][0], b[2][0]],
66
+ [b[0][1], b[1][1], b[2][1]],
67
+ [b[0][2], b[1][2], b[2][2]],
68
+ ];
69
+ }
70
+ export function basisDeterminant(b) {
71
+ return dot(b[0], cross(b[1], b[2]));
72
+ }
73
+ /** General 3x3 inverse (parents may carry non-uniform scale). */
74
+ export function basisInverse(b) {
75
+ const det = basisDeterminant(b);
76
+ if (!(Math.abs(det) > 1e-12))
77
+ throw new Error("basis is not invertible");
78
+ // Rows of the inverse are the cross products of the columns, divided by det.
79
+ const r0 = scale(cross(b[1], b[2]), 1 / det);
80
+ const r1 = scale(cross(b[2], b[0]), 1 / det);
81
+ const r2 = scale(cross(b[0], b[1]), 1 / det);
82
+ return basisTranspose([r0, r1, r2]);
83
+ }
84
+ export function xformMulPoint(t, p) {
85
+ return add(basisMulVec(t.basis, p), t.origin);
86
+ }
87
+ export function xformCompose(a, b) {
88
+ return { basis: basisMul(a.basis, b.basis), origin: xformMulPoint(a, b.origin) };
89
+ }
90
+ export function xformInverse(t) {
91
+ const inv = basisInverse(t.basis);
92
+ return { basis: inv, origin: scale(basisMulVec(inv, t.origin), -1) };
93
+ }
94
+ /** 12 numbers, basis columns then origin (the placement scripts' wire form). */
95
+ export function xformFromArray(values) {
96
+ if (!Array.isArray(values) || values.length !== 12 || !values.every((n) => typeof n === "number" && Number.isFinite(n))) {
97
+ throw new Error("expected a 12-number transform array");
98
+ }
99
+ const v = values;
100
+ return {
101
+ basis: [
102
+ [v[0], v[1], v[2]],
103
+ [v[3], v[4], v[5]],
104
+ [v[6], v[7], v[8]],
105
+ ],
106
+ origin: [v[9], v[10], v[11]],
107
+ };
108
+ }
109
+ /** Column lengths: the per-axis scale a basis applies. */
110
+ export function basisScale(b) {
111
+ return [length(b[0]), length(b[1]), length(b[2])];
112
+ }
113
+ /** Rotation by `angle` radians about unit `axis` (Rodrigues). */
114
+ export function rotationAbout(axis, angle) {
115
+ const [x, y, z] = normalize(axis);
116
+ const c = Math.cos(angle);
117
+ const s = Math.sin(angle);
118
+ const t = 1 - c;
119
+ // Columns of the rotation matrix.
120
+ return [
121
+ [t * x * x + c, t * x * y + s * z, t * x * z - s * y],
122
+ [t * x * y - s * z, t * y * y + c, t * y * z + s * x],
123
+ [t * x * z + s * y, t * y * z - s * x, t * z * z + c],
124
+ ];
125
+ }
126
+ /** Shortest-arc rotation taking unit `from` onto unit `to`. For opposite
127
+ * vectors the half-turn axis is `fallbackAxis` made perpendicular to `from`. */
128
+ export function rotationBetween(from, to, fallbackAxis = [0, 1, 0]) {
129
+ const f = normalize(from);
130
+ const t = normalize(to);
131
+ const c = Math.max(-1, Math.min(1, dot(f, t)));
132
+ const axis = cross(f, t);
133
+ const axisLength = length(axis);
134
+ if (axisLength < 1e-9) {
135
+ if (c > 0)
136
+ return IDENTITY_BASIS;
137
+ let perpendicular = sub(fallbackAxis, scale(f, dot(fallbackAxis, f)));
138
+ if (length(perpendicular) < 1e-6) {
139
+ const other = Math.abs(f[0]) < 0.9 ? [1, 0, 0] : [0, 0, 1];
140
+ perpendicular = sub(other, scale(f, dot(other, f)));
141
+ }
142
+ return rotationAbout(perpendicular, Math.PI);
143
+ }
144
+ return rotationAbout(scale(axis, 1 / axisLength), Math.atan2(axisLength, c));
145
+ }
146
+ /** The rotation mapping local frame (a, b, a x b) onto world frame (A, B, A x B).
147
+ * a/b and A/B must each be orthonormal pairs. */
148
+ export function rotationFromFrames(localA, localB, worldA, worldB) {
149
+ const local = [localA, localB, cross(localA, localB)];
150
+ const world = [worldA, worldB, cross(worldA, worldB)];
151
+ return basisMul(world, basisTranspose(local));
152
+ }
153
+ /** Angle in degrees between two directions. */
154
+ export function angleDegrees(a, b) {
155
+ const c = dot(normalize(a), normalize(b));
156
+ return (Math.acos(Math.max(-1, Math.min(1, c))) * 180) / Math.PI;
157
+ }
158
+ /** Round for model-visible output (millimetres by default). */
159
+ export function round(value, digits = 3) {
160
+ const factor = 10 ** digits;
161
+ const rounded = Math.round(value * factor) / factor;
162
+ return Object.is(rounded, -0) ? 0 : rounded;
163
+ }
164
+ export function roundVec(v, digits = 3) {
165
+ return [round(v[0], digits), round(v[1], digits), round(v[2], digits)];
166
+ }
167
+ /** A number in Godot variant-string form: fixed-point, never exponent notation. */
168
+ export function godotNumber(value) {
169
+ if (!Number.isFinite(value))
170
+ throw new Error("non-finite number in a variant string");
171
+ const fixed = value.toFixed(6).replace(/\.?0+$/, "");
172
+ return fixed === "-0" || fixed === "" ? "0" : fixed;
173
+ }
174
+ export function toGodotVector3(v) {
175
+ return `Vector3(${v.map(godotNumber).join(", ")})`;
176
+ }
177
+ export function toGodotTransform(t) {
178
+ const [x, y, z] = t.basis;
179
+ const rows = [x[0], y[0], z[0], x[1], y[1], z[1], x[2], y[2], z[2]];
180
+ return `Transform3D(${[...rows, ...t.origin].map(godotNumber).join(", ")})`;
181
+ }
182
+ const NUMBER = String.raw `[-+]?(?:\d+\.?\d*|\.\d+)(?:[eE][-+]?\d+)?`;
183
+ const VECTOR3_STRING = new RegExp(String.raw `^\s*Vector3\(\s*(${NUMBER})\s*,\s*(${NUMBER})\s*,\s*(${NUMBER})\s*\)\s*$`);
184
+ const TRANSFORM3D_STRING = new RegExp(String.raw `^\s*Transform3D\(\s*(${NUMBER}(?:\s*,\s*${NUMBER}){11})\s*\)\s*$`);
185
+ /** Parse "Vector3(x, y, z)" into numbers, or null when it is not one. */
186
+ export function parseGodotVector3(value) {
187
+ const match = VECTOR3_STRING.exec(value);
188
+ if (!match)
189
+ return null;
190
+ const out = [Number(match[1]), Number(match[2]), Number(match[3])];
191
+ return out.every(Number.isFinite) ? out : null;
192
+ }
193
+ /** Parse "Transform3D(<12 numbers>)" (Godot row-major basis, then origin). */
194
+ export function parseGodotTransform(value) {
195
+ const match = TRANSFORM3D_STRING.exec(value);
196
+ if (!match)
197
+ return null;
198
+ const n = match[1].split(",").map((part) => Number(part.trim()));
199
+ if (n.length !== 12 || !n.every(Number.isFinite))
200
+ return null;
201
+ return {
202
+ basis: [
203
+ [n[0], n[3], n[6]],
204
+ [n[1], n[4], n[7]],
205
+ [n[2], n[5], n[8]],
206
+ ],
207
+ origin: [n[9], n[10], n[11]],
208
+ };
209
+ }
@@ -0,0 +1,42 @@
1
+ /**
2
+ * The measurement probe behind the placement tools. ONE GDScript, sent through
3
+ * the existing RunSceneScript op (summer_run_script's op: in-process, on the
4
+ * live editor's main thread, no child editor is spawned), with a JSON argument
5
+ * block selecting the command. It only READS: it never adds, moves, or frees a
6
+ * node of an open scene. Mutations are sent afterwards as ordinary SetProp /
7
+ * SnapToSurface / InstantiateScene ops so they get the scene-target, undo and
8
+ * save contract every other scene tool has.
9
+ *
10
+ * Commands:
11
+ * inspect_asset load a .tscn/.glb/.gltf/Mesh, instantiate it OFF the scene
12
+ * tree, measure (AABB, meshes, planar faces, open boundary
13
+ * loops, Marker3D anchors, collision shapes), free it.
14
+ * bounds visible-geometry extents of nodes along three directions
15
+ * (world axes or a node's local axes), plus transforms.
16
+ * raycast physics ray (active scene only) and a visual-AABB ray.
17
+ * ports resolve Marker3D ports (optionally with the subject's
18
+ * other markers), or return every open loop of the node in
19
+ * its own frame for placement.ts to order and pick from.
20
+ * blockers what a node overlaps where it stands and what it would
21
+ * touch first moving along a direction.
22
+ * multi run several of the scene commands above in one call.
23
+ *
24
+ * "Scene space" = the scene root's frame, accumulated by hand from
25
+ * Node3D.transform (the same walk GetWorldSnapshot uses), so it works for an
26
+ * open scene tab that is not the active one. Physics needs the active tab:
27
+ * only that scene's bodies are in the editor's physics space.
28
+ */
29
+ export declare const PLACEMENT_SCRIPT_BUDGET_SECONDS = 20;
30
+ /** Placeholder for the argument literal; appears exactly once in the source. */
31
+ export declare const PLACEMENT_ARGS_TOKEN = "__SUMMER_PLACEMENT_ARGS__";
32
+ /**
33
+ * Encode the arguments as base64 of their UTF-8 JSON. No caller text is ever
34
+ * interpolated into the GDScript: node paths and port names can come from
35
+ * scene content, so they are data the script decodes (Marshalls.base64_to_utf8
36
+ * + JSON.parse_string), never source it compiles. The base64 alphabet cannot
37
+ * close the string literal or start a statement.
38
+ */
39
+ export declare function encodeScriptArgs(args: Record<string, unknown>): string;
40
+ export declare function buildPlacementScript(args: Record<string, unknown>): string;
41
+ /** The probe source with its placeholder, for tests. */
42
+ export declare function placementProbeTemplate(): string;