summer-engine 2.6.6 → 2.8.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 (168) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/.claude-plugin/plugin.json +4 -1
  3. package/.codex-plugin/plugin.json +6 -2
  4. package/.cursor-plugin/plugin.json +5 -1
  5. package/.opencode/INSTALL.md +1 -1
  6. package/.opencode/plugins/summer.js +2 -2
  7. package/AGENTS.md +11 -7
  8. package/CHANGELOG.md +40 -0
  9. package/GEMINI.md +9 -7
  10. package/README.md +63 -21
  11. package/_persona/summer/SKILL.md +1 -0
  12. package/assets/autopilot/README.md +51 -0
  13. package/assets/autopilot/autopilot.gd +222 -0
  14. package/assets/autopilot/probe_base.gd +262 -0
  15. package/assets/autopilot/run.sh +78 -0
  16. package/commands/gameskill.md +11 -2
  17. package/commands/summer.md +13 -0
  18. package/dist/bin/summer.js +12 -0
  19. package/dist/commands/config.d.ts +2 -0
  20. package/dist/commands/config.js +53 -0
  21. package/dist/commands/create.d.ts +1 -0
  22. package/dist/commands/create.js +38 -6
  23. package/dist/commands/debug.d.ts +2 -0
  24. package/dist/commands/debug.js +44 -0
  25. package/dist/commands/doctor.js +112 -8
  26. package/dist/commands/list.js +1 -1
  27. package/dist/commands/login.d.ts +19 -0
  28. package/dist/commands/login.js +123 -36
  29. package/dist/commands/logout.js +3 -16
  30. package/dist/commands/logs.d.ts +2 -0
  31. package/dist/commands/logs.js +19 -0
  32. package/dist/commands/mcp.js +7 -2
  33. package/dist/commands/open.js +1 -1
  34. package/dist/commands/publish.d.ts +2 -0
  35. package/dist/commands/publish.js +20 -0
  36. package/dist/commands/releases.d.ts +2 -0
  37. package/dist/commands/releases.js +20 -0
  38. package/dist/commands/run.js +1 -1
  39. package/dist/commands/skills.js +1 -1
  40. package/dist/lib/api-client.d.ts +15 -4
  41. package/dist/lib/api-client.js +138 -13
  42. package/dist/lib/async-op-lifecycle.d.ts +7 -2
  43. package/dist/lib/async-op-lifecycle.js +32 -9
  44. package/dist/lib/auth.d.ts +40 -12
  45. package/dist/lib/auth.js +173 -37
  46. package/dist/lib/cloud/engine-bridge.d.ts +17 -4
  47. package/dist/lib/cloud/engine-bridge.js +32 -6
  48. package/dist/lib/config.d.ts +20 -0
  49. package/dist/lib/config.js +142 -0
  50. package/dist/lib/creator.d.ts +93 -0
  51. package/dist/lib/creator.js +393 -0
  52. package/dist/lib/debug-report.d.ts +50 -0
  53. package/dist/lib/debug-report.js +308 -0
  54. package/dist/lib/engine.d.ts +35 -2
  55. package/dist/lib/engine.js +240 -6
  56. package/dist/lib/game-task-plan.js +4 -4
  57. package/dist/lib/mcp-boot-notice.d.ts +3 -0
  58. package/dist/lib/mcp-boot-notice.js +7 -0
  59. package/dist/lib/mcp-log.d.ts +3 -0
  60. package/dist/lib/mcp-log.js +72 -0
  61. package/dist/lib/public-surface-paths.d.ts +13 -0
  62. package/dist/lib/public-surface-paths.js +42 -0
  63. package/dist/lib/skills-registry.d.ts +33 -1
  64. package/dist/lib/skills-registry.js +55 -0
  65. package/dist/lib/store.d.ts +14 -0
  66. package/dist/lib/store.js +145 -0
  67. package/dist/lib/summer-compatibility.d.ts +6 -0
  68. package/dist/lib/summer-compatibility.js +22 -0
  69. package/dist/mcp/server.d.ts +10 -3
  70. package/dist/mcp/server.js +104 -11
  71. package/dist/mcp/tools/asset-tools.js +33 -12
  72. package/dist/mcp/tools/cloud-tools.js +15 -15
  73. package/dist/mcp/tools/creator-tools.d.ts +2 -0
  74. package/dist/mcp/tools/creator-tools.js +105 -0
  75. package/dist/mcp/tools/debug-tools.js +44 -1
  76. package/dist/mcp/tools/file-tools.d.ts +2 -0
  77. package/dist/mcp/tools/file-tools.js +154 -0
  78. package/dist/mcp/tools/generate-tools.js +159 -11
  79. package/dist/mcp/tools/project-tools.js +37 -27
  80. package/dist/mcp/tools/scene-tools.js +106 -29
  81. package/dist/mcp/tools/visual-tools.js +4 -3
  82. package/dist/mcp/tools/with-engine.js +4 -4
  83. package/hooks/session-start.sh +5 -5
  84. package/package.json +3 -1
  85. package/references/collaborative-protocol.md +50 -0
  86. package/references/gd-style.md +121 -0
  87. package/references/godot-version.md +51 -0
  88. package/references/mcp-tools-reference.md +199 -0
  89. package/references/public-surface-language.md +30 -0
  90. package/references/summer-folder.md +90 -0
  91. package/references/template-registry.md +73 -0
  92. package/skills/2d-assets/character-portrait/SKILL.md +17 -12
  93. package/skills/2d-assets/concept-art/SKILL.md +10 -9
  94. package/skills/2d-assets/create-asset-sheet/SKILL.md +17 -15
  95. package/skills/2d-assets/pixel-art/SKILL.md +36 -20
  96. package/skills/2d-assets/skybox-panorama/SKILL.md +32 -37
  97. package/skills/2d-assets/sprite-sheet/SKILL.md +40 -35
  98. package/skills/2d-assets/tileable-texture/SKILL.md +28 -22
  99. package/skills/2d-assets/ui-graphics/SKILL.md +46 -32
  100. package/skills/2d-assets/use-widget-asset/SKILL.md +8 -6
  101. package/skills/3d-assets/character-model/SKILL.md +34 -19
  102. package/skills/3d-assets/environment-kit/SKILL.md +11 -5
  103. package/skills/3d-assets/organic-model/SKILL.md +8 -5
  104. package/skills/3d-assets/prop-model/SKILL.md +9 -3
  105. package/skills/3d-assets/vehicle-model/SKILL.md +32 -19
  106. package/skills/README.md +1 -1
  107. package/skills/ai-and-npcs/design-npc/SKILL.md +31 -13
  108. package/skills/animation/animation-tree/SKILL.md +39 -15
  109. package/skills/animation/facial-and-lipsync/SKILL.md +25 -8
  110. package/skills/animation/generate-motion/SKILL.md +47 -15
  111. package/skills/animation/procedural-animation/SKILL.md +31 -13
  112. package/skills/animation/retarget/SKILL.md +127 -79
  113. package/skills/audio/adaptive-music/SKILL.md +24 -20
  114. package/skills/audio/ambient-bed/SKILL.md +22 -16
  115. package/skills/audio/audio-direction/SKILL.md +15 -10
  116. package/skills/audio/music-track/SKILL.md +18 -12
  117. package/skills/audio/sound-effect/SKILL.md +17 -12
  118. package/skills/audio/voice-line/SKILL.md +42 -42
  119. package/skills/character-controllers/fps-controller/SKILL.md +26 -16
  120. package/skills/debugging/debug/SKILL.md +74 -20
  121. package/skills/deployment/export-and-ship/SKILL.md +105 -38
  122. package/skills/deployment/remote-deploy/SKILL.md +140 -0
  123. package/skills/gameplay-mechanics/auto-fire-targeting/SKILL.md +26 -1
  124. package/skills/gameplay-mechanics/design-mechanic/SKILL.md +23 -15
  125. package/skills/level-design/design-level/SKILL.md +22 -8
  126. package/skills/level-design/scene-to-level/SKILL.md +13 -7
  127. package/skills/multiplayer-and-networking/host-authoritative-state/SKILL.md +8 -8
  128. package/skills/multiplayer-and-networking/peer-to-peer-multiplayer/SKILL.md +2 -7
  129. package/skills/multiplayer-and-networking/setup-multiplayer/SKILL.md +26 -18
  130. package/skills/performance/tune-performance/SKILL.md +51 -32
  131. package/skills/rendering-and-lighting/3d-lighting/SKILL.md +34 -5
  132. package/skills/rendering-and-lighting/art-direction/SKILL.md +6 -8
  133. package/skills/scene-and-project/brainstorm-game/SKILL.md +7 -9
  134. package/skills/scene-and-project/make-game/SKILL.md +2 -1
  135. package/skills/scene-and-project/play/SKILL.md +10 -4
  136. package/skills/scene-and-project/scene-composition/SKILL.md +21 -8
  137. package/skills/scene-and-project/summer-cloud/SKILL.md +92 -0
  138. package/skills/scripting-patterns/gdscript-patterns/SKILL.md +1 -1
  139. package/skills/ui-and-ux/ui-basics/SKILL.md +16 -7
  140. package/skills/video/animated-loop/SKILL.md +63 -39
  141. package/skills/video/cinematic-cutscene/SKILL.md +66 -30
  142. package/skills/video/trailer-shot/SKILL.md +30 -21
  143. package/skills/visual-effects/_building-blocks/additive-billboard-particles.md +25 -16
  144. package/skills/visual-effects/_building-blocks/trauma-shake-snippet.md +5 -3
  145. package/skills/visual-effects/game-feel/SKILL.md +51 -33
  146. package/skills/visual-effects/recipes/dissolve/SKILL.md +51 -9
  147. package/skills/visual-effects/recipes/fire/SKILL.md +136 -49
  148. package/skills/visual-effects/recipes/hit-spark/SKILL.md +45 -8
  149. package/skills/visual-effects/recipes/lightning/SKILL.md +59 -27
  150. package/skills/visual-effects/recipes/magic-glow/SKILL.md +59 -26
  151. package/skills/visual-effects/recipes/muzzle-flash/SKILL.md +68 -25
  152. package/skills/visual-effects/recipes/smoke/SKILL.md +89 -28
  153. package/skills/visual-effects/recipes/water-ripple/SKILL.md +83 -23
  154. package/skills/workflow/brainstorming/SKILL.md +1 -1
  155. package/skills/workflow/debugging-game-feel/SKILL.md +29 -9
  156. package/skills/workflow/diagnosing-perf-regressions/SKILL.md +46 -21
  157. package/skills/workflow/gameskill/SKILL.md +11 -2
  158. package/skills/workflow/headless-scripting/SKILL.md +407 -0
  159. package/skills/workflow/investigating-bugs/SKILL.md +4 -2
  160. package/skills/workflow/mcpupdate/SKILL.md +9 -9
  161. package/skills/workflow/playtesting-a-feature/SKILL.md +94 -21
  162. package/skills/workflow/skill-create/SKILL.md +7 -7
  163. package/skills/workflow/skill-test/SKILL.md +3 -3
  164. package/skills/workflow/using-summer/SKILL.md +32 -3
  165. package/skills/workflow/verification-before-completion/SKILL.md +2 -0
  166. package/skills/workflow/writing-plans/SKILL.md +7 -7
  167. package/skills/workflow/writing-skills/SKILL.md +7 -5
  168. package/skills/workflow/writing-skills/testing-skills-with-subagents.md +1 -1
