summer-engine 2.3.0 → 2.6.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 (237) hide show
  1. package/.claude-plugin/marketplace.json +2 -2
  2. package/.claude-plugin/plugin.json +24 -8
  3. package/.codex-plugin/plugin.json +19 -8
  4. package/.cursor-plugin/plugin.json +18 -7
  5. package/.factory-plugin/plugin.json +3 -3
  6. package/.opencode/INSTALL.md +1 -1
  7. package/AGENTS.md +6 -4
  8. package/CHANGELOG.md +46 -7
  9. package/CLAUDE.md +2 -2
  10. package/GEMINI.md +5 -6
  11. package/README.md +116 -109
  12. package/_persona/summer/SKILL.md +5 -6
  13. package/commands/gameskill.md +103 -0
  14. package/dist/bin/summer.js +17 -4
  15. package/dist/commands/cloud.d.ts +2 -0
  16. package/dist/commands/cloud.js +80 -0
  17. package/dist/commands/create.js +2 -0
  18. package/dist/commands/doctor.js +90 -1
  19. package/dist/commands/install.d.ts +17 -0
  20. package/dist/commands/install.js +63 -4
  21. package/dist/commands/login.js +4 -1
  22. package/dist/commands/logout.js +1 -1
  23. package/dist/commands/memory.d.ts +14 -0
  24. package/dist/commands/memory.js +196 -0
  25. package/dist/commands/open.js +1 -1
  26. package/dist/commands/plan.d.ts +2 -0
  27. package/dist/commands/plan.js +60 -0
  28. package/dist/commands/run.js +132 -35
  29. package/dist/commands/setup.js +8 -2
  30. package/dist/commands/skills.js +90 -6
  31. package/dist/commands/status.js +3 -0
  32. package/dist/lib/agent-config.d.ts +2 -2
  33. package/dist/lib/agent-config.js +134 -7
  34. package/dist/lib/api-client.d.ts +13 -0
  35. package/dist/lib/api-client.js +63 -26
  36. package/dist/lib/async-op-lifecycle.d.ts +60 -0
  37. package/dist/lib/async-op-lifecycle.js +83 -0
  38. package/dist/lib/auth.d.ts +2 -0
  39. package/dist/lib/auth.js +13 -0
  40. package/dist/lib/cloud/api.d.ts +79 -0
  41. package/dist/lib/cloud/api.js +107 -0
  42. package/dist/lib/cloud/apply.d.ts +32 -0
  43. package/dist/lib/cloud/apply.js +294 -0
  44. package/dist/lib/cloud/checkpoint.d.ts +26 -0
  45. package/dist/lib/cloud/checkpoint.js +142 -0
  46. package/dist/lib/cloud/conflicts.d.ts +55 -0
  47. package/dist/lib/cloud/conflicts.js +131 -0
  48. package/dist/lib/cloud/containment.d.ts +8 -0
  49. package/dist/lib/cloud/containment.js +52 -0
  50. package/dist/lib/cloud/diff.d.ts +39 -0
  51. package/dist/lib/cloud/diff.js +138 -0
  52. package/dist/lib/cloud/engine-bridge.d.ts +21 -0
  53. package/dist/lib/cloud/engine-bridge.js +105 -0
  54. package/dist/lib/cloud/hash-cache.d.ts +23 -0
  55. package/dist/lib/cloud/hash-cache.js +44 -0
  56. package/dist/lib/cloud/hash.d.ts +10 -0
  57. package/dist/lib/cloud/hash.js +111 -0
  58. package/dist/lib/cloud/http.d.ts +17 -0
  59. package/dist/lib/cloud/http.js +47 -0
  60. package/dist/lib/cloud/lock-path.d.ts +1 -0
  61. package/dist/lib/cloud/lock-path.js +5 -0
  62. package/dist/lib/cloud/lock.d.ts +14 -0
  63. package/dist/lib/cloud/lock.js +143 -0
  64. package/dist/lib/cloud/manifest.d.ts +6 -0
  65. package/dist/lib/cloud/manifest.js +41 -0
  66. package/dist/lib/cloud/paths.d.ts +20 -0
  67. package/dist/lib/cloud/paths.js +90 -0
  68. package/dist/lib/cloud/project-godot-merge.d.ts +32 -0
  69. package/dist/lib/cloud/project-godot-merge.js +185 -0
  70. package/dist/lib/cloud/rules.d.ts +39 -0
  71. package/dist/lib/cloud/rules.js +159 -0
  72. package/dist/lib/cloud/sync.d.ts +21 -0
  73. package/dist/lib/cloud/sync.js +518 -0
  74. package/dist/lib/cloud/transfer.d.ts +23 -0
  75. package/dist/lib/cloud/transfer.js +184 -0
  76. package/dist/lib/cloud/types.d.ts +62 -0
  77. package/dist/lib/cloud/validate-path.d.ts +23 -0
  78. package/dist/lib/cloud/validate-path.js +103 -0
  79. package/dist/lib/engine.d.ts +6 -0
  80. package/dist/lib/engine.js +36 -1
  81. package/dist/lib/game-task-plan.d.ts +42 -0
  82. package/dist/lib/game-task-plan.js +376 -0
  83. package/dist/lib/project-memory.d.ts +33 -0
  84. package/dist/lib/project-memory.js +220 -0
  85. package/dist/lib/skills-registry.d.ts +134 -61
  86. package/dist/lib/skills-registry.js +102 -4
  87. package/dist/lib/version-check.d.ts +106 -0
  88. package/dist/lib/version-check.js +338 -0
  89. package/dist/mcp/server.d.ts +2 -0
  90. package/dist/mcp/server.js +83 -0
  91. package/dist/mcp/tools/asset-tools.js +265 -45
  92. package/dist/mcp/tools/cloud-tools.d.ts +2 -0
  93. package/dist/mcp/tools/cloud-tools.js +42 -0
  94. package/dist/mcp/tools/debug-tools.js +32 -2
  95. package/dist/mcp/tools/generate-tools.js +101 -13
  96. package/dist/mcp/tools/project-tools.js +76 -21
  97. package/dist/mcp/tools/with-engine.d.ts +14 -0
  98. package/dist/mcp/tools/with-engine.js +52 -7
  99. package/gemini-extension.json +3 -3
  100. package/hooks/pre-commit-doctor.sh +0 -0
  101. package/hooks/run-hook.cmd +0 -0
  102. package/hooks/session-start.sh +0 -0
  103. package/package.json +20 -7
  104. package/skills/2d-assets/character-portrait/SKILL.md +1 -1
  105. package/skills/2d-assets/concept-art/SKILL.md +1 -1
  106. package/skills/2d-assets/create-asset-sheet/SKILL.md +163 -0
  107. package/skills/2d-assets/instantiate-asset-pack/SKILL.md +245 -0
  108. package/skills/2d-assets/pixel-art/SKILL.md +1 -1
  109. package/skills/2d-assets/skybox-panorama/SKILL.md +1 -1
  110. package/skills/2d-assets/sprite-sheet/SKILL.md +1 -1
  111. package/skills/2d-assets/tileable-texture/SKILL.md +1 -1
  112. package/skills/2d-assets/ui-graphics/SKILL.md +1 -1
  113. package/skills/2d-assets/use-widget-asset/SKILL.md +217 -0
  114. package/skills/3d-assets/character-model/SKILL.md +28 -6
  115. package/skills/3d-assets/environment-kit/SKILL.md +7 -2
  116. package/skills/3d-assets/organic-model/SKILL.md +5 -4
  117. package/skills/3d-assets/prop-model/SKILL.md +17 -9
  118. package/skills/3d-assets/vehicle-model/SKILL.md +5 -4
  119. package/skills/README.md +37 -30
  120. package/skills/ai-and-npcs/design-npc/SKILL.md +6 -6
  121. package/skills/animation/animation-tree/SKILL.md +4 -2
  122. package/skills/animation/facial-and-lipsync/SKILL.md +1 -1
  123. package/skills/animation/generate-motion/SKILL.md +26 -5
  124. package/skills/animation/procedural-animation/SKILL.md +2 -2
  125. package/skills/asset-pipeline/asset-strategy/SKILL.md +3 -2
  126. package/skills/audio/adaptive-music/SKILL.md +1 -1
  127. package/skills/audio/audio-direction/SKILL.md +5 -5
  128. package/skills/audio/sound-effect/SKILL.md +2 -2
  129. package/skills/audio/voice-line/SKILL.md +25 -3
  130. package/skills/character-controllers/fps-controller/SKILL.md +5 -5
  131. package/skills/debugging/debug/SKILL.md +39 -1
  132. package/skills/deployment/export-and-ship/SKILL.md +4 -4
  133. package/skills/gameplay-mechanics/auto-fire-targeting/SKILL.md +170 -0
  134. package/skills/gameplay-mechanics/design-mechanic/SKILL.md +8 -8
  135. package/skills/level-design/design-level/SKILL.md +5 -5
  136. package/skills/level-design/scene-to-level/SKILL.md +125 -0
  137. package/skills/multiplayer-and-networking/host-authoritative-state/SKILL.md +4 -4
  138. package/skills/multiplayer-and-networking/peer-to-peer-multiplayer/SKILL.md +4 -4
  139. package/skills/multiplayer-and-networking/setup-multiplayer/SKILL.md +7 -7
  140. package/skills/performance/tune-performance/SKILL.md +5 -5
  141. package/skills/rendering-and-lighting/3d-lighting/SKILL.md +1 -1
  142. package/skills/rendering-and-lighting/art-direction/SKILL.md +5 -5
  143. package/skills/scene-and-project/brainstorm-game/SKILL.md +4 -4
  144. package/skills/scene-and-project/play/SKILL.md +1 -1
  145. package/skills/scene-and-project/scene-composition/SKILL.md +30 -1
  146. package/skills/scripting-patterns/gdscript-patterns/SKILL.md +53 -0
  147. package/skills/ui-and-ux/ui-basics/SKILL.md +1 -1
  148. package/skills/video/animated-loop/SKILL.md +1 -1
  149. package/skills/video/cinematic-cutscene/SKILL.md +1 -1
  150. package/skills/video/trailer-shot/SKILL.md +1 -1
  151. package/skills/visual-effects/game-feel/SKILL.md +6 -6
  152. package/skills/workflow/brainstorming/SKILL.md +164 -0
  153. package/skills/workflow/brainstorming/scripts/frame-template.html +214 -0
  154. package/skills/workflow/brainstorming/scripts/helper.js +88 -0
  155. package/skills/workflow/brainstorming/scripts/server.cjs +354 -0
  156. package/skills/workflow/brainstorming/scripts/start-server.sh +148 -0
  157. package/skills/workflow/brainstorming/scripts/stop-server.sh +56 -0
  158. package/skills/workflow/brainstorming/spec-document-reviewer-prompt.md +49 -0
  159. package/skills/workflow/brainstorming/visual-companion.md +287 -0
  160. package/skills/workflow/debugging-game-feel/SKILL.md +174 -0
  161. package/skills/workflow/diagnosing-perf-regressions/SKILL.md +190 -0
  162. package/skills/workflow/dispatching-parallel-agents/SKILL.md +182 -0
  163. package/skills/workflow/gameskill/SKILL.md +111 -0
  164. package/skills/workflow/investigating-bugs/CREATION-LOG.md +119 -0
  165. package/skills/workflow/investigating-bugs/SKILL.md +296 -0
  166. package/skills/workflow/investigating-bugs/condition-based-waiting-example.ts +158 -0
  167. package/skills/workflow/investigating-bugs/condition-based-waiting.md +115 -0
  168. package/skills/workflow/investigating-bugs/defense-in-depth.md +122 -0
  169. package/skills/workflow/investigating-bugs/find-polluter.sh +63 -0
  170. package/skills/workflow/investigating-bugs/root-cause-tracing.md +169 -0
  171. package/skills/workflow/investigating-bugs/test-academic.md +14 -0
  172. package/skills/workflow/investigating-bugs/test-pressure-1.md +58 -0
  173. package/skills/workflow/investigating-bugs/test-pressure-2.md +68 -0
  174. package/skills/workflow/investigating-bugs/test-pressure-3.md +69 -0
  175. package/skills/workflow/mcpupdate/SKILL.md +134 -0
  176. package/skills/workflow/playtesting-a-feature/SKILL.md +173 -0
  177. package/skills/{_meta → workflow}/skill-create/SKILL.md +32 -22
  178. package/skills/{_meta → workflow}/skill-improve/SKILL.md +9 -10
  179. package/skills/{_meta → workflow}/skill-test/SKILL.md +12 -12
  180. package/skills/{_meta → workflow}/using-summer/SKILL.md +5 -2
  181. package/skills/workflow/verification-before-completion/SKILL.md +139 -0
  182. package/skills/workflow/writing-plans/SKILL.md +152 -0
  183. package/skills/workflow/writing-plans/plan-document-reviewer-prompt.md +49 -0
  184. package/skills/workflow/writing-skills/SKILL.md +655 -0
  185. package/skills/workflow/writing-skills/anthropic-best-practices.md +1150 -0
  186. package/skills/workflow/writing-skills/examples/CLAUDE_MD_TESTING.md +189 -0
  187. package/skills/workflow/writing-skills/graphviz-conventions.dot +172 -0
  188. package/skills/workflow/writing-skills/persuasion-principles.md +187 -0
  189. package/skills/workflow/writing-skills/render-graphs.js +168 -0
  190. package/skills/workflow/writing-skills/testing-skills-with-subagents.md +384 -0
  191. package/dist/commands/assets.d.ts +0 -2
  192. package/dist/commands/assets.js +0 -189
  193. package/dist/commands/debug.d.ts +0 -2
  194. package/dist/commands/debug.js +0 -127
  195. package/dist/commands/doctor.test.js +0 -29
  196. package/dist/commands/project.d.ts +0 -2
  197. package/dist/commands/project.js +0 -170
  198. package/dist/commands/scene.d.ts +0 -2
  199. package/dist/commands/scene.js +0 -290
  200. package/dist/lib/agent-config.test.d.ts +0 -1
  201. package/dist/lib/agent-config.test.js +0 -80
  202. package/dist/lib/format.test.d.ts +0 -1
  203. package/dist/lib/format.test.js +0 -36
  204. package/dist/lib/plugin-manifests.test.d.ts +0 -1
  205. package/dist/lib/plugin-manifests.test.js +0 -134
  206. package/dist/lib/with-engine.d.ts +0 -14
  207. package/dist/lib/with-engine.js +0 -109
  208. package/skills/_shared/collaborative-protocol.md +0 -50
  209. package/skills/_shared/gd-style.md +0 -121
  210. package/skills/_shared/godot-version.md +0 -32
  211. package/skills/_shared/mcp-tools-reference.md +0 -133
  212. package/skills/_shared/summer-folder.md +0 -44
  213. package/skills/_shared/template-registry.md +0 -40
  214. package/skills/_tests/runner.md +0 -90
  215. package/skills/_tests/specs/3d-lighting.md +0 -19
  216. package/skills/_tests/specs/art-direction.md +0 -115
  217. package/skills/_tests/specs/asset-strategy.md +0 -19
  218. package/skills/_tests/specs/audio-direction.md +0 -123
  219. package/skills/_tests/specs/brainstorm-game.md +0 -99
  220. package/skills/_tests/specs/debug.md +0 -94
  221. package/skills/_tests/specs/design-level.md +0 -113
  222. package/skills/_tests/specs/design-mechanic.md +0 -112
  223. package/skills/_tests/specs/design-npc.md +0 -143
  224. package/skills/_tests/specs/export-and-ship.md +0 -114
  225. package/skills/_tests/specs/fps-controller.md +0 -113
  226. package/skills/_tests/specs/gdscript-patterns.md +0 -19
  227. package/skills/_tests/specs/host-authoritative-state.md +0 -104
  228. package/skills/_tests/specs/make-game.md +0 -19
  229. package/skills/_tests/specs/peer-to-peer-multiplayer.md +0 -99
  230. package/skills/_tests/specs/play.md +0 -88
  231. package/skills/_tests/specs/scene-composition.md +0 -19
  232. package/skills/_tests/specs/setup-multiplayer.md +0 -106
  233. package/skills/_tests/specs/tune-performance.md +0 -104
  234. package/skills/_tests/specs/ui-basics.md +0 -19
  235. package/skills/_tests/specs/vfx.md +0 -116
  236. package/skills/catalog.yaml +0 -991
  237. /package/dist/{commands/doctor.test.d.ts → lib/cloud/types.js} +0 -0
