summer-engine 4.3.0 → 4.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 (218) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/.claude-plugin/plugin.json +3 -1
  3. package/.codex-plugin/plugin.json +5 -3
  4. package/.cursor-plugin/plugin.json +4 -2
  5. package/.factory-plugin/plugin.json +4 -2
  6. package/AGENTS.md +2 -2
  7. package/CHANGELOG.md +87 -0
  8. package/README.md +67 -27
  9. package/commands/start.md +19 -15
  10. package/commands/summer.md +1 -0
  11. package/dist/cli/command-usage.d.ts +3 -1
  12. package/dist/cli/command-usage.js +10 -4
  13. package/dist/cli/commands/create.d.ts +1 -25
  14. package/dist/cli/commands/create.js +10 -138
  15. package/dist/cli/commands/dev.d.ts +66 -0
  16. package/dist/cli/commands/dev.js +234 -0
  17. package/dist/cli/commands/install.d.ts +15 -58
  18. package/dist/cli/commands/install.js +31 -481
  19. package/dist/cli/commands/login.js +1 -1
  20. package/dist/cli/commands/ops.d.ts +17 -1
  21. package/dist/cli/commands/ops.js +97 -9
  22. package/dist/cli/commands/preview.d.ts +58 -0
  23. package/dist/cli/commands/preview.js +181 -0
  24. package/dist/cli/commands/run.d.ts +1 -17
  25. package/dist/cli/commands/run.js +17 -206
  26. package/dist/cli/index.js +5 -0
  27. package/dist/core/agent-host.d.ts +3 -0
  28. package/dist/core/agent-host.js +1 -1
  29. package/dist/core/api-client.d.ts +10 -2
  30. package/dist/core/api-client.js +13 -8
  31. package/dist/core/capabilities/agent-playbook.js +1 -0
  32. package/dist/core/capabilities/apps.d.ts +9 -9
  33. package/dist/core/capabilities/asset-import.d.ts +4 -1
  34. package/dist/core/capabilities/asset-import.js +15 -6
  35. package/dist/core/capabilities/capture-gameplay.js +1 -1
  36. package/dist/core/capabilities/connect-signal.d.ts +2 -2
  37. package/dist/core/capabilities/content-make/index.d.ts +81 -0
  38. package/dist/core/capabilities/content-make/index.js +706 -0
  39. package/dist/core/capabilities/content-make/media.d.ts +57 -0
  40. package/dist/core/capabilities/content-make/media.js +172 -0
  41. package/dist/core/capabilities/content-make/plan.d.ts +130 -0
  42. package/dist/core/capabilities/content-make/plan.js +433 -0
  43. package/dist/core/capabilities/content-make/render.d.ts +64 -0
  44. package/dist/core/capabilities/content-make/render.js +370 -0
  45. package/dist/core/capabilities/content-make/study.d.ts +13 -0
  46. package/dist/core/capabilities/content-make/study.js +165 -0
  47. package/dist/core/capabilities/content-make/types.d.ts +173 -0
  48. package/dist/core/capabilities/content-make/types.js +6 -0
  49. package/dist/core/capabilities/content-make/voice.d.ts +7 -0
  50. package/dist/core/capabilities/content-make/voice.js +27 -0
  51. package/dist/core/capabilities/events.d.ts +2 -2
  52. package/dist/core/capabilities/export-game.d.ts +4 -1
  53. package/dist/core/capabilities/export-game.js +4 -3
  54. package/dist/core/capabilities/export-presets.d.ts +2 -1
  55. package/dist/core/capabilities/export-presets.js +2 -1
  56. package/dist/core/capabilities/go-live.d.ts +14 -0
  57. package/dist/core/capabilities/go-live.js +408 -0
  58. package/dist/core/capabilities/image-generation.d.ts +6 -6
  59. package/dist/core/capabilities/item-manifest.d.ts +92 -0
  60. package/dist/core/capabilities/item-manifest.js +247 -0
  61. package/dist/core/capabilities/placement.d.ts +7 -7
  62. package/dist/core/capabilities/projects-local.d.ts +68 -0
  63. package/dist/core/capabilities/projects-local.js +172 -0
  64. package/dist/core/capabilities/publish-build.d.ts +13 -2
  65. package/dist/core/capabilities/publish-build.js +87 -21
  66. package/dist/core/capabilities/publish-download.js +1 -1
  67. package/dist/core/capabilities/runtime-control.d.ts +7 -2
  68. package/dist/core/capabilities/runtime-control.js +27 -1
  69. package/dist/core/capabilities/seeing/args.d.ts +2 -2
  70. package/dist/core/capabilities/store-checks.d.ts +45 -0
  71. package/dist/core/capabilities/store-checks.js +85 -0
  72. package/dist/core/capabilities/store-details.d.ts +37 -0
  73. package/dist/core/capabilities/store-details.js +94 -0
  74. package/dist/core/capabilities/summer-bundle.d.ts +21 -2
  75. package/dist/core/capabilities/summer-bundle.js +54 -7
  76. package/dist/core/capabilities/sync-items.d.ts +89 -0
  77. package/dist/core/capabilities/sync-items.js +352 -0
  78. package/dist/core/capabilities/tool-dispatch.js +66 -6
  79. package/dist/core/capabilities/video-ogv.d.ts +49 -0
  80. package/dist/core/capabilities/video-ogv.js +260 -0
  81. package/dist/core/capability-skew.js +2 -2
  82. package/dist/core/cli-usage-beacon.js +26 -2
  83. package/dist/core/cli-usage.d.ts +5 -2
  84. package/dist/core/cli-usage.js +8 -2
  85. package/dist/core/engine-install.d.ts +53 -0
  86. package/dist/core/engine-install.js +93 -0
  87. package/dist/core/engine-installer.d.ts +134 -0
  88. package/dist/core/engine-installer.js +760 -0
  89. package/dist/core/engine-launch.d.ts +126 -0
  90. package/dist/core/engine-launch.js +398 -0
  91. package/dist/core/engine-self-start.d.ts +63 -0
  92. package/dist/core/engine-self-start.js +282 -0
  93. package/dist/core/engine.d.ts +7 -1
  94. package/dist/core/engine.js +9 -2
  95. package/dist/core/error-codes.d.ts +4 -1
  96. package/dist/core/error-codes.js +7 -3
  97. package/dist/core/library-read.d.ts +2 -2
  98. package/dist/core/library-search.d.ts +2 -2
  99. package/dist/core/local-project.d.ts +50 -0
  100. package/dist/core/local-project.js +234 -0
  101. package/dist/core/ops/areas.js +9 -3
  102. package/dist/core/ops/catalog.d.ts +9 -0
  103. package/dist/core/ops/catalog.js +56 -4
  104. package/dist/core/ops/engine-answer.d.ts +4 -1
  105. package/dist/core/ops/engine-answer.js +16 -3
  106. package/dist/core/ops/engine.js +4 -4
  107. package/dist/core/ops/save-files.d.ts +6 -1
  108. package/dist/core/ops/save-files.js +67 -50
  109. package/dist/core/ops/search.js +9 -2
  110. package/dist/core/preview/input.d.ts +35 -0
  111. package/dist/core/preview/input.js +105 -0
  112. package/dist/core/preview/launch-config.d.ts +52 -0
  113. package/dist/core/preview/launch-config.js +137 -0
  114. package/dist/core/preview/page.d.ts +22 -0
  115. package/dist/core/preview/page.js +232 -0
  116. package/dist/core/preview/preview-source.d.ts +179 -0
  117. package/dist/core/preview/preview-source.js +350 -0
  118. package/dist/core/preview/server.d.ts +26 -0
  119. package/dist/core/preview/server.js +218 -0
  120. package/dist/core/telemetry.d.ts +20 -16
  121. package/dist/core/telemetry.js +92 -16
  122. package/dist/core/templates.d.ts +20 -0
  123. package/dist/core/templates.js +300 -3
  124. package/dist/core/tool-profiles.d.ts +2 -2
  125. package/dist/core/tool-profiles.js +1 -0
  126. package/dist/core/usage-fields.d.ts +41 -0
  127. package/dist/core/usage-fields.js +150 -0
  128. package/dist/core/util/sleep.d.ts +3 -0
  129. package/dist/core/util/sleep.js +12 -0
  130. package/dist/mcp/ops-surface.js +28 -2
  131. package/dist/mcp/server.d.ts +14 -4
  132. package/dist/mcp/server.js +42 -8
  133. package/dist/mcp/tool-surface.d.ts +8 -0
  134. package/dist/mcp/tool-surface.js +19 -2
  135. package/dist/mcp/tools/creator-tools.js +92 -14
  136. package/dist/mcp/tools/debug-tools.js +2 -0
  137. package/dist/mcp/tools/local-project-tools.d.ts +6 -0
  138. package/dist/mcp/tools/local-project-tools.js +33 -0
  139. package/dist/mcp/tools/navigation-tools.js +2 -1
  140. package/dist/mcp/tools/project-tools.js +5 -8
  141. package/dist/mcp/tools/seeing-tools.js +1 -1
  142. package/dist/mcp/tools/visual-tools.js +1 -1
  143. package/dist/mcp/tools/with-engine.js +1 -1
  144. package/gemini-extension.json +3 -1
  145. package/library/references/mcp-tools-reference/mcp-tools-reference.md +18 -5
  146. package/library/skills/README.md +12 -8
  147. package/library/skills/animated-loop/SKILL.md +10 -16
  148. package/library/skills/cinematic-cutscene/SKILL.md +7 -18
  149. package/library/skills/headless-scripting/SKILL.md +7 -4
  150. package/library/skills/in-game-purchases/SKILL.md +25 -8
  151. package/library/skills/in-game-purchases/resource.yaml +2 -1
  152. package/library/skills/launch-ready/SKILL.md +351 -0
  153. package/library/skills/launch-ready/resource.yaml +45 -0
  154. package/library/skills/make-content/SKILL.md +202 -0
  155. package/library/skills/make-content/resource.yaml +32 -0
  156. package/library/skills/make-game/SKILL.md +2 -0
  157. package/library/skills/make-game/resource.yaml +2 -1
  158. package/library/skills/navigate-summer/SKILL.md +4 -2
  159. package/library/skills/new-project/SKILL.md +15 -22
  160. package/library/skills/new-project/resource.yaml +2 -1
  161. package/library/skills/painted-25d-world/SKILL.md +366 -0
  162. package/library/skills/painted-25d-world/_building-blocks/blender-route.md +33 -0
  163. package/library/skills/painted-25d-world/_building-blocks/blockout_builder.gd +149 -0
  164. package/library/skills/painted-25d-world/_building-blocks/capture_paint_view.gd +32 -0
  165. package/library/skills/painted-25d-world/_building-blocks/paint_projection.gdshader +23 -0
  166. package/library/skills/painted-25d-world/_building-blocks/paintcam_check.gd +25 -0
  167. package/library/skills/painted-25d-world/_building-blocks/painted_door.gd +17 -0
  168. package/library/skills/painted-25d-world/_building-blocks/painted_location.gd +56 -0
  169. package/library/skills/painted-25d-world/_building-blocks/painted_player.gd +125 -0
  170. package/library/skills/painted-25d-world/_building-blocks/painted_world.gd +111 -0
  171. package/library/skills/painted-25d-world/_building-blocks/tools/cam.py +57 -0
  172. package/library/skills/painted-25d-world/_building-blocks/tools/detail4k.py +81 -0
  173. package/library/skills/painted-25d-world/_building-blocks/tools/overlay.py +17 -0
  174. package/library/skills/painted-25d-world/_building-blocks/tools/preview.py +60 -0
  175. package/library/skills/painted-25d-world/resource.yaml +39 -0
  176. package/library/skills/publish-your-game/SKILL.md +13 -14
  177. package/library/skills/publish-your-game/resource.yaml +4 -3
  178. package/library/skills/release-checklist/SKILL.md +188 -0
  179. package/library/skills/release-checklist/resource.yaml +40 -0
  180. package/library/skills/release-readiness/SKILL.md +1 -1
  181. package/library/skills/release-readiness/resource.yaml +1 -1
  182. package/library/skills/store-art/SKILL.md +1 -1
  183. package/library/skills/store-art/resource.yaml +1 -1
  184. package/library/skills/store-listing/SKILL.md +1 -1
  185. package/library/skills/store-listing/resource.yaml +1 -1
  186. package/library/skills/summer-cli/SKILL.md +2 -0
  187. package/library/skills/summer-store/SKILL.md +295 -39
  188. package/library/skills/summer-store/resource.yaml +9 -3
  189. package/library/skills/trailer-shot/SKILL.md +3 -3
  190. package/library/templates/README.md +5 -0
  191. package/library/tools/content-make/resource.yaml +132 -0
  192. package/library/tools/frame-shot/GUIDE.md +1 -1
  193. package/library/tools/go-live/resource.yaml +67 -0
  194. package/library/tools/import-from-url/GUIDE.md +1 -0
  195. package/library/tools/import-from-url-batch/GUIDE.md +1 -1
  196. package/library/tools/play/GUIDE.md +2 -0
  197. package/library/tools/projects-create-local/resource.yaml +55 -0
  198. package/library/tools/projects-open-local/resource.yaml +51 -0
  199. package/library/tools/publish-build/resource.yaml +3 -3
  200. package/library/tools/screenshot/GUIDE.md +1 -1
  201. package/library/tools/store-set-details/resource.yaml +114 -0
  202. package/library/tools/sync-items/resource.yaml +72 -0
  203. package/package.json +1 -1
  204. package/registry/generated/aliases.json +6 -0
  205. package/registry/generated/counts.json +3 -3
  206. package/registry/generated/gemini-extension.json +3 -1
  207. package/registry/generated/index.json +463 -37
  208. package/registry/generated/marketplace.claude.json +1 -1
  209. package/registry/generated/plugin.claude-directory.json +4 -2
  210. package/registry/generated/plugin.claude.json +3 -1
  211. package/registry/generated/plugin.codex.json +5 -3
  212. package/registry/generated/plugin.cursor.json +4 -2
  213. package/registry/generated/plugin.factory.json +4 -2
  214. package/registry/generated/server.json +2 -2
  215. package/registry/generated/skills-index.md +12 -8
  216. package/registry/generated/skills-registry.json +62 -5
  217. package/registry/operations/legacy-names.json +40 -0
  218. package/registry/operations/public-catalog.json +10144 -387
