summer-engine 3.3.0 → 3.4.1

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 (293) hide show
  1. package/.claude-plugin/marketplace.json +2 -2
  2. package/.claude-plugin/plugin.json +4 -2
  3. package/.codex-plugin/plugin.json +5 -3
  4. package/.cursor-plugin/plugin.json +4 -2
  5. package/.factory-plugin/plugin.json +4 -2
  6. package/.opencode/INSTALL.md +8 -8
  7. package/.opencode/plugins/summer.js +2 -2
  8. package/AGENTS.md +7 -7
  9. package/CHANGELOG.md +50 -0
  10. package/GEMINI.md +1 -1
  11. package/NOTICE +1 -1
  12. package/README.md +32 -35
  13. package/assets/api-docs.json.gz +0 -0
  14. package/assets/autopilot/run.sh +2 -2
  15. package/assets/navigation/web-routes.json +1 -1
  16. package/commands/gameskill.md +2 -2
  17. package/commands/summer.md +25 -25
  18. package/dist/cli/commands/install.d.ts +10 -0
  19. package/dist/cli/commands/install.js +55 -10
  20. package/dist/cli/commands/open.d.ts +1 -1
  21. package/dist/cli/commands/run.d.ts +1 -1
  22. package/dist/cli/commands/run.js +1 -1
  23. package/dist/cli/commands/skills.js +2 -2
  24. package/dist/cli/commands/tool.d.ts +7 -0
  25. package/dist/cli/commands/tool.js +36 -1
  26. package/dist/core/api-client.d.ts +5 -6
  27. package/dist/core/api-client.js +12 -15
  28. package/dist/core/auth.js +2 -2
  29. package/dist/core/capabilities/asset-import.d.ts +0 -1
  30. package/dist/core/capabilities/camera-view.d.ts +1 -1
  31. package/dist/core/capabilities/camera-view.js +2 -2
  32. package/dist/core/capabilities/capture-gameplay.d.ts +69 -0
  33. package/dist/core/capabilities/capture-gameplay.js +283 -0
  34. package/dist/core/capabilities/connect-signal.d.ts +1 -2
  35. package/dist/core/capabilities/connect-signal.js +1 -2
  36. package/dist/core/capabilities/console-read.d.ts +2 -2
  37. package/dist/core/capabilities/console-read.js +2 -2
  38. package/dist/core/capabilities/creator.js +1 -1
  39. package/dist/core/capabilities/doctor.d.ts +9 -1
  40. package/dist/core/capabilities/doctor.js +47 -4
  41. package/dist/core/capabilities/engine-receipt.d.ts +5 -7
  42. package/dist/core/capabilities/engine-receipt.js +7 -9
  43. package/dist/core/capabilities/engine-run.d.ts +4 -0
  44. package/dist/core/capabilities/engine-run.js +33 -5
  45. package/dist/core/capabilities/export-engine-version.d.ts +15 -0
  46. package/dist/core/capabilities/export-engine-version.js +24 -0
  47. package/dist/core/capabilities/export-game.d.ts +9 -1
  48. package/dist/core/capabilities/export-game.js +115 -39
  49. package/dist/core/capabilities/export-presets.d.ts +1 -1
  50. package/dist/core/capabilities/export-presets.js +1 -1
  51. package/dist/core/capabilities/fabricate-mesh.d.ts +2 -3
  52. package/dist/core/capabilities/fabricate-mesh.js +2 -3
  53. package/dist/core/capabilities/frame-quality.d.ts +4 -4
  54. package/dist/core/capabilities/frame-quality.js +4 -4
  55. package/dist/core/capabilities/grep.d.ts +1 -1
  56. package/dist/core/capabilities/grep.js +1 -1
  57. package/dist/core/capabilities/image-generation.d.ts +9 -0
  58. package/dist/core/capabilities/image-generation.js +19 -1
  59. package/dist/core/capabilities/navigation/open.d.ts +1 -1
  60. package/dist/core/capabilities/navigation/open.js +1 -1
  61. package/dist/core/capabilities/navigation/render-product-map.js +1 -1
  62. package/dist/core/capabilities/navigation/targets.js +2 -2
  63. package/dist/core/capabilities/placement-batch.d.ts +1 -1
  64. package/dist/core/capabilities/placement-batch.js +2 -2
  65. package/dist/core/capabilities/play-determinism.d.ts +1 -1
  66. package/dist/core/capabilities/play-determinism.js +1 -1
  67. package/dist/core/capabilities/publish-build.d.ts +15 -2
  68. package/dist/core/capabilities/publish-build.js +78 -28
  69. package/dist/core/capabilities/publish-download.d.ts +1 -2
  70. package/dist/core/capabilities/publish-download.js +2 -3
  71. package/dist/core/capabilities/replace-node.d.ts +1 -3
  72. package/dist/core/capabilities/replace-node.js +1 -3
  73. package/dist/core/capabilities/runtime-control.d.ts +5 -7
  74. package/dist/core/capabilities/runtime-control.js +7 -9
  75. package/dist/core/capabilities/scene-batch.d.ts +1 -1
  76. package/dist/core/capabilities/scene-batch.js +1 -1
  77. package/dist/core/capabilities/scene-kind.js +1 -1
  78. package/dist/core/capabilities/scene-readback.d.ts +3 -4
  79. package/dist/core/capabilities/scene-readback.js +3 -4
  80. package/dist/core/capabilities/scene-script.d.ts +2 -2
  81. package/dist/core/capabilities/scene-script.js +2 -2
  82. package/dist/core/capabilities/seeing/shot-store.d.ts +1 -1
  83. package/dist/core/capabilities/seeing/shot-store.js +1 -1
  84. package/dist/core/capabilities/summer-bundle.d.ts +2 -3
  85. package/dist/core/capabilities/summer-bundle.js +2 -3
  86. package/dist/core/capabilities/surface-snap.d.ts +1 -1
  87. package/dist/core/capabilities/surface-snap.js +1 -1
  88. package/dist/core/capabilities/tool-dispatch.js +11 -1
  89. package/dist/core/capabilities/ui-control.d.ts +1 -2
  90. package/dist/core/capabilities/ui-control.js +1 -2
  91. package/dist/core/capabilities/world-snapshot.d.ts +1 -1
  92. package/dist/core/capabilities/world-snapshot.js +1 -1
  93. package/dist/core/capability-skew.d.ts +2 -3
  94. package/dist/core/capability-skew.js +4 -5
  95. package/dist/core/config.js +2 -2
  96. package/dist/core/engine-install.d.ts +16 -0
  97. package/dist/core/engine-install.js +32 -2
  98. package/dist/core/feedback/client.js +1 -1
  99. package/dist/core/hosted-mcp.d.ts +115 -0
  100. package/dist/core/hosted-mcp.js +164 -0
  101. package/dist/core/launch-posture.d.ts +6 -3
  102. package/dist/core/launch-posture.js +18 -5
  103. package/dist/core/library-read.js +1 -2
  104. package/dist/core/templates.d.ts +1 -2
  105. package/dist/core/templates.js +1 -2
  106. package/dist/mcp/hosted-mount.d.ts +13 -59
  107. package/dist/mcp/hosted-mount.js +24 -30
  108. package/dist/mcp/server.d.ts +2 -2
  109. package/dist/mcp/server.js +5 -4
  110. package/dist/mcp/tools/creator-tools.js +14 -4
  111. package/dist/mcp/tools/debug-tools.js +1 -1
  112. package/dist/mcp/tools/generate-tools.js +19 -9
  113. package/dist/mcp/tools/navigation-tools.d.ts +1 -1
  114. package/dist/mcp/tools/navigation-tools.js +1 -1
  115. package/dist/mcp/tools/spatial-tools.js +1 -1
  116. package/dist/mcp/tools/visual-tools.js +2 -2
  117. package/dist/mcp/tools/with-engine.d.ts +1 -2
  118. package/dist/mcp/tools/with-engine.js +1 -2
  119. package/gemini-extension.json +3 -1
  120. package/hooks/session-start.sh +2 -2
  121. package/integrations/README.md +70 -76
  122. package/integrations/claude/README.md +0 -3
  123. package/integrations/codex/README.md +1 -2
  124. package/integrations/copilot-jetbrains/README.md +1 -1
  125. package/integrations/cursor/README.md +1 -2
  126. package/integrations/factory/README.md +15 -11
  127. package/integrations/mistral-vibe/README.md +1 -1
  128. package/integrations/opencode/README.md +1 -1
  129. package/integrations/roo-code/README.md +1 -1
  130. package/integrations/rovo-dev/README.md +1 -1
  131. package/integrations/trae/README.md +1 -1
  132. package/integrations/windsurf/README.md +3 -3
  133. package/library/references/collaborative-protocol/collaborative-protocol.md +5 -5
  134. package/library/references/gd-style/gd-style.md +4 -6
  135. package/library/references/godot-version/godot-version.md +3 -3
  136. package/library/references/headless-routing/headless-routing.md +2 -2
  137. package/library/references/mcp-fresh-chat-playbook/mcp-fresh-chat-playbook.md +2 -2
  138. package/library/references/mcp-tools-reference/mcp-tools-reference.md +18 -16
  139. package/library/references/product-map/product-map.md +1 -1
  140. package/library/references/public-surface-language/public-surface-language.md +1 -1
  141. package/library/references/summer-folder/summer-folder.md +1 -1
  142. package/library/skills/3d-lighting/SKILL.md +4 -4
  143. package/library/skills/README.md +11 -9
  144. package/library/skills/adaptive-music/SKILL.md +7 -7
  145. package/library/skills/ai-characters-in-games/SKILL.md +1 -1
  146. package/library/skills/ambient-bed/SKILL.md +12 -14
  147. package/library/skills/animated-loop/SKILL.md +42 -42
  148. package/library/skills/animation-tree/SKILL.md +6 -6
  149. package/library/skills/art-direction/SKILL.md +8 -11
  150. package/library/skills/asset-strategy/SKILL.md +3 -3
  151. package/library/skills/audio-direction/SKILL.md +8 -10
  152. package/library/skills/auto-fire-targeting/SKILL.md +4 -3
  153. package/library/skills/bounded-engine-runs/SKILL.md +95 -0
  154. package/library/skills/bounded-engine-runs/resource.yaml +29 -0
  155. package/library/skills/brainstorm-game/SKILL.md +5 -5
  156. package/library/skills/brainstorming/SKILL.md +9 -15
  157. package/library/skills/celeste-momentum-platforming/SKILL.md +8 -13
  158. package/library/skills/celeste-momentum-platforming/resource.yaml +1 -1
  159. package/library/skills/character-animation-wiring/SKILL.md +2 -2
  160. package/library/skills/character-model/SKILL.md +15 -26
  161. package/library/skills/character-movement/SKILL.md +1 -1
  162. package/library/skills/character-movement/references/movement-3d.md +1 -1
  163. package/library/skills/character-portrait/SKILL.md +4 -4
  164. package/library/skills/cinematic-cutscene/SKILL.md +38 -38
  165. package/library/skills/combat-basics/SKILL.md +1 -1
  166. package/library/skills/compatibility-renderer-traps/SKILL.md +78 -0
  167. package/library/skills/compatibility-renderer-traps/resource.yaml +28 -0
  168. package/library/skills/concept-art/SKILL.md +4 -4
  169. package/library/skills/create-asset-sheet/SKILL.md +12 -31
  170. package/library/skills/debug/SKILL.md +5 -4
  171. package/library/skills/debugging-game-feel/SKILL.md +1 -4
  172. package/library/skills/debugging-game-feel/resource.yaml +1 -1
  173. package/library/skills/design-level/SKILL.md +5 -5
  174. package/library/skills/design-mechanic/SKILL.md +6 -6
  175. package/library/skills/design-npc/SKILL.md +8 -15
  176. package/library/skills/diagnosing-perf-regressions/SKILL.md +5 -10
  177. package/library/skills/dispatching-parallel-agents/SKILL.md +1 -19
  178. package/library/skills/environment-kit/SKILL.md +5 -5
  179. package/library/skills/export-and-ship/SKILL.md +25 -24
  180. package/library/skills/fabricating-assets/SKILL.md +1 -1
  181. package/library/skills/facial-and-lipsync/SKILL.md +5 -5
  182. package/library/skills/fps-controller/SKILL.md +17 -16
  183. package/library/skills/fps-controller/resource.yaml +0 -2
  184. package/library/skills/game-feel/SKILL.md +6 -7
  185. package/library/skills/gameskill/SKILL.md +3 -3
  186. package/library/skills/gdscript-patterns/SKILL.md +3 -3
  187. package/library/skills/generate-motion/SKILL.md +5 -22
  188. package/library/skills/godogen-visual-proof-game-generation/SKILL.md +72 -90
  189. package/library/skills/godogen-visual-proof-game-generation/resource.yaml +0 -1
  190. package/library/skills/headless-scripting/SKILL.md +8 -8
  191. package/library/skills/headless-scripting/resource.yaml +1 -0
  192. package/library/skills/in-game-purchases/SKILL.md +123 -118
  193. package/library/skills/in-game-purchases/resource.yaml +2 -2
  194. package/library/skills/instantiate-asset-pack/SKILL.md +7 -3
  195. package/library/skills/investigating-bugs/SKILL.md +3 -11
  196. package/library/skills/investigating-bugs/condition-based-waiting.md +0 -10
  197. package/library/skills/investigating-bugs/root-cause-tracing.md +0 -8
  198. package/library/skills/lumera-single-image-scene-reconstruction/SKILL.md +15 -15
  199. package/library/skills/lumera-single-image-scene-reconstruction/resource.yaml +0 -1
  200. package/library/skills/make-game/SKILL.md +3 -5
  201. package/library/skills/make-game/references/2d-platformer.md +1 -1
  202. package/library/skills/multiplayer-project/SKILL.md +1 -1
  203. package/library/skills/multiplayer-testing/SKILL.md +4 -4
  204. package/library/skills/music-track/SKILL.md +40 -38
  205. package/library/skills/new-project/SKILL.md +4 -6
  206. package/library/skills/organic-model/SKILL.md +9 -9
  207. package/library/skills/pixel-art/SKILL.md +6 -6
  208. package/library/skills/play/SKILL.md +3 -4
  209. package/library/skills/playtesting-a-feature/SKILL.md +4 -6
  210. package/library/skills/procedural-animation/SKILL.md +10 -11
  211. package/library/skills/prop-model/SKILL.md +4 -4
  212. package/library/skills/psx-retro-rendering/SKILL.md +20 -20
  213. package/library/skills/psx-retro-rendering/resource.yaml +2 -3
  214. package/library/skills/realtime-wet-surfaces/SKILL.md +15 -15
  215. package/library/skills/realtime-wet-surfaces/resource.yaml +1 -2
  216. package/library/skills/remote-deploy/SKILL.md +20 -21
  217. package/library/skills/retarget/SKILL.md +19 -23
  218. package/library/skills/running-in-the-cloud/SKILL.md +5 -5
  219. package/library/skills/scene-composition/SKILL.md +5 -5
  220. package/library/skills/scene-hierarchy-design/SKILL.md +3 -3
  221. package/library/skills/scene-hierarchy-design/resource.yaml +0 -1
  222. package/library/skills/scene-scripting/SKILL.md +3 -3
  223. package/library/skills/scene-to-level/SKILL.md +28 -31
  224. package/library/skills/skill-create/SKILL.md +1 -1
  225. package/library/skills/skill-improve/SKILL.md +9 -9
  226. package/library/skills/skill-test/SKILL.md +10 -10
  227. package/library/skills/skintokens-auto-rigging/SKILL.md +18 -18
  228. package/library/skills/skintokens-auto-rigging/resource.yaml +3 -3
  229. package/library/skills/skybox-panorama/SKILL.md +8 -9
  230. package/library/skills/sound-effect/SKILL.md +19 -19
  231. package/library/skills/spatial-placement/SKILL.md +2 -2
  232. package/library/skills/spatial-placement/references/kit-placement-tools.md +12 -22
  233. package/library/skills/sprite-sheet/SKILL.md +10 -10
  234. package/library/skills/summer-analytics/SKILL.md +3 -3
  235. package/library/skills/summer-friends/SKILL.md +10 -10
  236. package/library/skills/summer-leaderboards/SKILL.md +6 -6
  237. package/library/skills/summer-match-results/SKILL.md +13 -13
  238. package/library/skills/summer-matchmaking/SKILL.md +11 -11
  239. package/library/skills/summer-parties/SKILL.md +9 -9
  240. package/library/skills/summer-player-data/SKILL.md +12 -12
  241. package/library/skills/summer-store/SKILL.md +6 -6
  242. package/library/skills/summer-world-chat/SKILL.md +9 -9
  243. package/library/skills/summer-world-saves/SKILL.md +7 -7
  244. package/library/skills/text-to-motion/rigging-for-text-motion.md +1 -1
  245. package/library/skills/tileable-texture/SKILL.md +1 -1
  246. package/library/skills/trailer-shot/SKILL.md +36 -36
  247. package/library/skills/tune-performance/SKILL.md +13 -13
  248. package/library/skills/tune-performance/resource.yaml +1 -1
  249. package/library/skills/ui-graphics/SKILL.md +7 -7
  250. package/library/skills/use-widget-asset/SKILL.md +7 -7
  251. package/library/skills/using-summer/SKILL.md +5 -7
  252. package/library/skills/vehicle-model/SKILL.md +6 -7
  253. package/library/skills/vehicle-model/resource.yaml +2 -2
  254. package/library/skills/verification-before-completion/SKILL.md +5 -6
  255. package/library/skills/vfx-dissolve/SKILL.md +4 -4
  256. package/library/skills/vfx-fire/SKILL.md +6 -6
  257. package/library/skills/vfx-fire/_building-blocks/additive-billboard-particles.md +3 -3
  258. package/library/skills/vfx-hit-spark/SKILL.md +4 -4
  259. package/library/skills/vfx-hit-spark/_building-blocks/additive-billboard-particles.md +3 -3
  260. package/library/skills/vfx-lightning/SKILL.md +5 -5
  261. package/library/skills/vfx-lightning/_building-blocks/additive-billboard-particles.md +3 -3
  262. package/library/skills/vfx-lightning/_building-blocks/trauma-shake-snippet.md +9 -3
  263. package/library/skills/vfx-magic-glow/SKILL.md +4 -4
  264. package/library/skills/vfx-magic-glow/_building-blocks/additive-billboard-particles.md +3 -3
  265. package/library/skills/vfx-muzzle-flash/SKILL.md +5 -5
  266. package/library/skills/vfx-muzzle-flash/_building-blocks/additive-billboard-particles.md +3 -3
  267. package/library/skills/vfx-muzzle-flash/_building-blocks/trauma-shake-snippet.md +9 -3
  268. package/library/skills/vfx-smoke/SKILL.md +5 -5
  269. package/library/skills/vfx-water-ripple/SKILL.md +2 -2
  270. package/library/skills/vfx-water-ripple/_building-blocks/additive-billboard-particles.md +3 -3
  271. package/library/skills/voice-line/SKILL.md +9 -9
  272. package/library/skills/web-compatibility-look/resource.yaml +1 -0
  273. package/library/skills/world-building-3d/references/spatial-tools.md +2 -2
  274. package/library/skills/writing-plans/SKILL.md +4 -4
  275. package/library/skills/writing-skills/SKILL.md +8 -8
  276. package/library/tools/capture-gameplay/resource.yaml +73 -0
  277. package/library/tools/creator-publish/resource.yaml +4 -4
  278. package/library/tools/creator-releases/resource.yaml +5 -5
  279. package/library/tools/generate-image/resource.yaml +15 -1
  280. package/library/tools/publish-build/resource.yaml +6 -2
  281. package/package.json +1 -1
  282. package/registry/generated/aliases.json +1 -0
  283. package/registry/generated/counts.json +3 -3
  284. package/registry/generated/gemini-extension.json +3 -1
  285. package/registry/generated/index.json +248 -135
  286. package/registry/generated/marketplace.claude.json +2 -2
  287. package/registry/generated/plugin.claude.json +4 -2
  288. package/registry/generated/plugin.codex.json +5 -3
  289. package/registry/generated/plugin.cursor.json +4 -2
  290. package/registry/generated/plugin.factory.json +4 -2
  291. package/registry/generated/skills-index.md +11 -9
  292. package/registry/generated/skills-registry.json +33 -6
  293. package/registry/schemas/domains.json +1 -1