@@ -5,7 +5,7 @@ license: MIT
5
5
  compatibility: [Cursor, Claude Code, Windsurf, Codex]
6
6
  category: 3d-assets
7
7
  user-invocable: true
8
- allowed-tools: Read Grep summer_search_assets summer_generate_3d summer_generate_image summer_import_from_url summer_add_node summer_set_prop summer_inspect_node summer_get_scene_tree summer_save_scene
8
+ allowed-tools: Read Grep summer_search_assets summer_list_my_assets summer_get_asset summer_import_asset_by_id summer_generate_3d summer_generate_image summer_import_from_url summer_add_node summer_set_prop summer_inspect_node summer_get_scene_tree summer_save_scene
9
9
  paths: ["assets/models/**", "**/*.tscn", "**/*.gd"]
10
10
  ---
11
11
 
@@ -37,7 +37,7 @@ The backing tool is `summer_generate_3d`. Default model is `hunyuan` (Hunyuan 3D
37
37
  ### 1. Search before generating
38
38
 
39
39
  ```
40
- summer_search_assets(query="<prop name>", filter={ kind: "model" })
40
+ summer_search_assets(query="<prop name>", assetType="3d_model", source="all")
41
41
  ```
42
42
 
43
43
  If a fitting model exists, propose reuse:
@@ -83,25 +83,33 @@ summer_generate_3d(
83
83
  )
84
84
  ```
85
85
 
86
- Returns `{ asset: { fileUrl }, ... }`.
86
+ Returns a job result with `assetId` and `fileUrl`. Treat `assetId` as the
87
+ stable handle and `fileUrl` as a fallback preview/import URL.
87
88
 
88
89
  ### 5. Import and wire
89
90
 
90
91
  ```
91
- summer_import_from_url(url="<fileUrl>", path="res://assets/models/viking_axe.glb")
92
- summer_add_node(parent="./World/Props", type="MeshInstance3D", name="VikingAxe")
93
- summer_set_prop(path="./World/Props/VikingAxe", property="mesh", value="res://assets/models/viking_axe.glb")
92
+ summer_get_asset(assetId="<assetId>")
93
+ summer_import_asset_by_id(
94
+ assetId="<assetId>",
95
+ path="res://assets/models/viking_axe.glb",
96
+ parent="./World/Props",
97
+ name="VikingAxe"
98
+ )
94
99
  summer_save_scene
95
100
  ```
96
101
 
97
- For interactive props (chest the player opens, lantern the player picks up), wrap the MeshInstance3D in a `StaticBody3D` (or `RigidBody3D` for physics props) with a `CollisionShape3D` sibling — see `summer:scene-composition` for the parent-shape pattern.
102
+ For interactive props (chest the player opens, lantern the player picks up),
103
+ wrap the instantiated model in a `StaticBody3D` (or `RigidBody3D` for physics
104
+ props) with a `CollisionShape3D` sibling — see `summer:scene-composition` for
105
+ the parent-shape pattern.
98
106
 
99
107
  ## Anti-patterns
100
108
 
101
109
  - **Scene context in the prompt.** "A sword lying on a wooden table" → the table becomes geometry. Always say `isolated object`.
102
110
  - **Multi-object prompts.** "A sword and a shield" → fused single mesh. Generate separately.
103
111
  - **Skipping `target_polycount` for background props.** A 30k-tri barrel in the background tanks frame rate when the level has 50 of them.
104
- - **Forgetting to import.** `fileUrl` from `summer_generate_3d` is a remote URL — you MUST `summer_import_from_url` before referencing it as `res://...`.
112
+ - **Forgetting to import.** `fileUrl` from `summer_generate_3d` is a remote URL — you MUST `summer_import_asset_by_id` or `summer_import_from_url` before referencing it as `res://...`.
105
113
  - **Generating before searching.** Reuse beats regenerate every time.
106
114
  - **Picking `meshy` by default.** It's legacy. `hunyuan` is better; `trellis` is faster.
107
115
 
@@ -130,4 +138,4 @@ After the prop is wired:
130
138
  - `summer:asset-pipeline/asset-strategy` — the meta-router that decides between this skill and Pipeline 2 (textures).
131
139
  - `summer:3d-assets/character-model` — for humanoids.
132
140
  - `summer:3d-assets/environment-kit` — for style-locked sets.
133
- - `_shared/mcp-tools-reference.md` — `summer_generate_3d` parameter schema.
141
+ - `references/mcp-tools-reference.md` — `summer_generate_3d` parameter schema.
@@ -5,7 +5,7 @@ license: MIT
5
5
  compatibility: [Cursor, Claude Code, Windsurf, Codex]
6
6
  category: 3d-assets
7
7
  user-invocable: true
8
- allowed-tools: Read Grep summer_search_assets summer_generate_3d summer_generate_image summer_import_from_url summer_add_node summer_set_prop summer_inspect_node summer_inspect_resource summer_get_scene_tree summer_save_scene
8
+ allowed-tools: Read Grep summer_search_assets summer_list_my_assets summer_get_asset summer_import_asset_by_id summer_generate_3d summer_generate_image summer_import_from_url summer_add_node summer_set_prop summer_inspect_node summer_inspect_resource summer_get_scene_tree summer_save_scene
9
9
  paths: ["assets/vehicles/**", "assets/models/**", "**/*.tscn", "**/*.gd"]
10
10
  ---
11
11
 
@@ -69,7 +69,7 @@ If the user has reference images already (concept art, photos), prefer those —
69
69
  ### 1. Search before generating
70
70
 
71
71
  ```
72
- summer_search_assets(query="<vehicle type>", filter={ kind: "model" })
72
+ summer_search_assets(query="<vehicle type>", assetType="3d_model", source="all")
73
73
  ```
74
74
 
75
75
  ### 2. Pick model and polycount
@@ -101,7 +101,8 @@ summer_generate_3d(
101
101
  options={ target_polycount: 25000 },
102
102
  wait=true
103
103
  )
104
- summer_import_from_url(url="<fileUrl>", path="res://assets/vehicles/race_car.glb")
104
+ summer_get_asset(assetId="<assetId>")
105
+ summer_import_asset_by_id(assetId="<assetId>", path="res://assets/vehicles/race_car.glb")
105
106
  ```
106
107
 
107
108
  ### 5. Inspect for hard-surface artifacts
@@ -199,4 +200,4 @@ After the vehicle is wired:
199
200
  - `summer:3d-assets/prop-model` — for separable parts (rotors, decals as decals, modular kit pieces).
200
201
  - `summer:asset-pipeline/asset-strategy` — meta-router.
201
202
  - `summer:character-controllers` — for player-driven vehicle input wiring.
202
- - `_shared/mcp-tools-reference.md` — `summer_generate_3d` schema, including `kind: "texture"` for the secondary detail pass.
203
+ - `references/mcp-tools-reference.md` — `summer_generate_3d` schema, including `kind: "texture"` for the secondary detail pass.
package/skills/README.md CHANGED
@@ -7,32 +7,45 @@ When an agent is asked to make a game in Summer Engine, this is what it reads to
7
7
  ## Layout
8
8
 
9
9
  ```
10
- skills/
11
- ├── README.md # this file
12
- ├── catalog.yaml # canonical registry (name, category, status, template-id)
13
- ├── _shared/ # cross-skill references every skill can link
10
+ summer-cli/
11
+ ├── .claude-plugin/plugin.json # the registry (skills: array). Sibling Codex/Cursor manifests mirror it.
12
+ ├── references/ # cross-skill shared docs (sibling of skills/)
14
13
  │ ├── godot-version.md
15
14
  │ ├── mcp-tools-reference.md
16
15
  │ ├── collaborative-protocol.md
17
16
  │ ├── template-registry.md
17
+ │ ├── summer-folder.md
18
18
  │ └── gd-style.md
19
- ├── _meta/
20
- │ ├── skill-test/ # static + behavioral linter
21
- │ ├── skill-create/ # bootstrap a new skill
22
- │ └── skill-improve/ # eval-harness iteration
23
- ├── _tests/
24
- │ ├── runner.md # how /skill-test works
25
- │ └── specs/ # behavioral specs per skill
26
- └── <category>/<skill>/
27
- ├── SKILL.md # < 500 lines, frontmatter + body
28
- ├── references/ # loaded on demand
29
- ├── examples/ # working snippets
30
- └── tests/spec.md # behavioral spec
19
+ ├── tests/
20
+ │ ├── runner.md # how /skill-test works
21
+ │ └── specs/ # behavioral specs per skill
22
+ └── skills/
23
+ ├── README.md # this file
24
+ ├── workflow/ # process skills (brainstorming, debugging, planning, etc.)
25
+ │ ├── using-summer/
26
+ │ ├── skill-create/
27
+ │ ├── skill-improve/
28
+ │ ├── skill-test/
29
+ │ ├── brainstorming/
30
+ │ ├── investigating-bugs/
31
+ │ ├── verification-before-completion/
32
+ │ ├── writing-plans/
33
+ │ ├── dispatching-parallel-agents/
34
+ │ ├── writing-skills/
35
+ │ ├── playtesting-a-feature/
36
+ │ ├── debugging-game-feel/
37
+ │ └── diagnosing-perf-regressions/
38
+ └── <category>/<skill>/ # gamedev domain skills
39
+ ├── SKILL.md # < 500 lines, frontmatter + body
40
+ ├── reference.md # optional, loaded on demand
41
+ └── examples/ # optional, working snippets
31
42
  ```
32
43
 
33
- ## Categories (20)
44
+ ## Categories (21)
34
45
 
35
- `character-controllers`, `gameplay-mechanics`, `scripting-patterns`, `scene-and-project`, `rendering-and-lighting`, `shaders`, `visual-effects`, `post-processing`, `animation`, `audio`, `physics`, `multiplayer-and-networking`, `ai-and-npcs`, `level-design`, `performance`, `ui-and-ux`, `asset-pipeline`, `input-and-controls`, `debugging`, `deployment`.
46
+ `workflow` (process discipline) plus 20 gamedev domains: `character-controllers`, `gameplay-mechanics`, `scripting-patterns`, `scene-and-project`, `rendering-and-lighting`, `shaders`, `visual-effects`, `post-processing`, `animation`, `audio`, `physics`, `multiplayer-and-networking`, `ai-and-npcs`, `level-design`, `performance`, `ui-and-ux`, `asset-pipeline`, `input-and-controls`, `debugging`, `deployment`.
47
+
48
+ Folder structure is for humans only — Claude resolves skills as `summer:<skill-name>` regardless of category nesting.
36
49
 
37
50
  ## Standard
38
51
 
@@ -45,7 +58,7 @@ description: <when-to-use, key trigger phrases first>
45
58
  license: MIT
46
59
  compatibility: [Cursor, Claude Code, Windsurf, Codex]
47
60
  category: <one of the 20>
48
- template-id: <optional, resolved against _shared/template-registry.md>
61
+ template-id: <optional, resolved against references/template-registry.md>
49
62
  allowed-tools: Read Grep summer_add_node summer_set_prop ...
50
63
  paths: ["**/*.gd", "**/*.tscn"]
51
64
  ---
@@ -57,7 +70,7 @@ Cross-portable. Cursor / Codex / Windsurf understand the same SKILL.md.
57
70
 
58
71
  1. **SKILL.md ≤ 500 lines.** Push detail into `references/`. Progressive disclosure.
59
72
  2. **MCP-preferred + file-edit-fallback.** Every code-touching skill must show both paths so the skill works without Summer MCP installed.
60
- 3. **Collaborative protocol.** "May I write…?" before any user-visible mutation. See `_shared/collaborative-protocol.md`.
73
+ 3. **Collaborative protocol.** "May I write…?" before any user-visible mutation. See `references/collaborative-protocol.md`.
61
74
  4. **Template cross-link.** When a working starter exists, link via `template-id` and the section "Want a working starter?".
62
75
  5. **Test spec.** Every non-`_meta` skill ships `tests/spec.md` with at least one Test Case.
63
76
 
@@ -67,7 +80,7 @@ Cross-portable. Cursor / Codex / Windsurf understand the same SKILL.md.
67
80
  /skill-create
68
81
  ```
69
82
 
70
- (See `_meta/skill-create/SKILL.md`.)
83
+ (See `workflow/skill-create/SKILL.md`.)
71
84
 
72
85
  ## Testing
73
86
 
@@ -78,17 +91,11 @@ Cross-portable. Cursor / Codex / Windsurf understand the same SKILL.md.
78
91
  /skill-improve <name> # parallel-eval harness for iteration
79
92
  ```
80
93
 
81
- (See `_meta/skill-test/SKILL.md` and `_tests/runner.md`.)
82
-
83
- ## Roadmap
84
-
85
- Status legend in `catalog.yaml`:
94
+ (See `workflow/skill-test/SKILL.md` and `tests/runner.md`.)
86
95
 
87
- - **HAVE** — ships today.
88
- - **NEXT** — next wave, in active development.
89
- - **LATER** — on roadmap.
96
+ ## What ships today
90
97
 
91
- Currently: **7 HAVE / ~50 NEXT / ~30 LATER ≈ 85 skills across 20 categories**. Subagents fill content category by category.
98
+ The `skills:` array in `.claude-plugin/plugin.json` is the registry — what ships, ships there. New skills are added via `/skill-create` (see `workflow/skill-create/SKILL.md`).
92
99
 
93
100
  ## See also
94
101
 
@@ -190,7 +190,7 @@ summer_set_prop(path="./World/Enemies/Enemy/Sight", key="enabled", value="true")
190
190
  summer_set_prop(path="./World/Enemies/Enemy/Sight", key="target_position", value="Vector3(0, 0, -12)")
191
191
  ```
192
192
 
193
- Save the Vision sphere as standalone `.tres` (do NOT inline sub_resource — see `_shared/mcp-tools-reference.md` § "Trap"):
193
+ Save the Vision sphere as standalone `.tres` (do NOT inline sub_resource — see `references/mcp-tools-reference.md` § "Trap"):
194
194
 
195
195
  ```
196
196
  summer_set_prop(path="./World/Enemies/Enemy/Vision/VisionShape", key="shape", value="res://shapes/vision_sphere.tres")
@@ -460,7 +460,7 @@ If the enemy doesn't aggro, common causes:
460
460
 
461
461
  ## Collaborative protocol
462
462
 
463
- This skill writes scenes and scripts. Always ask before each step. Group related writes into one ask. See `_shared/collaborative-protocol.md`.
463
+ This skill writes scenes and scripts. Always ask before each step. Group related writes into one ask. See `references/collaborative-protocol.md`.
464
464
 
465
465
  ## Want a working starter?
466
466
 
@@ -471,10 +471,10 @@ For a fully-rigged enemy with anim controller + loot drop:
471
471
 
472
472
  ## See also
473
473
 
474
- - `_shared/mcp-tools-reference.md` — full MCP tool list
475
- - `_shared/godot-version.md` — Godot 4.5 API notes
476
- - `_shared/collaborative-protocol.md` — "May I write" pattern
477
- - `_shared/gd-style.md` — typed GDScript conventions
474
+ - `references/mcp-tools-reference.md` — full MCP tool list
475
+ - `references/godot-version.md` — Godot 4.5 API notes
476
+ - `references/collaborative-protocol.md` — "May I write" pattern
477
+ - `references/gd-style.md` — typed GDScript conventions
478
478
  - `ai-and-npcs/state-machine-npc/SKILL.md` — FSM pattern deep dive
479
479
  - `ai-and-npcs/behavior-trees/SKILL.md` — when complexity demands a BT
480
480
  - `ai-and-npcs/perception-sight-and-hearing/SKILL.md` — sensor patterns
@@ -22,6 +22,8 @@ Character (CharacterBody3D)
22
22
  └── AnimationTree # references AnimationPlayer, drives behavior
23
23
  ```
24
24
 
25
+ Before adding the tree, prove direct `AnimationPlayer.play()` visibly moves the rig. Godot may import animation GLBs as `AnimationLibrary` resources or as `PackedScene`s with embedded `AnimationPlayer`s. If a copied clip appears in the list but the mesh T-poses, its tracks probably target a different root/skeleton path. Use the embedded player that came with the matching GLB, or remap/copy tracks only after confirming they target the active `Skeleton3D`. An inactive AnimationTree is also a no-op, so always set `AnimationTree.active = true`.
26
+
25
27
  ## When to use this skill
26
28
 
27
29
  - Character has 3+ clips and switching between them via `AnimationPlayer.play("walk")` is causing pops, T-poses, or "starts halfway through".
@@ -256,5 +258,5 @@ Open the scene in Godot 4.5 editor, add `AnimationTree` node, set `Anim Player`
256
258
 
257
259
  - `summer:animation/generate-motion` — produce the clips this tree references.
258
260
  - `summer:animation/retarget` — share one tree across many characters.
259
- - `_shared/gd-style.md` — typed GDScript conventions in the controller snippets.
260
- - `_shared/mcp-tools-reference.md` — `summer_connect_signal` and `summer_set_resource_property` rules.
261
+ - `references/gd-style.md` — typed GDScript conventions in the controller snippets.
262
+ - `references/mcp-tools-reference.md` — `summer_connect_signal` and `summer_set_resource_property` rules.
@@ -278,5 +278,5 @@ For projects that can't use any cloud or third-party tool, Godot 4.5's `AudioStr
278
278
  - `summer:audio/generate-voice` — TTS upstream of this skill.
279
279
  - `summer:animation/animation-tree` — wire the lipsync OneShot into the character's tree.
280
280
  - `summer:animation/procedural-animation` — eye blinks, saccades, head idle.
281
- - `_shared/mcp-tools-reference.md` — `summer_generate_audio` schema (TTS).
281
+ - `references/mcp-tools-reference.md` — `summer_generate_audio` schema (TTS).
282
282
  - Rhubarb Lip Sync — https://github.com/DanielSWolf/rhubarb-lip-sync (external tool; phoneme extraction).
@@ -5,7 +5,7 @@ license: MIT
5
5
  compatibility: [Cursor, Claude Code, Windsurf, Codex]
6
6
  category: animation
7
7
  user-invocable: false
8
- allowed-tools: Read Grep summer_search_assets summer_generate_motion summer_inspect_resource summer_get_scene_tree summer_add_node summer_set_prop summer_set_resource_property summer_save_scene
8
+ allowed-tools: Read Grep summer_search_assets summer_list_my_assets summer_get_asset summer_get_asset_download_url summer_generate_motion summer_inspect_resource summer_get_scene_tree summer_add_node summer_set_prop summer_set_resource_property summer_save_scene
9
9
  paths: ["**/*.tscn", "**/*.tres", "**/*.gd"]
10
10
  ---
11
11
 
@@ -17,6 +17,22 @@ The target must be a **Meshy-rigged humanoid** — a `rigAssetId` from a prior `
17
17
 
18
18
  > **Custom prompt-driven motion** (e.g. "drops to one knee, draws bow") is on the roadmap but not shipped yet. For one-off signature moves not on the curated list, fall back to hand-authoring in the Godot editor or importing from Mixamo. See the Edge cases section.
19
19
 
20
+ ## Web Chat / Public Orchestrator Equivalent
21
+
22
+ In PublicSummerEngine chat, the equivalent direct tools are:
23
+
24
+ ```
25
+ rigModel({ modelAssetId })
26
+ generateAnimation({ rigAssetId, animationName })
27
+ meshyJobStatus({ jobId })
28
+ ```
29
+
30
+ If the character came from `createCharacter`, it may already be rigged and have `metadata.meshyRigTaskId`; generate animations directly against that rig asset. Verified animation names from the recovered production flow are `idle`, `walk`, `run`, `jump`, and `attack`. `fall` returned `invalid_animation`, so do not present it as a default.
31
+
32
+ Before generating clips in PublicSummerEngine chat, confirm the rig asset listing/status exposes `hasMeshyRigTask` or `animationsReady:true`. If `generateAnimation` returns `animations_preparing`, wait, poll/list the rig again, and retry; this is the post-rig setup catching up, not a reason to send the user to Studio.
33
+
34
+ After animation jobs complete, import the rig plus child animation assets together and wire them through `import-character`. Do not hand off to Studio unless the user asked for Studio/manual control or the direct chat tools fail.
35
+
20
36
  ## When to use this skill
21
37
 
22
38
  - "Add a walk animation to the goblin."
@@ -38,7 +54,7 @@ The target must be a **Meshy-rigged humanoid** — a `rigAssetId` from a prior `
38
54
  ### 1. Verify the target is a rigged humanoid
39
55
 
40
56
  ```
41
- summer_search_assets(query="<character name>", kind="model")
57
+ summer_search_assets(query="<character name>", assetType="3d_model", source="my_assets")
42
58
  ```
43
59
 
44
60
  The result must include `rigAssetId: <id>` on a Meshy rig. If it shows `rigAssetId: null`, the model isn't rigged — stop, propose `summer_generate_3d({ kind: "image-to-3d", imageUrl: "...", options: { rig: true } })` first (the result includes `rigAssetId`), or route to `summer:asset-pipeline/asset-strategy`.
@@ -57,7 +73,12 @@ summer_generate_motion(
57
73
  )
58
74
  ```
59
75
 
60
- Returns `{ animationAssetId, durationSeconds, previewUrl }`.
76
+ Returns `animationAssetId`, `durationSeconds`, and `previewUrl`. Resolve the
77
+ asset before handoff so you have the stable file/download metadata:
78
+
79
+ ```
80
+ summer_get_asset(assetId="<animationAssetId>")
81
+ ```
61
82
 
62
83
  ### 4. Attach to the character's AnimationPlayer
63
84
 
@@ -99,7 +120,7 @@ The full list is ~70 names. If the user asks for something not on the top-30, tr
99
120
  ## Anti-patterns
100
121
 
101
122
  - Calling `summer_generate_motion` on a `.glb` that wasn't rigged — wastes a generation; the API errors but only after 30s.
102
- - Generating the same clip twice because you forgot to save the `animationAssetId` from the first call. Search the asset library first: `summer_search_assets(query: "goblin run", kind: "animation")`.
123
+ - Generating the same clip twice because you forgot to save the `animationAssetId` from the first call. Search the asset library first: `summer_search_assets(query: "goblin run", assetType: "animation", source: "my_assets")`.
103
124
  - Wiring clips into an AnimationTree inside this skill. That's the next skill's job. Generate, attach, hand off.
104
125
  - Asking the model to invent a `motionName` that isn't on the list. Quote from the list verbatim, or fall back to manual authoring.
105
126
 
@@ -123,7 +144,7 @@ The user can upload to Meshy directly at meshy.ai, generate via the dashboard, d
123
144
 
124
145
  ## See also
125
146
 
126
- - `_shared/mcp-tools-reference.md` — `summer_generate_motion` parameter schema, error codes.
147
+ - `references/mcp-tools-reference.md` — `summer_generate_motion` parameter schema, error codes.
127
148
  - `summer:asset-pipeline/asset-strategy` — how to get a Meshy-rigged character in the first place.
128
149
  - `summer:animation/animation-tree` — wire the generated clips into a state machine.
129
150
  - `summer:animation/retarget` — re-use one library across many characters without regenerating.
@@ -229,6 +229,6 @@ Add modifiers in the Godot editor under Skeleton3D, set bone names from the insp
229
229
 
230
230
  ## See also
231
231
 
232
- - `_shared/gd-style.md` — typed GDScript conventions in the snippets.
233
- - `_shared/mcp-tools-reference.md` — `summer_set_prop` enum-int conventions for axis settings.
232
+ - `references/gd-style.md` — typed GDScript conventions in the snippets.
233
+ - `references/mcp-tools-reference.md` — `summer_set_prop` enum-int conventions for axis settings.
234
234
  - Godot 4.5 docs: `SkeletonModifier3D`, `LookAtModifier3D`, `SkeletonIK3D`, `PhysicalBoneSimulator3D`.
@@ -5,7 +5,7 @@ license: MIT
5
5
  compatibility: [Cursor, Claude Code, Windsurf, Codex]
6
6
  category: asset-pipeline
7
7
  user-invocable: false
8
- allowed-tools: Read Grep Skill summer_search_assets
8
+ allowed-tools: Read Grep Skill summer_search_assets summer_list_my_assets summer_get_asset summer_import_asset_by_id
9
9
  ---
10
10
 
11
11
  # Asset Strategy — Meta-Router for Asset Creation
@@ -117,7 +117,8 @@ VFX is **code, not generative** — recipes are shader + GDScript + node setup,
117
117
 
118
118
  - The user already named the specific skill — go straight there.
119
119
  - The user is debugging or running the game — route to `summer:debug` or `summer:play`.
120
- - The asset is being imported, not generated (existing `.glb` / `.wav` from Sketchfab, Quaternius, AmbientCG) — call `summer_import_from_url` directly.
120
+ - The asset is an existing Summer asset ID — call `summer_get_asset`, then `summer_import_asset_by_id`.
121
+ - The asset is being imported from a non-Summer URL (`.glb` / `.wav` from Sketchfab, Quaternius, AmbientCG) — call `summer_import_from_url` directly.
121
122
  - The user wants to plan the whole game's asset list — `summer:brainstorm-game` first, then this router on each item.
122
123
 
123
124
  ## Anti-patterns
@@ -323,4 +323,4 @@ Print the bus layout, the node tree, and the GDScript. User constructs in the Go
323
323
  - `audio/audio-direction` — defines the dynamic music plan and bus layout
324
324
  - `audio/music-track` — generates the stems
325
325
  - `audio/voice-line` — the voice bus that triggers ducking
326
- - `_shared/godot-version.md` — Godot 4.5 AudioServer and Tween API
326
+ - `references/godot-version.md` — Godot 4.5 AudioServer and Tween API
@@ -235,11 +235,11 @@ End with:
235
235
  | Pure sine "ding" for pickup | Reads as cheap mobile game. Use a major-third interval with character. |
236
236
  | Same footstep sample for all surfaces | Material-aware footsteps are 80% of the perceived audio quality. |
237
237
  | No master ceiling / true peak | Audio clips on console builds without `-1 dBTP` ceiling. Always set it. |
238
- | Calling SetResourceProperty on inline sub_resources | Silent fail. See `_shared/mcp-tools-reference.md` § Trap. |
238
+ | Calling SetResourceProperty on inline sub_resources | Silent fail. See `references/mcp-tools-reference.md` § Trap. |
239
239
 
240
240
  ## Collaborative protocol
241
241
 
242
- This skill writes one bible (`.summer/audio-bible.md`), creates a bus layout (`audio/default_bus_layout.tres`), modifies `project.godot`, and may generate audio (metered). Always ask before writing or generating. See `_shared/collaborative-protocol.md`.
242
+ This skill writes one bible (`.summer/audio-bible.md`), creates a bus layout (`audio/default_bus_layout.tres`), modifies `project.godot`, and may generate audio (metered). Always ask before writing or generating. See `references/collaborative-protocol.md`.
243
243
 
244
244
  ## Want a working starter?
245
245
 
@@ -247,9 +247,9 @@ No template — this is a workflow that produces the bible the rest of the proje
247
247
 
248
248
  ## See also
249
249
 
250
- - `_shared/collaborative-protocol.md`
251
- - `_shared/godot-version.md` — Godot 4.5 audio API notes
252
- - `_shared/mcp-tools-reference.md`
250
+ - `references/collaborative-protocol.md`
251
+ - `references/godot-version.md` — Godot 4.5 audio API notes
252
+ - `references/mcp-tools-reference.md`
253
253
  - `scene-and-project/brainstorm-game/SKILL.md` — produces the brief that anchors the bible
254
254
  - `rendering-and-lighting/art-direction/SKILL.md` — the visual counterpart; audio must rhyme with it
255
255
  - `audio/audio-bus-setup/SKILL.md` (NEXT) — implements the bus layout in detail
@@ -233,5 +233,5 @@ After the SFX is wired:
233
233
  - `audio/ambient-bed` — long looping textures
234
234
  - `audio/music-track` — music
235
235
  - `audio/voice-line` — TTS
236
- - `_shared/mcp-tools-reference.md`
237
- - `_shared/godot-version.md` — Godot 4.5 audio nodes
236
+ - `references/mcp-tools-reference.md`
237
+ - `references/godot-version.md` — Godot 4.5 audio nodes
@@ -6,7 +6,7 @@ compatibility: [Cursor, Claude Code, Windsurf, Codex]
6
6
  category: audio
7
7
  user-invocable: true
8
8
  allowed-tools: Read Grep Glob Write Edit summer_generate_voice summer_generate_audio summer_list_models summer_search_assets summer_import_from_url summer_add_node summer_set_prop summer_inspect_node
9
- paths: ["audio/voice/**", "scripts/**", "**/*.tscn"]
9
+ paths: [".summer/**", "audio/voice/**", "scripts/**", "**/*.tscn"]
10
10
  ---
11
11
 
12
12
  # /voice-line — Generate TTS Voice for NPCs, Narrator, Dialogue
@@ -33,8 +33,11 @@ Then it generates one line (or a multi-turn dialogue) with the right stability /
33
33
 
34
34
  ```
35
35
  Read .summer/audio-bible.md
36
+ Read .summer/memory/casting/voices.md # preferred cast memory, if present
37
+ Read .summer/voice-cast.md # legacy cast memory, if present
36
38
  Read .summer/characters.md # if present
37
39
  Glob .summer/characters/*.md
40
+ Glob .summer/memory/characters/*.md
38
41
  ```
39
42
 
40
43
  If a character bible exists, the voice should match the character's age / gender / regional origin / energy. If it doesn't, ask:
@@ -83,9 +86,23 @@ After the pick:
83
86
 
84
87
  > Locked voice: `Hodge` (id `21m00Tcm4TlvDq8ikWAM`). I'll use this for all `<character>` lines unless you say otherwise.
85
88
 
86
- Save it in `.summer/voice-cast.md`:
89
+ Ask before writing:
90
+
91
+ > May I update `.summer/memory/casting/voices.md` with this locked voice assignment?
92
+
93
+ Save it in `.summer/memory/casting/voices.md`:
87
94
 
88
95
  ```markdown
96
+ ---
97
+ id: casting.voice.main-cast
98
+ type: casting
99
+ status: active
100
+ priority: locked
101
+ stable: true
102
+ providers:
103
+ - elevenlabs
104
+ ---
105
+
89
106
  # Voice Cast
90
107
 
91
108
  | Character | Voice name | Voice id | Notes |
@@ -96,6 +113,8 @@ Save it in `.summer/voice-cast.md`:
96
113
 
97
114
  This is the cast bible. Every future voice line uses these ids — consistency is the point.
98
115
 
116
+ If legacy `.summer/voice-cast.md` already exists, read it first and either keep using it for this project or ask to migrate it into `.summer/memory/casting/voices.md`. Do not maintain two conflicting cast files.
117
+
99
118
  ### 5. Tune stability / similarity / style / speed for delivery
100
119
 
101
120
  ElevenLabs voice options:
@@ -199,7 +218,9 @@ The bible's mix rule says voice ducks music: when this player starts, fade the m
199
218
 
200
219
  ### 10. Save to the cast bible
201
220
 
202
- After generation, append to `.summer/voice-cast.md` so future skills find existing lines and don't regenerate. Include line text + filename + voice id.
221
+ After generation, append to `.summer/memory/casting/voices.md` so future skills find existing lines and don't regenerate. Include line text + filename + voice id.
222
+
223
+ If the assignment is marked `priority: locked`, do not replace the voice id automatically. If a scene, script, import config, or user prompt conflicts with the locked memory, stop and ask whether to update memory or fix the implementation.
203
224
 
204
225
  ## Reference card — voice-pick by archetype
205
226
 
@@ -220,6 +241,7 @@ Narrator intimate: warmer mid pitch, lower stability for breath
220
241
 
221
242
  - **Picking a voice without auditioning samples.** The user must hear it.
222
243
  - **Reusing a voice id across two characters.** Players notice instantly. Lock the cast.
244
+ - **Changing a locked voice without approval.** A cast voice is project memory, not a throwaway generation option.
223
245
  - **Stage directions in the text.** `(angrily) Get out!` is read literally as "angrily get out". Use stability/style.
224
246
  - **One long blob for a multi-turn scene.** Use `text_to_dialogue` so pacing is dialogue-aware.
225
247
  - **Voice on `Master` bus.** Must be on `Voice` bus so it can duck music per the bible.
@@ -48,7 +48,7 @@ summer_set_resource_property(nodePath="./World/Player/Collision", resourceProper
48
48
  summer_set_resource_property(nodePath="./World/Player/Collision", resourceProperty="shape", subProperty="height", value="1.8")
49
49
  ```
50
50
 
51
- `summer_set_prop` with a class-name string creates a standalone sub-resource. NEVER call `summer_set_resource_property` against an inline `sub_resource` — the value is silently dropped. See `_shared/mcp-tools-reference.md`.
51
+ `summer_set_prop` with a class-name string creates a standalone sub-resource. NEVER call `summer_set_resource_property` against an inline `sub_resource` — the value is silently dropped. See `references/mcp-tools-reference.md`.
52
52
 
53
53
  ### 4. Add the Head pivot + Camera
54
54
 
@@ -328,14 +328,14 @@ Then patch `project.godot` with the InputMap actions (`input/move_forward = { ..
328
328
 
329
329
  ## Collaborative Protocol
330
330
 
331
- This skill writes scene nodes, an InputMap, and a `.gd` script. Always ask before applying. Group writes per phase: "May I add the Player + Collision + Head + Camera, bind WASD/jump/sprint, and attach `player_controller.gd`?" See `../../_shared/collaborative-protocol.md`.
331
+ This skill writes scene nodes, an InputMap, and a `.gd` script. Always ask before applying. Group writes per phase: "May I add the Player + Collision + Head + Camera, bind WASD/jump/sprint, and attach `player_controller.gd`?" See `../../references/collaborative-protocol.md`.
332
332
 
333
333
  If the user asks for a "third-person FPS", flag the contradiction: FPS = first-person. Either clarify, or hand off to the `tps-controller` skill when it ships.
334
334
 
335
335
  ## See Also
336
336
 
337
- - `_shared/gd-style.md` — typed GDScript conventions used in the skeleton.
338
- - `_shared/mcp-tools-reference.md` — `summer_set_resource_property` rules + the inline-sub-resource silent-fail trap.
339
- - `_shared/collaborative-protocol.md` — when to ask before writing.
337
+ - `references/gd-style.md` — typed GDScript conventions used in the skeleton.
338
+ - `references/mcp-tools-reference.md` — `summer_set_resource_property` rules + the inline-sub-resource silent-fail trap.
339
+ - `references/collaborative-protocol.md` — when to ask before writing.
340
340
  - `scripting-patterns/state-machine-patterns/SKILL.md` — once movement grows past this skeleton (slide, grapple, hover), refactor into a state machine instead of stuffing more branches into `_physics_process`.
341
341
  - `physics/character-body-tuning/SKILL.md` (when shipped) — slope handling, step-up, floor-snap.
@@ -111,7 +111,7 @@ Surface the proposed fix in plain language and ask permission. Two patterns:
111
111
 
112
112
  - For GDScript edits: `Read` the 20–40 lines around the error, `Edit` the exact change. Don't read the whole file. Don't reformat. Don't rename other things.
113
113
  - For scene edits: use the appropriate `summer_*` tool (`summer_add_node`, `summer_set_prop`, `summer_replace_node`). Group multi-step changes in `summer_batch` for one undo step.
114
- - **Trap to avoid:** never call `summer_set_resource_property` against an inline `sub_resource` — the value is silently dropped. If the property is on a nested resource, first call `summer_set_prop` with the resource class name to instantiate a standalone resource, then drill in. See `_shared/mcp-tools-reference.md`.
114
+ - **Trap to avoid:** never call `summer_set_resource_property` against an inline `sub_resource` — the value is silently dropped. If the property is on a nested resource, first call `summer_set_prop` with the resource class name to instantiate a standalone resource, then drill in. See `references/mcp-tools-reference.md`.
115
115
 
116
116
  ### 6. Verify — re-run the diagnostic that found it
117
117
 
@@ -155,3 +155,41 @@ A debug session is done when:
155
155
  3. No new errors or warnings have been introduced.
156
156
 
157
157
  Tell the user one short sentence: "Fixed `<file>:<line>` — `<change>`. Diagnostic clean." Then stop.
158
+
159
+ ## What the MCP debug tools CAN and CAN'T see (read this before claiming "clean")
160
+
161
+ The `summer_*` tools are powerful for static + boot-time issues but **can't substitute for play-testing**. Knowing the gaps prevents false-clean reports.
162
+
163
+ ### What the MCP CAN see
164
+
165
+ - **Script parse errors** (`summer_get_script_errors`) — full text + file:line. Reliable.
166
+ - **Editor console output** (`summer_get_console`) — `print` statements, editor-side warnings, std startup messages. Full text.
167
+ - **Runtime debugger error count + full text** (`summer_get_debugger_errors`) — returns `errors_data` with `error`, `error_descr`, `callstack`, `file`, `function`, `line`. Reliable for errors.
168
+ - **Diagnostics summary** (`summer_get_diagnostics`) — counts of console errors, debugger errors, debugger warnings, script errors. Tells you where to drill.
169
+ - **Scene tree + node properties** (`summer_get_scene_tree`, `summer_inspect_node`) — only the **edited** scene, not the running game's live tree.
170
+ - **Whether the game is running** (`summer_is_running`) — and on which scene.
171
+
172
+ ### What the MCP CAN'T see (right now)
173
+
174
+ - **Debugger warning text.** `summer_get_debugger_errors` returns a `warnings: <count>` integer but no `warnings_data` array. You see "the game has 66 warnings" but you can't read them through MCP. **Tell the user: "I see N warnings exist but the MCP doesn't expose their text — paste the Debugger panel if any feel relevant."**
175
+ - **Live runtime scene tree.** `summer_get_scene_tree` returns the editor's edited scene, not what's currently instantiated in the running game. When debugging runtime state, you can't introspect the live nodes.
176
+ - **Keyboard / mouse / controller input simulation.** No tool sends key presses or mouse motion. So bugs that only fire from gameplay (player movement, weapon firing, level transitions, button clicks) require the user to play.
177
+ - **Screenshot / visual diff.** No tool captures the rendered viewport. Visual regressions ("the floor looks wrong", "the camera clips through terrain") require user eyes.
178
+ - **Frame-by-frame physics state.** No tool steps the simulation or watches for transient errors over time.
179
+
180
+ ### The "static-only is not testing" rule
181
+
182
+ A clean `summer_get_diagnostics` after `summer_play` only proves: **the game booted without parse errors or @implicit_ready null-derefs.** It does NOT prove gameplay works. Auto-fire weapons, level transitions, spell casting, boss attacks, UI interactions all happen *after* boot and won't surface in the diagnostics until they fire.
183
+
184
+ When you've made code changes and want to declare them "verified":
185
+
186
+ 1. **Required**: `summer_get_script_errors` clean on every modified file.
187
+ 2. **Required**: `summer_play` boot returns 0 errors (use the scene most likely to exercise the change).
188
+ 3. **Recommended**: ask the user to play through the specific scenario the change touches, then re-run `summer_get_diagnostics`.
189
+ 4. **Never claim "verified" from static analysis alone.** Say "compiles and boots clean — needs play-test to confirm <specific behavior>."
190
+
191
+ ### The cost of skipping it
192
+
193
+ A typical cautionary scenario: many parallel agents write thousands of lines of game code in one batch with verification static-only. The build is "diagnostic-clean" yet the running game has telegraph meshes that render the wrong axis, parse-valid scripts that crash on first autoload because of a guard pattern that doesn't compile, projectile tracers sized so they read as straight lines instead of projectiles, transform-leaked colliders from a copied scene, and `@onready` paths that throw on every boot when the script is loaded into a sibling scene that lacks one of the referenced children. None of these surface in `summer_get_diagnostics` until the user actually plays.
194
+
195
+ Static analysis is necessary but never sufficient.
@@ -280,7 +280,7 @@ Use this as a one-shot grep before any export:
280
280
 
281
281
  ## Collaborative protocol
282
282
 
283
- This skill produces release artifacts. Always ask before each build is invoked. Group platforms — "I'm about to build Windows + Mac + Linux release configs into `build/`. OK?". See `_shared/collaborative-protocol.md`.
283
+ This skill produces release artifacts. Always ask before each build is invoked. Group platforms — "I'm about to build Windows + Mac + Linux release configs into `build/`. OK?". See `references/collaborative-protocol.md`.
284
284
 
285
285
  ## Want a working starter?
286
286
 
@@ -288,9 +288,9 @@ No template — this is a workflow. Each project's export config and store asset
288
288
 
289
289
  ## See also
290
290
 
291
- - `_shared/mcp-tools-reference.md` — full MCP tool list
292
- - `_shared/godot-version.md` — Godot 4.5 export-template versioning
293
- - `_shared/collaborative-protocol.md` — "May I write" pattern
291
+ - `references/mcp-tools-reference.md` — full MCP tool list
292
+ - `references/godot-version.md` — Godot 4.5 export-template versioning
293
+ - `references/collaborative-protocol.md` — "May I write" pattern
294
294
  - `deployment/export-presets/SKILL.md` — preset config deep dive
295
295
  - `deployment/web-html5-export/SKILL.md` — HTML5-specific traps
296
296
  - `deployment/steam-uploader/SKILL.md` — `steamcmd` + GodotSteam (when shipped)