@@ -0,0 +1,132 @@
1
+ id: tool/content-make
2
+ kind: tool
3
+ version: 1.0.0
4
+ summary: Make a piece of content for a game. Copies a library reference beat for beat with footage on this computer, checks it, saves it to Review.
5
+ use_when:
6
+ - '"make a piece of content for this"'
7
+ - '"clip what we just built"'
8
+ - '"make today''s TikTok for my game"'
9
+ - '"copy this reference with our footage"'
10
+ - a daily run that puts one finished piece per game in Review (claim the queued make request)
11
+ - a Change the team pressed on Today (claim; it answers needs_changes)
12
+ - revising a piece after the team asked for changes (same workDir)
13
+ do_not_use_when:
14
+ - posting - the team posts from Review; nothing is posted from here
15
+ - generating video or pictures - it cuts the game's real footage
16
+ - the game has no footage on this computer - record some first (capture mode, a screen recording)
17
+ - writing the words - the caller writes our lines; it never invents them and never reuses the reference's
18
+ facets:
19
+ lifecycle:
20
+ - launch
21
+ domains:
22
+ - creator
23
+ - video
24
+ compatibility:
25
+ engine: ">=4.6"
26
+ source: official
27
+ license: MIT
28
+ status: preview
29
+ aliases:
30
+ - summer_content_make
31
+ implementation:
32
+ module: src/core/capabilities/content-make/index.ts
33
+ export: contentMake
34
+ surfaces:
35
+ mcp:
36
+ tool_name: summer_content_make
37
+ remote: true
38
+ input_schema:
39
+ type: object
40
+ properties:
41
+ contentGameId:
42
+ type: string
43
+ description: The game's Content id, from content.list_games. Not needed with workDir.
44
+ teamId:
45
+ type: string
46
+ description: From team.list, when the person has more than one team.
47
+ referenceId:
48
+ type: string
49
+ description: The reference to copy, from content.list_references. Without it the best fit for today is picked (a format the game has not posted, what changed in the repo, its breakout).
50
+ footage:
51
+ type: array
52
+ items:
53
+ type: string
54
+ description: Folders (or files) of the game's footage on this computer - clips, stills, and the game's own music. Notes in a folder's shots.json or a clip's <clip>.json help match shots. Default ./content/footage.
55
+ lines:
56
+ type: array
57
+ items:
58
+ type: string
59
+ description: Our words, one per reference beat ("" for a beat without words), from the needs_words answer - the reference's pattern, true to the game, never its own words.
60
+ voiceFile:
61
+ type: string
62
+ description: The lines recorded in the team's own voice (wav, mp3, m4a), when the reference speaks (needs_voice).
63
+ title:
64
+ type: string
65
+ description: The piece's title in Review (also the YouTube title).
66
+ caption:
67
+ type: string
68
+ description: The post caption - one dry line and a question, no hashtags.
69
+ hashtags:
70
+ type: array
71
+ items:
72
+ type: string
73
+ description: 3-5 tags, the game's tag first. Default the kit's core tags.
74
+ note:
75
+ type: string
76
+ description: What to make it about ("the new boss", or commit lines like "3f2a1c9 Add waiting room"); weighs the reference pick and becomes the why.
77
+ claim:
78
+ type: boolean
79
+ description: Make a queued make request (the daily scheduler's, or a Change pressed on Today) and report every stage to it - the one named by requestId, else the team's oldest; nothing_queued when none, needs_changes for a revision.
80
+ requestId:
81
+ type: string
82
+ description: The make request to claim, from content.make.
83
+ learningIds:
84
+ type: array
85
+ items:
86
+ type: string
87
+ description: The kit learnings (content.get_kit learnings, listed in needs_words) the words and choices applied.
88
+ workDir:
89
+ type: string
90
+ description: The work folder an earlier call answered - continues that piece where it stopped.
91
+ out:
92
+ type: string
93
+ description: Where the work goes (pieces, the reference videos and footage measurements). Default ~/.summer/content.
94
+ music:
95
+ type: string
96
+ description: The game's own music for a reference with a song (never the reference's audio). Default the first song in the footage folders.
97
+ font:
98
+ type: string
99
+ description: The game's caption font file (.ttf or .otf).
100
+ referenceFile:
101
+ type: string
102
+ description: The reference video, when it cannot be fetched (yt-dlp).
103
+ repo:
104
+ type: string
105
+ description: The game's repo, for what changed today. Default the working directory.
106
+ stage:
107
+ type: string
108
+ enum:
109
+ - plan
110
+ - all
111
+ description: plan stops after the plan, to change shots in plan.json first.
112
+ upload:
113
+ type: boolean
114
+ description: false renders and checks only; nothing is uploaded.
115
+ replan:
116
+ type: boolean
117
+ description: Throw away the plan and map the shots again.
118
+ status:
119
+ type: string
120
+ enum:
121
+ - draft
122
+ - in_review
123
+ description: Override where it lands - in_review even with failed checks, or draft.
124
+ additionalProperties: false
125
+ authority:
126
+ filesystem: true
127
+ editor_mutation: false
128
+ network: true
129
+ credentials: false
130
+ publish: false
131
+ evidence_checks:
132
+ - none
@@ -1,6 +1,6 @@
1
1
  # summer_frame_shot
