summer-engine 3.4.0 → 3.5.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 (290) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/.claude-plugin/plugin.json +5 -1
  3. package/.codex-plugin/plugin.json +5 -1
  4. package/.cursor-plugin/plugin.json +5 -1
  5. package/.factory-plugin/plugin.json +5 -1
  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 +37 -0
  10. package/GEMINI.md +1 -1
  11. package/NOTICE +1 -1
  12. package/README.md +35 -35
  13. package/assets/autopilot/run.sh +2 -2
  14. package/assets/navigation/web-routes.json +1 -1
  15. package/commands/gameskill.md +2 -2
  16. package/commands/summer.md +25 -25
  17. package/dist/cli/commands/open.d.ts +1 -1
  18. package/dist/cli/commands/run.d.ts +1 -1
  19. package/dist/cli/commands/run.js +1 -1
  20. package/dist/cli/commands/setup.js +24 -4
  21. package/dist/cli/commands/skills.js +2 -2
  22. package/dist/core/api-client.d.ts +5 -6
  23. package/dist/core/api-client.js +12 -15
  24. package/dist/core/auth.js +2 -2
  25. package/dist/core/capabilities/asset-import.d.ts +0 -1
  26. package/dist/core/capabilities/camera-view.d.ts +1 -1
  27. package/dist/core/capabilities/camera-view.js +2 -2
  28. package/dist/core/capabilities/capture-gameplay.d.ts +72 -7
  29. package/dist/core/capabilities/capture-gameplay.js +386 -25
  30. package/dist/core/capabilities/connect-signal.d.ts +1 -2
  31. package/dist/core/capabilities/connect-signal.js +1 -2
  32. package/dist/core/capabilities/console-read.d.ts +2 -2
  33. package/dist/core/capabilities/console-read.js +2 -2
  34. package/dist/core/capabilities/engine-receipt.d.ts +5 -7
  35. package/dist/core/capabilities/engine-receipt.js +7 -9
  36. package/dist/core/capabilities/export-engine-version.d.ts +7 -0
  37. package/dist/core/capabilities/export-engine-version.js +9 -0
  38. package/dist/core/capabilities/export-game.d.ts +4 -0
  39. package/dist/core/capabilities/export-game.js +53 -10
  40. package/dist/core/capabilities/export-presets.d.ts +1 -1
  41. package/dist/core/capabilities/export-presets.js +1 -1
  42. package/dist/core/capabilities/fabricate-mesh.d.ts +2 -3
  43. package/dist/core/capabilities/fabricate-mesh.js +2 -3
  44. package/dist/core/capabilities/frame-quality.d.ts +4 -4
  45. package/dist/core/capabilities/frame-quality.js +4 -4
  46. package/dist/core/capabilities/grep.d.ts +1 -1
  47. package/dist/core/capabilities/grep.js +1 -1
  48. package/dist/core/capabilities/image-generation.d.ts +12 -2
  49. package/dist/core/capabilities/image-generation.js +31 -2
  50. package/dist/core/capabilities/navigation/open.d.ts +1 -1
  51. package/dist/core/capabilities/navigation/open.js +1 -1
  52. package/dist/core/capabilities/navigation/render-product-map.js +1 -1
  53. package/dist/core/capabilities/navigation/targets.js +2 -2
  54. package/dist/core/capabilities/placement-batch.d.ts +1 -1
  55. package/dist/core/capabilities/placement-batch.js +2 -2
  56. package/dist/core/capabilities/play-determinism.d.ts +1 -1
  57. package/dist/core/capabilities/play-determinism.js +1 -1
  58. package/dist/core/capabilities/publish-build.d.ts +1 -1
  59. package/dist/core/capabilities/publish-build.js +21 -9
  60. package/dist/core/capabilities/publish-download.d.ts +1 -2
  61. package/dist/core/capabilities/publish-download.js +2 -3
  62. package/dist/core/capabilities/replace-node.d.ts +1 -3
  63. package/dist/core/capabilities/replace-node.js +1 -3
  64. package/dist/core/capabilities/runtime-control.d.ts +5 -7
  65. package/dist/core/capabilities/runtime-control.js +7 -9
  66. package/dist/core/capabilities/scene-batch.d.ts +1 -1
  67. package/dist/core/capabilities/scene-batch.js +1 -1
  68. package/dist/core/capabilities/scene-kind.js +1 -1
  69. package/dist/core/capabilities/scene-readback.d.ts +3 -4
  70. package/dist/core/capabilities/scene-readback.js +3 -4
  71. package/dist/core/capabilities/scene-script.d.ts +2 -2
  72. package/dist/core/capabilities/scene-script.js +2 -2
  73. package/dist/core/capabilities/seeing/shot-store.d.ts +1 -1
  74. package/dist/core/capabilities/seeing/shot-store.js +1 -1
  75. package/dist/core/capabilities/summer-bundle.d.ts +11 -3
  76. package/dist/core/capabilities/summer-bundle.js +21 -3
  77. package/dist/core/capabilities/surface-snap.d.ts +1 -1
  78. package/dist/core/capabilities/surface-snap.js +1 -1
  79. package/dist/core/capabilities/tool-dispatch.js +14 -3
  80. package/dist/core/capabilities/ui-control.d.ts +1 -2
  81. package/dist/core/capabilities/ui-control.js +1 -2
  82. package/dist/core/capabilities/world-snapshot.d.ts +1 -1
  83. package/dist/core/capabilities/world-snapshot.js +1 -1
  84. package/dist/core/capability-skew.d.ts +2 -3
  85. package/dist/core/capability-skew.js +4 -5
  86. package/dist/core/feedback/client.js +1 -1
  87. package/dist/core/launch-posture.d.ts +3 -3
  88. package/dist/core/launch-posture.js +3 -3
  89. package/dist/core/library-read.d.ts +7 -0
  90. package/dist/core/library-read.js +60 -9
  91. package/dist/core/library-search.d.ts +2 -0
  92. package/dist/core/templates.d.ts +1 -2
  93. package/dist/core/templates.js +1 -2
  94. package/dist/installer/agent-config.d.ts +25 -0
  95. package/dist/installer/agent-config.js +114 -3
  96. package/dist/installer/agent-table.d.ts +12 -0
  97. package/dist/installer/agent-table.js +9 -0
  98. package/dist/mcp/server.d.ts +2 -2
  99. package/dist/mcp/server.js +2 -2
  100. package/dist/mcp/tools/creator-tools.js +33 -4
  101. package/dist/mcp/tools/debug-tools.js +1 -1
  102. package/dist/mcp/tools/generate-tools.js +18 -37
  103. package/dist/mcp/tools/library-tools.d.ts +2 -1
  104. package/dist/mcp/tools/library-tools.js +1 -0
  105. package/dist/mcp/tools/navigation-tools.d.ts +1 -1
  106. package/dist/mcp/tools/navigation-tools.js +1 -1
  107. package/dist/mcp/tools/spatial-tools.js +1 -1
  108. package/dist/mcp/tools/visual-tools.js +2 -2
  109. package/dist/mcp/tools/with-engine.d.ts +1 -2
  110. package/dist/mcp/tools/with-engine.js +1 -2
  111. package/gemini-extension.json +5 -1
  112. package/hooks/session-start.sh +2 -2
  113. package/integrations/README.md +70 -76
  114. package/integrations/claude/README.md +0 -3
  115. package/integrations/codex/README.md +1 -2
  116. package/integrations/copilot-jetbrains/README.md +1 -1
  117. package/integrations/cursor/README.md +1 -2
  118. package/integrations/factory/README.md +15 -11
  119. package/integrations/mistral-vibe/README.md +1 -1
  120. package/integrations/opencode/README.md +1 -1
  121. package/integrations/roo-code/README.md +1 -1
  122. package/integrations/rovo-dev/README.md +1 -1
  123. package/integrations/trae/README.md +1 -1
  124. package/integrations/windsurf/README.md +3 -3
  125. package/library/references/collaborative-protocol/collaborative-protocol.md +5 -5
  126. package/library/references/gd-style/gd-style.md +4 -6
  127. package/library/references/godot-version/godot-version.md +3 -3
  128. package/library/references/headless-routing/headless-routing.md +2 -2
  129. package/library/references/mcp-fresh-chat-playbook/mcp-fresh-chat-playbook.md +2 -2
  130. package/library/references/mcp-tools-reference/mcp-tools-reference.md +16 -15
  131. package/library/references/product-map/product-map.md +1 -1
  132. package/library/references/public-surface-language/public-surface-language.md +1 -1
  133. package/library/references/summer-folder/summer-folder.md +1 -1
  134. package/library/skills/3d-lighting/SKILL.md +4 -4
  135. package/library/skills/README.md +16 -6
  136. package/library/skills/adaptive-music/SKILL.md +7 -7
  137. package/library/skills/ai-characters-in-games/SKILL.md +1 -1
  138. package/library/skills/ambient-bed/SKILL.md +12 -14
  139. package/library/skills/animated-loop/SKILL.md +42 -42
  140. package/library/skills/animation-tree/SKILL.md +6 -6
  141. package/library/skills/art-direction/SKILL.md +8 -11
  142. package/library/skills/asset-strategy/SKILL.md +3 -3
  143. package/library/skills/audio-direction/SKILL.md +8 -10
  144. package/library/skills/auto-fire-targeting/SKILL.md +4 -3
  145. package/library/skills/bounded-engine-runs/SKILL.md +6 -7
  146. package/library/skills/brainstorm-game/SKILL.md +5 -5
  147. package/library/skills/brainstorming/SKILL.md +9 -15
  148. package/library/skills/celeste-momentum-platforming/SKILL.md +8 -13
  149. package/library/skills/celeste-momentum-platforming/resource.yaml +1 -1
  150. package/library/skills/character-animation-wiring/SKILL.md +2 -2
  151. package/library/skills/character-model/SKILL.md +15 -26
  152. package/library/skills/character-movement/SKILL.md +1 -1
  153. package/library/skills/character-movement/references/movement-3d.md +1 -1
  154. package/library/skills/character-portrait/SKILL.md +4 -4
  155. package/library/skills/cinematic-cutscene/SKILL.md +38 -38
  156. package/library/skills/combat-basics/SKILL.md +1 -1
  157. package/library/skills/compatibility-renderer-traps/SKILL.md +2 -2
  158. package/library/skills/concept-art/SKILL.md +3 -3
  159. package/library/skills/create-asset-sheet/SKILL.md +12 -31
  160. package/library/skills/debug/SKILL.md +5 -4
  161. package/library/skills/debugging-game-feel/SKILL.md +1 -4
  162. package/library/skills/debugging-game-feel/resource.yaml +1 -1
  163. package/library/skills/design-level/SKILL.md +5 -5
  164. package/library/skills/design-mechanic/SKILL.md +6 -6
  165. package/library/skills/design-npc/SKILL.md +8 -15
  166. package/library/skills/diagnosing-perf-regressions/SKILL.md +5 -10
  167. package/library/skills/dispatching-parallel-agents/SKILL.md +1 -19
  168. package/library/skills/environment-kit/SKILL.md +5 -5
  169. package/library/skills/export-and-ship/SKILL.md +24 -25
  170. package/library/skills/export-and-ship/resource.yaml +2 -1
  171. package/library/skills/fabricating-assets/SKILL.md +1 -1
  172. package/library/skills/facial-and-lipsync/SKILL.md +5 -5
  173. package/library/skills/fps-controller/SKILL.md +17 -16
  174. package/library/skills/fps-controller/resource.yaml +0 -2
  175. package/library/skills/game-feel/SKILL.md +6 -7
  176. package/library/skills/gameskill/SKILL.md +3 -3
  177. package/library/skills/gdscript-patterns/SKILL.md +3 -3
  178. package/library/skills/generate-motion/SKILL.md +5 -22
  179. package/library/skills/godogen-visual-proof-game-generation/SKILL.md +72 -90
  180. package/library/skills/godogen-visual-proof-game-generation/resource.yaml +0 -1
  181. package/library/skills/grow-analytics/SKILL.md +21 -0
  182. package/library/skills/grow-analytics/resource.yaml +27 -0
  183. package/library/skills/headless-scripting/SKILL.md +8 -8
  184. package/library/skills/instantiate-asset-pack/SKILL.md +7 -3
  185. package/library/skills/investigating-bugs/SKILL.md +3 -11
  186. package/library/skills/investigating-bugs/condition-based-waiting.md +0 -10
  187. package/library/skills/investigating-bugs/root-cause-tracing.md +0 -8
  188. package/library/skills/lumera-single-image-scene-reconstruction/SKILL.md +15 -15
  189. package/library/skills/lumera-single-image-scene-reconstruction/resource.yaml +0 -1
  190. package/library/skills/make-game/SKILL.md +3 -5
  191. package/library/skills/make-game/references/2d-platformer.md +1 -1
  192. package/library/skills/multiplayer-project/SKILL.md +1 -1
  193. package/library/skills/multiplayer-testing/SKILL.md +4 -4
  194. package/library/skills/music-track/SKILL.md +40 -38
  195. package/library/skills/new-project/SKILL.md +4 -6
  196. package/library/skills/organic-model/SKILL.md +9 -9
  197. package/library/skills/pixel-art/SKILL.md +6 -6
  198. package/library/skills/play/SKILL.md +3 -4
  199. package/library/skills/playtesting-a-feature/SKILL.md +4 -6
  200. package/library/skills/procedural-animation/SKILL.md +10 -11
  201. package/library/skills/prop-model/SKILL.md +4 -4
  202. package/library/skills/psx-retro-rendering/SKILL.md +20 -20
  203. package/library/skills/psx-retro-rendering/resource.yaml +2 -3
  204. package/library/skills/publish-your-game/SKILL.md +21 -0
  205. package/library/skills/publish-your-game/resource.yaml +29 -0
  206. package/library/skills/realtime-wet-surfaces/SKILL.md +15 -15
  207. package/library/skills/realtime-wet-surfaces/resource.yaml +1 -2
  208. package/library/skills/remote-deploy/SKILL.md +20 -21
  209. package/library/skills/retarget/SKILL.md +19 -23
  210. package/library/skills/running-in-the-cloud/SKILL.md +5 -5
  211. package/library/skills/scene-composition/SKILL.md +5 -5
  212. package/library/skills/scene-hierarchy-design/SKILL.md +3 -3
  213. package/library/skills/scene-hierarchy-design/resource.yaml +0 -1
  214. package/library/skills/scene-scripting/SKILL.md +3 -3
  215. package/library/skills/scene-to-level/SKILL.md +28 -31
  216. package/library/skills/skill-create/SKILL.md +1 -1
  217. package/library/skills/skill-improve/SKILL.md +9 -9
  218. package/library/skills/skill-test/SKILL.md +10 -10
  219. package/library/skills/skintokens-auto-rigging/SKILL.md +18 -18
  220. package/library/skills/skintokens-auto-rigging/resource.yaml +3 -3
  221. package/library/skills/skybox-panorama/SKILL.md +8 -9
  222. package/library/skills/sound-effect/SKILL.md +19 -19
  223. package/library/skills/spatial-placement/SKILL.md +2 -2
  224. package/library/skills/spatial-placement/references/kit-placement-tools.md +12 -22
  225. package/library/skills/sprite-sheet/SKILL.md +10 -10
  226. package/library/skills/store-art/SKILL.md +23 -0
  227. package/library/skills/store-art/resource.yaml +30 -0
  228. package/library/skills/store-listing/SKILL.md +21 -0
  229. package/library/skills/store-listing/resource.yaml +25 -0
  230. package/library/skills/summer-analytics/SKILL.md +3 -3
  231. package/library/skills/summer-analytics/resource.yaml +1 -0
  232. package/library/skills/summer-friends/SKILL.md +10 -10
  233. package/library/skills/summer-leaderboards/SKILL.md +6 -6
  234. package/library/skills/summer-match-results/SKILL.md +13 -13
  235. package/library/skills/summer-matchmaking/SKILL.md +11 -11
  236. package/library/skills/summer-parties/SKILL.md +9 -9
  237. package/library/skills/summer-player-data/SKILL.md +12 -12
  238. package/library/skills/summer-store/SKILL.md +6 -6
  239. package/library/skills/summer-world-chat/SKILL.md +9 -9
  240. package/library/skills/summer-world-saves/SKILL.md +7 -7
  241. package/library/skills/text-to-motion/rigging-for-text-motion.md +1 -1
  242. package/library/skills/tileable-texture/SKILL.md +1 -1
  243. package/library/skills/trailer-shot/SKILL.md +36 -36
  244. package/library/skills/tune-performance/SKILL.md +13 -13
  245. package/library/skills/tune-performance/resource.yaml +1 -1
  246. package/library/skills/ui-graphics/SKILL.md +7 -7
  247. package/library/skills/use-widget-asset/SKILL.md +7 -7
  248. package/library/skills/using-summer/SKILL.md +5 -7
  249. package/library/skills/vehicle-model/SKILL.md +6 -7
  250. package/library/skills/vehicle-model/resource.yaml +2 -2
  251. package/library/skills/verification-before-completion/SKILL.md +5 -6
  252. package/library/skills/vfx-dissolve/SKILL.md +4 -4
  253. package/library/skills/vfx-fire/SKILL.md +6 -6
  254. package/library/skills/vfx-fire/_building-blocks/additive-billboard-particles.md +3 -3
  255. package/library/skills/vfx-hit-spark/SKILL.md +4 -4
  256. package/library/skills/vfx-hit-spark/_building-blocks/additive-billboard-particles.md +3 -3
  257. package/library/skills/vfx-lightning/SKILL.md +5 -5
  258. package/library/skills/vfx-lightning/_building-blocks/additive-billboard-particles.md +3 -3
  259. package/library/skills/vfx-lightning/_building-blocks/trauma-shake-snippet.md +9 -3
  260. package/library/skills/vfx-magic-glow/SKILL.md +4 -4
  261. package/library/skills/vfx-magic-glow/_building-blocks/additive-billboard-particles.md +3 -3
  262. package/library/skills/vfx-muzzle-flash/SKILL.md +5 -5
  263. package/library/skills/vfx-muzzle-flash/_building-blocks/additive-billboard-particles.md +3 -3
  264. package/library/skills/vfx-muzzle-flash/_building-blocks/trauma-shake-snippet.md +9 -3
  265. package/library/skills/vfx-smoke/SKILL.md +5 -5
  266. package/library/skills/vfx-water-ripple/SKILL.md +2 -2
  267. package/library/skills/vfx-water-ripple/_building-blocks/additive-billboard-particles.md +3 -3
  268. package/library/skills/voice-line/SKILL.md +9 -9
  269. package/library/skills/world-building-3d/references/spatial-tools.md +2 -2
  270. package/library/skills/writing-plans/SKILL.md +4 -4
  271. package/library/skills/writing-skills/SKILL.md +8 -8
  272. package/library/tools/capture-gameplay/resource.yaml +66 -1
  273. package/library/tools/creator-publish/resource.yaml +4 -4
  274. package/library/tools/creator-releases/resource.yaml +5 -5
  275. package/library/tools/export-game/resource.yaml +3 -0
  276. package/library/tools/generate-image/resource.yaml +4 -2
  277. package/library/tools/publish-build/resource.yaml +5 -1
  278. package/package.json +1 -1
  279. package/registry/generated/counts.json +2 -2
  280. package/registry/generated/gemini-extension.json +5 -1
  281. package/registry/generated/index.json +280 -137
  282. package/registry/generated/marketplace.claude.json +1 -1
  283. package/registry/generated/plugin.claude.json +5 -1
  284. package/registry/generated/plugin.codex.json +5 -1
  285. package/registry/generated/plugin.cursor.json +5 -1
  286. package/registry/generated/plugin.factory.json +5 -1
  287. package/registry/generated/skills-index.md +16 -6
  288. package/registry/generated/skills-registry.json +57 -5
  289. package/registry/schemas/domains.json +1 -1
  290. package/registry/schemas/skill.schema.json +5 -0
