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,229 @@
1
+ ---
2
+ name: multiplayer-publish
3
+ description: "Ship a hosted Summer multiplayer game: the summer.games bundle, server preset, pre-upload checks, and a new Build."
4
+ license: MIT
5
+ compatibility: [Cursor, Claude Code, Windsurf, Codex]
6
+ category: multiplayer-and-networking
7
+ user-invocable: true
8
+ allowed-tools: Read Grep Glob Edit Write summer_read_file summer_write_file summer_project_setting summer_open
9
+ paths: ["export_presets.cfg", "summer.build.json", "world.json", "source-domains.json", "runtime-manifest.json", "project.godot"]
10
+ ---
11
+
12
+ # /multiplayer-publish — from project to a Build players can join
13
+
14
+ Step 5 of the multiplayer sequence. It assumes the layout from
15
+ `multiplayer-project`: `summer.build.json`, `world.json`,
16
+ `runtime-manifest.json`, `source-domains.json`, and the `client/`,
17
+ `authority/` and `network/` folders.
18
+
19
+ **Status:** the summer.games export is in Summer's editor. Bundle upload in
20
+ Studio is rolling out: if the game's Builds page doesn't accept a `.zip`
21
+ bundle yet, stop after step 4 and tell the user the bundle is ready to
22
+ upload.
23
+
24
+ ## 1. What gets built
25
+
26
+ **Project > Export**, preset **summer.games**, **Export Project** to a `.zip`
27
+ gives one file, the bundle, which becomes one Build:
28
+
29
+ | Entry | What it is |
30
+ |---|---|
31
+ | `client.pck` | What players run, without anything the source graph marks server-only |
32
+ | `server.pck` | What the authority runs, exported with the server preset |
33
+ | `config/` | `summer.build.json` and every file it names (WorldDefinitions, runtime descriptor, source graph) |
34
+ | `summer-bundle.json` | The Summer version, both packs' main scenes, the composition, and every entry's SHA-256 |
35
+
36
+ Players get `client.pck` on iOS, macOS or Windows (`targetPlatforms` in
37
+ `summer.build.json`). Summer runs `server.pck` on Linux for every World.
38
+
39
+ ## 2. The two export presets
40
+
41
+ Every project has a built-in **summer.games** preset. The server needs a
42
+ second, Linux dedicated-server preset, named exactly as
43
+ `server.exportPreset` in `summer.build.json`. `export_presets.cfg`:
44
+
45
+ ```ini
46
+ [preset.0]
47
+
48
+ name="summer.games"
49
+ platform="summer.games"
50
+ runnable=false
51
+ dedicated_server=false
52
+ custom_features="summer_client"
53
+ export_filter="all_resources"
54
+ include_filter=""
55
+ exclude_filter=""
56
+ export_path=""
57
+ encrypt_pck=false
58
+ encrypt_directory=false
59
+ script_export_mode=2
60
+
61
+ [preset.0.options]
62
+
63
+ platforms/ios=true
64
+ platforms/macos=true
65
+ platforms/windows=false
66
+
67
+ [preset.1]
68
+
69
+ name="Courtyard Authority"
70
+ platform="Linux"
71
+ runnable=false
72
+ dedicated_server=true
73
+ custom_features="summer_authority"
74
+ export_filter="all_resources"
75
+ include_filter=""
76
+ exclude_filter="client/*"
77
+ export_path=""
78
+ encrypt_pck=false
79
+ encrypt_directory=false
80
+ script_export_mode=2
81
+
82
+ [preset.1.options]
83
+
84
+ binary_format/architecture="x86_64"
85
+ ```
86
+
87
+ To make the same in the Export dialog:
88
+
89
+ - **summer.games:** tick the platforms the game supports; leave encryption
90
+ off. It needs no exclude filters, because the source graph decides what
91
+ stays out of `client.pck`.
92
+ - **Server:** **Add... > Linux**, named exactly as `server.exportPreset`.
93
+ **Resources:** Export Mode **Export as dedicated server**, and exclude the
94
+ client folder (`client/*`). **Features:** Custom `summer_authority`.
95
+
96
+ Both presets must include the composition; each must include its entry
97
+ scene.
98
+
99
+ Textures: iOS and macOS read ETC2/ASTC (`textures/vram_compression/import_etc2_astc=true`
100
+ in `project.godot`), and Windows reads S3TC/BPTC (`import_s3tc_bptc=true`).
101
+ Enable the ones for the platforms you tick. The exporter's **Fix Import**
102
+ button does it.
103
+
104
+ ## 3. Export
105
+
106
+ In the editor: **Project > Export**, select **summer.games**, **Export
107
+ Project**, save as `build/<game>.summer.zip`. Or from a terminal (`<summer>`
108
+ is the Summer editor executable):
109
+
110
+ ```sh
111
+ <summer> --headless --path . --import
112
+ <summer> --headless --path . --export-release "summer.games" build/courtyard.summer.zip
113
+ ```
114
+
115
+ A good export ends like this:
116
+
117
+ ```text
118
+ summer.games: Left 4 server-only files out of client.pck, as source-domains.json declares.
119
+ summer.games: summer.games bundle for iOS, macOS with ETC2/ASTC textures: build/courtyard.summer.zip
120
+ summer.games: Entries: summer-bundle.json, client.pck (...), config/runtime-manifest.json (...), config/source-domains.json (...), config/summer.build.json (...), config/world.json (...), server.pck (...)
121
+ summer.games: Server: server.pck from preset "Courtyard Authority", mainScene res://authority/main.tscn
122
+ summer.games: mainScene: res://client/main.tscn
123
+ summer.games: compositionPath: res://network/composition.tres
124
+ summer.games: Exported by Summer 0.6.0 (engine ...). Summer runs it on a template set with the same MAJOR.MINOR and a patch at least this one.
125
+ summer.games: Publish uploads this one file as a new Build.
126
+ ```
127
+
128
+ Check that `server.pck` and your `config/` files are listed, and that the
129
+ "Left N server-only files" count covers your `authority/` files. Every
130
+ result message and every export error, with its fix, is in
131
+ [export-errors.md](export-errors.md).
132
+
133
+ ## 4. Check before uploading
134
+
135
+ Do all three. Each catches problems the export doesn't.
136
+
137
+ **a. Local Play passes** (`multiplayer-testing`): every process has
138
+ `script_errors` 0, there's no `cannot attach`, and your ready lines appear.
139
+
140
+ **b. The source graph is clean.** Save this script **outside** the project,
141
+ for example as `~/check_graph.gd`:
142
+
143
+ ```gdscript
144
+ extends SceneTree
145
+
146
+ func _init() -> void:
147
+ var analyzer := SummerWorldCompositionAnalyzer.new()
148
+ for profile in [SummerWorldCompositionAnalyzer.PROFILE_CLIENT, SummerWorldCompositionAnalyzer.PROFILE_AUTHORITY_ENGINE]:
149
+ var analysis := analyzer.analyze_project(ProjectSettings.globalize_path("res://"), "world.json", profile)
150
+ print(analysis.profile, " ok=", analysis.ok)
151
+ for diagnostic in analysis.diagnostics:
152
+ print(" ", diagnostic.code, " ", diagnostic.path, ": ", diagnostic.message, " ", diagnostic.dependency_path)
153
+ quit()
154
+ ```
155
+
156
+ ```sh
157
+ <summer> --headless --path . --script ~/check_graph.gd
158
+ ```
159
+
160
+ Both lines must say `ok=true`. `SUMMER_COMPOSITION_DOMAIN_LEAK` means a
161
+ client file loads a server file; move the shared part into `network/`.
162
+ `SUMMER_COMPOSITION_DYNAMIC_PATH_UNDECLARED` flags any call whose name ends
163
+ in `load(` without a string literal inside. That includes
164
+ `request.get_payload()`: read `request.payload` instead. For a file that
165
+ really loads a computed path, add a
166
+ `{ "from": "<file>", "to": "<loaded file>" }` entry to `dependencies` in
167
+ `source-domains.json`.
168
+
169
+ **c. Both packs load the way Summer loads them.** In a scratch folder
170
+ outside the project:
171
+
172
+ ```sh
173
+ P="$HOME/summer-probe"
174
+ mkdir -p "$P/probe" "$P/out"
175
+ printf 'config_version=5\n\n[application]\nconfig/name="Summer Native Upload Probe"\n\n[rendering]\nrenderer/rendering_method="gl_compatibility"\n' > "$P/probe/project.godot"
176
+ unzip -o build/courtyard.summer.zip client.pck server.pck -d "$P/out"
177
+ <summer> --headless --path "$P/probe" --summer-native-upload-probe "$P/out/client.pck" \
178
+ --summer-native-probe-scene res://client/main.tscn \
179
+ --summer-native-probe-composition res://network/composition.tres \
180
+ --summer-native-probe-output "$P/out/client-report.json"
181
+ <summer> --headless --path "$P/probe" --summer-native-upload-probe "$P/out/server.pck" \
182
+ --summer-native-probe-scene res://authority/main.tscn \
183
+ --summer-native-probe-composition res://network/composition.tres \
184
+ --summer-native-probe-output "$P/out/server-report.json"
185
+ ```
186
+
187
+ Paths must be absolute. Pass: both reports say `"sceneLoaded": true`, and
188
+ their `compositionManifest` objects are identical. On failure the probe
189
+ writes `rejection.json`; its codes are in [export-errors.md](export-errors.md).
190
+
191
+ ## 5. Upload the Build
192
+
193
+ 1. The game must exist in Summer Studio, and `gameId` in
194
+ `summer.build.json` and `GAME_ID` in `network/game.gd` must both be its
195
+ id.
196
+ 2. Open the game's Builds page: `summer_open` with target `game`,
197
+ `gameId` and section `builds`, or summerengine.com → Studio → your game →
198
+ Builds.
199
+ 3. Upload the `.zip` as a new Build. Summer checks it again: unknown fields,
200
+ queue rules, both packs, and the composition match.
201
+ 4. Release the Build to an environment. Its queues go live there, and
202
+ clients join them with `Summer.client.join(SummerJoinTarget.queue(...))`.
203
+ The code is the same as in Local Play.
204
+
205
+ For a client-only fix to an existing Build, export to a `.pck` path instead
206
+ of `.zip`. That writes `client.pck` alone.
207
+
208
+ ## Checklist
209
+
210
+ - [ ] `summer.build.json`: `gameId`, `targetPlatforms`, `server.exportPreset`, every WorldDefinition selected by a queue.
211
+ - [ ] `world.json`: every field from `multiplayer-project`, including `network_compositions` and `source_graph`.
212
+ - [ ] Two presets: summer.games (platforms ticked, no encryption) and the Linux dedicated server named in `server.exportPreset`.
213
+ - [ ] The export ends with `Publish uploads this one file as a new Build.`
214
+ - [ ] The analyzer prints `ok=true` twice.
215
+ - [ ] Both probes load their scene, with identical composition manifests.
216
+ - [ ] Local Play passed with the same project.
217
+
218
+ ## Common mistakes
219
+
220
+ | Don't | Do | Why |
221
+ |---|---|---|
222
+ | Export the summer.games preset as a dedicated server | Dedicated server only on the Linux preset | The client pack would lose its visuals |
223
+ | Name the server preset differently from `server.exportPreset` | Copy the exact name | The export can't find it |
224
+ | Encrypt the client pack | Leave encryption off | Summer's client templates can't decrypt packs |
225
+ | Ship C#, `.gdextension` or native libraries in the client | GDScript only | Summer Games runs GDScript client packs only |
226
+ | Skip the source graph | Keep `source-domains.json` complete | Without it the server code ships to players (export warns) |
227
+ | Load an `authority/` file from client code | Move shared code into `network/` | The export stops: the client would load a missing file |
228
+ | Upload after only exporting | Run Local Play, the analyzer and both probes first | Each catches what the others miss |
229
+ | Export a patch | Export Project, or Export PCK/ZIP without Export As Patch | summer.games takes complete bundles or packs |
@@ -0,0 +1,89 @@
1
+ # summer.games export: messages, probe codes and errors
2
+
3
+ Reference for `multiplayer-publish`. The messages are the summer.games
4
+ exporter's own, word for word; `%s` stands for the value it names. Headless,
5
+ the checks that run before exporting follow `Cannot export project with
6
+ preset "summer.games" due to configuration errors:`, and server pack messages
7
+ start with `Server pack (<preset>):`.
8
+
9
+ ## Result messages
10
+
11
+ | Message | Meaning |
12
+ | --- | --- |
13
+ | `summer.games bundle for iOS, macOS with ETC2/ASTC textures: <path>` | The file to publish, and the platforms and texture formats in `client.pck`. |
14
+ | `bundleSha256: sha256:…, bundleSize: …` | The identity of the file you upload. |
15
+ | `Entries: summer-bundle.json, client.pck (… bytes), config/…, server.pck (… bytes)` | What the bundle holds. Check that `server.pck` and your `config/` files are listed. |
16
+ | `clientSha256: sha256:…, clientSize: …` | The identity of `client.pck` inside the bundle. |
17
+ | `Server: server.pck from preset "…", mainScene …` | The server pack and the scene it starts. `Server: none, the game has no host` means there is no `summer.build.json`. |
18
+ | `mainScene: …` and `compositionPath: …` | What `client.pck` starts, and the composition both packs are checked against. |
19
+ | `Exported by Summer X.Y.Z (engine …). Summer runs it on a template set with the same MAJOR.MINOR and a patch at least this one.` | The Summer version recorded in the bundle. |
20
+ | `The Build also accepts: …` | Other client scene + composition pairs your WorldDefinitions name. Only the first is checked here. |
21
+ | `The Build also declares …, which no client pack serves.` | `targetPlatforms` lists a platform, such as `web`, that the summer.games client pack does not cover. |
22
+ | `Left N server-only files out of client.pck, as <graph> declares.` | The authority and debug files the source graph names stayed out of the client. They ship only in `server.pck`. |
23
+ | `Publish uploads this one file as a new Build.` | Done. |
24
+
25
+ Two warnings also matter: `summer.build.json declares <platform>, but this pack
26
+ is not for it. …` (tick that platform), and `The pack starts <scene>, but the
27
+ Build's mainScene is <scene>. Set application/run/main_scene, or its
28
+ summer_client override, to the Build's scene.`
29
+
30
+ ## Upload probe rejection codes
31
+
32
+ On failure the probe writes `rejection.json` next to the report instead:
33
+
34
+ | `code` | Fix |
35
+ | --- | --- |
36
+ | `invalid_paths` | Use absolute pack and output paths, and `res://` `.tscn` and `.tres` paths. |
37
+ | `pack_load_failed` | The pack file is missing or is not a pack. |
38
+ | `scene_load_failed` | The scene, or a resource it loads, is not in that pack. Fix that preset's filters. |
39
+ | `composition_load_failed` | The composition is missing from that pack, is not a `SummerNetworkComposition`, or has a script. |
40
+ | `composition_invalid` | The composition fails its own validation, for example a state stream without a schema or audience policy. |
41
+ | `manifest_invalid` | The composition's manifest is not `summer.network.composition.v1`. Probe with the Summer version you exported with. |
42
+
43
+ ## Export errors and fixes
44
+
45
+ | Message | Fix |
46
+ | --- | --- |
47
+ | `summer.build.json must list the Build's targetPlatforms, for example ["ios", "macos", "windows"].` | Add a `targetPlatforms` array. |
48
+ | `summer.build.json's targetPlatforms [%s] name no platform a client pack runs on: ios, macos or windows.` | List at least one of `ios`, `macos`, `windows`. |
49
+ | `summer.build.json's executionMode is '%s'; it must be hosted or standalone.` | Use `hosted` for a multiplayer game. |
50
+ | `A game without a host (executionMode standalone) names its client.entryPoint in summer.build.json: it is the pack's mainScene.` | For multiplayer, set `executionMode` to `hosted`. For a single-player game, delete `summer.build.json`. |
51
+ | `summer.build.json lists an invalid WorldDefinition path: %s.` | Use a project-relative path with no `..`, backslash or leading `/`. |
52
+ | `Cannot read %s.` or `%s is not a JSON object: %s (line %d).` | Fix that file's location or its JSON. |
53
+ | `A hosted Build's pack starts a WorldDefinition's client_entry_point with one of its network_compositions, and no WorldDefinition in summer.build.json's runtime.worldDefinitions names both.` | Give a WorldDefinition both `client_entry_point` and `network_compositions`. |
54
+ | `Tick the platforms the game supports.` | Tick iOS, macOS or Windows on the summer.games preset. |
55
+ | `The project has no main scene for the pack to start.` | Set `client_entry_point` (or, without `summer.build.json`, the project's main scene). |
56
+ | `The pack's mainScene %s does not exist in this project.` | Create the scene, or fix `client_entry_point`. |
57
+ | `The pack's compositionPath %s does not exist in this project.` | Create the composition, or fix `network_compositions`. |
58
+ | `iOS and macOS read ETC2/ASTC textures. Enable Import ETC2 ASTC in Project Settings > Rendering > Textures > VRAM Compression (Fix Import does this).` | Do that, or set `textures/vram_compression/import_etc2_astc=true`. |
59
+ | `Windows reads S3TC/BPTC textures. Enable Import S3TC BPTC in Project Settings > Rendering > Textures > VRAM Compression (Fix Import does this).` | Do that, or set `textures/vram_compression/import_s3tc_bptc=true`. |
60
+ | `Summer's client templates cannot decrypt a pack. Turn off encryption in this preset.` | Turn off encryption on the summer.games preset. |
61
+ | `A client pack cannot be exported as a dedicated server. Use Export Mode "Export all resources" or a selection.` | Dedicated-server mode belongs on the server preset only. |
62
+ | `%s is a symbolic link or junction, and the bundle carries only files inside the project. Replace the link with the file itself.` | Replace the link with a real file. |
63
+ | `%s resolves to %s, outside the project. The bundle carries only files inside the project.` | Move the file into the project. |
64
+ | `%s names an invalid %s path: %s. Name a file inside the project, without .. or backslashes.` | Fix that path in `summer.build.json` or the WorldDefinition. |
65
+ | `%s names %s %s, which does not exist in this project.` | Create the file, or fix the path. |
66
+ | `%s names %s %s: %s` | The named WorldDefinition, runtime descriptor or source graph is a link, is outside the project, or is not a JSON object. |
67
+ | `summer.build.json names no server.exportPreset. A hosted game's bundle carries server.pck, exported with that preset (normally a Linux dedicated server).` | Add `"server": { "exportPreset": "<name>" }`. |
68
+ | `summer.build.json names server preset "%s", which this project doesn't have. Its export presets are: %s.` | Create the preset, or fix the name. Names must match exactly. |
69
+ | `summer.build.json's server preset "%s" exports for %s. server.pck needs the game's dedicated-server preset, normally Linux.` | Point `server.exportPreset` at a Linux preset, not at summer.games. |
70
+ | `The Build's WorldDefinition names no headless_engine component entry_point, the scene server.pck starts.` | Add a `headless_engine` component with an `entry_point`. |
71
+ | `The server pack's mainScene %s does not exist in this project.` | Create the server scene, or fix `entry_point`. |
72
+ | `No source graph: server code may ship in client.pck. Name one in the WorldDefinition (source_graph) or exclude server files in the preset.` | A warning. Add `source_graph` to the WorldDefinition and write `source-domains.json`. |
73
+ | `%s names source graph %s, which is not a valid summer.source-domain-graph.v1 (%s at %s: %s), so the export cannot tell which files to leave out of the client pack.` | Fix the field the message names. The rules are under "source-domains.json" in section 3. |
74
+ | `The client pack keeps %s, which depends on %s, but the source graph leaves %s out of the client pack. Move what the client needs under a shared or client root, or remove the reference.` | A client or shared file loads a server-only file. Move the part both sides need into a `shared` path, or remove the reference. |
75
+ | `The pack's %s %s is in the source graph's %s domain, which the client pack leaves out. Put the scenes and resources the client starts under a shared or client root.` | The client entry scene or the composition sits under an authority or debug root. Move it to a `client` or `shared` path. |
76
+ | `Server preset "%s" is not a dedicated server export, so server.pck keeps the game's visuals. Set its Export Mode to Dedicated Server.` | A warning. Set the server preset's Export Mode to **Export as dedicated server**. |
77
+ | `Summer's client templates run GDScript only, so the Platform rejects a pack with native code, C# or a .gdextension. Exclude these from the preset's resources: %s.` | Exclude the listed `.gdextension`, `.dll`, `.dylib`, `.so`, `.a`, `.wasm`, `.cs` and `.csproj` files from the summer.games preset. |
78
+ | `The Platform starts the pack's mainScene with its compositionPath, but the preset's resource filters leave out %s.` | The summer.games preset's filters drop the client scene or the composition. Stop excluding it. |
79
+ | `The server pack starts %s with %s, but the server preset's resource filters leave out %s.` | The server preset's filters drop the server scene or the composition. Stop excluding it. |
80
+ | `The server preset "%s" could not export server.pck.` | Read the `Server pack (<preset>): …` messages before it. |
81
+ | `The summer.games bundle is one .zip file, not %s. Export a .pck with Export PCK/ZIP for a client-only update.` | Export Project to a `.zip`. |
82
+ | `The client pack is one .pck file, not %s. Export a .zip for the summer.games bundle.` | Use a `.pck` path for a client-only pack, or a `.zip` for the bundle. |
83
+ | `summer.games takes a complete bundle or pack, not a patch. Export it with Export Project, or with Export PCK/ZIP without Export As Patch.` | Untick Export As Patch. |
84
+
85
+ The exporter uses the source graph only to keep server files out of
86
+ `client.pck` and to stop when the client needs one of them. It does not run
87
+ the full source graph analyzer (step 4b of `multiplayer-publish`), the queue
88
+ rules, or the other `summer.build.json` rules (`multiplayer-project`). Summer
89
+ checks those when you upload, so follow them exactly.
@@ -0,0 +1,28 @@
1
+ id: skill/multiplayer-publish
2
+ kind: skill
3
+ version: 1.0.0
4
+ summary: "Ship a hosted Summer multiplayer game: the summer.games bundle, server preset, pre-upload checks, and a new Build."
5
+ use_when:
6
+ - "publishing a hosted Summer multiplayer game online so other players can join it"
7
+ - "making the summer.games bundle of a hosted game: client.pck, server.pck and the Linux server preset"
8
+ - "a summer.games export error mentions summer.build.json, WorldDefinitions, the server preset, the composition or the source graph"
9
+ facets:
10
+ lifecycle:
11
+ - launch
12
+ domains:
13
+ - multiplayer
14
+ - deployment
15
+ modalities:
16
+ - project
17
+ - docs
18
+ compatibility:
19
+ engine: ">=4.6"
20
+ related:
21
+ skills:
22
+ - skill/multiplayer
23
+ - skill/multiplayer-project
24
+ - skill/multiplayer-testing
25
+ source: official
26
+ license: MIT
27
+ status: preview
28
+ recommended: false