2
2
 
3
- Smart framing: find good camera poses for a shot type automatically, measured in-engine against the real geometry.
3
+ Smart framing: find good camera poses for a shot type automatically, measured in-engine against the real geometry. It runs in the open editor; use it to look at the scene as a player would.
4
4
 
5
5
  shot: establishing (wide), eye_level (from a spawn node at player eye height), low_angle (hero, near the ground looking up: the camera moves closer and widens its FOV instead of sinking into the ground), detail (close-up), corridor (down a lane or corridor found inside the subject by a free-space scan, preferring the view in from its open end, walls on both sides).
6
6
 
@@ -0,0 +1,67 @@
1
+ id: tool/go-live
2
+ kind: tool
3
+ version: 1.0.0
4
+ summary: "Take a store game live: release its checked Build, publish its page, watch until players get it or name the failing check and fix. Confirm-gated."
5
+ use_when:
6
+ - '"make my game live"'
7
+ - '"publish my game to players now"'
8
+ - '"is my game live yet"'
9
+ - '"release the build I uploaded"'
10
+ - after summer_publish_build reports every automated check passed
11
+ - watching a game until players get it, or finding which automated check failed
12
+ do_not_use_when:
13
+ - the user has not approved taking this exact store page and Build live
14
+ - the game is not uploaded yet - summer_export_game, then summer_publish_build
15
+ - store page text, art or price - store.update_listing, store.set_art, pricing.set_base
16
+ - the release checklist before going live - skill/release-checklist
17
+ facets:
18
+ lifecycle:
19
+ - launch
20
+ domains:
21
+ - creator
22
+ - deployment
23
+ compatibility:
24
+ engine: ">=4.6"
25
+ related:
26
+ skills:
27
+ - skill/release-checklist
28
+ - skill/publish-your-game
29
+ source: official
30
+ license: MIT
31
+ status: preview
32
+ aliases:
33
+ - summer_go_live
34
+ implementation:
35
+ module: src/core/capabilities/go-live.ts
36
+ export: goLive
37
+ surfaces:
38
+ mcp:
39
+ tool_name: summer_go_live
40
+ remote: true
41
+ input_schema:
42
+ type: object
43
+ properties:
44
+ gameId:
45
+ type: string
46
+ description: The store game id (from games.list). Without it the call fails with game_required and lists your store games.
47
+ publicationId:
48
+ type: string
49
+ description: "The bundle Build to release: publicationId from summer_publish_build. Default: the newest uploaded export."
50
+ confirm:
51
+ type: boolean
52
+ default: false
53
+ description: Set true only after the user approves taking this exact page and Build live.
54
+ waitSeconds:
55
+ type: integer
56
+ minimum: 0
57
+ maximum: 1800
58
+ description: How long to watch before answering (default 600). On waiting, call again to keep watching.
59
+ additionalProperties: false
60
+ authority:
61
+ filesystem: false
62
+ editor_mutation: false
63
+ network: true
64
+ credentials: false
65
+ publish: true
66
+ evidence_checks:
67
+ - none
@@ -6,5 +6,6 @@ Use this for:
6
6
  - 3D models (.glb, .gltf, .obj)