@@ -3,7 +3,8 @@
3
3
  * librarian. Behavior lives in src/core/library-search.ts and
4
4
  * src/core/library-read.ts; `summer tool search-library|read-library`
5
5
  * (src/core/capabilities/tool-dispatch.ts) calls the same functions.
6
- * Engine-free: both read the library shipped with this package.
6
+ * Engine-free: both read the library shipped with this package; a hosted
7
+ * skill's body comes from the hosted Summer Engine MCP when signed in.
7
8
  */
8
9
  import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
9
10
  export declare const SEARCH_LIBRARY_DESCRIPTION: string;
@@ -15,6 +15,7 @@ export const READ_LIBRARY_DESCRIPTION = "Load one library entry by id (<kind>/<s
15
15
  "Skills: the SKILL.md body plus metadata (status, use_when, related) and how to invoke the skill in your host (bare slug). " +
16
16
  "Tools: how to call it (MCP name, `summer tool <slug> --args`, engine requirement, authority) plus the descriptor. " +
17
17
  "Templates: the pinned repo @ commit and tree digest (or built-in) and the `summer create <slug>` command. References: the markdown body. " +
18
+ "Hosted skills (publish-your-game, store-listing, store-art, grow-analytics; also by their summer://skills/<slug> URI): the current text from the hosted Summer Engine MCP with the store sign-in, else the local summary plus why and how to load the rest. " +
18
19
  "Linked files: a body ends with its relative links and the id that loads each; a file an entry links loads by <entry id>/<link as written> " +