@@ -1,25 +1,29 @@
1
- # Factory (Droid) integration
1
+ # Factory Droid integration
2
+
3
+ `summer setup factory` (aliases: `droid`, `factory-droid`) writes:
4
+
5
+ - MCP config: `~/.factory/mcp.json`; Windows `%USERPROFILE%/.factory/mcp.json` (user); `.factory/mcp.json` (project).
6
+ Shape: `mcpServers.summer-engine = { type: "stdio", command, args }`.
7
+ - Skills: `~/.agents/skills` (user) or `.agents/skills` (project) as `<skill>/SKILL.md`.
8
+ - After: Restart droid or run /mcp in the active session.
2
9
 
3
10
  Generated by `scripts/generate-registry` from `library/**/resource.yaml`:
4
11
 
5
12
  - `registry/generated/plugin.factory.json` -> `.factory-plugin/plugin.json`
6
- (metadata manifest, now including the full skill list at
7
- `./library/skills/<slug>/` — the pre-v3 manifest listed zero skills, which
8
- was a bug fixed by generation; version stamped from `package.json`).
13
+ (metadata manifest with the full skill list at
14
+ `./library/skills/<slug>/`; version stamped from `package.json`).
9
15
 
10
- There is no `summer setup factory` target (`summer setup` rejects `factory`).
11
- Install through the plugin marketplace instead:
16
+ The plugin marketplace is an alternative install:
12
17
 