7
7
  - Textures (.png, .jpg, .webp)
8
8
  - Audio (.ogg, .wav, .mp3)
9
+ - Video (.mp4, .mov, .webm, .ogv): Summer Engine plays only Ogg Theora, so any other video is converted to .ogv first and lands at the path with .ogv; the answer names it.
9
10
 
10
11
  The path is auto-inferred from the URL filename if not specified. After import, the asset is immediately usable in scenes.
@@ -1,3 +1,3 @@
1
1
  # summer_import_from_url_batch
2
2
 
3
- Download multiple files from URLs in one operation. Performs a single filesystem scan after all downloads, which is faster than importing one at a time.
3
+ Download multiple files from URLs in one operation. Performs a single filesystem scan after all downloads, which is faster than importing one at a time. A video (.mp4, .mov, .webm) is converted to Ogg Theora first and lands at its path with .ogv.
@@ -2,6 +2,8 @@
2
2
 
3
3
  Start the game. With no parameters it runs QUIETLY inside Summer Engine's viewport (the 'main' instance); scene runs one level or UI screen instead of the main scene.
4
4
 
5
+ Playing the game in the editor's real window is allowed and expected: then summer_screenshot target:'game' to see it, summer_stop when done. One editor at a time.
6
+
5
7
  QUIET BY DEFAULT (focus:false, PlayGame agent:true): the user usually works on the same machine, so the EDITOR stays put. It does not switch to the Game tab or take keyboard focus (nor follow the game's later focus report), and skips the render-health self-check that would misread the untouched Game view as a GPU failure and flip the user's embed setting. Quiet play does NOT hide the game: it runs embedded in the Game view (visible if that tab is open) and is the running game for summer_is_running / summer_screenshot target:'game' / summer_get_diagnostics. With "Embed Game on Play" off the game gets its own OS window; engines with --summer-background (0.5.66+) open it without taking focus. The result echoes agent_quiet:true when honoured; without agent_quiet the engine predates quiet play and most likely took focus (posture_note says so). focus:true launches like the toolbar Play button (Game tab + focus): ONLY when the user is watching and asked to see the game come up.
6
8
 
7
9
  After starting, confirm boot with summer_is_running (boot time varies; never sleep a guessed delay), then summer_get_diagnostics for runtime errors.
@@ -0,0 +1,55 @@
1
+ id: tool/projects-create-local
2
+ kind: tool
3
+ version: 1.0.0
4
+ summary: 'Create a project on this computer. Writes a template (3d-basic by default) to a folder, no shell needed. Returns projectPath. Next: projects.open_local.'
5
+ use_when:
6
+ - '"make me a game"'
7
+ - '"start a new Summer project"'
8
+ - '"create a 3d project on my computer"'
9
+ - no editor is open and this session has no project (engine_not_running says so)
10
+ - an agent with no shell (Claude Desktop, a chat app) starts a game
11
+ do_not_use_when:
12
+ - a plan of concept art on Summer's server - projects.create
13
+ - the folder already holds the project - projects.open_local opens it
14
+ - an agent with a shell - npx -y summer-engine@latest dev installs, creates and opens in one step
15
+ facets:
16
+ lifecycle:
17
+ - build
18
+ domains:
19
+ - project
20
+ - editor
21
+ compatibility:
22
+ engine: ">=4.6"
23
+ source: official
24
+ license: MIT
25
+ status: stable
26
+ aliases:
27
+ - summer_projects_create_local
28
+ implementation:
29
+ module: src/core/capabilities/projects-local.ts
30
+ export: createLocalProject
31
+ surfaces:
32
+ mcp:
33
+ tool_name: summer_projects_create_local
34
+ remote: false
35
+ input_schema:
36
+ type: object
37
+ properties:
38
+ template:
39
+ type: string
40
+ description: Template slug (docs.search finds them) - 3d-basic (default), empty, 3d-third-person-controller, 2d-platformer, ...
41
+ name:
42
+ type: string
43
+ description: The project's name and folder name. Default my-game (or the template's name).
44
+ dir:
45
+ type: string
46
+ description: The project folder - a new or empty folder, not inside another project; ~ is home. Default <name> next to the session's project, in the session's folder, or in ~/Documents/Summer.
47
+ additionalProperties: false
48
+ authority:
49
+ filesystem: true
50
+ editor_mutation: false
51
+ network: true
52
+ credentials: false
53
+ publish: false
54
+ evidence_checks:
55
+ - none
@@ -0,0 +1,51 @@
1
+ id: tool/projects-open-local
2
+ kind: tool
3
+ version: 1.0.0
4
+ summary: 'Open a project in Summer Engine. Waits until it connects; installs the engine only with install: true (the person''s yes). Next: engine.get_project_context.'
5
+ use_when:
6
+ - '"open my game in Summer"'
7
+ - '"open the editor"'
8
+ - engine_not_running and the session has a project, or after projects.create_local
9
+ - an agent with no shell (Claude Desktop, a chat app) needs the editor
10
+ do_not_use_when:
11
+ - the person has not said yes to installing Summer Engine (about 660 MB) - call it without install; it says when the engine is missing
12
+ - another project is open in Summer Engine - it names it; switch the editor first
13
+ - download links for the person to install by hand - projects.open_in_engine
14
+ facets:
15
+ lifecycle:
16
+ - build
17
+ domains:
18
+ - project
19
+ - editor
20
+ compatibility:
21
+ engine: ">=4.6"
22
+ source: official
23
+ license: MIT
24
+ status: stable
25
+ aliases:
26
+ - summer_projects_open_local
27
+ implementation:
28
+ module: src/core/capabilities/projects-local.ts
29
+ export: openLocalProject
30
+ surfaces:
31
+ mcp:
32
+ tool_name: summer_projects_open_local
33
+ remote: false
34
+ input_schema:
35
+ type: object
36
+ properties:
37
+ path:
38
+ type: string
39
+ description: The project folder (holds project.godot), e.g. projectPath from summer_projects_create_local. Default this session's project.
40
+ install:
41
+ type: boolean
42
+ description: Install Summer Engine first when it is missing. Set true only after the person said yes.
43
+ additionalProperties: false
44
+ authority:
45
+ filesystem: true
46
+ editor_mutation: false
47
+ network: true
48
+ credentials: false
49
+ publish: false
50
+ evidence_checks:
51
+ - none
@@ -1,7 +1,7 @@
1
1
  id: tool/publish-build