@@ -8,7 +8,7 @@
8
8
  "name": "summer",
9
9
  "source": "./",
10
10
  "version": "2.5.1",
11
- "description": "Agent tooling for Summer Engine: game-dev skills, lifecycle hooks, and a 44-tool MCP bridge to the local desktop app.",
11
+ "description": "Agent tooling for Summer Engine: game-dev skills, lifecycle hooks, and a 50+ tool MCP bridge to the local desktop app.",
12
12
  "author": { "name": "Summer Engine", "email": "founders@summerengine.com" },
13
13
  "category": "game-development",
14
14
  "tags": ["game-dev", "godot", "ai-game-engine"],
@@ -2,7 +2,7 @@
2
2
  "$schema": "https://json.schemastore.org/claude-code-plugin-manifest.json",
3
3
  "name": "summer",
4
4
  "version": "2.5.1",
5
- "description": "Agent tooling for Summer Engine: game-dev skills, lifecycle hooks, and a 52-tool MCP bridge to the local desktop app.",
5
+ "description": "Agent tooling for Summer Engine: game-dev skills, lifecycle hooks, and a 58-tool MCP bridge to the local desktop app.",
6
6
  "author": {
7
7
  "name": "Summer Engine",
8
8
  "email": "founders@summerengine.com",
@@ -39,6 +39,7 @@
39
39
  "./skills/workflow/dispatching-parallel-agents/",
40
40
  "./skills/workflow/writing-skills/",
41
41
  "./skills/workflow/playtesting-a-feature/",
42
+ "./skills/workflow/headless-scripting/",
42
43
  "./skills/workflow/debugging-game-feel/",
43
44
  "./skills/workflow/diagnosing-perf-regressions/",
44
45
  "./skills/scene-and-project/brainstorm-game/",
@@ -46,6 +47,7 @@
46
47
  "./skills/scene-and-project/browse-templates/",
47
48
  "./skills/scene-and-project/play/",
48
49
  "./skills/scene-and-project/scene-composition/",
50
+ "./skills/scene-and-project/summer-cloud/",
49
51
  "./skills/scene-and-project/make-game/",
50
52
  "./skills/debugging/debug/",
51
53
  "./skills/gameplay-mechanics/design-mechanic/",
@@ -62,6 +64,7 @@
62
64
  "./skills/multiplayer-and-networking/host-authoritative-state/",
63
65
  "./skills/multiplayer-and-networking/peer-to-peer-multiplayer/",
64
66
  "./skills/deployment/export-and-ship/",
67
+ "./skills/deployment/remote-deploy/",
65
68
  "./skills/character-controllers/fps-controller/",
66
69
  "./skills/scripting-patterns/gdscript-patterns/",
67
70
  "./skills/ui-and-ux/ui-basics/",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "summer",
3
3
  "version": "2.5.1",
4
- "description": "Agent tooling for Summer Engine: game-dev skills, lifecycle hooks, and a 52-tool MCP bridge. Build games by talking.",
4
+ "description": "Agent tooling for Summer Engine: game-dev skills, lifecycle hooks, and a 62-tool MCP bridge. Build games by talking.",
5
5
  "author": {
6
6
  "name": "Summer Engine",
7
7
  "email": "founders@summerengine.com",
@@ -28,6 +28,7 @@
28
28
  "./skills/workflow/dispatching-parallel-agents/",
29
29
  "./skills/workflow/writing-skills/",
30
30
  "./skills/workflow/playtesting-a-feature/",
31
+ "./skills/workflow/headless-scripting/",
31
32
  "./skills/workflow/debugging-game-feel/",
32
33
  "./skills/workflow/diagnosing-perf-regressions/",
33
34
  "./skills/scene-and-project/brainstorm-game/",
@@ -35,6 +36,7 @@
35
36
  "./skills/scene-and-project/browse-templates/",
36
37
  "./skills/scene-and-project/play/",
37
38
  "./skills/scene-and-project/scene-composition/",
39
+ "./skills/scene-and-project/summer-cloud/",
38
40
  "./skills/scene-and-project/make-game/",
39
41
  "./skills/debugging/debug/",
40
42
  "./skills/gameplay-mechanics/design-mechanic/",
@@ -49,6 +51,7 @@
49
51
  "./skills/multiplayer-and-networking/host-authoritative-state/",
50
52
  "./skills/multiplayer-and-networking/peer-to-peer-multiplayer/",
51
53
  "./skills/deployment/export-and-ship/",
54
+ "./skills/deployment/remote-deploy/",
52
55
  "./skills/character-controllers/fps-controller/",
53
56
  "./skills/scripting-patterns/gdscript-patterns/",
54
57
  "./skills/ui-and-ux/ui-basics/",
@@ -59,6 +62,7 @@
59
62
  "./skills/2d-assets/ui-graphics/",
60
63
  "./skills/2d-assets/tileable-texture/",
61
64
  "./skills/2d-assets/sprite-sheet/",
65
+ "./skills/2d-assets/create-asset-sheet/",
62
66
  "./skills/2d-assets/skybox-panorama/",
63
67
  "./skills/3d-assets/prop-model/",
64
68
  "./skills/3d-assets/character-model/",
@@ -92,7 +96,7 @@
92
96
  "interface": {
93
97
  "displayName": "Summer",
94
98
  "shortDescription": "Superpowers for AI game dev. Build games by talking.",
95
- "longDescription": "Summer turns Codex into a game-dev studio for Summer Engine, the AI-native game engine. It adds game-dev skills, a using-summer workflow skill, lifecycle hooks, and a 52-tool MCP bridge for scene editing, asset import, play mode, diagnostics, and generation. File, git, shell, and grep stay with the host agent. Summer Engine is compatible with Godot 4.5. Write code in GDScript and drive the engine through MCP. Session-start orients the session. Pre-commit doctor (opt-in) blocks bad commits.",
99
+ "longDescription": "Summer turns Codex into a game-dev studio for Summer Engine. Users make Summer games with the Summer SDK and GDScript. The plugin adds game-dev skills, lifecycle hooks, and a 62-tool MCP bridge for guarded project files, scene editing, asset import, play mode, diagnostics, generation, and creator workflows. Git, shell, and grep stay with the host agent. Summer follows its upstream technical base continuously; version-sensitive work uses the bundled compatibility reference instead of a fixed onboarding version. Session-start orients the session. Pre-commit doctor (opt-in) blocks bad commits.",
96
100
  "developerName": "Summer Engine",
97
101
  "category": "Coding",
98
102
  "capabilities": ["Interactive", "Read", "Write"],
@@ -3,7 +3,7 @@
3
3
  "name": "summer",
4
4
  "displayName": "Summer",
5
5
  "version": "2.5.1",
6
- "description": "Agent tooling for Summer Engine: game-dev skills, lifecycle hooks, and a 52-tool MCP bridge to the local desktop app.",
6
+ "description": "Agent tooling for Summer Engine: game-dev skills, lifecycle hooks, and a 58-tool MCP bridge to the local desktop app.",
7
7
  "author": { "name": "Summer Engine", "email": "founders@summerengine.com" },
8
8
  "publisher": "summer-engine",
9
9
  "homepage": "https://summerengine.com",
@@ -30,6 +30,7 @@
30
30
  "./skills/workflow/dispatching-parallel-agents/",
31
31
  "./skills/workflow/writing-skills/",
32
32
  "./skills/workflow/playtesting-a-feature/",
33
+ "./skills/workflow/headless-scripting/",
33
34
  "./skills/workflow/debugging-game-feel/",
34
35
  "./skills/workflow/diagnosing-perf-regressions/",
35
36
  "./skills/scene-and-project/brainstorm-game/",
@@ -37,6 +38,7 @@
37
38
  "./skills/scene-and-project/browse-templates/",
38
39
  "./skills/scene-and-project/play/",
39
40
  "./skills/scene-and-project/scene-composition/",
41
+ "./skills/scene-and-project/summer-cloud/",
40
42
  "./skills/scene-and-project/make-game/",
41
43
  "./skills/debugging/debug/",
42
44
  "./skills/gameplay-mechanics/design-mechanic/",
@@ -51,6 +53,7 @@
51
53
  "./skills/multiplayer-and-networking/host-authoritative-state/",
52
54
  "./skills/multiplayer-and-networking/peer-to-peer-multiplayer/",
53
55
  "./skills/deployment/export-and-ship/",
56
+ "./skills/deployment/remote-deploy/",
54
57
  "./skills/character-controllers/fps-controller/",
55
58
  "./skills/scripting-patterns/gdscript-patterns/",
56
59
  "./skills/ui-and-ux/ui-basics/",
@@ -61,6 +64,7 @@
61
64
  "./skills/2d-assets/ui-graphics/",
62
65
  "./skills/2d-assets/tileable-texture/",
63
66
  "./skills/2d-assets/sprite-sheet/",
67
+ "./skills/2d-assets/create-asset-sheet/",
64
68
  "./skills/2d-assets/skybox-panorama/",
65
69
  "./skills/3d-assets/prop-model/",
66
70
  "./skills/3d-assets/character-model/",
@@ -30,7 +30,7 @@ Restart OpenCode. The orientation banner ("Summer Engine is loaded. N skills ava
30
30
 
31
31
  ## What this gives you
32
32
 
33
- - **24 auto-trigger skills** under the `summer:` namespace, including `using-summer`, `brainstorm-game`, `debug`, `play`, `fps-controller`, `gdscript-patterns`, `scene-composition`, `art-direction`, and more.
33
+ - **Summer skills** under the `summer:` namespace, including `using-summer`, `brainstorm-game`, `debug`, `play`, `fps-controller`, `gdscript-patterns`, `scene-composition`, `art-direction`, and more.
34
34
  - **A `summer-engine` MCP server** — start it with `npx summer-engine mcp` and OpenCode will route scene/diagnostics/asset tools to your local Summer Engine running on `localhost:6550`.
35
35
  - **Session-start orientation** — first user message of every session is prefixed with the using-summer primer so the model invokes skills before responding.
36
36
 
@@ -12,7 +12,7 @@ const __dirname = path.dirname(fileURLToPath(import.meta.url));
12
12
  const skillsDir = path.resolve(__dirname, '../../skills');
13
13
 
14
14
  const ORIENTATION = `<EXTREMELY_IMPORTANT>
15
- Summer is loaded. 24 skills available under the summer: namespace.
15
+ Summer is loaded. Summer skills are available under the summer: namespace.
16
16
 
17
17
  Activate summer:using-summer FIRST in any Summer Engine session — it sets workflow priority and the red-flag list.
18
18
 
@@ -20,7 +20,7 @@ Process skills (run before building): brainstorm-game, debug, play.
20
20
  Discipline skills (shape what you build): gdscript-patterns, scene-composition, art-direction, audio-direction, asset-strategy.
21
21
  Build skills (produce artifacts): fps-controller, design-mechanic, design-level, setup-multiplayer, host-authoritative-state, peer-to-peer-multiplayer, design-npc, 3d-lighting, ui-basics, vfx, tune-performance, export-and-ship, make-game.
22
22
 
23
- Always check for a relevant skill before responding. The summer-engine MCP server (npx summer-engine mcp) provides scene mutation, asset import, render, play, and diagnostics tools — file ops, git, shell, and grep are NOT exposed (use OpenCode's native tools).
23
+ Always check for a relevant skill before responding. The summer-engine MCP server (npx summer-engine mcp) provides identity-bound project file mutations plus scene, asset, render, play, and diagnostics tools. Git, shell, and grep remain native; do not bypass Summer's file guards when MCP is available.
24
24
  </EXTREMELY_IMPORTANT>`;
25
25
 
26
26
  export const SummerPlugin = async ({ client, directory }) => {
package/AGENTS.md CHANGED
@@ -4,7 +4,7 @@ This file is for any AI agent that loads context from `AGENTS.md` (Codex CLI, Fa
4
4
 
5
5
  ## What you're working with
6
6
 
7
- **Summer Engine** is the AI-native game engine the user is building in. Editor, scene graph, asset pipeline, and runtime are all instrumented for programmatic control via the `summer-engine` MCP server. Summer Engine is compatible with Godot 4.5 — projects use GDScript (`.gd`), C# (`.cs`), scenes (`.tscn`/`.scn`), and resources (`.tres`/`.res`). Write code in those languages; talk to the engine through MCP tools.
7
+ **Summer Engine** is the AI-native game engine the user is building in. The user is making a **Summer game** with the **Summer SDK**, normally in GDScript. The editor, scene graph, asset pipeline, and runtime are instrumented for programmatic control through the `summer-engine` MCP server. Summer currently uses the 4.6.1 upstream technical base, plans to adopt 4.7.1 next, and follows upstream continuously. Those numbers are compatibility facts, not the product identity. Projects use GDScript (`.gd`), C# (`.cs`), scenes (`.tscn`/`.scn`), resources (`.tres`/`.res`), and the technical `project.godot` filename.
8
8
 
9
9
  ## Critical rules
10
10
 
@@ -13,6 +13,9 @@ This file is for any AI agent that loads context from `AGENTS.md` (Codex CLI, Fa
13
13
  3. **Don't grep the whole project before reading the actual error.** Use `summer_get_script_errors` first.
14
14
  4. **Don't edit `.tscn` files directly while the engine is running.** Use the `summer_*` MCP tools — direct edits get overwritten when the editor saves.
15
15
  5. **Never call `summer_set_resource_property` against an inline `sub_resource`** — it silently drops the value. Instantiate via `summer_set_prop` with a class-name string first.
16
+ 6. **Every scene mutation names its target.** Pass the exact `res://...tscn` as `scenePath` to add/set/remove/replace/connect/instantiate/save tools and mutation batches. `summer_open_scene` is a user-visible tab action, not a prerequisite or target selector.
17
+ 7. **Never mix `OpenScene` with scene mutations in one batch.** Send the UI action separately; `scenePath` already selects the mutation target.
18
+ 8. **Save once at the transaction boundary.** Dedicated scene mutation tools and `summer_batch` append one final `SaveScene`. Raw engine batches must include one final `SaveScene` themselves.
16
19
 
17
20
  ## Skill priority
18
21
 
@@ -20,24 +23,25 @@ This file is for any AI agent that loads context from `AGENTS.md` (Codex CLI, Fa
20
23
  - **Discipline** (`gdscript-patterns`, `scene-composition`, `art-direction`) → how to shape it.
21
24
  - **Build** (`fps-controller`, `design-mechanic`, `design-level`, `setup-multiplayer`, `vfx`, `tune-performance`, `export-and-ship`) → produce the artifact.
22
25
 
23
- ## MCP tool palette (engine on `localhost:6550`)
26
+ ## MCP tool palette (project-matched local editor)
24
27
 
25
- 52 tools total. Categories:
28
+ The current MCP registry is grouped into these categories:
26
29
 
27
30
  - Scene: `summer_get_scene_tree`, `summer_open_scene`, `summer_create_scene`, `summer_add_node`, `summer_set_prop`, `summer_set_resource_property`, `summer_remove_node`, `summer_save_scene`, `summer_instantiate_scene`, `summer_replace_node`, `summer_select_node`, `summer_inspect_node`, `summer_inspect_resource`, `summer_connect_signal`, `summer_batch`.
28
- - Diagnostics: `summer_get_script_errors`, `summer_get_diagnostics`, `summer_get_console`, `summer_clear_console`, `summer_get_debugger_errors`, `summer_get_debugger_warnings`.
31
+ - Diagnostics: `summer_create_debug_report`, `summer_get_script_errors`, `summer_get_diagnostics`, `summer_get_console`, `summer_clear_console`, `summer_get_debugger_errors`, `summer_get_debugger_warnings`.
29
32
  - Runtime: `summer_play`, `summer_stop`, `summer_is_running`.
30
33
  - Visual: `summer_screenshot` (capture the editor viewport or running game as an image to verify it).
31
34
  - Project: `summer_get_project_context`, `summer_open_main_scene`, `summer_project_setting`, `summer_input_map_bind`, `summer_get_agent_playbook`.
35
+ - Files: `summer_read_file`, `summer_write_file`, `summer_replace_text` (identity-bound; create-only or sha256-guarded writes).
32
36
  - Assets: `summer_search_assets`, `summer_list_my_assets`, `summer_get_asset`, `summer_get_asset_download_url`, `summer_import_asset`, `summer_import_asset_by_id`, `summer_import_from_url`, `summer_import_from_url_batch`.
33
37
  - Generation: `summer_generate_image`, `summer_generate_3d`, `summer_generate_audio`, `summer_generate_video`, `summer_generate_motion`, `summer_check_job`.
34
38
  - Meta: `summer_start_game_task`.
35
39
 
36
- File ops, git, shell, and grep are NOT exposed — use the host's native tools.
40
+ Git, shell, and grep are not exposed. Project file reads and writes are exposed through identity-bound Summer tools; do not bypass them with host writes when MCP is available. External host tools cannot be technically blocked, so the agent must follow this rule.
37
41
 
38
42
  ## Type-system gotchas
39
43
 
40
- `SetProp` values are engine-formatted strings (Godot type-system compatible), not JSON objects:
44
+ `SetProp` values are Summer Engine variant strings, not JSON objects:
41
45
  - `"Vector3(0, 10, 0)"`
42
46
  - `"Color(1, 0.5, 0, 1)"` (RGBA, 4 components)
43
47
  - `"Transform3D(1,0,0, 0,1,0, 0,0,1, 0,5,0)"`
@@ -50,5 +54,5 @@ Resources are class names: `"BoxMesh"`, `"StandardMaterial3D"`, `"CapsuleShape3D
50
54
  |---|---|
51
55
  | MCP tool returns "Summer Engine is not running" | Tell user `summer run`. Continue with non-MCP work. |
52
56
  | Skill loads but seems wrong | Re-read it. Skills evolve. |
53
- | Skill not found | Check `summer skills list`, then `summer setup <agent> --yes`. |
57
+ | Skill not found or stale | Run `summer doctor`; if `cli-version-current` or `skills-version-stale` warns, run `npx clear-npx-cache && npx -y summer-engine@latest setup <agent> --yes --force`. |
54
58
  | Generic engine errors on launch | Run `summer doctor` first — usually reveals auth/port/path issues. |
package/CHANGELOG.md CHANGED
@@ -2,6 +2,46 @@
2
2
 
3
3
  All notable changes to summer-engine will be documented here. Following [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) and [Semantic Versioning](https://semver.org/).
4
4
 
5
+ ## [Unreleased]
6
+
7
+ ### Added
8
+ - MCP discovers every live Summer editor through `~/.summer/instances/` and automatically binds local tools to the editor whose project contains the agent's current working directory.
9
+ - `summer mcp --project <path>` and `summer mcp --instance <id>` provide explicit selection for hosts that do not start the MCP server from a project directory.
10
+
11
+ ### Changed
12
+ - Multiple live editors are now a fail-closed state when no project can be inferred. MCP lists the non-secret project/instance choices instead of following the machine-global last-opened editor pointer.
13
+ - Selected MCP sessions keep following the same project across editor restarts and validate registry identity against `/api/health` before connecting.
14
+
15
+ ## [2.7.0] — 2026-07-24 — "Reliable project mutations"
16
+
17
+ ### Added
18
+ - `summer_read_file`, `summer_write_file`, and `summer_replace_text` expose engine-routed project file access, including `.tscn` and `.tres`. New files require `create_only:true`; overwrites require an engine sha256 receipt.
19
+ - File mutations fail closed unless the MCP client has a complete engine/project identity and use the bound project hash even if caller options attempt to override it.
20
+
21
+ ### Changed
22
+ - Agent playbooks now route project file mutations through Summer MCP instead of recommending host writes that bypass identity, content guards, and editor reload handling.
23
+ - Scene mutation tools require an explicit `scenePath`; the target scene does not need to be the visible editor tab.
24
+ - `summer_open_scene` is navigation only and no longer acts as implicit mutation targeting.
25
+ - Dedicated scene mutations and mutation batches append one final `SaveScene` at the transaction boundary.
26
+ - Agent guidance no longer claims that routine scene edits require stopping the running game.
27
+
28
+ ### Fixed
29
+ - Bridge/project identity rejections now return one correlated `not_sent`
30
+ terminal, allowing the web harness to retry safely instead of waiting for a
31
+ mutation receipt that cannot exist.
32
+ - Same-file MCP mutations now serialize the complete read-to-write transaction,
33
+ preventing concurrent replacements from racing on a stale file preimage.
34
+ - Accepted engine operations preserve their request identity and report whether
35
+ they are still queued, still running, or uncertain instead of claiming that
36
+ nothing was applied after a client wait deadline.
37
+ - `summer_batch` no longer permits raw file mutations that bypass the guarded
38
+ `summer_write_file` and `summer_replace_text` tools.
39
+ - Scene operations return target/persistence evidence and concrete dependency errors instead of relying on ambient open-scene state.
40
+ - Asset placement reports success only after both the import and explicit target-scene mutation are confirmed.
41
+
42
+ ### Limitations
43
+ - The package cannot intercept an external agent's native filesystem tools. A host can still mutate files outside MCP, and a non-atomic external write can race the engine between validation and write; those cases remain technically unenforceable.
44
+
5
45
  ## [2.6.6] — 2026-07-15 — "Project-bound engine requests"
6
46
 
7
47
  ### Fixed
package/GEMINI.md CHANGED
@@ -4,7 +4,7 @@ Summer is the AI game-dev studio for **Summer Engine** — the AI-native game en
4
4
 
5
5
  ## What Summer Engine is
6
6
 
7
- A game engine designed for AI agents — editor, scene graph, asset pipeline, and runtime are all instrumented for programmatic control via MCP. Summer Engine is compatible with Godot 4.5: projects use GDScript (`.gd`), C# (`.cs`), scenes (`.tscn`/`.scn`), and resources (`.tres`/`.res`). Write code in those languages; talk to the engine through `summer_*` tools.
7
+ Summer Engine is designed for AI-assisted creation. The user is making a **Summer game** with the **Summer SDK**, normally in GDScript. The editor, scene graph, asset pipeline, and runtime are instrumented for programmatic control via MCP. Summer currently uses the 4.6.1 upstream technical base, plans to adopt 4.7.1 next, and follows upstream continuously. Those numbers are compatibility facts, not the product identity. Projects use GDScript (`.gd`), C# (`.cs`), scenes (`.tscn`/`.scn`), resources (`.tres`/`.res`), and the technical `project.godot` filename.
8
8
 
9
9
  ## How to behave
10
10
 
@@ -18,23 +18,25 @@ The single most important skill to know is `summer:using-summer` — it explains
18
18
  2. **Discipline skills second**: `gdscript-patterns`, `scene-composition`, `art-direction`, `audio-direction`. These shape content.
19
19
  3. **Build skills third**: `fps-controller`, `design-mechanic`, `design-level`, `setup-multiplayer`, `vfx`, `tune-performance`, `export-and-ship`.
20
20
 
21
- ## MCP tools (when the engine is running on `localhost:6550`)
21
+ ## MCP tools (when the project-matched local editor is running)
22
22
 
23
- The `summer-engine` MCP server exposes 52 focused tools. The most important:
23
+ The `summer-engine` MCP server exposes a focused tool registry. The most important:
24
24
 
25
- - **Scene mutation**: `summer_add_node`, `summer_set_prop`, `summer_set_resource_property`, `summer_remove_node`, `summer_save_scene`, `summer_replace_node`, `summer_batch`.
25
+ - **Scene mutation**: `summer_add_node`, `summer_set_prop`, `summer_set_resource_property`, `summer_remove_node`, `summer_save_scene`, `summer_replace_node`, `summer_batch`. Every scene mutation requires the exact `res://...tscn` `scenePath`; opening a scene is a user-visible UI action, not a mutation prerequisite. Mutation tools append one final `SaveScene`; raw engine batches must do the same.
26
26
  - **Scene inspection**: `summer_get_scene_tree`, `summer_inspect_node`, `summer_inspect_resource`.
27
- - **Diagnostics**: `summer_get_script_errors` (cheapest), `summer_get_diagnostics`, `summer_get_console`, `summer_get_debugger_errors`, `summer_get_debugger_warnings`.
27
+ - **Diagnostics**: `summer_create_debug_report`, `summer_get_script_errors` (cheapest), `summer_get_diagnostics`, `summer_get_console`, `summer_get_debugger_errors`, `summer_get_debugger_warnings`.
28
28
  - **Run game**: `summer_play`, `summer_stop`, `summer_is_running`.
29
29
  - **Visual**: `summer_screenshot` (capture the viewport or running game as an image you can see).
30
30
  - **Project**: `summer_get_project_context`, `summer_open_main_scene`, `summer_project_setting`, `summer_input_map_bind`.
31
+ - **Files**: `summer_read_file`, `summer_write_file`, `summer_replace_text` (identity-bound, create-only or sha256-guarded mutations).
31
32
  - **Assets**: `summer_search_assets`, `summer_import_asset`, `summer_import_from_url`, `summer_generate_image`, `summer_generate_3d`, `summer_generate_audio`, `summer_generate_video`, `summer_check_job`.
32
33
 
33
- File ops (Read/Write/Edit), git, shell, and grep are deliberately **not** exposed via MCP — Gemini already has those natively.
34
+ Git, shell, and grep remain host-native. Use the Summer file tools for project reads and writes whenever MCP is available; host file writes bypass engine identity, sha guards, and reload handling and cannot be technically prevented by this package.
34
35
 
35
36
  ## Type-system traps
36
37
 
37
- `SetProp` values are engine-formatted **strings** (Godot 4.5 type-system compatible):
38
+ `SetProp` values are engine-formatted **strings** compatible with the current
39
+ Summer Engine type system:
38
40
 
39
41
  - `"Vector3(0, 10, 0)"` — NOT `{x: 0, y: 10, z: 0}`.
40
42
  - `"Color(1, 0.5, 0, 1)"` — RGBA, 4 components.
package/README.md CHANGED
@@ -1,6 +1,13 @@
1
1
  # Summer Engine: the AI game engine
2
2
 
3
- Build real 2D and 3D games through conversation. No coding required. Export to Steam, desktop, mobile, and web. Built on the Godot team's work, customized and honed so AI agents and humans can collaborate on great games.
3
+ > **Engine mirror only.** This directory is intentionally marked `private` and must never be published to npm. Review and reconcile changes into [SummerEngine/summer-engine-agent](https://github.com/SummerEngine/summer-engine-agent), which is the only npm release source.
4
+
5
+ Build real 2D and 3D Summer games with Summer Engine, the Summer SDK, and
6
+ GDScript. The agent layer can help author code and scenes, but creators remain
7
+ in control of changes and release decisions. Local export support depends on
8
+ the templates present in the installed engine. The package does not silently
9
+ build, host, or submit games to stores; its explicit, confirmed creator command
10
+ can publish an already-exported Summer `.pck` to Summercraft for review.
4
11
 
5
12
  **Summer** is the MIT open-source agent layer that connects your AI coding agent to Summer Engine. It is the **Summer CLI**, the **Summer MCP** server, and the **Summer agent** skills, hooks, and plugin manifests, all in one package. First-class setup works in Claude Code, Cursor, Codex, Devin Desktop (formerly Windsurf), Cline, Roo Code, Gemini CLI, GitHub Copilot CLI, GitHub Copilot in VS Code, and OpenCode. Factory Droid uses the plugin marketplace path.
6
13
 
@@ -9,7 +16,9 @@ Build real 2D and 3D games through conversation. No coding required. Export to S
9
16
  - **MCP setup:** [www.summerengine.com/mcp](https://www.summerengine.com/mcp)
10
17
  - **Docs:** [docs.summerengine.com](https://docs.summerengine.com)
11
18
 
12
- It just works. Open your agent, say *"let's make an FPS in Summer Engine,"* and it does.
19
+ Once setup checks pass, open your agent and say *"let's make an FPS in Summer
20
+ Engine."* The agent can then use the Summer SDK and local editor tools to build
21
+ and verify the project.
13
22
 
14
23
  ---
15
24
 
@@ -18,10 +27,11 @@ It just works. Open your agent, say *"let's make an FPS in Summer Engine,"* and
18
27
  Three names, one npm package (`summer-engine`):
19
28
 
20
29
  - **Summer CLI** (`npx -y summer-engine@latest`): installs the engine, signs you in, scaffolds and runs projects, and writes your agent's config. See [www.summerengine.com/cli](https://www.summerengine.com/cli).
21
- - **Summer MCP**: the local MCP server that gives your agent 52 engine tools to build, run, and debug a real game. See [www.summerengine.com/mcp](https://www.summerengine.com/mcp).
30
+ - **Summer MCP**: the local MCP server that gives your agent 58 engine tools to build, run, and debug a real game. See [www.summerengine.com/mcp](https://www.summerengine.com/mcp).
22
31
  - **Summer agent layer**: the game-dev skills, hooks, and plugin manifests that give your AI agent judgment, not just a chat box.
23
32
 
24
- All MIT, all free to use. One paste sets up all three.
33
+ The CLI, MCP bridge, and agent layer are MIT licensed. The Summer Engine app has
34
+ its own license. One setup flow wires the pieces together.
25
35
 
26
36
  ## Get started: one prompt
27
37
 
@@ -108,7 +118,7 @@ npx -y summer-engine@latest install
108
118
  npx -y summer-engine@latest login
109
119
  ```
110
120
 
111
- This opens the user's default browser. **Tell the user**: "Your browser is opening now. Click sign-in once and come back to this terminal." The CLI waits up to 120 seconds for the auth callback, writes the token to `~/.summer/auth-token`, and returns. **If the user takes longer than 120 seconds, re-run `npx -y summer-engine@latest login` and tell them to come back to the terminal quickly.** Don't loop indefinitely. The same token is shared with the engine; they sign in once, both surfaces accept it.
121
+ This opens the user's default browser. **Tell the user**: "Your browser is opening now. Click sign-in once and come back to this terminal." The CLI waits up to 120 seconds for the auth callback, validates that the returned identity matches the CLI token, writes the core-compatible session to the secured `~/.summer/` store, and returns. **If the user takes longer than 120 seconds, re-run `npx -y summer-engine@latest login` and tell them to come back to the terminal quickly.** Don't loop indefinitely. The same `auth-token` and `user.json` filenames remain shared with the engine; they sign in once, both surfaces accept it.
112
122
 
113
123
  ### Step 4: Re-run doctor to confirm
114
124
 
@@ -216,8 +226,9 @@ We tell you before we touch your disk.
216
226
  | `summer-engine` npm package (CLI + plugin source) | ~3 MB | first `npx -y summer-engine@latest ...` call | [npmjs.com/package/summer-engine](https://www.npmjs.com/package/summer-engine) |
217
227
  | Summer Engine app | ~1 GB (engine + bundled Git/runtime tools) | `npx -y summer-engine@latest install` | Summer's signed releases |
218
228
  | Auth token | ~1 KB | `npx -y summer-engine@latest login` | Browser to `~/.summer/auth-token` |
229
+ | Creator token | ~50 bytes | only when you run `summer login --creator` and mint one | One-time browser value to `~/.summer/creator-token`; never replaces the auth token |
219
230
  | Skill files | < 50 KB | bundled in the npm package | no extra network call |
220
- | Generated assets (3D / image / audio / video) | varies | only on explicit `summer_generate_*` calls | Summer Engine Studio |
231
+ | Generated assets (3D / image / audio / video) | varies | only on explicit `summer_generate_*` calls when that provider route is enabled for the account | Summer Engine Studio |
221
232
  | URL imports | varies | only on explicit `summer_import_from_url` calls | the URL you provide |
222
233
 
223
234
  Not downloaded:
@@ -233,9 +244,14 @@ Not downloaded:
233
244
  |---|---|---|
234
245
  | **Summer** (this repo: CLI, MCP server, skills, hooks, plugin manifests) | **MIT** | [SummerEngine/summer-engine-agent](https://github.com/SummerEngine/summer-engine-agent) |
235
246
  | **Summer Engine app** (the desktop editor and runtime) | free to download, closed source for now | [summerengine.com/download](https://summerengine.com/download) |
236
- | **Hosted Summer AI and cloud services** (asset generation, storage, multiplayer, orchestration) | paid Summer services | [summerengine.com/pricing](https://summerengine.com/pricing) |
247
+ | **Hosted Summer integrations** | availability and terms vary by rollout; preview features are labeled in the CLI | [summerengine.com/pricing](https://summerengine.com/pricing) |
237
248
 
238
- The desktop app is free to download. The AI-agent layer, meaning the CLI, MCP server, skills, and plugin manifests, is MIT open source. Hosted Summer AI, asset generation, storage, multiplayer, and cloud features are paid Summer services.
249
+ The desktop app is free to download. The AI-agent layer, meaning the CLI, MCP
250
+ server, skills, and plugin manifests, is MIT open source. A command, tool
251
+ contract, or roadmap entry does not by itself mean a hosted service is
252
+ production-ready. Summer Cloud is explicitly a research preview, and managed
253
+ publishing, hosting, store submission, and matchmaking are not promised by this
254
+ package.
239
255
 
240
256
  ---
241
257
 
@@ -253,19 +269,28 @@ Two pieces, plus the glue.
253
269
 
254
270
  Skills don't list steps. They encode the **order of operations**: diagnose before editing, scope before building, ask before guessing. [Agent Skills](https://agentskills.io) format, so any conformant tool picks them up.
255
271
 
256
- **MCP bridge.** The `summer-engine` MCP server gives the agent 52 tools that talk to your local engine on `localhost:6550`:
272
+ **MCP bridge.** The `summer-engine` MCP server gives the agent 62 tools. Local project tools connect to the matching live editor on its loopback port; cloud and creator tools use their documented remote or local configuration contracts without requiring the editor:
257
273
 
258
274
  | | |
259
275
  |---|---|
260
276
  | Scene | `summer_add_node`, `summer_set_prop`, `summer_instantiate_scene`, `summer_replace_node`, `summer_get_scene_tree`, `summer_inspect_node`, `summer_batch` |
261
- | Diagnostics | `summer_get_script_errors`, `summer_get_diagnostics`, `summer_get_console`, `summer_get_debugger_errors`, `summer_get_debugger_warnings` |
277
+ | Diagnostics | `summer_create_debug_report`, `summer_get_script_errors`, `summer_get_diagnostics`, `summer_get_console`, `summer_clear_console`, `summer_get_debugger_errors`, `summer_get_debugger_warnings` |
262
278
  | Runtime | `summer_play`, `summer_stop`, `summer_is_running` |
263
279
  | Visual | `summer_screenshot` (see the editor viewport, an offscreen scene render, or the running game) |
264
- | Interactive | `SimulateInput` / `RunVerification` raw ops via `summer_batch` — drive the running game or run a hidden GDScript probe (engine-build dependent) |
280
+ | Interactive | `RunVerification` raw op via `summer_batch` — a hidden GDScript probe that presses real inputs, saves rendered frames, and asserts. `SimulateInput` is editor-bridge only and not reachable from MCP. |
265
281
  | Project | `summer_get_project_context`, `summer_open_main_scene`, `summer_project_setting`, `summer_input_map_bind` |
282
+ | Files | `summer_read_file`, `summer_write_file`, `summer_replace_text` — identity-bound, create-only or sha256-guarded mutations |
266
283
  | Assets | `summer_search_assets`, `summer_import_asset`, `summer_import_from_url`, `summer_generate_image`, `summer_generate_3d`, `summer_generate_audio`, `summer_generate_video` |
284
+ | Creator | `summer_creator_publish`, `summer_creator_releases`, `summer_creator_logs`, `summer_creator_config` — confirmed immutable publish and real release history through `summer.creator.v1`, explicit unsupported logs, and shared non-secret configuration. |
285
+
286
+ Git, shell, and grep remain host-native. Project file reads and writes use Summer's identity-bound tools so compatible engine builds can reject wrong-project and stale-content mutations. A host agent can still bypass these safeguards with its own file tools; the package cannot technically intercept that external process.
267
287
 
268
- File ops, git, shell, and grep already belong to your agent. We don't shadow them.
288
+ When several Summer editors are open, MCP automatically selects the one whose
289
+ project contains the agent's current working directory. Normal agent configs do
290
+ not need a path or one MCP entry per editor. Hosts that launch MCP outside a
291
+ project can use `summer mcp --project <path>`; `--instance <id>` is available
292
+ when two editors intentionally show the same project. An ambiguous unscoped
293
+ connection is rejected rather than routed to the last editor that opened.
269
294
 
270
295
  **Lifecycle hooks.** A `session-start` hook detects whether you're in a Summer Engine project and feeds the agent a one-line orientation. An opt-in `pre-commit doctor` runs `summer doctor` before `git commit` and blocks when the setup needs attention.
271
296
 
@@ -289,13 +314,21 @@ summer_clear_console # clean slate
289
314
  summer_play # boot the game (or a specific scene)
290
315
  summer_get_debugger_errors # runtime errors: null refs, missing nodes, physics
291
316
  summer_screenshot target:game # optional: look at the live frame
292
- summer_stop # ALWAYS stop — scene edits are refused while running
317
+ summer_stop # stop when runtime checks are done
318
+ ```
319
+
320
+ **4. Does the interaction work?** To prove input-driven behavior (jump/move/shoot), use `RunVerification` — a raw op through `summer_batch`. It spawns a hidden, disposable game instance that runs your GDScript probe, presses real inputs, reads state back across frames, saves rendered frames, and dies without ever touching the editor:
321
+
322
+ ```
323
+ summer_batch ops:[{op:"RunVerification", probe_source:"…", max_seconds:20}]
324
+ → {ok, results, frames, out_dir}
293
325
  ```
294
326
 
295
- **4. Does the interaction work?** To prove input-driven behavior (jump/move/shoot), send a raw op through `summer_batch` (engine-build dependent — a `failure_reason:"unsupported"` comes back verbatim on older builds):
296
- - `SimulateInput` — inject into the **running** game: `summer_batch ops:[{op:"SimulateInput", type:"action", action:"jump", pressed:true}]`, then re-check screenshot/debugger.
297
- - `RunVerification` — spawn a hidden, disposable game instance that runs a GDScript probe (press inputs, read state, save frames) and dies, never touching the editor: `summer_batch ops:[{op:"RunVerification", probe_source:"…", max_seconds:20}]` → `{ok, results, frames, out_dir}`.
298
- - If neither is available on this build, **ask the user to try it** and report what they see — don't fake it.
327
+ Unlike `--headless`, that instance has a real renderer, so `save_frame()` writes an actual image. Probe API: `report()` / `save_frame()` / `dump_tree()` / `press()` / `key()` / `finish()`. **`press()` and `key()` are coroutines — `await` them.** Every project scaffolded by `summer create` ships a working example at `tests/autopilot/`.
328
+
329
+ `SimulateInput` is **not** reachable from MCP or the CLI, on any build. It needs the in-editor chat bridge's async reply channel; every queued caller is answered `{ok:false, failure_reason:"unsupported_transport"}`. Use the probe.
330
+
331
+ Ask the user to play only for what a probe cannot hold an opinion about: whether it *feels* right, whether it *looks* good, whether it is fun. "I can't simulate input" is not on that list.
299
332
 
300
333
  **Honesty.** Never describe an image you didn't receive; a failed capture is a *result* — report it and climb down (`scene`→`viewport`) or ask the user. Pass structured failures (`failure_reason`, `terminalState`, `identity_mismatch`) through verbatim. `summer_get_project_context` binds the session to the open project; a `projectMismatch` warning on a screenshot means the engine switched projects and the frame may be from the wrong one — rebind before trusting it.
301
334
 
@@ -312,7 +345,9 @@ summer_stop # ALWAYS stop — scene edits are refused while
312
345
  5. **gdscript-patterns** guides every `.gd` write.
313
346
  6. **play** runs the game and reports clean or broken.
314
347
  7. **debug** runs the cheapest diagnostic, forms one specific hypothesis, asks before editing, re-verifies after the fix.
315
- 8. **export-and-ship** runs the pre-flight checklist before producing a release build.
348
+ 8. **export-and-ship** inventories installed export templates, runs pre-flight,
349
+ and produces only supported local builds after approval. It does not upload,
350
+ host, publish, or submit them.
316
351
 
317
352
  The skill bundle replaces "agent flailing through tutorials" with measurable craft.
318
353
 
@@ -336,7 +371,9 @@ The skill bundle replaces "agent flailing through tutorials" with measurable cra
336
371
 
337
372
  **Skill authoring**: `skill-create`, `skill-improve`, `skill-test`
338
373
 
339
- C# is supported by the engine. A `summer:csharp-patterns` skill is on the roadmap; for now write C# from Godot 4.5 docs.
374
+ C# is supported by the engine. A `summer:csharp-patterns` skill is on the
375
+ roadmap; for now use the upstream C# API reference matching the current Summer
376
+ technical base.
340
377
 
341
378
  Full list of shipping skills: the `skills:` array in [`.claude-plugin/plugin.json`](./.claude-plugin/plugin.json).
342
379
 
@@ -474,8 +511,13 @@ npx -y summer-engine@latest doctor
474
511
  | Command | What it does |
475
512
  |---|---|
476
513
  | `summer install` | Download Summer Engine. Prints URL and size first. |
477
- | `summer login` | Browser-based sign-in. |
514
+ | `summer login` | Browser-based core Summer sign-in. |
515
+ | `summer login --creator` | Open Summercraft token settings and securely connect a separate publish-scoped creator token. |
478
516
  | `summer logout` | Clear auth tokens. |
517
+ | `summer config [get\|set\|unset]` | Read or update the shared non-secret `~/.summer/config.json`. |
518
+ | `summer publish [project] --artifact <game.pck> --version <value> [--confirm]` | Compute and show the exact immutable target; after approval, stream it through prepare → write-once PUT → finalize. |
519
+ | `summer releases [--cursor <value>]` | List real creator-owned release history. |
520
+ | `summer logs` | Read creator runtime logs. Fails closed while no durable runtime-log source exists. |
479
521
  | `summer status` | Engine state, port, auth. |
480
522
  | `summer doctor` | Diagnose Node, login, engine, project memory, MCP. |
481
523
  | `summer plan <goal>` | Route a game-building goal into skills, MCP tools, gates, and verification. |
@@ -488,7 +530,7 @@ npx -y summer-engine@latest doctor
488
530
  | `summer skills list` | Show all skills. |
489
531
  | `summer skills install <name>` | Install one. |
490
532
  | `summer skills install --recommended --agent <agent>` | Install the recommended set. |
491
- | `summer mcp` | Start the MCP server. |
533
+ | `summer mcp [--project <path> \| --instance <id>]` | Start MCP; normally auto-binds from the agent's project directory. |
492
534
  | `summer mcp setup <agent>` | Write MCP config for an agent. |
493
535
  | `summer setup <agent> [--yes]` | One shot: MCP config + recommended skills + doctor. |
494
536
 
@@ -41,6 +41,7 @@ When the user invokes `/summer`, you:
41
41
  | "/summer add ambient music" | `summer:audio/music-track` |
42
42
  | "/summer make me [a VFX effect]" | `summer:visual-effects/recipes/<closest>` (e.g., "make me fire" -> `recipes/fire`; "lightning" -> `recipes/lightning`; "muzzle flash" -> `recipes/muzzle-flash`; "smoke" -> `recipes/smoke`; "magic glow" -> `recipes/magic-glow`; "hit spark" -> `recipes/hit-spark`; "dissolve" -> `recipes/dissolve`; "water ripple" -> `recipes/water-ripple`) |
43
43
  | "/summer build the FPS controller" | `summer:character-controllers/fps-controller` |
44
+ | "/summer debug" or "/summer debug [issue]" | `summer:debugging/debug` (support report mode first) |
44
45
  | "/summer the game crashes when [X]" | `summer:debugging/debug` |
45
46
  | "/summer add an animation to [character]" | `summer:animation/generate-motion` |
46
47
  | "/summer wire up a state machine for [character]" | `summer:animation/animation-tree` |
@@ -0,0 +1,51 @@
1
+ # tests/autopilot
2
+
3
+ A starting point for proving your game actually works — not that it compiles, that it *works*.
4
+
5
+ `autopilot.gd` boots your game in an invisible instance, presses your real input actions to walk the player through a list of waypoints, saves a rendered frame at each one, records what it found, and exits. It is ordinary GDScript against your real running game. There is no test framework here to learn.
6
+
7
+ ## Run it
8
+
9
+ ```bash
10
+ bash tests/autopilot/run.sh
11
+ ```
12
+
13
+ No editor needed. Exit code is 0 when the probe finished cleanly and the engine logged no errors.
14
+
15
+ Results land in `tests/autopilot/out/`:
16
+
17
+ ```
18
+ results.json reports, frame list, errors_seen, duration_ms, finished
19
+ 00_start.jpg a real rendered frame, one per waypoint
20
+ engine.log full engine output if something went wrong
21
+ ```
22
+
23
+ An agent can also run the same probe through MCP without touching your editor:
24
+
25
+ ```
26
+ summer_batch ops:[{"op": "RunVerification",
27
+ "probe_source": "<contents of autopilot.gd>",
28
+ "max_seconds": 40}]
29
+ ```
30
+
31
+ ## Make it yours
32
+
33
+ Open `autopilot.gd` and edit the `CONFIG` block at the top: the player's node path, your Input Map action names, and the waypoints to walk. Then put your real assertions in `_check_at_waypoint()` and `_check_at_end()` — the shipped version walks and looks, but asserts nothing about *your* game, and a test that asserts nothing always passes.
34
+
35
+ Leave `ACT_UP` / `ACT_DOWN` empty for a side-on platformer. The autopilot then measures arrival on X alone, because in a side-scroller Y is gravity, not a destination.
36
+
37
+ ## Rules that will bite you otherwise
38
+
39
+ **Assert inequalities, not exact numbers.** `position.x > start.x + 50` is a real assertion. `position.x == 250.0` is a flaky test you wrote yourself — hold durations resolve on the wall clock, so the same walk lands a few pixels apart between runs.
40
+
41
+ **Wait on `physics_frame`, not timers.** `await get_tree().physics_frame` is reproducible; `await get_tree().create_timer(1.0).timeout` is not.
42
+
43
+ **The global RNG is not seeded.** Anything downstream of `randf()` differs every run. Assert ranges, or seed it yourself at the top of the probe.
44
+
45
+ **`finished: false` is a failure.** It means the probe hit `--summer-verify-max` before calling `finish()`. `run.sh` exits non-zero on it; do not read the partial reports as a pass.
46
+
47
+ **Never add `--headless` to this.** Headless has no renderer: `save_frame()` gets a null image, and `draw_calls` reads 0.0 forever. The verify instance is windowed but positioned off-screen, which is why it can produce real frames and stay invisible.
48
+
49
+ ## Frames are the point
50
+
51
+ A saved frame sequence is a flipbook of your feature happening. It is the difference between "the code path executed" and "the thing the player was promised appeared on screen". Save one wherever you would otherwise have asked a human to look.