13
18
  ```
14
19
  droid plugin marketplace add https://github.com/summerengine/summer
15
20
  droid plugin install summer@summer-engine --scope user
16
21
  ```
17
22
 
18
- Factory reads MCP servers from the plugin's root `.mcp.json` (generated) and
19
- skills ONLY from a root `skills/<name>/SKILL.md` directory; it has no `skills`
20
- manifest field, so the array in `plugin.factory.json` is inert and this package
21
- (skills under `library/skills/`) currently exposes no skills to Factory. Open
22
- gap; fix is a root `skills/` layout, not a setup target.
23
+ A plugin install reads MCP servers from the root `.mcp.json` (generated) and
24
+ skills only from a root `skills/<name>/SKILL.md` directory. Factory has no
25
+ `skills` manifest field, so the array in `plugin.factory.json` is inert and the
26
+ plugin install exposes no skills. Use `summer setup factory` to get the skills.
23
27
 
24
28
  Never edit the destination file by hand — edit `library/` resources or
25
29
  `scripts/generate-registry/manifests.ts`, then run
@@ -5,7 +5,7 @@ is intentionally empty. Support is delivered at install time by
5
5
  `summer setup mistral-vibe` (aliases: `vibe`, `mistral`), which writes:
6
6
 
7
7
  - MCP config: `~/.vibe/config.toml`; Windows `%USERPROFILE%/.vibe/config.toml` (user); `.vibe/config.toml` (project).
8
- Shape: undefined.
8
+ Shape: a `[[mcp_servers]]` entry with `name`, `transport`, `command`, `args` (TOML).
9
9
  - Skills: `~/.vibe/skills` (user) or `.agents/skills` (project) as `<skill>/SKILL.md`.
10
10
  - After: Restart Vibe so it reloads config.toml.
11
11
 
@@ -6,7 +6,7 @@ is intentionally empty. Support is delivered at install time by
6
6
 
7
7
  - MCP config: `~/.config/opencode/opencode.json`; Windows `%APPDATA%/opencode/opencode.json` (user); `opencode.json` (project).
8
8
  Shape: `mcp.summer-engine = { type: "local", command: [npx, ...], enabled: true }`.
9
- - Skills: `~/.agents/skills` (user) or `.agents/skills` (project) as `<skill>/SKILL.md`. OpenCode loads skills from this folder on the next session. Summer 3.0 wrote markdown under agents/summer and 3.1.0 wrote opencode/skills; `--force` removes both.
9
+ - Skills: `~/.agents/skills` (user) or `.agents/skills` (project) as `<skill>/SKILL.md`. OpenCode loads skills from this folder on the next session. `--force` also removes skill copies that older Summer versions wrote under `opencode/agents/summer` and `opencode/skills`.
10
10
  - After: Restart OpenCode so it reloads opencode.json.
11
11
 
12
12
  Source of truth: `src/installer/agent-table.ts` (one row per agent).
@@ -1,6 +1,6 @@
1
1
  # Roo Code integration
2
2
 
3
- > **Legacy.** Roo Code shut down on 2026-05-15. The extension may still run, but it is no longer maintained; consider Cline or Kilo Code.
3
+ > **Legacy.** Roo Code is no longer maintained. The target still works; consider Cline or Kilo Code.
4
4
 
5
5
  No manifest file is generated in this repo for Roo Code — `manifest-target.json`
6
6
  is intentionally empty. Support is delivered at install time by