2
2
  kind: tool
3
3
  version: 1.0.1
4
- summary: Upload an export from summer_export_game to the creator's store game, confirm-gated - a store bundle as a Build, or a web or native download as a store version.
4
+ summary: "Upload an export to the creator's store game, confirm-gated: a bundle as a Build with its per-platform checks, or a web or native download."
5
5
  use_when:
6
6
  - '"upload my game to summer.games"'
7
7
  - '"publish this build to my store page"'
@@ -14,7 +14,7 @@ do_not_use_when:
14
14
  - the user has not approved the exact game, file, digest, version and publish choice
15
15
  - the game is not exported yet — summer_export_game first
16
16
  - store page text, art or price — store.update_listing, store.set_art (hosted, after summer login --store)
17
- - making the build live — store.publish (the owner approves publishing), then store.release
17
+ - making the build live — summer_go_live
18
18
  - what players get now — store.status
19
19
  facets:
20
20
  lifecycle:
@@ -51,7 +51,7 @@ input_schema:
51
51
  publish:
52
52
  type: boolean
53
53
  default: false
54
- description: "Bundles only: also approve the Build for players. A game that has not passed review keeps it as a preview; an agent needs the owner's approval."
54
+ description: "Bundles only: also make the Build available to players once its checks pass. summer_go_live does this, the release and the store page in one step."
55
55
  platform:
56
56
  type: string
57
57
  enum:
@@ -2,7 +2,7 @@
2
2
 
3
3
  Capture a frame from Summer Engine and return it as an image you can look at directly.
4
4
 
5
- Use this to visually verify your work: scene layout, asset placement, scale, framing, missing/untextured assets, or runtime gameplay state. You see the actual pixels — no description layer in between. Lighting and materials are only truthfully shown by the "viewport" and "game" targets — see the note on "scene" below.
5
+ Use this to visually verify your work (it reads the real open editor or game window; that is allowed and expected): scene layout, asset placement, scale, framing, missing/untextured assets, or runtime gameplay state. You see the actual pixels — no description layer in between. Lighting and materials are only truthfully shown by the "viewport" and "game" targets — see the note on "scene" below.
6
6
 
7
7
  target:
8
8
  "viewport" (default) — the editor's CURRENT view (whatever scene/tab is open). No game boot. Use for edit-time checks of how the scene looks right now.
@@ -0,0 +1,114 @@
1
+ id: tool/store-set-details
2
+ kind: tool
3
+ version: 1.0.0
4
+ summary: "Fill store page sections update_listing lacks: genres, features, credits, languages, requirements, content survey, AI disclosure. Never publishes."
5
+ use_when:
6
+ - '"fill in the age rating questionnaire"'
7
+ - '"add the AI disclosure to my store page"'
8
+ - '"set my game''s genres and features"'
9
+ - '"list the languages my game supports"'
10
+ - '"add system requirements to the store page"'
11
+ - store.get_listing shows contentSurvey, aiDisclosure, genres or credits empty
12
+ do_not_use_when:
13
+ - title, tagline, descriptions, tags, platforms, content rating, release stage or support link - store.update_listing
14
+ - store art, trailer or sound - store.set_art, store.set_trailer, store.set_sound
15
+ - taking the page live - summer_go_live
16
+ facets:
17
+ lifecycle:
18
+ - launch
19
+ domains:
20
+ - creator
21
+ - deployment
22
+ compatibility:
23
+ engine: ">=4.6"
24
+ related:
25
+ skills:
26
+ - skill/release-checklist
27
+ - skill/store-listing
28
+ source: official
29
+ license: MIT
30
+ status: preview
31
+ aliases:
32
+ - summer_store_set_details
33
+ implementation:
34
+ module: src/core/capabilities/store-details.ts
35
+ export: setStoreDetails
36
+ surfaces:
37
+ mcp:
38
+ tool_name: summer_store_set_details
39
+ remote: true
40
+ input_schema:
41
+ type: object
42
+ properties:
43
+ gameId:
44
+ type: string
45
+ description: The store game id (from games.list).
46
+ genres:
47
+ type: array
48
+ items:
49
+ type: string
50
+ description: Genre tag ids (category genre in store.get_listing tags), 1 to 5, in the creator's order; null clears them.
51
+ features:
52
+ type: array
53
+ items:
54
+ type: string
55
+ enum: [single_player, online_multiplayer, local_multiplayer, online_coop, local_coop, cross_platform, controller_full, controller_partial, cloud_saves, plays_in_browser, level_editor, achievements, in_game_purchases]
56
+ description: What the game offers, from the store's closed list; null clears them.
57
+ credits:
58
+ type: object
59
+ properties:
60
+ developer: {type: string}
61
+ publisher: {type: string}
62
+ franchise: {type: string}
63
+ required: [developer]
64
+ description: Who made and published it, each 1 to 120 characters; omit publisher or franchise when there is none.
65
+ languageSupport:
66
+ type: array
67
+ items:
68
+ type: object
69
+ properties:
70
+ code: {type: string}
71
+ interface: {type: boolean}
72
+ fullAudio: {type: boolean}
73
+ subtitles: {type: boolean}
74
+ required: [code, interface, fullAudio, subtitles]
75
+ description: One entry per language (BCP 47 code such as en, pt-br, zh-hans), up to 30, each with at least one kind of support.
76
+ systemRequirements:
77
+ type: object
78
+ description: "Desktop hardware: { windows | macos | linux: { minimum: { os, processor, memory, graphics, storage, network, notes }, recommended? } }."
79
+ contentSurvey:
80
+ type: object
81
+ properties:
82
+ violence: {type: string, enum: [none, fantasy, realistic]}
83
+ bloodGore: {type: string, enum: [none, mild, intense]}
84
+ sexualContent: {type: string, enum: [none, suggestive, explicit]}
85
+ nudity: {type: string, enum: [none, partial, full]}
86
+ language: {type: string, enum: [none, mild, strong]}
87
+ substances: {type: string, enum: [none, referenced, used]}
88
+ gambling: {type: string, enum: [none, simulated, realMoney]}
89
+ userGeneratedContent: {type: boolean}
90
+ onlineInteraction: {type: boolean}
91
+ inGamePurchases: {type: boolean}
92
+ notes: {type: string}
93
+ required: [violence, bloodGore, sexualContent, nudity, language, substances, gambling, userGeneratedContent, onlineInteraction, inGamePurchases]
94
+ description: The mature-content questionnaire; every answer is required and none is an answer.
95
+ aiDisclosure:
96
+ type: object
97
+ properties:
98
+ uses:
99
+ type: array
100
+ items:
101
+ type: string
102
+ enum: [assets, code, generatedGameplay]
103
+ description: {type: string}
104
+ required: [uses]
105
+ description: How AI was used to make the game; uses [] means no AI. generatedGameplay needs a description of what is generated and its guardrails.
106
+ additionalProperties: false
107
+ authority:
108
+ filesystem: false
109
+ editor_mutation: false
110
+ network: true
111
+ credentials: false
112
+ publish: false
113
+ evidence_checks:
114
+ - none
@@ -0,0 +1,72 @@
1
+ id: tool/sync-items
2
+ kind: tool
3
+ version: 1.0.0
4
+ summary: Sync summer.items.json to the store game by item slug - a plan, then the owner's approval in Studio. Needs the store sign-in (summer login --store).
5
+ use_when:
6
+ - '"add these items to my game"'
7
+ - '"sync my items to staging"'
8
+ - '"put the same items in production"'
9
+ - '"change the price of emote_ponder"'
10
+ - creating or revising store items from summer.items.json, matched by slug
11
+ - making the staging game and the production game carry the same items
12
+ do_not_use_when:
13
+ - the user has not approved the exact plan for this gateway and game
14
+ - more than 50 items change at once - one approval takes 50; confirm each listed batch with slugs
15
+ - the store sign-in is for the other environment - after changing SUMMER_GATEWAY_URL and SUMMER_MCP_RESOURCE_URL, run summer login --store --force first
16
+ - releasing or activating an item for players - after Summer approves it, the owner activates each item in Studio (Review activation); players can buy it only while the game is live
17
+ - Passport collectibles (stamps, pins, badges) - a Passport item with the same slug is blocked, never synced
18
+ - retiring or deleting an item - items the file does not name are listed, never changed
19
+ - the game's own price or store page - store.update_listing, pricing.set_base
20
+ facets:
21
+ lifecycle:
22
+ - launch
23
+ domains:
24
+ - creator
25
+ - deployment
26
+ compatibility:
27
+ engine: ">=4.6"
28
+ related:
29
+ skills:
30
+ - skill/summer-store
31
+ source: official
32
+ license: MIT
33
+ status: preview
34
+ aliases:
35
+ - summer_sync_items
36
+ implementation:
37
+ module: src/core/capabilities/sync-items.ts
38
+ export: syncItems
39
+ surfaces:
40
+ mcp:
41
+ tool_name: summer_sync_items
42
+ remote: true
43
+ input_schema:
44
+ type: object
45
+ properties:
46
+ gameId:
47
+ type: string
48
+ description: The store game id on this gateway (from games.list). Staging and production games have different ids. Without it the call fails with game_required and lists your store games. Switching between staging and production takes SUMMER_GATEWAY_URL and SUMMER_MCP_RESOURCE_URL, then "summer login --store --force" (one store sign-in per machine).
49
+ project:
50
+ type: string
51
+ description: Project folder with project.godot and summer.items.json. Defaults to the MCP's bound project, then the working directory.
52
+ file:
53
+ type: string
54
+ description: The items file, relative to the project. Default summer.items.json.
55
+ slugs:
56
+ type: array
57
+ items:
58
+ type: string
59
+ description: Only these items (their slugs); the rest of the file is left out of the plan. Confirm a plan of more than 50 changed items one batch (from batches) at a time.
60
+ confirm:
61
+ type: boolean
62
+ default: false
63
+ description: Set true only after the user approves the plan.
64
+ additionalProperties: false
65
+ authority:
66
+ filesystem: true
67
+ editor_mutation: false
68
+ network: true
69
+ credentials: false
70
+ publish: true
71
+ evidence_checks:
72
+ - none
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "summer-engine",
3
- "version": "4.3.0",
3
+ "version": "4.5.0",
4
4
  "description": "MCP server, CLI and skills for Summer Engine, the game engine built for AI. Connect Claude Code, Cursor, Codex and other agents to build, test and publish full games to summer.games.",