19
20
  "(e.g. skill/spatial-placement/references/kit-placement-tools.md), by the relative path alone when one entry ships it, inside library/ only. " +
20
21
  "part: 'skill' = body only, 'resource' = the resource.yaml descriptor only, 'all' (default) = both. " +
@@ -2,6 +2,6 @@ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
2
  /**
3
3
  * summer_open — the MCP face of `summer open`. Same behavior as the CLI
4
4
  * (src/core/capabilities/navigation/open.ts runOpen); this file only supplies
5
- * the engine client and the browser launcher. Design: docs/design/NAVIGATION-DESIGN.md §3.
5
+ * the engine client and the browser launcher.
6
6
  */
7
7
  export declare function registerNavigationTools(server: McpServer): void;
@@ -6,7 +6,7 @@ import { openArgsShape, runOpen } from "../../core/capabilities/navigation/open.
6
6
  /**
7
7
  * summer_open — the MCP face of `summer open`. Same behavior as the CLI
8
8
  * (src/core/capabilities/navigation/open.ts runOpen); this file only supplies
9
- * the engine client and the browser launcher. Design: docs/design/NAVIGATION-DESIGN.md §3.
9
+ * the engine client and the browser launcher.
10
10
  */
11
11
  export function registerNavigationTools(server) {
12
12
  server.tool("summer_open", `Open the exact summerengine.com page or Summer Engine editor surface the user wants to LOOK at, by intent name — or, with open:false, return the URL / engine op without opening anything. The result ALWAYS carries the resolved url or op, also after opening, so you can tell the user where they landed.
@@ -16,7 +16,7 @@ const NODE_PATH_LIMIT_BYTES = 256;
16
16
  const MIN_PLACEMENT_FLOOR_DISTANCE = 0.001;
17
17
  /** Mirrors the engine's SnapToSurface direction guard (length² > 1e-5). */
18
18
  const MIN_SNAP_DIRECTION_LENGTH_SQUARED = 0.00001;
19
- /** Starcast's own ceilings (engine spatial_ops.cpp starcast_3d): the engine
19
+ /** Starcast's own ceilings in the engine: the engine
20
20
  * measures the compact receipt as UTF-8 JSON, downgrades full -> summary
21
21
  * above 12 KiB, and strips secondary paths above 5 KiB, so a receipt past the
22
22
  * ceiling for its returnedDetail is one this CLI does not understand. Unlike
@@ -353,8 +353,8 @@ Static frame only — one moment, not motion. For a SEQUENCE of frames over time
353
353
  if (snap.sceneHadLight === false) {
354
354
  warnings.push("WARNING: this scene has no light — lit materials may appear black when played.");
355
355
  }
356
- // The engine ALWAYS synthesizes the preview camera (preview_ops.cpp
357
- // sets used_synthetic_camera unconditionally) — the flag says nothing
356
+ // The engine ALWAYS synthesizes the preview camera (it sets
357
+ // used_synthetic_camera unconditionally) — the flag says nothing
358
358
  // about the scene's own cameras. sceneHasCamera above is the
359
359
  // authoritative "does this scene have a camera" answer.
360
360
  if (snap.usedSyntheticCamera) {
@@ -41,8 +41,7 @@ export interface WithEngineOptions<T> {
41
41
  }
42
42
  /**
43
43
  * An auth failure is the ONE class of thrown error that is provably pre-apply:
44
- * the engine rejects on the Bearer-token check (tool_net_thread.cpp::_validate_auth)
45
- * BEFORE the op is queued or applied, so reconnecting with the fresh api-token and
44
+ * the engine rejects on the Bearer-token check BEFORE the op is queued or applied, so reconnecting with the fresh api-token and
46
45
  * retrying cannot double-apply a mutation. This is exactly the stale-token case
47
46
  * after the engine rotates its api-token on relaunch.
48
47
  *
@@ -30,8 +30,7 @@ function readClassifiers(result) {
30
30
  }
31
31
  /**
32
32
  * An auth failure is the ONE class of thrown error that is provably pre-apply:
33
- * the engine rejects on the Bearer-token check (tool_net_thread.cpp::_validate_auth)
34
- * BEFORE the op is queued or applied, so reconnecting with the fresh api-token and
33
+ * the engine rejects on the Bearer-token check BEFORE the op is queued or applied, so reconnecting with the fresh api-token and
35
34
  * retrying cannot double-apply a mutation. This is exactly the stale-token case
36
35
  * after the engine rotates its api-token on relaunch.
37
36
  *
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "_generated": "GENERATED from integrations/gemini — do not edit; npm run generate:registry",
3
3
  "name": "summer",
4
- "version": "3.4.0",
4
+ "version": "3.5.0",
5
5
  "description": "Agent tooling for Summer Engine: MCP bridge, context primer, and game-dev skills. Use with the npm CLI for skill files on disk.",
6
6
  "contextFileName": "GEMINI.md",
7
7
  "mcpServers": {
@@ -68,6 +68,7 @@
68
68
  "./library/skills/gdscript-patterns/",
69
69
  "./library/skills/generate-motion/",
70
70
  "./library/skills/godogen-visual-proof-game-generation/",
71
+ "./library/skills/grow-analytics/",
71
72
  "./library/skills/headless-scripting/",
72
73
  "./library/skills/in-game-purchases/",
73
74
  "./library/skills/instantiate-asset-pack/",
@@ -90,6 +91,7 @@
90
91
  "./library/skills/procedural-animation/",
91
92
  "./library/skills/prop-model/",
92
93
  "./library/skills/psx-retro-rendering/",
94
+ "./library/skills/publish-your-game/",
93
95
  "./library/skills/realtime-wet-surfaces/",
94
96
  "./library/skills/remote-deploy/",
95
97
  "./library/skills/retarget/",
@@ -107,6 +109,8 @@
107
109
  "./library/skills/sound-effect/",
108
110
  "./library/skills/spatial-placement/",
109
111
  "./library/skills/sprite-sheet/",
112
+ "./library/skills/store-art/",
113
+ "./library/skills/store-listing/",
110
114
  "./library/skills/summer-analytics/",
111
115
  "./library/skills/summer-friends/",
112
116
  "./library/skills/summer-leaderboards/",
@@ -3,8 +3,8 @@
3
3
  #
4
4
  # Event: SessionStart (matcher: startup|clear|compact)
5
5
  # Purpose: Orient Claude on every fresh Summer-enabled session.
6
- # Detect Summer project + GameSoul + doctor health, surface a one-line
7
- # Bob-style greeting as additional context.
6
+ # Detect Summer project + GameSoul + doctor health and surface a short
7
+ # greeting as additional context.
8
8
  #
9
9
  # Input: JSON on stdin with { session_id, source, model, cwd, ... }
10
10
  # Common Claude Code env vars: $CLAUDE_PROJECT_DIR, $CLAUDE_PLUGIN_ROOT
@@ -1,94 +1,88 @@
1
- # integrations/ — the complete, honest map of agent support
1
+ # integrations/: which agents Summer supports
2
2
 
3
- One folder per supported client. This directory is the single place that
4
- says which agents Summer supports and how each one consumes the library.
5
- Adding a new agent = one row in `src/installer/agent-table.ts` + one folder
6
- here + an empty entry in `scripts/generate-registry/targets.ts` (plus, if it
7
- has a manifest file, a builder in `scripts/generate-registry/manifests.ts`) +
8
- `npm run generate:registry` — never hand-editing root files. Tests fail when
9
- the table, this directory, and targets.ts disagree.
3
+ One folder per supported client. Each folder says how that client consumes
4
+ the library.
5
+
6
+ Adding an agent: one row in `src/installer/agent-table.ts`, one folder here,
7
+ an empty entry in `scripts/generate-registry/targets.ts` (plus a builder in
8
+ `scripts/generate-registry/manifests.ts` if the client has a manifest file),
9
+ then `npm run generate:registry`. Never hand-edit root files. Tests fail when
10
+ the table, this directory and `targets.ts` disagree.
10
11
 
11
12
  Each folder contains:
12
13
 
13
- - `README.md` — what gets generated where, or (for clients with no manifest
14
- file in this repo) exactly what `summer setup <client>` writes at install
15
- time: MCP config path and skills destination.
14
+ - `README.md`: what gets generated where, or (for clients with no manifest
15
+ file in this repo) what `summer setup <client>` writes at install time.
16
+ - `manifest-target.json`: generated file -> repo-root destination (empty when
17
+ nothing is generated). Mirrors `scripts/generate-registry/targets.ts`; a test
18
+ fails if they drift.
16
19
 
17
- `summer setup <client>` (default `--scope user`) writes the MCP config AND
18
- installs every skill (`skills install --all`, preview included; `--stable-only`
19
- skips preview) in the SAME scope,
20
- so a user-scope MCP config never ends up beside project-scope skills.
21
- `--scope project` moves both; `--recommended` installs only the recommended
22
- subset. Clients whose MCP config is user-only (see the table) fall back to user
23
- scope with a warning. `.mcp.json` at the repo root
24
- (the MCP pointer the claude / codex / cursor / factory manifests share) is
25
- generated too — `registry/generated/mcp.json -> .mcp.json`.
26
- - `manifest-target.json` — mapping of generated file -> repo-root destination
27
- (empty when nothing is generated). Mirrors
28
- `scripts/generate-registry/targets.ts`; a test fails if they drift.
20
+ `summer setup <client>` (default `--scope user`) writes the MCP config and
21
+ installs every skill (`skills install --all`, preview included;
22
+ `--stable-only` skips preview) in the same scope, so a user-scope MCP config
23
+ never sits beside project-scope skills. `--scope project` moves both;
24
+ `--recommended` installs only the recommended subset. Clients whose MCP config
25
+ is user-only fall back to user scope with a warning.
29
26
 
30
- Generated root dot-files (`.claude-plugin/plugin.json`, `gemini-extension.json`,
31
- …) are build artifacts of `integrations/<agent>` + `library/` — their
32
- `_generated` banner says so ("GENERATED from integrations/<agent> — do not
33
- edit; npm run generate:registry"). CI `--check` fails on any drift between
34
- `library/`, `registry/generated/`, and the applied root files.
27
+ Generated root files (`.claude-plugin/plugin.json`, `gemini-extension.json`,
28
+ `.mcp.json`, …) are build artifacts of `integrations/<agent>` + `library/`.
29
+ Their `_generated` banner says so. CI `--check` fails on any drift between
30
+ `library/`, `registry/generated/` and the applied root files.
35
31
 
36
32
  How the plugin manifests reference skills, and what is verified:
37
33
 
38
- - **Claude Code** — the plugin-manifest `skills` field accepts a string or an
39
- array of `./`-relative directory paths and *extends* the default `skills/`
40
- scan (Claude Code plugins reference, "Plugin manifest schema"). The
41
- generated `.claude-plugin/plugin.json` lists one entry per skill
42
- (`./library/skills/<slug>/`). The docs do not say whether a listed
43
- directory is loaded as one skill or scanned for skill subfolders, and this
44
- repo has not yet loaded the generated manifest through the real plugin
45
- path (the smoke tests exercise the `summer setup` install path, not the
46
- marketplace one) — treat the marketplace install as unverified until that
47
- run exists.
48
- - **Codex** — `.codex-plugin/plugin.json` carries the same per-skill `skills`
49
- array. Whether Codex reads that field, and with which type, is
50
- **unverified**; the v2 manifest carried it and nobody has confirmed a load.
51
- - **Factory** — reads skills only from a root `skills/` directory; the
52
- manifest's `skills` array is not read (open gap, see the table).
34
+ - **Claude Code**: the plugin-manifest `skills` field accepts a string or an
35
+ array of `./`-relative directory paths and extends the default `skills/`
36
+ scan. The generated `.claude-plugin/plugin.json` lists one entry per skill
37
+ (`./library/skills/<slug>/`). The docs do not say whether a listed directory
38
+ loads as one skill or is scanned for skill subfolders, and the smoke tests
39
+ cover the `summer setup` path, not the marketplace one. Treat the
40
+ marketplace install as unverified.
41
+ - **Codex**: `.codex-plugin/plugin.json` carries the same `skills` array.
42
+ Whether Codex reads that field is **unverified**.
43
+ - **Factory**: a plugin install reads skills only from a root `skills/`
44
+ directory, so it exposes no skills. `summer setup factory` installs them.
45
+
46
+ Paths below are for macOS; `~` is `%USERPROFILE%` on Windows. Other OS paths
47
+ are listed where they differ.
53
48
 
54
49
  | Client | Manifest generated in this repo | `summer setup` writes |
55
50
  |---|---|---|
56
- | claude | `.claude-plugin/plugin.json`, `.claude-plugin/marketplace.json`, `.mcp.json` | MCP: `~/.claude.json`; Windows `%USERPROFILE%/.claude.json` / `.mcp.json`; skills: `~/.claude/skills` / `.claude/skills` (`<skill>/SKILL.md`) |
51
+ | claude | `.claude-plugin/plugin.json`, `.claude-plugin/marketplace.json`, `.mcp.json` | MCP: `~/.claude.json`; project `.mcp.json`; skills: `~/.claude/skills`; project `.claude/skills` (`<skill>/SKILL.md`) |
57
52
  | claude-desktop | — | MCP: `~/Library/Application Support/Claude/claude_desktop_config.json`; Linux `~/.config/Claude/claude_desktop_config.json`; Windows `%APPDATA%/Claude/claude_desktop_config.json`; no skills folder (MCP only) |
58
- | codex | `.codex-plugin/plugin.json` | MCP: `~/.codex/config.toml`; Windows `%USERPROFILE%/.codex/config.toml` / `.codex/config.toml`; skills: `~/.agents/skills` / `.agents/skills` (`<skill>/SKILL.md`) |
59
- | cursor | `.cursor-plugin/plugin.json` | MCP: `~/.cursor/mcp.json`; Windows `%USERPROFILE%/.cursor/mcp.json` / `.cursor/mcp.json`; skills: `~/.cursor/skills` / `.cursor/skills` (`<skill>/SKILL.md`) |
60
- | windsurf | — | MCP: `~/.codeium/windsurf/mcp_config.json`; Windows `%USERPROFILE%/.codeium/windsurf/mcp_config.json`; skills: `~/.codeium/windsurf/skills` / `.windsurf/skills` (`<skill>/SKILL.md`) |
61
- | antigravity | — | MCP: `~/.gemini/config/mcp_config.json`; Windows `%USERPROFILE%/.gemini/config/mcp_config.json` / `.agents/mcp_config.json`; skills: `~/.gemini/config/skills` / `.agents/skills` (`<skill>/SKILL.md`) |
62
- | gemini (legacy) | `gemini-extension.json` | MCP: `~/.gemini/extensions/summer-engine/gemini-extension.json`; Windows `%USERPROFILE%/.gemini/extensions/summer-engine/gemini-extension.json`; skills: `~/.gemini/extensions/summer-engine/skills` (`<skill>/SKILL.md`) |
63
- | cline | — | MCP: `~/Library/Application Support/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json`; Linux `~/.config/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json`; Windows `%APPDATA%/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json`; skills: `~/.cline/skills` / `.cline/skills` (`<skill>/SKILL.md`) |
64
- | cline-cli | — | MCP: `~/.cline/data/settings/cline_mcp_settings.json`; Windows `%USERPROFILE%/.cline/data/settings/cline_mcp_settings.json`; skills: `~/.cline/skills` / `.cline/skills` (`<skill>/SKILL.md`) |
65
- | roo-code (legacy) | — | MCP: `~/Library/Application Support/Code/User/globalStorage/rooveterinaryinc.roo-cline/settings/cline_mcp_settings.json`; Linux `~/.config/Code/User/globalStorage/rooveterinaryinc.roo-cline/settings/cline_mcp_settings.json`; Windows `%APPDATA%/Code/User/globalStorage/rooveterinaryinc.roo-cline/settings/cline_mcp_settings.json`; skills: `~/Documents/Roo/Rules` / `.clinerules` (rule files `summer-<skill>.md`) |
66
- | kilo-code | — | MCP: `~/.config/kilo/kilo.json`; Windows `%APPDATA%/kilo/kilo.json` / `kilo.json`; skills: `~/.kilo/skills` / `.kilo/skills` (`<skill>/SKILL.md`) |
67
- | github-copilot | — | MCP: `~/.copilot/mcp-config.json`; Windows `%USERPROFILE%/.copilot/mcp-config.json` / `.mcp.json`; skills: `~/.copilot/skills` / `.github/skills` (`<skill>/SKILL.md`) |
68
- | vscode-copilot | — | MCP: `~/Library/Application Support/Code/User/mcp.json`; Linux `~/.config/Code/User/mcp.json`; Windows `%APPDATA%/Code/User/mcp.json` / `.vscode/mcp.json`; skills: `~/.copilot/skills` / `.github/skills` (`<skill>/SKILL.md`) |
69
- | visual-studio | — | MCP: `~/.mcp.json`; Windows `%USERPROFILE%/.mcp.json` / `.mcp.json`; no skills folder (MCP only) |
53
+ | codex | `.codex-plugin/plugin.json` | MCP: `~/.codex/config.toml`; project `.codex/config.toml`; skills: `~/.agents/skills`; project `.agents/skills` (`<skill>/SKILL.md`) |
54
+ | cursor | `.cursor-plugin/plugin.json` | MCP: `~/.cursor/mcp.json`; project `.cursor/mcp.json`; skills: `~/.agents/skills`; project `.agents/skills` (`<skill>/SKILL.md`) |
55
+ | windsurf | — | MCP: `~/.codeium/windsurf/mcp_config.json`; skills: `~/.agents/skills`; project `.agents/skills` (`<skill>/SKILL.md`) |
56
+ | antigravity | — | MCP: `~/.gemini/config/mcp_config.json`; project `.agents/mcp_config.json`; skills: `~/.gemini/config/skills`; project `.agents/skills` (`<skill>/SKILL.md`) |
57
+ | gemini (legacy) | `gemini-extension.json` | MCP: `~/.gemini/extensions/summer-engine/gemini-extension.json`; skills: `~/.gemini/extensions/summer-engine/skills` (`<skill>/SKILL.md`) |
58
+ | cline | — | MCP: `~/Library/Application Support/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json`; Linux `~/.config/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json`; Windows `%APPDATA%/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json`; skills: `~/.cline/skills`; project `.cline/skills` (`<skill>/SKILL.md`) |
59
+ | cline-cli | — | MCP: `~/.cline/data/settings/cline_mcp_settings.json`; skills: `~/.cline/skills`; project `.cline/skills` (`<skill>/SKILL.md`) |
60
+ | roo-code (legacy) | — | MCP: `~/Library/Application Support/Code/User/globalStorage/rooveterinaryinc.roo-cline/settings/cline_mcp_settings.json`; Linux `~/.config/Code/User/globalStorage/rooveterinaryinc.roo-cline/settings/cline_mcp_settings.json`; Windows `%APPDATA%/Code/User/globalStorage/rooveterinaryinc.roo-cline/settings/cline_mcp_settings.json`; skills: `~/Documents/Roo/Rules`; project `.clinerules` (rule files `summer-<skill>.md`) |
61
+ | kilo-code | — | MCP: `~/.config/kilo/kilo.json`; Windows `%APPDATA%/kilo/kilo.json`; project `kilo.json`; skills: `~/.kilo/skills`; project `.kilo/skills` (`<skill>/SKILL.md`) |
62
+ | github-copilot | — | MCP: `~/.copilot/mcp-config.json`; project `.mcp.json`; skills: `~/.copilot/skills`; project `.github/skills` (`<skill>/SKILL.md`) |
63
+ | vscode-copilot | — | MCP: `~/Library/Application Support/Code/User/mcp.json`; Linux `~/.config/Code/User/mcp.json`; Windows `%APPDATA%/Code/User/mcp.json`; project `.vscode/mcp.json`; skills: `~/.agents/skills`; project `.agents/skills` (`<skill>/SKILL.md`) |
64
+ | visual-studio | — | MCP: `~/.mcp.json`; project `.mcp.json`; no skills folder (MCP only) |
70
65
  | copilot-jetbrains | — | MCP: `~/.config/github-copilot/intellij/mcp.json`; Windows `%APPDATA%/github-copilot/intellij/mcp.json`; no skills folder (MCP only) |
71
- | opencode | — | MCP: `~/.config/opencode/opencode.json`; Windows `%APPDATA%/opencode/opencode.json` / `opencode.json`; skills: `~/.config/opencode/skills` / `.opencode/skills` (`<skill>/SKILL.md`) |
72
- | zed | — | MCP: `~/.config/zed/settings.json`; Windows `%APPDATA%/zed/settings.json`; skills: `~/.agents/skills` / `.agents/skills` (`<skill>/SKILL.md`) |
73
- | kiro | — | MCP: `~/.kiro/settings/mcp.json`; Windows `%USERPROFILE%/.kiro/settings/mcp.json` / `.kiro/settings/mcp.json`; skills: `~/.kiro/skills` / `.kiro/skills` (`<skill>/SKILL.md`) |
74
- | goose | — | MCP: `~/.config/goose/config.yaml`; Windows `%APPDATA%/Block/goose/config/config.yaml`; skills: `~/.config/agents/skills` / `.agents/skills` (`<skill>/SKILL.md`) |
75
- | hermes | — | MCP: `~/.hermes/config.yaml`; Windows `%USERPROFILE%/.hermes/config.yaml`; skills: `~/.hermes/skills` / `.hermes/skills` (`<skill>/SKILL.md`) |
76
- | trae | — | MCP: `.trae/mcp.json` / `.trae/mcp.json`; no skills folder (MCP only) |
77
- | qwen-code | — | MCP: `~/.qwen/settings.json`; Windows `%USERPROFILE%/.qwen/settings.json` / `.qwen/settings.json`; skills: `~/.qwen/skills` / `.qwen/skills` (`<skill>/SKILL.md`) |
78
- | kimi-code | — | MCP: `~/.kimi-code/mcp.json`; Windows `%USERPROFILE%/.kimi-code/mcp.json` / `.kimi-code/mcp.json`; skills: `~/.kimi-code/skills` / `.kimi-code/skills` (`<skill>/SKILL.md`) |
79
- | crush | — | MCP: `~/.config/crush/crushrc`; Windows `%USERPROFILE%/.config/crush/crushrc` / `.crushrc`; skills: `~/.config/crush/skills` / `.crush/skills` (`<skill>/SKILL.md`) |
80
- | amp | — | MCP: `~/.config/amp/settings.json`; Windows `%APPDATA%/amp/settings.json`; skills: `~/.config/amp/skills` / `.agents/skills` (`<skill>/SKILL.md`) |
81
- | factory | `.factory-plugin/plugin.json` | MCP: `~/.factory/mcp.json`; Windows `%USERPROFILE%/.factory/mcp.json` / `.factory/mcp.json`; skills: `~/.factory/skills` / `.factory/skills` (`<skill>/SKILL.md`) |
82
- | junie | — | MCP: `~/.junie/mcp/mcp.json`; Windows `%USERPROFILE%/.junie/mcp/mcp.json` / `.junie/mcp/mcp.json`; no skills folder (MCP only) |
83
- | warp | — | MCP: `~/.warp/.mcp.json`; Windows `%USERPROFILE%/.warp/.mcp.json` / `.warp/.mcp.json`; skills: `~/.warp/skills` / `.warp/skills` (`<skill>/SKILL.md`) |
84
- | rovo-dev | — | MCP: `~/.rovodev/mcp.json`; Windows `%USERPROFILE%/.rovodev/mcp.json`; skills: `~/.rovodev/skills` / `.rovodev/skills` (`<skill>/SKILL.md`) |
85
- | qoder | — | MCP: `~/.qoder/settings.json`; Windows `%USERPROFILE%/.qoder/settings.json` / `.mcp.json`; skills: `~/.qoder/skills` / `.qoder/skills` (`<skill>/SKILL.md`) |
86
- | grok-build | — | MCP: `~/.grok/config.toml`; Windows `%USERPROFILE%/.grok/config.toml` / `.grok/config.toml`; skills: `~/.grok/skills` / `.grok/skills` (`<skill>/SKILL.md`) |
87
- | mistral-vibe | — | MCP: `~/.vibe/config.toml`; Windows `%USERPROFILE%/.vibe/config.toml` / `.vibe/config.toml`; skills: `~/.vibe/skills` / `.vibe/skills` (`<skill>/SKILL.md`) |
88
- | lm-studio | — | MCP: `~/.lmstudio/mcp.json`; Windows `%USERPROFILE%/.lmstudio/mcp.json`; no skills folder (MCP only) |
66
+ | opencode | — | MCP: `~/.config/opencode/opencode.json`; Windows `%APPDATA%/opencode/opencode.json`; project `opencode.json`; skills: `~/.agents/skills`; project `.agents/skills` (`<skill>/SKILL.md`) |
67
+ | zed | — | MCP: `~/.config/zed/settings.json`; Windows `%APPDATA%/zed/settings.json`; skills: `~/.agents/skills`; project `.agents/skills` (`<skill>/SKILL.md`) |
68
+ | kiro | — | MCP: `~/.kiro/settings/mcp.json`; project `.kiro/settings/mcp.json`; skills: `~/.kiro/skills`; project `.kiro/skills` (`<skill>/SKILL.md`) |
69
+ | goose | — | MCP: `~/.config/goose/config.yaml`; Windows `%APPDATA%/Block/goose/config/config.yaml`; skills: `~/.config/agents/skills`; project `.agents/skills` (`<skill>/SKILL.md`) |
70
+ | hermes | — | MCP: `~/.hermes/config.yaml`; skills: `~/.hermes/skills`; project `.agents/skills` (`<skill>/SKILL.md`) |
71
+ | trae | — | MCP: `.trae/mcp.json` (project only); no skills folder (MCP only) |
72
+ | qwen-code | — | MCP: `~/.qwen/settings.json`; project `.qwen/settings.json`; skills: `~/.qwen/skills`; project `.qwen/skills` (`<skill>/SKILL.md`) |
73
+ | kimi-code | — | MCP: `~/.kimi-code/mcp.json`; project `.kimi-code/mcp.json`; skills: `~/.agents/skills`; project `.agents/skills` (`<skill>/SKILL.md`) |
74
+ | crush | — | MCP: `~/.config/crush/crushrc`; project `.crushrc`; skills: `~/.agents/skills`; project `.agents/skills` (`<skill>/SKILL.md`) |
75
+ | amp | — | MCP: `~/.config/amp/settings.json`; Windows `%APPDATA%/amp/settings.json`; skills: `~/.agents/skills`; project `.agents/skills` (`<skill>/SKILL.md`) |
76
+ | factory | `.factory-plugin/plugin.json` | MCP: `~/.factory/mcp.json`; project `.factory/mcp.json`; skills: `~/.agents/skills`; project `.agents/skills` (`<skill>/SKILL.md`) |
77
+ | junie | — | MCP: `~/.junie/mcp/mcp.json`; project `.junie/mcp/mcp.json`; no skills folder (MCP only) |
78
+ | warp | — | MCP: `~/.warp/.mcp.json`; project `.warp/.mcp.json`; skills: `~/.agents/skills`; project `.agents/skills` (`<skill>/SKILL.md`) |
79
+ | rovo-dev | — | MCP: `~/.rovodev/mcp.json`; skills: `~/.agents/skills`; project `.agents/skills` (`<skill>/SKILL.md`) |
80
+ | qoder | — | MCP: `~/.qoder/settings.json`; project `.mcp.json`; skills: `~/.qoder/skills`; project `.qoder/skills` (`<skill>/SKILL.md`) |
81
+ | grok-build | — | MCP: `~/.grok/config.toml`; project `.grok/config.toml`; skills: `~/.agents/skills`; project `.agents/skills` (`<skill>/SKILL.md`) |
82
+ | mistral-vibe | — | MCP: `~/.vibe/config.toml`; project `.vibe/config.toml`; skills: `~/.vibe/skills`; project `.agents/skills` (`<skill>/SKILL.md`) |
83
+ | lm-studio | — | MCP: `~/.lmstudio/mcp.json`; no skills folder (MCP only) |
89
84
 
90
- Source of truth for the setup paths: `src/installer/agent-config.ts` and
91
- `src/cli/commands/skills.ts`.
85
+ Source of truth for the setup paths: `src/installer/agent-table.ts`.
92
86
 
93
87
  Not supported on purpose (checked 2026-09-11): OpenHands CLI (its `[mcp] stdio_servers`
94
88
  inline-table array has a known upstream write bug), Xcode's agent folders (Apple
@@ -11,9 +11,6 @@ Generated by `scripts/generate-registry` from `library/**/resource.yaml`:
11
11
  The MCP pointer `./.mcp.json` these manifests reference is generated as
12
12
  well (`registry/generated/mcp.json -> .mcp.json`, owned by the claude target).
13
13
 
14
- The MCP pointer `./.mcp.json` these manifests reference is generated as
15
- well (`registry/generated/mcp.json -> .mcp.json`).
16
-
17
14
  Never edit the destination files by hand — edit `library/` resources or the
18
15
  manifest builders in `scripts/generate-registry/manifests.ts`, then run
19
16
  `npm run generate:registry`. CI `--check` fails on any drift.
@@ -4,8 +4,7 @@ Generated by `scripts/generate-registry` from `library/**/resource.yaml`:
4
4
 
5
5
  - `registry/generated/plugin.codex.json` -> `.codex-plugin/plugin.json`
6
6
  (plugin manifest with the Codex app-store `interface` block; full skill
7
- list at `./library/skills/<slug>/` — the pre-v3 four-skill gap was a bug and
8
- is fixed by generation; version stamped from `package.json`).
7
+ list at `./library/skills/<slug>/`; version stamped from `package.json`).
9
8
 
10
9
  The MCP pointer `./.mcp.json` these manifests reference is generated as
11
10
  well (`registry/generated/mcp.json -> .mcp.json`, owned by the claude target).
@@ -5,7 +5,7 @@ is intentionally empty. Support is delivered at install time by
5
5
  `summer setup copilot-jetbrains` (aliases: `jetbrains-copilot`, `intellij-copilot`, `copilot-intellij`), which writes:
6
6
 
7
7
  - MCP config: `~/.config/github-copilot/intellij/mcp.json`; Windows `%APPDATA%/github-copilot/intellij/mcp.json` (user); user scope only (project requests fall back with a warning).
8
- Shape: undefined.
8
+ Shape: `servers.summer-engine = { command, args }`.
9
9
  - Skills: none. Copilot in JetBrains documents no skills folder; the MCP server ships summer_get_agent_playbook for in-chat guidance.
10
10
  - After: Restart the JetBrains IDE and open Copilot Chat in Agent mode; summer-engine shows in the tools list.
11
11
 
@@ -5,8 +5,7 @@ Generated by `scripts/generate-registry` from `library/**/resource.yaml`:
5
5
  - `registry/generated/plugin.cursor.json` -> `.cursor-plugin/plugin.json`
6
6
  (Cursor plugin manifest: displayName/publisher/category, cursor-specific
7
7
  hooks file `./hooks/hooks-cursor.json`, full skill list at
8
- `./library/skills/<slug>/` — the pre-v3 four-skill gap was a bug and is fixed
9
- by generation; version stamped from `package.json`).
8
+ `./library/skills/<slug>/`; version stamped from `package.json`).
10
9
 
11
10
  The MCP pointer `./.mcp.json` these manifests reference is generated as
12
11
  well (`registry/generated/mcp.json -> .mcp.json`, owned by the claude target).
@@ -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