@@ -5,7 +5,7 @@ is intentionally empty. Support is delivered at install time by
5
5
  `summer setup rovo-dev` (aliases: `rovodev`, `rovo`, `atlassian-rovo-dev`), which writes:
6
6
 
7
7
  - MCP config: `~/.rovodev/mcp.json`; Windows `%USERPROFILE%/.rovodev/mcp.json` (user); user scope only (project requests fall back with a warning).
8
- Shape: undefined.
8
+ Shape: `mcpServers.summer-engine = { command, args, transport: "stdio" }`.
9
9
  - Skills: `~/.agents/skills` (user) or `.agents/skills` (project) as `<skill>/SKILL.md`.
10
10
  - After: Restart Rovo Dev CLI so it reconnects its MCP servers.
11
11
 
@@ -4,7 +4,7 @@ No manifest file is generated in this repo for Trae — `manifest-target.json`
4
4
  is intentionally empty. Support is delivered at install time by
5
5
  `summer setup trae` (aliases: `trae-ide`, `bytedance-trae`), which writes:
6
6
 
7
- - MCP config: `.trae/mcp.json` (user); `.trae/mcp.json` (project).
7
+ - MCP config: `.trae/mcp.json` (project only; Trae manages user-level servers in its UI, so a user-scope request writes the project file with a warning).
8
8
  Shape: `mcpServers.summer-engine = { command, args }`.
9
9
  - Skills: none. Trae documents no skills folder; the MCP server ships summer_get_agent_playbook for in-chat guidance.
10
10
  - After: Restart Trae and open the MCP settings; summer-engine should show as connected.
@@ -1,12 +1,12 @@
1
- # Devin Desktop (formerly Windsurf) integration
1
+ # Devin Desktop integration
2
2
 
3
- No manifest file is generated in this repo for Devin Desktop (formerly Windsurf) — `manifest-target.json`
3
+ No manifest file is generated in this repo for Devin Desktop — `manifest-target.json`
4
4
  is intentionally empty. Support is delivered at install time by
5
5
  `summer setup windsurf` (aliases: `devin`, `devin-desktop`, `devindesktop`), which writes:
6
6
 
7
7
  - MCP config: `~/.codeium/windsurf/mcp_config.json`; Windows `%USERPROFILE%/.codeium/windsurf/mcp_config.json` (user); user scope only (project requests fall back with a warning).
8
8
  Shape: `mcpServers.summer-engine = { command, args }`.
9
9
  - Skills: `~/.agents/skills` (user) or `.agents/skills` (project) as `<skill>/SKILL.md`.
10
- - After: Restart Devin Desktop (formerly Windsurf) and refresh MCP servers from the agent settings. Devin's docs say mcp_config.json configures the Cascade agent; for the Devin agent add the server in the app's MCP settings with the same command.
10
+ - After: Restart Devin Desktop and refresh MCP servers from the agent settings. Devin's docs say mcp_config.json configures the Cascade agent; for the Devin agent add the server in the app's MCP settings with the same command.
11
11
 
12
12
  Source of truth: `src/installer/agent-table.ts` (one row per agent).
@@ -1,6 +1,6 @@
1
1
  # Collaborative Protocol — "May I write?"
2
2
 
3
- > Every Summer skill must follow this. The agent works *with* the user, not around them.
3
+ > Every Summer skill follows this rule.
4
4
 
5
5
  ## The rule
6
6
 
@@ -13,7 +13,7 @@ This applies to:
13
13
  - Setting up project-wide settings (`project.godot`)
14
14
  - Installing tools, libraries, or templates
15
15
 
16
- Reading is unconditional. Inspection, scene-tree walks, diagnostics — never need permission.
16
+ Reading needs no permission: inspection, scene-tree walks and diagnostics run without asking.
17
17
 
18
18
  ## Phrasing
19
19
 
@@ -42,9 +42,9 @@ Plain, short, action-first. Examples:
42
42
 
43
43
  ## Linter check
44
44
 
45
- The `workflow/skill-test/SKILL.md` static linter looks for the phrases:
46
- - "May I" / "May I write" / "May I create" / "May I attach"
45
+ The `skill-test` skill's static check looks for one of these phrases:
46
+ - "May I"
47
47
  - "I'm about to"
48
48
  - "Continue?" / "OK?" / "Proceed?"
49
49
 
50
- A skill that mutates files but never says any of these fails the linter.
50
+ A skill that triggers user-visible writes but never says any of these fails the check. Read-only skills are exempt.
@@ -1,6 +1,6 @@
1
1
  # GDScript Style — Summer Conventions
2
2
 
3
- > The bar for GDScript in Summer. Skills should produce code that matches this. Where Godot's official style guide is silent, this is the tiebreaker.
3
+ > Skills produce GDScript that matches this. Where the upstream GDScript style guide is silent, this file decides.
4
4
 
5
5
  ## File structure
6
6
 
@@ -43,7 +43,7 @@ func _physics_process(delta: float) -> void:
43
43
  func _input(event: InputEvent) -> void:
44
44
  pass
45
45
 
46
- # 7. Public API (PascalCase or snake_case methods, snake_case for funcs)
46
+ # 7. Public API (snake_case)
47
47
  func take_damage(amount: int) -> void:
48
48
  pass
49
49
 
@@ -115,7 +115,5 @@ tween.tween_property(self, "modulate", Color.WHITE, 0.3)
115
115
 
116
116
  ## See also
117
117
 