5
5
  "mcpName": "io.github.SummerEngine/summer",
6
6
  "keywords": [
@@ -122,6 +122,7 @@
122
122
  "summer_clear_console": "tool/clear-console",
123
123
  "summer_connect_ports": "tool/connect-ports",
124
124
  "summer_connect_signal": "tool/connect-signal",
125
+ "summer_content_make": "tool/content-make",
125
126
  "summer_create_debug_report": "tool/create-debug-report",
126
127
  "summer_create_scene": "tool/create-scene",
127
128
  "summer_debug_views": "tool/debug-views",
@@ -154,6 +155,7 @@
154
155
  "summer_get_scene_tree": "tool/get-scene-tree",
155
156
  "summer_get_script_errors": "tool/get-script-errors",
156
157
  "summer_get_studio_workflow": "tool/get-studio-workflow",
158
+ "summer_go_live": "tool/go-live",
157
159
  "summer_grep": "tool/grep",
158
160
  "summer_import_asset": "tool/import-asset",
159
161
  "summer_import_asset_by_id": "tool/import-asset-by-id",
@@ -177,6 +179,8 @@
177
179
  "summer_place_adjacent": "tool/place-adjacent",
178
180
  "summer_play": "tool/play",
179
181
  "summer_project_setting": "tool/project-setting",
182
+ "summer_projects_create_local": "tool/projects-create-local",
183
+ "summer_projects_open_local": "tool/projects-open-local",
180
184
  "summer_publish_build": "tool/publish-build",
181
185
  "summer_raycast": "tool/raycast",
182
186
  "summer_read_file": "tool/read-file",
@@ -207,6 +211,8 @@
207
211
  "summer_starcast": "tool/starcast",
208
212
  "summer_start_game_task": "tool/start-game-task",
209
213
  "summer_stop": "tool/stop",
214
+ "summer_store_set_details": "tool/store-set-details",
215
+ "summer_sync_items": "tool/sync-items",
210
216
  "summer_test_placement": "tool/test-placement",
211
217
  "summer_ui_actions": "tool/ui-actions",
212
218
  "summer_ui_activate": "tool/ui-activate",
@@ -4,9 +4,9 @@
4
4
  "collection": 0,
5
5
  "example": 0,
6
6
  "reference": 9,
7
- "skill": 128,
7
+ "skill": 132,
8
8
  "template": 19,
9
- "tool": 119
9
+ "tool": 125
10
10
  },
11
- "total": 275
11
+ "total": 285
12
12
  }
@@ -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": "4.3.0",
4
+ "version": "4.5.0",
5
5
  "description": "The game engine built for AI. Any agent makes a multiplayer game and publishes it. The Summer Engine MCP server, context primer and game-dev skills.",
6
6
  "contextFileName": "GEMINI.md",
7
7
  "mcpServers": {
@@ -72,6 +72,7 @@
72
72
  "./library/skills/in-game-purchases/",
73
73
  "./library/skills/instantiate-asset-pack/",
74
74
  "./library/skills/investigating-bugs/",
75
+ "./library/skills/make-content/",
75
76
  "./library/skills/make-game/",
76
77
  "./library/skills/multiplayer/",
77
78
  "./library/skills/multiplayer-movement/",
@@ -89,6 +90,7 @@
89
90
  "./library/skills/procedural-animation/",
90
91
  "./library/skills/prop-model/",
91
92
  "./library/skills/publish-your-game/",
93
+ "./library/skills/release-checklist/",
92
94
  "./library/skills/release-readiness/",
93
95
  "./library/skills/remote-deploy/",
94
96
  "./library/skills/retarget/",