118
- - [Official Godot GDScript style guide](https://docs.godotengine.org/en/stable/tutorials/scripting/gdscript/gdscript_styleguide.html)
119
- - `scripting-patterns/gdscript-patterns/SKILL.md` — patterns and idioms
120
- - `scripting-patterns/signal-patterns/SKILL.md` — signal usage
121
- - `scripting-patterns/state-machine-patterns/SKILL.md` — state machine patterns
118
+ - [Upstream GDScript style guide](https://docs.godotengine.org/en/stable/tutorials/scripting/gdscript/gdscript_styleguide.html)
119
+ - The `gdscript-patterns` skill: patterns and idioms, including signals
@@ -18,8 +18,8 @@ running engine also reports its measured technical version:
18
18
  <engineBinaryPath> --version # e.g. 4.6.1.stable.mono.custom_build.<hash>
19
19
  ```
20
20
 
21
- Get `engineBinaryPath` from `summer_get_project_context`. Prefer live
22
- inspection to a copied version string. Creator onboarding and headlines should
21
+ Get `engineBinaryPath` from `summer_get_project_context`. Prefer the live
22
+ version to a copied version string. Creator onboarding and headlines should
23
23
  say Summer Engine, Summer game, Summer SDK, and GDScript. Use the upstream name
24
24
  only where technical compatibility, migration, extension APIs, contribution
25
25
  routing, attribution, or licensing requires it.
@@ -40,7 +40,7 @@ routing, attribution, or licensing requires it.
40
40
  ## Summer-specific deltas from the upstream engine
41
41
 
42
42
  - Local API server runs on `localhost:6550` by default (the port increments when several editors are open; each live editor publishes its port in `~/.summer/instances/<id>.json`, and the shared token lives in `~/.summer/api-token`).
43
- - Engine ships a webview module in `modules/1summer_engine/`. Do not assume the
43
+ - The editor carries Summer's own modules (including a webview). Do not assume the
44
44
  unmodified upstream editor for UI patches.
45
45
  - Project root contains `.summer/` for project memory; do not delete it.
46
46
 
@@ -15,12 +15,12 @@ Only file, import, scene-read, and game run/stop/logs/screenshot operations work
15
15
  ## Ships dark
16
16
 
17
17
  - Enabled by `SUMMER_HEADLESS_ROUTING=1`. Unset, the module is not loaded at all and nothing changes.
18
- - Requires an engine build that ships the worker mode and process registry (Summer 4.7.x line). On older builds, leave the flag off.
18
+ - Requires an engine build that ships the worker mode and process registry. On builds without it, leave the flag off.
19
19
  - With the flag on and an editor open, the editor path is used unchanged — caching, credential-drift reconnects, and identity binding all behave as before.
20
20
 
21
21
  ## What an agent should expect
22
22
 
23
- - Errors from this layer are prefixed `[headless:<stage>]` where stage is one of `connect`, `auth`, `op`, `spawn`, so you can tell "could not reach the worker" from "the worker went quiet mid-import".
23
+ - Errors from this layer are prefixed `[headless:<stage>]` where stage is one of `connect`, `auth`, `op`, `spawn`, so "could not reach the worker" and "the worker went quiet mid-import" read differently.
24
24
  - A first call with no editor and no worker can take up to two minutes while the worker starts and imports the project. Later calls are fast.
25
25
  - **No blind retries.** If a mutating operation (write, import, run, stop) times out or the worker connection drops, the outcome is reported as UNKNOWN and the connection is quarantined. Inspect the target (read the file, check the scene) before retrying. There is deliberately no automatic reconnect or replay.
26
26
  - Worker error strings start with a snake_case classifier (`sha256_mismatch`, `already_exists`, `needs_display`). `needs_display` on a screenshot means the machine has no display; open the project in the editor for screenshots.
@@ -4,10 +4,10 @@ The minimum safe workflow for AI agents building in a Summer Engine project.
4
4
 
5
5
  ## Build flow (default)
6
6
 
7
- 1. **Understand** the request, then outline a brief plan. Proceed once it's clearly right.
7
+ 1. **Understand** the request and outline a short plan.
8
8
  2. **Call `summer_get_project_context` first** so you don't guess scene paths or the project language and so the MCP session binds to the open project. Use `projectMemory` to decide which `.summer` files to read.
9
9
  3. **Edit through identity-bound Summer tools.** Use `summer_read_file`, `summer_replace_text`, and guarded `summer_write_file` for `.gd`, `.tscn`, `.tres`, `.cs`, `.json`, docs, and config. Write GDScript by default; use C# only if the project already uses it.
10
- 4. **Play and iterate.** After writing code, **play the scene you just made** and read `summer_get_diagnostics`; fix and repeat until it launches clean — don't wait for the user to navigate to the feature before the first error shows.
10
+ 4. **Play and iterate.** After writing code, **play the scene you just made** and read `summer_get_diagnostics`; fix and repeat until it launches clean. Do not wait for the user to find the first error.
11
11
 
12
12
  ## When to use Summer MCP (the live engine)
13
13
 
@@ -1,14 +1,14 @@
1
1
  # Summer MCP Tools — Canonical Reference
2
2
 
3
- > Use this as the single source of truth for which Summer MCP tool to call. Skills should reference tool names exactly as written here.
3
+ > Which Summer MCP tool to call. Skills reference tool names exactly as written here.
4
4
 
5
5
  ## When to use Summer MCP vs. host tools
6
6
 
7
- **Use Summer MCP for** anything that needs the live editor or Godot's import pipeline:
7
+ **Use Summer MCP for** anything that needs the live editor or the engine's import pipeline:
8
8
  - Scene graph mutation (`.tscn`)
9
9
  - Node properties and resources (`.tres`)
10
10
  - Project settings (`project.godot`) and InputMap
11
- - Asset import (Godot's import pipeline must run)
11
+ - Asset import (the import pipeline must run)
12
12
  - Play / stop / runtime state
13
13
  - Diagnostics, console, debugger output, script errors
14
14
  - Project text reads and guarded writes (`.gd`, `.cs`, `.tscn`, `.tres`, JSON, docs, config)
@@ -17,7 +17,7 @@
17
17
 
18
18
  **Rule of thumb:** project reads/writes go through Summer; live hierarchy/inspector changes use scene tools; process-level work remains with the host.
19
19
 
20
- ## Tool surface (104 tools)
20
+ ## Tool surface (105 tools)
21
21
 
22
22
  ### Project files (4)
23
23
 
@@ -28,7 +28,7 @@
28
28
  | `summer_write_file` | Create-only or sha256-guarded complete file write. |
29
29
  | `summer_replace_text` | Unique (or explicit replace-all) text mutation with read/sha guard. |
30
30
 
31
- ### Scene graph (11)
31
+ ### Scene graph (12)
32
32
 
33
33
  | Tool | Use |
34
34
  |---|---|
@@ -49,7 +49,7 @@
49
49
 
50
50
  | Tool | Use |
51
51
  |---|---|
52
- | `summer_set_prop` | Set a typed property in an explicit `scenePath` using Godot's `str_to_var()`. |
52
+ | `summer_set_prop` | Set a typed property in an explicit `scenePath` using `str_to_var()`. |
53
53
  | `summer_set_resource_property` | Set a nested resource property in an explicit `scenePath`. |
54
54
  | `summer_inspect_resource` | Read a resource FILE (`path`): a Mesh `.res` gives AABB, surfaces (primitive, vertex/index counts, attributes, triangles, material) and materials; a `.tscn`/`.glb` gives its nodes and meshes; anything else its non-default editor properties. Or a resource a node of the active scene holds (`nodePath` + `property`). |
55
55
  | `summer_connect_signal` | Wire a signal between nodes in the explicit `scenePath` (a `.tscn`). Connects with `CONNECT_PERSIST` through a RunSceneScript probe (the engine's ConnectSignal op never saves the connection), saves, and returns `persisted:true` / `verified:true` only when the saved file holds the `[connection]` line; otherwise `failure_reason: not_persisted`. |
@@ -65,7 +65,7 @@
65
65
 
66
66
  | Tool | Use |
67
67
  |---|---|
68
- | `summer_import_from_url` | Download a `.glb`/`.png`/etc and run Godot's full import pipeline. |
68
+ | `summer_import_from_url` | Download a `.glb`/`.png`/etc and run the engine's full import pipeline. |
69
69
  | `summer_import_from_url_batch` | Same, batched (single filesystem scan). |
70
70
 
71
71
  ### Scene scripting (3)
@@ -84,7 +84,7 @@
84
84
 
85
85
  ### Editor UI control (4)
86
86
 
87
- Preview — the `Ui*` engine ops ship with a follow-up engine build; until then these return `engine_lacks_op`. Semantic first: scene work never goes through the editor UI (use the scene, scripting, and perception tools). UI ops are for editor-workflow steps a human does with the mouse — open Project Settings, switch the main screen, clear a blocking dialog, read a dock. Ladder: dedicated tool → named action → tree + activate → screenshot (pixels last, never for coordinates). Quit / project-reload / delete-without-confirm actions are denied by the engine. The `driving-the-editor-ui` skill carries the patterns.
87
+ Preview: needs Summer Engine 0.5.66 or newer; older engines return `engine_lacks_op`. Scene work never goes through the editor UI (use the scene, scripting, and perception tools). UI ops are for editor-workflow steps a human does with the mouse — open Project Settings, switch the main screen, clear a blocking dialog, read a dock. Ladder: dedicated tool → named action → tree + activate → screenshot (pixels last, never for coordinates). Quit / project-reload / delete-without-confirm actions are denied by the engine. The `driving-the-editor-ui` skill carries the patterns.
88
88
 
89
89
  | Tool | Use |
90
90
  |---|---|
@@ -190,7 +190,7 @@ Preview. One fast, read-only call that walks every node of a 3D scene and lists
190
190
 
191
191
  | Tool | Use |
192
192
  |---|---|
193
- | `summer_create_debug_report` | Create a support-ready Markdown report for `/summer debug`. |
193
+ | `summer_create_debug_report` | Create a support-ready Markdown report (same as `summer debug`). |
194
194
  | `summer_get_diagnostics` | Aggregate error/warning summary. Call after every change. |
195
195
  | `summer_get_console` | Engine output panel. |
196
196
  | `summer_clear_console` | Clear before a fresh play, so post-run output is clean. |
@@ -206,9 +206,9 @@ Preview. One fast, read-only call that walks every node of a 3D scene and lists
206
206
  | `summer_list_my_assets` | List/search the signed-in user's generated and uploaded assets. Empty query lists recent assets. |
207
207
  | `summer_get_asset` | Fetch one exact asset by ID with file URL, download URL, viewer URL, metadata, license, and visibility. |
208
208
  | `summer_get_asset_download_url` | Get the primary or thumbnail download URL for a specific asset. Stable shape for future signed URLs. |
209
- | `summer_import_asset` | Search, choose the top match, download, run Godot import, and optionally instantiate 3D models. |
209
+ | `summer_import_asset` | Search, choose the top match, download, run the engine import, and optionally instantiate 3D models. |
210
210
  | `summer_import_asset_by_id` | Import one exact Summer asset ID. Use after generation jobs or when the user selects a specific asset. |
211
- | `summer_import_hdri` | Search Poly Haven's CC0 HDRIs (public API, no Summer login), import the `.hdr`/`.exr` into `res://sky/`, and get the exact `summer_run_script` snippet that wires it as the WorldEnvironment sky. The cheapest whole-scene lighting upgrade. |
211
+ | `summer_import_hdri` | Search Poly Haven's CC0 HDRIs (public API, no Summer login), import the `.hdr`/`.exr` into `res://sky/`, and get the exact `summer_run_script` snippet that wires it as the WorldEnvironment sky. |
212
212
  | `summer_slice_asset_sheet` | Detect and crop every distinct asset from a generated sheet image into named individual assets (works without the engine; import the results afterwards). |
213
213
 
214
214
  ### Asset generation (5 — metered)
@@ -228,7 +228,7 @@ Preview. One fast, read-only call that walks every node of a 3D scene and lists
228
228
  | `summer_check_job` | Poll a generation job. |
229
229
  | `summer_batch` | Run multiple ops as a transaction. `InstantiateScene` ops may carry `position` / `rotation_degrees` / `scale` / `transform`; `receipt: "summary"` returns counts, failures with op index and created paths under 5 KB. A `ReparentNode` keeps the moved node's scene-owned children and grandchildren (the engine op drops them from the saved file) and is verified from the saved `.tscn` (`persisted:true` / `verified:true`, else `failure_reason: not_persisted`); a raw `ConnectSignal` is refused — use `summer_connect_signal`. `scenePersistence.saved` only means the SaveScene ran. |
230
230
 
231
- ### Meta (4)
231
+ ### Meta (5)
232
232
 
233
233
  | Tool | Use |
234
234
  |---|---|
@@ -236,8 +236,9 @@ Preview. One fast, read-only call that walks every node of a 3D scene and lists
236
236
  | `summer_get_studio_workflow` | Discover Summer Studio's guided workflow recipes (starter prompts, ordered steps, required tools) for a goal. |
237
237
  | `summer_get_project_context` | Project, scene, and `.summer` memory summary — call at start of session. Binds the session to the open project and surfaces a `capabilitySkewWarning` when the engine build and CLI have drifted; tools whose op the engine provably lacks return a structured `engine_lacks_op` result instead of running. Compact by default (a few KB: `sceneSummary`, scalar `health` with capability counts); `include:['scene_tree','capabilities','settings']` adds the heavy blocks, `omitted` says how. |
238
238
  | `summer_get_agent_playbook` | Daily operating contract (observe-first loop, content routing, invariants, verification ritual) — call at start of session. Also served natively as the `summer_agent_playbook` MCP prompt. |
239
+ | `summer_get_board` | Read the person's approved planning board (look, characters, place, storyboard, picks), with the look and picked cards as images to compare screenshots against. Needs the project id from the build brief; works without the engine. |
239
240
 
240
- ### Creator platform (5)
241
+ ### Creator platform (7)
241
242
 
242
243
  | Tool | Use |
243
244
  |---|---|
@@ -245,8 +246,9 @@ Preview. One fast, read-only call that walks every node of a 3D scene and lists
245
246
  | `summer_export_templates` | `list` or `install` export templates from Summer's CDN (`downloads.summer.games/engine-templates/<summerVersion>/manifest.json`) into the engine's user template folder (`<data>/Godot/export_templates/<FULL_CONFIG>/`), sha256-checked. Only download exports need them; store bundles need none. `summerVersion` is read on macOS, passed elsewhere. |
246
247
  | `summer_publish_build` | Upload that `.zip` to the creator's game through Studio's store upload: confirm-gated preview first, then declare, part upload from disk, seal, wait for the Build, name its client pack; `publish:true` also approves it. Needs `summer login --store`; a retry with the same file and version continues the same upload. |
247
248
  | `summer_creator_publish` | **Deprecated** (use the two tools above). Compute the exact `.pck` digest and size, require user confirmation, then run versioned prepare → write-once upload → finalize. The server independently verifies `publish` scope, ownership, bytes, and review state. |
248
- | `summer_creator_releases` | List real creator-owned releases from `summer.creator.v1`, with opaque cursor pagination. |
249
+ | `summer_creator_releases` | **Deprecated.** Lists releases on the legacy creator API. For summer.games use `summer_store_releases` (hosted, mounted after `summer login --store`). |
249
250
  | `summer_creator_config` | Read or confirm updates to the shared non-secret `~/.summer/config.json`. It never accepts or returns tokens. |
251
+ | `summer_capture_gameplay` | Real gameplay frames without a running editor: starts the game (main scene or `scene`) in the engine's offscreen verify instance (`--summer-verify`, real renderer, window parked offscreen, no focus) at `resolution` (default `1920x1080`), waits `waitSeconds`, saves `frames` PNGs (HUD included) to `<project>/.summer/captures/<time>/`. Imports the project first when `.godot/` is missing. Returns each path with its real width and height; warns when the stretch settings render another size. For store screenshots. |
250
252
 
251
253
  ### Library search (2)
252
254
 
@@ -287,7 +289,7 @@ Every asset-generation skill should follow this loop:
287
289
  2. `summer_generate_image` / `summer_generate_3d` / `summer_generate_audio` — metered creation.
288
290
  3. `summer_check_job` if the generation was async.
289
291
  4. `summer_get_asset` — resolve the returned `assetId`, `rigAssetId`, or `animationAssetId`.
290
- 5. `summer_import_asset_by_id` — import the exact result into Godot's pipeline.
292
+ 5. `summer_import_asset_by_id` — import the exact result through the engine's import pipeline.
291
293
  6. `summer_get_asset_download_url` — only when the user explicitly wants a downloadable file/link.
292
294
 
293
295
  ## summer_set_resource_property — nested properties
@@ -304,7 +306,7 @@ summer_set_resource_property(
304
306
 
305
307
  `nodePath`, `resourceProperty` and `subProperty` are all required and canonical. There is no dotted `"mesh.size"` form.
306
308
 
307
- **Inline `sub_resource` targets work.** An earlier revision of this file claimed the op silently fails on an inline sub-resource and told you to save the resource as a standalone `.tres` first. That was wrong, and it propagated into nine skills. The implementation reads `node->get(resourceProperty)` and sets the sub-property on whatever comes back (`modules/1summer_engine/editor/ops/scene_ops.cpp:1273-1400`) — there is no inline-versus-external branch anywhere in it. The canonical example in the shipped `summer_batch` description does exactly this against an inline mesh.
309
+ **Inline `sub_resource` targets work.** You do not need to save the resource as a standalone `.tres` first: the op reads the node's property and sets the sub-property on whatever resource it holds. The canonical example in the shipped `summer_batch` description does exactly this against an inline mesh.
308
310
 
309
311
  Structural failures are explicit:
310
312
 
@@ -7,7 +7,7 @@
7
7
  ## Who owns what
8
8
 
9
9
  - **Web rows** come from summerengine.com's own route catalog (`/agent-routes.json`, published from the web repo's `src/lib/navigation/routes.ts`). The toolkit vendors a snapshot (`assets/navigation/web-routes.json`, refreshed with `npm run sync:web-routes`); it does not invent pages.
10
- - **Editor rows** are ids of Summer Engine's one navigation table (`navigate_ops.cpp`, op `Navigate`). The running engine advertises which ids it can open in `/api/health` `capabilities.navigation`; `summer open --list` shows availability from the connected engine. Engines that predate the `Navigate` op can still serve the rows with a legacy op (last-but-one column); every other row answers `engine_lacks_op` with an update hint.
10
+ - **Editor rows** are ids of Summer Engine's one navigation table (the `Navigate` op). The running engine advertises which ids it can open in `/api/health` `capabilities.navigation`; `summer open --list` shows availability from the connected engine. Engines that predate the `Navigate` op can still serve the rows with a legacy op (last-but-one column); every other row answers `engine_lacks_op` with an update hint.
11
11
 
12
12
  ## How to read a row
13
13
 
@@ -13,7 +13,7 @@ Godot Engine remains relevant in narrow technical and legal contexts:
13
13
  - upstream contributions, attribution, copyright, and licenses.
14
14
 
15
15
  The current technical base is 4.6.1 and the approved next target is 4.7.1. The
16
- source of truth is the repository compatibility contract. Neither number is a
16
+ source of truth is `src/core/summer-compatibility.ts`. Neither number is a
17
17
  permanent Summer identity, so creator prompts and skills should not pin
18
18
  themselves to one upstream release.
19
19
 
@@ -1,6 +1,6 @@
1
1
  # `.summer/` Folder Convention
2
2
 
3
- > The canonical layout for project-scoped Summer state. Read this if you're authoring a skill that writes durable design output, locked project memory, or agent-readable design notes.
3
+ > The layout of project-scoped Summer state. Read this before writing a skill that writes design output, locked project memory, or agent-readable notes.
4
4
 
5
5
  ## Files at the root of `.summer/`
6
6
 
@@ -11,7 +11,7 @@ paths: ["**/*.tscn", "**/*.tres"]
11
11
 
12
12
  # 3D Lighting for Summer Engine
13
13
 
14
- Set up lighting and environment for 3D scenes. Follow these patterns for outdoor and indoor setups.
14
+ Outdoor and indoor lighting setups for 3D scenes.
15
15
 
16
16
  ## Light Types
17
17
 
@@ -59,9 +59,9 @@ For a simple procedural sky:
59
59
  summer_set_resource_property(nodePath="./World/WorldEnvironment", resourceProperty="environment", subProperty="background_mode", value="2")
60
60
  ```
61
61
 
62
- You may need to create a Sky resource and assign it. In the editor this is done via the inspector; via MCP, SetResourceProperty on nested resources may require the resource to exist first. If `environment` is "Environment", the engine creates a default. For `sky`, you might set `sky` to "ProceduralSkyMaterial" or similar—check Godot docs for the exact property chain.
62
+ A sky is a `Sky` resource in `environment.sky`, with a `ProceduralSkyMaterial` (or `PhysicalSkyMaterial`) in its `sky_material`. `summer_set_resource_property` only sets properties on a resource that already exists, so create the `Sky` and its material in one `summer_run_script` call.
63
63
 
64
- **Simpler path:** Use the 3d-basic template which already has a sky. Copy that structure.
64
+ **Simpler path:** start from the `3d-basic` template, which already has a sky, and copy its structure.
65
65
 
66
66
  ### 3. Fill Light (Optional)
67
67
 
@@ -128,7 +128,7 @@ set the meshes' `gi_mode`, then run the bake yourself from `summer_run_script`
128
128
  enum (0 is OK; `BAKE_ERROR_NO_LIGHTMAPPER` means no renderer in this process, not a
129
129
  missing binding). Verify with a `framing:"camera"` screenshot, which renders the
130
130
  real environment. Only fall back to "press Bake Lightmaps in the editor" when
131
- there is genuinely no renderer available. If they want GI with zero bake step,
131
+ no renderer is available. If they want GI with zero bake step,
132
132
  steer to `SDFGI` (`Environment.sdfgi_enabled`) or `VoxelGI`.
133
133
 
134
134
  Note the related trap: `Engine.has_singleton("EditorInterface")` returns **true**
@@ -1,6 +1,6 @@
1
1
  # Summer skills
2
2
 
3
- > 116 skills, grouped by their primary domain. **Generated** by `npm run generate:registry` from each skill's `resource.yaml`; `--check` fails when this file and the library disagree. Do not edit by hand.
3
+ > 118 skills, grouped by their primary domain. **Generated** by `npm run generate:registry` from each skill's `resource.yaml`; `--check` fails when this file and the library disagree. Do not edit by hand.
4
4
 
5
5
  The folder is flat on purpose (`docs/design/DECISIONS.md`, D3): a skill usually belongs to several domains, so categories live in each skill's `facets.domains` and this index is rendered from them. The first domain listed is the primary one. `summer skills list --by-domain` prints the same grouping; `summer skills info <slug>` shows one skill.
6
6
 
@@ -10,7 +10,7 @@ Status: **stable** unless marked; *preview* = not yet exercised in-engine by the
10
10
 
11
11
  - [2d](#2d) (10)
12
12
  - [3d](#3d) (6)
13
- - [agent-workflow](#agent-workflow) (17)
13
+ - [agent-workflow](#agent-workflow) (18)
14
14
  - [ai](#ai) (2)
15
15
  - [animation](#animation) (7)
16
16
  - [assets](#assets) (3)
@@ -24,7 +24,7 @@ Status: **stable** unless marked; *preview* = not yet exercised in-engine by the
24
24
  - [multiplayer](#multiplayer) (16)
25
25
  - [navigation](#navigation) (1)
26
26
  - [performance](#performance) (1)
27
- - [rendering](#rendering) (5)
27
+ - [rendering](#rendering) (6)
28
28
  - [runtime](#runtime) (1)
29
29
  - [scenes](#scenes) (12)
30
30
  - [scripting](#scripting) (2)
@@ -56,12 +56,13 @@ Status: **stable** unless marked; *preview* = not yet exercised in-engine by the
56
56
  | [*fabricating-assets*](./fabricating-assets/SKILL.md) (preview) | Fabricate meshes with a bpy script in the user's own Blender (summer_fabricate_3d) — kits with exact dimensions, VFX meshes, post-processing generated models. | assets, scripting, agent-workflow |
57
57
  | [organic-model](./organic-model/SKILL.md) | Generate organic 3D shapes — trees, rocks, mushrooms, coral, plants, vines, crystals — where AI artifacts read as natural irregularity. | assets |
58
58
  | [prop-model](./prop-model/SKILL.md) ★ | Generate a single static 3D prop — sword, barrel, chest, lantern, throne, statue — one isolated object, no rigging, wired as a MeshInstance3D. | assets |
59
- | [vehicle-model](./vehicle-model/SKILL.md) | Generate a hard-surface vehicle — car, spaceship, mech, boat, tank — static mesh with optional detail-texture pass, wired as Vehicle3D or MeshInstance3D. | assets |
59
+ | [vehicle-model](./vehicle-model/SKILL.md) | Generate a hard-surface vehicle — car, spaceship, mech, boat, tank — static mesh with optional detail-texture pass, wired as VehicleBody3D or MeshInstance3D. | assets |
60
60
 
61
61
  ## agent-workflow
62
62
 
63
63
  | skill | when to use | also |
64
64
  |---|---|---|
65
+ | [*bounded-engine-runs*](./bounded-engine-runs/SKILL.md) ★ (preview) | Run Summer headless or offscreen safely from an agent: time limits, one engine per project, muted runs, import passes, tests that fail on crashes. | headless, verification |
65
66
  | [brainstorming](./brainstorming/SKILL.md) ★ | Explore user intent, requirements, and design before implementation — must run before any creative work: features, components, mechanics, behavior. | game-design |
66
67
  | [debugging-game-feel](./debugging-game-feel/SKILL.md) | Debug features that work but feel wrong — floaty jumps, mushy combat, sluggish camera — subjective bugs living in tuning, timing, and feedback layers. | gameplay |
67
68
  | [diagnosing-perf-regressions](./diagnosing-perf-regressions/SKILL.md) | Find why frame rate, frame time, or load time got worse since a known-good state — regression hunting, not general performance tuning. | performance |
@@ -105,7 +106,7 @@ Status: **stable** unless marked; *preview* = not yet exercised in-engine by the
105
106
  |---|---|---|
106
107
  | [asset-strategy](./asset-strategy/SKILL.md) ★ | Route any 'I need a [thing]' asset request to the right specialist skill — disambiguates 2D / 3D / audio / video / VFX / animation pipelines. | pipeline |
107
108
  | [*lumera-single-image-scene-reconstruction*](./lumera-single-image-scene-reconstruction/SKILL.md) (preview) | Lumera-style single image to editable 3D scene — VLM-parsed object boxes and parametric lights, per-object meshes, HDR probe, .tscn assembly, refinement loop. | pipeline, 3d, scenes |
108
- | [*skintokens-auto-rigging*](./skintokens-auto-rigging/SKILL.md) (preview) | Offline auto-rigging with skin-tokens.cpp (GGML SkinTokens/TokenRig port) — skeleton and skin weights from a static GLB mesh on CPU/Vulkan, into Godot 4. | pipeline, 3d, animation |
109
+ | [*skintokens-auto-rigging*](./skintokens-auto-rigging/SKILL.md) (preview) | Offline auto-rigging with skin-tokens.cpp (GGML SkinTokens/TokenRig port) — skeleton and skin weights from a static GLB mesh on CPU/Vulkan, into Summer Engine. | pipeline, 3d, animation |
109
110
 
110
111
  ## audio
111
112
 
@@ -152,7 +153,7 @@ Status: **stable** unless marked; *preview* = not yet exercised in-engine by the
152
153
  | [*celeste-momentum-platforming*](./celeste-momentum-platforming/SKILL.md) (preview) | Celeste-style 2D precision platformer movement — momentum running, coyote time, variable jumps, dash, wall jump/slide, climb stamina, pixel corner correction. | character-controller, game-design |
153
154
  | [*combat-basics*](./combat-basics/SKILL.md) (preview) | Damage in Summer Engine: hitbox and hurtbox Areas on opposing layers, a reusable Health component, damage signals, knockback, hit feedback, projectiles. | scripting, game-design |
154
155
  | [design-mechanic](./design-mechanic/SKILL.md) ★ | Design one game mechanic in detail — input, response, feedback, failure modes, depth, tunables — outputs a design doc, node-graph sketch, GDScript stub. | game-design |
155
- | [*in-game-purchases*](./in-game-purchases/SKILL.md) (preview) | Sell items for Sparks and let short players buy Sparks in game via the Summer purchase sheet: checkout, Sparks purchase, results, testing, store policy. | scripting, game-design |
156
+ | [*in-game-purchases*](./in-game-purchases/SKILL.md) (preview) | Sell items for Sparks in a game shop via the Summer purchase sheet: checkout, results, not enough Sparks, inventory unlocks, authority grants, store policy. | scripting, game-design |
156
157
  | [*web-and-touch-input*](./web-and-touch-input/SKILL.md) ★ (preview) | Input for the browser and phones: the first-click rule for sound and mouse capture, focus, and touch buttons or a virtual stick on the same actions. | ui |
157
158
 
158
159
  ## level-design
@@ -193,7 +194,7 @@ Status: **stable** unless marked; *preview* = not yet exercised in-engine by the
193
194
 
194
195
  | skill | when to use | also |
195
196
  |---|---|---|
196
- | [tune-performance](./tune-performance/SKILL.md) ★ | Profile a slow game via summer_get_diagnostics, identify rendering/physics/scripting hotspots, propose fixes with before/after metric expectations. | debug |
197
+ | [tune-performance](./tune-performance/SKILL.md) ★ | Profile a slow game with a measurement probe, identify rendering/physics/scripting hotspots, propose fixes with before/after metric expectations. | debug |
197
198
 
198
199
  ## rendering
199
200
 
@@ -201,8 +202,9 @@ Status: **stable** unless marked; *preview* = not yet exercised in-engine by the
201
202
  |---|---|---|
202
203
  | [3d-lighting](./3d-lighting/SKILL.md) ★ | Set up 3D scene lighting — DirectionalLight3D vs Omni vs Spot, WorldEnvironment, sky, shadow tuning, ambient — per current Summer conventions. | lighting |
203
204
  | [art-direction](./art-direction/SKILL.md) ★ | Define the game's visual style — references, palette, mood, lighting plan, post-processing, do/don't list — output as an art bible at .summer/art-bible.md. | lighting |
204
- | [*psx-retro-rendering*](./psx-retro-rendering/SKILL.md) (preview) | Hardware-informed PlayStation 1 rendering in Godot 4 — low-res output, RGB5 and exact dither, affine textures, vertex snapping, blend modes, fog; limits named. | 3d |
205
- | [*realtime-wet-surfaces*](./realtime-wet-surfaces/SKILL.md) (preview) | Real-time wetness on existing Godot 4 materials without losing their values — value-copying wet shader, geometry-driven wet mask, instance-uniform wet amount. | vfx |
205
+ | [*compatibility-renderer-traps*](./compatibility-renderer-traps/SKILL.md) ★ (preview) | Make a Forward+ Summer game also look right on the Compatibility renderer: instance-uniform budget, black MultiMesh colors, sRGB vertex colors. | performance |
206
+ | [*psx-retro-rendering*](./psx-retro-rendering/SKILL.md) (preview) | PlayStation 1 rendering in Summer Engine — low-res output, RGB5 and exact dither, affine textures, vertex snapping, blend modes, fog; limits named. | 3d |
207
+ | [*realtime-wet-surfaces*](./realtime-wet-surfaces/SKILL.md) (preview) | Real-time wetness on existing materials without losing their values — value-copying wet shader, geometry-driven wet mask, instance-uniform wet amount. | vfx |
206
208
  | [*web-compatibility-look*](./web-compatibility-look/SKILL.md) ★ (preview) | Make a web or browser game look high-end in the Compatibility renderer (WebGL 2): what works, what to avoid, 2D and 3D recipes, web performance. | 2d, 3d |
207
209
 
208
210
  ## runtime
@@ -13,7 +13,7 @@ paths: ["audio/music/**", "scripts/audio/**", "**/*.tscn", "default_bus_layout.t
13
13
 
14
14
  ## Overview
15
15
 
16
- This is the **wiring** skill, not the generation skill. The job is to take 3–5 music stems (or full tracks) and connect them to a game state machine so the music shifts as the player's situation changes — exploration → tension → combat → victory → exploration — with crossfades, ducking, and bus routing the player never consciously notices but always feels.
16
+ This skill wires music; it does not generate it. It connects 3–5 music stems (or full tracks) to a game state machine so the music follows the player's situation — exploration → tension → combat → victory → exploration — with crossfades, ducking, and bus routing.
17
17
 
18
18
  This skill assumes the stems already exist. If they don't, run `/music-track` first for each state, or generate matching stems (same tempo, same key, same bar count) so they layer/crossfade cleanly.
19
19
 
@@ -51,7 +51,7 @@ If the plan is absent, run `/audio-direction` step 6 first.
51
51
  | **Vertical re-orchestration** | Same melody, different orchestration per state, snap on bar | All variants play simultaneously muted; swap on next bar boundary |
52
52
  | **Procedural / generative** | Rules generate music in real-time | Beyond this skill; needs a custom system |
53
53
 
54
- For 90% of indie games, **horizontal sequencing** is correct. It's cheaper to author, easier to swap, and players don't notice the difference.
54
+ For most games, **horizontal sequencing** is right. It is cheaper to author and easier to swap.
55
55
 
56
56
  ### 3. Confirm stems exist (or generate them)
57
57
 
@@ -67,7 +67,7 @@ You need (typical case):
67
67
  - (optional) `audio/music/boss.mp3` — distinct from combat
68
68
  - (optional) `audio/music/victory.mp3` — short linear sting (4–8s)
69
69
 
70
- If any are missing, run `/music-track` for each. Critically: **same BPM, same key, same time signature, same bar length** so they overlap cleanly.
70
+ If any are missing, run `/music-track` for each. Use **the same BPM, key, time signature, and bar length** for all of them so they overlap cleanly.
71
71
 
72
72
  ### 4. Verify / extend the bus layout
73
73
 
@@ -294,7 +294,7 @@ Master
294
294
  ## Anti-patterns
295
295
 
296
296
  - **Stems generated at different BPM/key.** They will not crossfade cleanly. Same BPM, same key, same bar count.
297
- - **Restarting tracks on state change.** Players hear the restart and the magic dies. Always crossfade volumes; never `play()` mid-state.
297
+ - **Restarting tracks on state change.** Players hear the restart. Always crossfade volumes; never `play()` mid-state.
298
298
  - **No autoplay on the silent stems.** They can't fade in to phase if they never started.
299
299
  - **Polling state in `_process`.** Use signals. Music director listens to `EventBus`, not to game state every frame.
300
300
  - **Hardcoding volumes in `set_state`.** Use the table-driven `_apply_state` so adding a new state doesn't fork the function.
@@ -323,8 +323,8 @@ in Summer Engine.
323
323
 
324
324
  ## See also
325
325
 
326
- - `audio/audio-direction` — defines the dynamic music plan and bus layout
327
- - `audio/music-track` — generates the stems
328
- - `audio/voice-line` — the voice bus that triggers ducking
326
+ - `audio-direction` — defines the dynamic music plan and bus layout
327
+ - `music-track` — generates the stems
328
+ - `voice-line` — the voice bus that triggers ducking
329
329
  - `../../references/godot-version/godot-version.md` — Summer compatibility for AudioServer
330
330
  and Tween APIs
@@ -48,7 +48,7 @@ Not for scripted dialogue trees (design-npc) or for enemy behaviour.
48
48
 
49
49
  ## Top up and set limits
50
50
 
51
- AI characters are paid from the Summer credits of the developer who turned them on: usage is billed from your Summer credits. Cost depends on the models and voices you choose. Your dashboard shows spend as it happens, and your limits cap it. Players never pay. There is nothing to configure in the game project.
51
+ AI characters are paid from the Summer credits of the developer who turned them on. Cost depends on the models and voices you choose. Your dashboard shows spend as it happens, and your limits cap it. Players never pay. There is nothing to configure in the game project.
52
52
 
53
53
  1. In Summer Studio, open the game and its **AI characters** section.
54
54
  2. Add a persona per character: name, a plain-words description, an optional voice, reply length, a safe line in character, and the model (from the models the game allows, each marked fast or smart).