summer-engine 3.3.0 → 3.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (293) hide show
  1. package/.claude-plugin/marketplace.json +2 -2
  2. package/.claude-plugin/plugin.json +4 -2
  3. package/.codex-plugin/plugin.json +5 -3
  4. package/.cursor-plugin/plugin.json +4 -2
  5. package/.factory-plugin/plugin.json +4 -2
  6. package/.opencode/INSTALL.md +8 -8
  7. package/.opencode/plugins/summer.js +2 -2
  8. package/AGENTS.md +7 -7
  9. package/CHANGELOG.md +50 -0
  10. package/GEMINI.md +1 -1
  11. package/NOTICE +1 -1
  12. package/README.md +32 -35
  13. package/assets/api-docs.json.gz +0 -0
  14. package/assets/autopilot/run.sh +2 -2
  15. package/assets/navigation/web-routes.json +1 -1
  16. package/commands/gameskill.md +2 -2
  17. package/commands/summer.md +25 -25
  18. package/dist/cli/commands/install.d.ts +10 -0
  19. package/dist/cli/commands/install.js +55 -10
  20. package/dist/cli/commands/open.d.ts +1 -1
  21. package/dist/cli/commands/run.d.ts +1 -1
  22. package/dist/cli/commands/run.js +1 -1
  23. package/dist/cli/commands/skills.js +2 -2
  24. package/dist/cli/commands/tool.d.ts +7 -0
  25. package/dist/cli/commands/tool.js +36 -1
  26. package/dist/core/api-client.d.ts +5 -6
  27. package/dist/core/api-client.js +12 -15
  28. package/dist/core/auth.js +2 -2
  29. package/dist/core/capabilities/asset-import.d.ts +0 -1
  30. package/dist/core/capabilities/camera-view.d.ts +1 -1
  31. package/dist/core/capabilities/camera-view.js +2 -2
  32. package/dist/core/capabilities/capture-gameplay.d.ts +69 -0
  33. package/dist/core/capabilities/capture-gameplay.js +283 -0
  34. package/dist/core/capabilities/connect-signal.d.ts +1 -2
  35. package/dist/core/capabilities/connect-signal.js +1 -2
  36. package/dist/core/capabilities/console-read.d.ts +2 -2
  37. package/dist/core/capabilities/console-read.js +2 -2
  38. package/dist/core/capabilities/creator.js +1 -1
  39. package/dist/core/capabilities/doctor.d.ts +9 -1
  40. package/dist/core/capabilities/doctor.js +47 -4
  41. package/dist/core/capabilities/engine-receipt.d.ts +5 -7
  42. package/dist/core/capabilities/engine-receipt.js +7 -9
  43. package/dist/core/capabilities/engine-run.d.ts +4 -0
  44. package/dist/core/capabilities/engine-run.js +33 -5
  45. package/dist/core/capabilities/export-engine-version.d.ts +15 -0
  46. package/dist/core/capabilities/export-engine-version.js +24 -0
  47. package/dist/core/capabilities/export-game.d.ts +9 -1
  48. package/dist/core/capabilities/export-game.js +115 -39
  49. package/dist/core/capabilities/export-presets.d.ts +1 -1
  50. package/dist/core/capabilities/export-presets.js +1 -1
  51. package/dist/core/capabilities/fabricate-mesh.d.ts +2 -3
  52. package/dist/core/capabilities/fabricate-mesh.js +2 -3
  53. package/dist/core/capabilities/frame-quality.d.ts +4 -4
  54. package/dist/core/capabilities/frame-quality.js +4 -4
  55. package/dist/core/capabilities/grep.d.ts +1 -1
  56. package/dist/core/capabilities/grep.js +1 -1
  57. package/dist/core/capabilities/image-generation.d.ts +9 -0
  58. package/dist/core/capabilities/image-generation.js +19 -1
  59. package/dist/core/capabilities/navigation/open.d.ts +1 -1
  60. package/dist/core/capabilities/navigation/open.js +1 -1
  61. package/dist/core/capabilities/navigation/render-product-map.js +1 -1
  62. package/dist/core/capabilities/navigation/targets.js +2 -2
  63. package/dist/core/capabilities/placement-batch.d.ts +1 -1
  64. package/dist/core/capabilities/placement-batch.js +2 -2
  65. package/dist/core/capabilities/play-determinism.d.ts +1 -1
  66. package/dist/core/capabilities/play-determinism.js +1 -1
  67. package/dist/core/capabilities/publish-build.d.ts +15 -2
  68. package/dist/core/capabilities/publish-build.js +78 -28
  69. package/dist/core/capabilities/publish-download.d.ts +1 -2
  70. package/dist/core/capabilities/publish-download.js +2 -3
  71. package/dist/core/capabilities/replace-node.d.ts +1 -3
  72. package/dist/core/capabilities/replace-node.js +1 -3
  73. package/dist/core/capabilities/runtime-control.d.ts +5 -7
  74. package/dist/core/capabilities/runtime-control.js +7 -9
  75. package/dist/core/capabilities/scene-batch.d.ts +1 -1
  76. package/dist/core/capabilities/scene-batch.js +1 -1
  77. package/dist/core/capabilities/scene-kind.js +1 -1
  78. package/dist/core/capabilities/scene-readback.d.ts +3 -4
  79. package/dist/core/capabilities/scene-readback.js +3 -4
  80. package/dist/core/capabilities/scene-script.d.ts +2 -2
  81. package/dist/core/capabilities/scene-script.js +2 -2
  82. package/dist/core/capabilities/seeing/shot-store.d.ts +1 -1
  83. package/dist/core/capabilities/seeing/shot-store.js +1 -1
  84. package/dist/core/capabilities/summer-bundle.d.ts +2 -3
  85. package/dist/core/capabilities/summer-bundle.js +2 -3
  86. package/dist/core/capabilities/surface-snap.d.ts +1 -1
  87. package/dist/core/capabilities/surface-snap.js +1 -1
  88. package/dist/core/capabilities/tool-dispatch.js +11 -1
  89. package/dist/core/capabilities/ui-control.d.ts +1 -2
  90. package/dist/core/capabilities/ui-control.js +1 -2
  91. package/dist/core/capabilities/world-snapshot.d.ts +1 -1
  92. package/dist/core/capabilities/world-snapshot.js +1 -1
  93. package/dist/core/capability-skew.d.ts +2 -3
  94. package/dist/core/capability-skew.js +4 -5
  95. package/dist/core/config.js +2 -2
  96. package/dist/core/engine-install.d.ts +16 -0
  97. package/dist/core/engine-install.js +32 -2
  98. package/dist/core/feedback/client.js +1 -1
  99. package/dist/core/hosted-mcp.d.ts +115 -0
  100. package/dist/core/hosted-mcp.js +164 -0
  101. package/dist/core/launch-posture.d.ts +6 -3
  102. package/dist/core/launch-posture.js +18 -5
  103. package/dist/core/library-read.js +1 -2
  104. package/dist/core/templates.d.ts +1 -2
  105. package/dist/core/templates.js +1 -2
  106. package/dist/mcp/hosted-mount.d.ts +13 -59
  107. package/dist/mcp/hosted-mount.js +24 -30
  108. package/dist/mcp/server.d.ts +2 -2
  109. package/dist/mcp/server.js +5 -4
  110. package/dist/mcp/tools/creator-tools.js +14 -4
  111. package/dist/mcp/tools/debug-tools.js +1 -1
  112. package/dist/mcp/tools/generate-tools.js +19 -9
  113. package/dist/mcp/tools/navigation-tools.d.ts +1 -1
  114. package/dist/mcp/tools/navigation-tools.js +1 -1
  115. package/dist/mcp/tools/spatial-tools.js +1 -1
  116. package/dist/mcp/tools/visual-tools.js +2 -2
  117. package/dist/mcp/tools/with-engine.d.ts +1 -2
  118. package/dist/mcp/tools/with-engine.js +1 -2
  119. package/gemini-extension.json +3 -1
  120. package/hooks/session-start.sh +2 -2
  121. package/integrations/README.md +70 -76
  122. package/integrations/claude/README.md +0 -3
  123. package/integrations/codex/README.md +1 -2
  124. package/integrations/copilot-jetbrains/README.md +1 -1
  125. package/integrations/cursor/README.md +1 -2
  126. package/integrations/factory/README.md +15 -11
  127. package/integrations/mistral-vibe/README.md +1 -1
  128. package/integrations/opencode/README.md +1 -1
  129. package/integrations/roo-code/README.md +1 -1
  130. package/integrations/rovo-dev/README.md +1 -1
  131. package/integrations/trae/README.md +1 -1
  132. package/integrations/windsurf/README.md +3 -3
  133. package/library/references/collaborative-protocol/collaborative-protocol.md +5 -5
  134. package/library/references/gd-style/gd-style.md +4 -6
  135. package/library/references/godot-version/godot-version.md +3 -3
  136. package/library/references/headless-routing/headless-routing.md +2 -2
  137. package/library/references/mcp-fresh-chat-playbook/mcp-fresh-chat-playbook.md +2 -2
  138. package/library/references/mcp-tools-reference/mcp-tools-reference.md +18 -16
  139. package/library/references/product-map/product-map.md +1 -1
  140. package/library/references/public-surface-language/public-surface-language.md +1 -1
  141. package/library/references/summer-folder/summer-folder.md +1 -1
  142. package/library/skills/3d-lighting/SKILL.md +4 -4
  143. package/library/skills/README.md +11 -9
  144. package/library/skills/adaptive-music/SKILL.md +7 -7
  145. package/library/skills/ai-characters-in-games/SKILL.md +1 -1
  146. package/library/skills/ambient-bed/SKILL.md +12 -14
  147. package/library/skills/animated-loop/SKILL.md +42 -42
  148. package/library/skills/animation-tree/SKILL.md +6 -6
  149. package/library/skills/art-direction/SKILL.md +8 -11
  150. package/library/skills/asset-strategy/SKILL.md +3 -3
  151. package/library/skills/audio-direction/SKILL.md +8 -10
  152. package/library/skills/auto-fire-targeting/SKILL.md +4 -3
  153. package/library/skills/bounded-engine-runs/SKILL.md +95 -0
  154. package/library/skills/bounded-engine-runs/resource.yaml +29 -0
  155. package/library/skills/brainstorm-game/SKILL.md +5 -5
  156. package/library/skills/brainstorming/SKILL.md +9 -15
  157. package/library/skills/celeste-momentum-platforming/SKILL.md +8 -13
  158. package/library/skills/celeste-momentum-platforming/resource.yaml +1 -1
  159. package/library/skills/character-animation-wiring/SKILL.md +2 -2
  160. package/library/skills/character-model/SKILL.md +15 -26
  161. package/library/skills/character-movement/SKILL.md +1 -1
  162. package/library/skills/character-movement/references/movement-3d.md +1 -1
  163. package/library/skills/character-portrait/SKILL.md +4 -4
  164. package/library/skills/cinematic-cutscene/SKILL.md +38 -38
  165. package/library/skills/combat-basics/SKILL.md +1 -1
  166. package/library/skills/compatibility-renderer-traps/SKILL.md +78 -0
  167. package/library/skills/compatibility-renderer-traps/resource.yaml +28 -0
  168. package/library/skills/concept-art/SKILL.md +4 -4
  169. package/library/skills/create-asset-sheet/SKILL.md +12 -31
  170. package/library/skills/debug/SKILL.md +5 -4
  171. package/library/skills/debugging-game-feel/SKILL.md +1 -4
  172. package/library/skills/debugging-game-feel/resource.yaml +1 -1
  173. package/library/skills/design-level/SKILL.md +5 -5
  174. package/library/skills/design-mechanic/SKILL.md +6 -6
  175. package/library/skills/design-npc/SKILL.md +8 -15
  176. package/library/skills/diagnosing-perf-regressions/SKILL.md +5 -10
  177. package/library/skills/dispatching-parallel-agents/SKILL.md +1 -19
  178. package/library/skills/environment-kit/SKILL.md +5 -5
  179. package/library/skills/export-and-ship/SKILL.md +25 -24
  180. package/library/skills/fabricating-assets/SKILL.md +1 -1
  181. package/library/skills/facial-and-lipsync/SKILL.md +5 -5
  182. package/library/skills/fps-controller/SKILL.md +17 -16
  183. package/library/skills/fps-controller/resource.yaml +0 -2
  184. package/library/skills/game-feel/SKILL.md +6 -7
  185. package/library/skills/gameskill/SKILL.md +3 -3
  186. package/library/skills/gdscript-patterns/SKILL.md +3 -3
  187. package/library/skills/generate-motion/SKILL.md +5 -22
  188. package/library/skills/godogen-visual-proof-game-generation/SKILL.md +72 -90
  189. package/library/skills/godogen-visual-proof-game-generation/resource.yaml +0 -1
  190. package/library/skills/headless-scripting/SKILL.md +8 -8
  191. package/library/skills/headless-scripting/resource.yaml +1 -0
  192. package/library/skills/in-game-purchases/SKILL.md +123 -118
  193. package/library/skills/in-game-purchases/resource.yaml +2 -2
  194. package/library/skills/instantiate-asset-pack/SKILL.md +7 -3
  195. package/library/skills/investigating-bugs/SKILL.md +3 -11
  196. package/library/skills/investigating-bugs/condition-based-waiting.md +0 -10
  197. package/library/skills/investigating-bugs/root-cause-tracing.md +0 -8
  198. package/library/skills/lumera-single-image-scene-reconstruction/SKILL.md +15 -15
  199. package/library/skills/lumera-single-image-scene-reconstruction/resource.yaml +0 -1
  200. package/library/skills/make-game/SKILL.md +3 -5
  201. package/library/skills/make-game/references/2d-platformer.md +1 -1
  202. package/library/skills/multiplayer-project/SKILL.md +1 -1
  203. package/library/skills/multiplayer-testing/SKILL.md +4 -4
  204. package/library/skills/music-track/SKILL.md +40 -38
  205. package/library/skills/new-project/SKILL.md +4 -6
  206. package/library/skills/organic-model/SKILL.md +9 -9
  207. package/library/skills/pixel-art/SKILL.md +6 -6
  208. package/library/skills/play/SKILL.md +3 -4
  209. package/library/skills/playtesting-a-feature/SKILL.md +4 -6
  210. package/library/skills/procedural-animation/SKILL.md +10 -11
  211. package/library/skills/prop-model/SKILL.md +4 -4
  212. package/library/skills/psx-retro-rendering/SKILL.md +20 -20
  213. package/library/skills/psx-retro-rendering/resource.yaml +2 -3
  214. package/library/skills/realtime-wet-surfaces/SKILL.md +15 -15
  215. package/library/skills/realtime-wet-surfaces/resource.yaml +1 -2
  216. package/library/skills/remote-deploy/SKILL.md +20 -21
  217. package/library/skills/retarget/SKILL.md +19 -23
  218. package/library/skills/running-in-the-cloud/SKILL.md +5 -5
  219. package/library/skills/scene-composition/SKILL.md +5 -5
  220. package/library/skills/scene-hierarchy-design/SKILL.md +3 -3
  221. package/library/skills/scene-hierarchy-design/resource.yaml +0 -1
  222. package/library/skills/scene-scripting/SKILL.md +3 -3
  223. package/library/skills/scene-to-level/SKILL.md +28 -31
  224. package/library/skills/skill-create/SKILL.md +1 -1
  225. package/library/skills/skill-improve/SKILL.md +9 -9
  226. package/library/skills/skill-test/SKILL.md +10 -10
  227. package/library/skills/skintokens-auto-rigging/SKILL.md +18 -18
  228. package/library/skills/skintokens-auto-rigging/resource.yaml +3 -3
  229. package/library/skills/skybox-panorama/SKILL.md +8 -9
  230. package/library/skills/sound-effect/SKILL.md +19 -19
  231. package/library/skills/spatial-placement/SKILL.md +2 -2
  232. package/library/skills/spatial-placement/references/kit-placement-tools.md +12 -22
  233. package/library/skills/sprite-sheet/SKILL.md +10 -10
  234. package/library/skills/summer-analytics/SKILL.md +3 -3
  235. package/library/skills/summer-friends/SKILL.md +10 -10
  236. package/library/skills/summer-leaderboards/SKILL.md +6 -6
  237. package/library/skills/summer-match-results/SKILL.md +13 -13
  238. package/library/skills/summer-matchmaking/SKILL.md +11 -11
  239. package/library/skills/summer-parties/SKILL.md +9 -9
  240. package/library/skills/summer-player-data/SKILL.md +12 -12
  241. package/library/skills/summer-store/SKILL.md +6 -6
  242. package/library/skills/summer-world-chat/SKILL.md +9 -9
  243. package/library/skills/summer-world-saves/SKILL.md +7 -7
  244. package/library/skills/text-to-motion/rigging-for-text-motion.md +1 -1
  245. package/library/skills/tileable-texture/SKILL.md +1 -1
  246. package/library/skills/trailer-shot/SKILL.md +36 -36
  247. package/library/skills/tune-performance/SKILL.md +13 -13
  248. package/library/skills/tune-performance/resource.yaml +1 -1
  249. package/library/skills/ui-graphics/SKILL.md +7 -7
  250. package/library/skills/use-widget-asset/SKILL.md +7 -7
  251. package/library/skills/using-summer/SKILL.md +5 -7
  252. package/library/skills/vehicle-model/SKILL.md +6 -7
  253. package/library/skills/vehicle-model/resource.yaml +2 -2
  254. package/library/skills/verification-before-completion/SKILL.md +5 -6
  255. package/library/skills/vfx-dissolve/SKILL.md +4 -4
  256. package/library/skills/vfx-fire/SKILL.md +6 -6
  257. package/library/skills/vfx-fire/_building-blocks/additive-billboard-particles.md +3 -3
  258. package/library/skills/vfx-hit-spark/SKILL.md +4 -4
  259. package/library/skills/vfx-hit-spark/_building-blocks/additive-billboard-particles.md +3 -3
  260. package/library/skills/vfx-lightning/SKILL.md +5 -5
  261. package/library/skills/vfx-lightning/_building-blocks/additive-billboard-particles.md +3 -3
  262. package/library/skills/vfx-lightning/_building-blocks/trauma-shake-snippet.md +9 -3
  263. package/library/skills/vfx-magic-glow/SKILL.md +4 -4
  264. package/library/skills/vfx-magic-glow/_building-blocks/additive-billboard-particles.md +3 -3
  265. package/library/skills/vfx-muzzle-flash/SKILL.md +5 -5
  266. package/library/skills/vfx-muzzle-flash/_building-blocks/additive-billboard-particles.md +3 -3
  267. package/library/skills/vfx-muzzle-flash/_building-blocks/trauma-shake-snippet.md +9 -3
  268. package/library/skills/vfx-smoke/SKILL.md +5 -5
  269. package/library/skills/vfx-water-ripple/SKILL.md +2 -2
  270. package/library/skills/vfx-water-ripple/_building-blocks/additive-billboard-particles.md +3 -3
  271. package/library/skills/voice-line/SKILL.md +9 -9
  272. package/library/skills/web-compatibility-look/resource.yaml +1 -0
  273. package/library/skills/world-building-3d/references/spatial-tools.md +2 -2
  274. package/library/skills/writing-plans/SKILL.md +4 -4
  275. package/library/skills/writing-skills/SKILL.md +8 -8
  276. package/library/tools/capture-gameplay/resource.yaml +73 -0
  277. package/library/tools/creator-publish/resource.yaml +4 -4
  278. package/library/tools/creator-releases/resource.yaml +5 -5
  279. package/library/tools/generate-image/resource.yaml +15 -1
  280. package/library/tools/publish-build/resource.yaml +6 -2
  281. package/package.json +1 -1
  282. package/registry/generated/aliases.json +1 -0
  283. package/registry/generated/counts.json +3 -3
  284. package/registry/generated/gemini-extension.json +3 -1
  285. package/registry/generated/index.json +248 -135
  286. package/registry/generated/marketplace.claude.json +2 -2
  287. package/registry/generated/plugin.claude.json +4 -2
  288. package/registry/generated/plugin.codex.json +5 -3
  289. package/registry/generated/plugin.cursor.json +4 -2
  290. package/registry/generated/plugin.factory.json +4 -2
  291. package/registry/generated/skills-index.md +11 -9
  292. package/registry/generated/skills-registry.json +33 -6
  293. package/registry/schemas/domains.json +1 -1
@@ -16,7 +16,7 @@ adaptation: translated
16
16
 
17
17
  ## Outcome
18
18
 
19
- Scenes in Summer Engine (Godot-based) that are organized by **access pattern**, not by accident: clear separation between reusable asset scenes (`.tscn` prefabs) and the live node tree, wrapper grouping where whole subtrees are operated on together, flat siblings where type-wide queries dominate, and gameplay logic that does not depend on deep fragile node paths.
19
+ Scenes in Summer Engine that are organized by **access pattern**, not by accident: clear separation between reusable asset scenes (`.tscn` prefabs) and the live node tree, wrapper grouping where whole subtrees are operated on together, flat siblings where type-wide queries dominate, and gameplay logic that does not depend on deep fragile node paths.
20
20
 
21
21
  ## When to Use
22
22
 
@@ -31,7 +31,7 @@ Do not use this for shader/material work, asset import mechanics, or gameplay tu
31
31
 
32
32
  Sander Mertens' ECS article evaluates hierarchies on two axes and both translate directly:
33
33
 
34
- 1. **Usability: two hierarchy kinds must compose.** *Asset hierarchies* (inheritance, variations, property overrides → Godot `.tscn` sub-scenes and scene inheritance) and *scene hierarchies* (live parent-child relations → the node tree). A scene that repeatedly rebuilds the same inline cluster is missing its asset hierarchy; an asset scene nobody instantiates is dead weight.
34
+ 1. **Usability: two hierarchy kinds must compose.** *Asset hierarchies* (inheritance, variations, property overrides → `.tscn` sub-scenes and scene inheritance) and *scene hierarchies* (live parent-child relations → the node tree). A scene that repeatedly rebuilds the same inline cluster is missing its asset hierarchy; an asset scene nobody instantiates is dead weight.
35
35
  2. **Performance: match structure to dominant access patterns.** Group nodes stored/operated together under one parent (subtree operations become one operation); keep nodes queried independently as flat siblings. There is no universally optimal depth — analyze usage before picking one.
36
36
  3. **Hierarchy-agnostic logic.** The article's hybrid design keeps application code independent of storage; the Summer translation is: scripts and agents should not hardcode deep paths. Use groups, signals, and exported `NodePath` references instead of long ancestor chains.
37
37
 
@@ -67,7 +67,7 @@ Rules of thumb:
67
67
  - **Wrapper node per operation boundary.** If you ever need to "remove all enemies", "hide all props", or "rebuild the level", they share one parent; the operation becomes a single node op.
68
68
  - **Sub-scene per reusable setup.** Same cluster appearing twice or more → extract to its own `.tscn` and instantiate. One-offs (main camera, a level-specific light) stay inline.
69
69
  - **Flat over deep.** Every extra level of nesting adds path length and fragility. Prefer named sibling containers over long chains.
70
- - **Unique descriptive names.** Godot auto-renames duplicates (`Node`, `Node2`); that breaks name lookup. Name by role and index (`Crate_01`).
70
+ - **Unique descriptive names.** The engine auto-renames duplicates (`Node`, `Node2`); that breaks name lookup. Name by role and index (`Crate_01`).
71
71
  - **Never mix 2D under 3D** (or vice versa) in one hierarchy.
72
72
 
73
73
  ## Agent Procedure
@@ -9,7 +9,6 @@ use_when:
9
9
  - "scripts break whenever I move nodes because of hardcoded paths"
10
10
  do_not_use_when:
11
11
  - "shader or material work, asset import mechanics, or gameplay tuning — this is purely about hierarchy shape"
12
- - "intake from the gamedev-knowledge pipeline (source-cited, pipeline-validated, not yet exercised in-engine by the Summer team) — verify results in the engine as you would any technique"
13
12
  facets:
14
13
  lifecycle:
15
14
  - build
@@ -31,11 +31,11 @@ func run(ctx):
31
31
  - `print(...)` — captured into `output`.
32
32
  - Values are real GDScript: `Vector3(0, 10, 0)`, `Color(1, 0, 0, 1)`. The quoted variant-string convention (`"Vector3(0, 10, 0)"`) belongs to `summer_set_prop`, not to script code.
33
33
  - Budget: `max_seconds` default 20, clamp 5–120. The script blocks the editor between frames — keep it fast; move heavy batch work to `summer_run_editor_script`. On newer engines the budget is a HARD deadline: overrun raises the script error `"Summer script budget exceeded (Ns)"` (result `budget_enforced: true`). Split the work into smaller scripts — never resubmit the same oversized one.
34
- - Transactions: newer engines wrap the run in ONE named undo action (`undo: "action"`, the default) and roll it back on a mid-script runtime error — the result then carries `rolled_back: true` and the scene is untouched. Pass `undo: "none"` for v1 behavior (checkpoint only, partial mutations survive an error). Older engines ignore the param; treat any `errors` there as a possible half-applied mutation.
34
+ - Transactions: newer engines wrap the run in ONE named undo action (`undo: "action"`, the default) and roll it back on a mid-script runtime error — the result then carries `rolled_back: true` and the scene is untouched. Pass `undo: "none"` for checkpoint-only behavior (partial mutations survive an error). Older engines ignore the param; treat any `errors` there as a possible half-applied mutation.
35
35
 
36
36
  ## The ctx stdlib (newer engines)
37
37
 
38
- Creation helpers that **set the owner for you** (to the edited scene root) and return the created node — prefer them over the manual `new()` + `add_child` + `set_owner_recursive` dance. Frozen signatures:
38
+ Creation helpers that **set the owner for you** (to the edited scene root) and return the created node — prefer them over the manual `new()` + `add_child` + `set_owner_recursive` steps. Frozen signatures:
39
39
 
40
40
  ```gdscript
41
41
  add_node(type: String, name: String, parent: Node = null, props: Dictionary = {}) -> Node
@@ -237,7 +237,7 @@ set_main_scene(path: String) -> bool # application/run/main_sc
237
237
 
238
238
  **Undo posture.** File-writing helpers (`attach_script`, `make_prefab`) and project-settings helpers (`add_autoload`, `add_input_action`, `set_main_scene`) are covered by the pre-run checkpoint, NOT by the packed-scene undo action — a `rolled_back: true` result has reverted the scene but not those files or settings. The result's `undo_action` note says so whenever any of them ran (`files_written: [paths]`, `project_settings_changed: [keys]`): read it, and surface `no_rewind_point: true` to the user before more work of this kind.
239
239
 
240
- ## Owner rules — the silent killer
240
+ ## Owner rules
241
241
 
242
242
  <EXTREMELY-IMPORTANT>
243
243
  **Every node you create must be owned by the scene root, or it silently vanishes when the scene saves.** Descendants too — being under an owned node is NOT enough. `add_child` succeeds, the screenshot even shows it, and the saved `.tscn` is missing it.
@@ -11,11 +11,11 @@ paths: ["**/*.tscn", "**/*.gd", "assets/**", ".summer/**", "levels/**"]
11
11
 
12
12
  # scene-to-level — From a reference image to a playable scene
13
13
 
14
- This is the **orchestrator** skill. It does not generate art, slice sheets, or
15
- write game code. It routes the user through the chain of skills that do and
16
- stitches their outputs into a placeable Summer Engine scene.
14
+ This skill orchestrates. It does not generate art, slice sheets, or write game
15
+ code. It routes the user through the skills that do, and assembles their
16
+ outputs into a Summer Engine scene.
17
17
 
18
- Use it when the user shows you a screenshot or concept image and says "build this." The output is a `.tscn` you can hit play on, populated with assets that match the reference's style.
18
+ Use it when the user shows you a screenshot or concept image and says "build this." The output is a `.tscn` you can play, with assets that match the reference's style.
19
19
 
20
20
  ## The pipeline (decision tree)
21
21
 
@@ -28,7 +28,7 @@ Use it when the user shows you a screenshot or concept image and says "build thi
28
28
  │ └── route to 3D ASSETS path (out of scope for this skill —
29
29
  │ use `asset-strategy` directly)
30
30
  └─ UI-only screen (menu, HUD)
31
- └── route to UI ASSETS path (just plan-asset-pack)
31
+ └── route to UI ASSETS path (create-asset-sheet UI kit only)
32
32
 
33
33
  2. For each visible element, route to the right sub-pipeline:
34
34
 
@@ -38,13 +38,10 @@ Use it when the user shows you a screenshot or concept image and says "build thi
38
38
  not yet built)
39
39
 
40
40
  PROPS / DECOR / LIGHTING / NATURE / WATER / BUILDINGS / UI / VFX
41
- ── If user has time for individual generation, prefer:
42
- │ create-asset-sheet (Plan + Generate Pack
43
- │ mode at /studio/plan-asset-pack — higher quality, each asset
44
- │ gets full model attention)
45
- └── If user wants fast / exploratory:
46
- create-asset-sheet (Slice from a sheet at
47
- /studio/create-tileset — one sheet, autoslice, cheaper)
41
+ ── Default: create-asset-sheet (one sheet, auto-sliced into a pack;
42
+ │ fast and consistent in style)
43
+ └── For a few hero assets that need full detail: generate them one
44
+ at a time with pixel-art or character-portrait
48
45
 
49
46
  CHARACTERS → character-portrait first for the static
50
47
  frame, then sprite-sheet for animation
@@ -94,33 +91,33 @@ Before starting, you need either:
94
91
 
95
92
  If neither is offered, stop and ask. Don't guess what a "japanese village scene" looks like — get the reference first.
96
93
 
97
- ## Honest reliability map
94
+ ## Reliability map
98
95
 
99
- | Pipeline node | Reliability | Cost (rough) | What can go wrong |
100
- |---|---|---|---|
101
- | Reading the reference (vision call) | High | $0.02 | Model misidentifies the scene type |
102
- | Plan + Generate Pack (theme → per-asset) | High for props / icons / UI | $0.10–0.50 per pack | Style drift across items if no style ref |
103
- | Slice from a sheet (single-sheet path) | Medium for dense sheets | $0.08 + upscales | Touching sprites merge into one slice |
104
- | Tileable terrain (auto-tile) | LOW today — not built. | n/a | Use a single tile placeholder or stitch by hand |
105
- | Sprite-sheet animation | Medium — see that skill's own honesty section | varies | Frame consistency is the hard part |
106
- | Scene assembly via `summer_*` tools | High | free | Engine must be running |
96
+ | Pipeline node | Reliability | What can go wrong |
97
+ |---|---|---|
98
+ | Reading the reference (vision) | High | Model misidentifies the scene type |
99
+ | One asset at a time (hero assets) | High for props / icons / UI | Style drift across items if no style reference |
100
+ | Slice from a sheet (`create-asset-sheet`) | Medium for dense sheets | Touching sprites merge into one slice |
101
+ | Tileable terrain (auto-tile) | Low: not built | Use a single tile placeholder or stitch by hand |
102
+ | Sprite-sheet animation | Medium (see the `sprite-sheet` skill) | Frame consistency is the hard part |
103
+ | Scene assembly via `summer_*` tools | High | Engine must be running |
107
104
 
108
- Surface this map to the user when relevant — don't claim "ready to play in 10 minutes" if terrain auto-tiling is what they actually need.
105
+ Generation uses credits; confirm each batch with the user before you start. Share this map when it matters. Do not promise "ready to play in 10 minutes" if the user needs terrain auto-tiling.
109
106
 
110
107
  ## A worked example
111
108
 
112
109
  User shows you a screenshot of a Japanese village with multiple islands, water between them, buildings, characters, and a bottom palette UI:
113
110
 
114
111
  1. **Vision pass** identifies the scene as 2D isometric with: water terrain (large area), grass terrain (per island), buildings (5+ distinct), characters (2), UI palette + toolbar.
115
- 2. **Plan the props pack** via the create-asset-sheet planner: 12 props at minimum (torii, sakura, lantern, pagoda, bridge, well, sign, banner, bucket, hay, fence, crate). Generated per-asset for quality.
116
- 3. **Plan the buildings pack**: 5 distinct buildings (small house, barn, shop, pagoda, watchtower).
117
- 4. **Generate terrain**: today, single grass tile + single water tile + edge variant placeholders. Full Wang-tile auto-tiling is the TERRAIN_AUTOTILE_IDEA.md unbuilt path.
118
- 5. **Plan the UI pack** via the planner with theme "isometric voxel game UI: bottom palette, toolbar with Place/Erase/Pan/Save/Reset, asset category tabs, instruction panel."
119
- 6. **For each UI slice that's a panel / button**, use `use-widget-asset` to wire as NinePatchRect.
120
- 7. **Compose**: TileMap for terrain; Sprite2D placement matching the reference; Control nodes for the UI.
121
- 8. **Validate + hand off**.
122
-
123
- Total wall-clock: maybe 30 min for the asset packs (parallel), another 15 for scene composition. NOT a five-minute thing.
112
+ 2. **Props pack** with `create-asset-sheet`: 12 props at minimum (torii, sakura, lantern, pagoda, bridge, well, sign, banner, bucket, hay, fence, crate).
113
+ 3. **Buildings pack**: 5 distinct buildings (small house, barn, shop, pagoda, watchtower).
114
+ 4. **Terrain**: today, a single grass tile, a single water tile and edge placeholders. Wang-tile auto-tiling is not built.
115
+ 5. **UI pack** with `create-asset-sheet` and the theme "isometric voxel game UI: bottom palette, toolbar with Place/Erase/Pan/Save/Reset, asset category tabs, instruction panel."
116
+ 6. **For each UI slice that is a panel or button**, use `use-widget-asset` to wire it as a NinePatchRect.
117
+ 7. **Compose**: TileMapLayer for terrain; Sprite2D placement matching the reference; Control nodes for the UI.
118
+ 8. **Validate and hand off**.
119
+
120
+ Expect about 30 minutes for the asset packs (in parallel) and another 15 for scene composition.
124
121
 
125
122
  ## What this skill explicitly defers
126
123
 
@@ -9,7 +9,7 @@ allowed-tools: Read Write Glob Grep Bash
9
9
 
10
10
  # /skill-create: bootstrap a new library skill
11
11
 
12
- Works inside a checkout of the summer-engine agent repository (the one with `library/` and `registry/`). Outside it, capture the lesson with `gameskill` in the game project instead.
12
+ Works inside a checkout of the Summer repository, `summerengine/summer` (the one with `library/` and `registry/`). Outside it, capture the lesson with `gameskill` in the game project instead.
13
13
 
14
14
  ## Steps
15
15
 
@@ -9,12 +9,12 @@ allowed-tools: Read Write Edit Task
9
9
 
10
10
  # /skill-improve — Iterate on a Skill With Eval Harness
11
11
 
12
- Inspired by `anthropics/skills` `skill-creator/`. Use when a skill's behavioral spec is failing assertions or producing low-quality output.
12
+ Adapted from the `skill-creator` skill in `anthropics/skills`. Use when a skill's behavioral spec fails assertions or the skill produces low-quality output.
13
13
 
14
14
  ## When to use this vs. `/skill-test`
15
15
 
16
- - `/skill-test spec` reasons over text. Cheap, fast, lossy.
17
- - `/skill-improve` actually runs the skill in parallel subagents with-vs-without proposed changes. Expensive, accurate.
16
+ - `/skill-test spec` reasons over text. Cheap and fast, but lossy.
17
+ - `/skill-improve` runs the skill in parallel subagents, with and without the proposed changes. Slower and more expensive, but accurate.
18
18
 
19
19
  Run this when `/skill-test spec` flags issues you can't fix by reading the skill alone.
20
20
 
@@ -23,8 +23,8 @@ Run this when `/skill-test spec` flags issues you can't fix by reading the skill
23
23
  ### 1. Pick the skill + the spec
24
24
 
25
25
  Ask the user:
26
- - **Skill name.** Resolves to `skills/<category>/<name>/SKILL.md`.
27
- - **Test cases to focus on.** Default: all `## Case` blocks in `tests/specs/<name>.md`.
26
+ - **Skill slug.** Resolves to `library/skills/<slug>/SKILL.md`.
27
+ - **Test cases to focus on.** Default: all `## Case` blocks in `evals/skills/specs/<slug>.md`.
28
28
 
29
29
  ### 2. Establish a baseline
30
30
 
@@ -69,12 +69,12 @@ Case 3 (Edge): baseline 3/3 proposed 3/3 = no change
69
69
 
70
70
  If proposed wins on net, prompt the user:
71
71
 
72
- > Proposed version wins 2 cases, ties 1, loses 0. May I overwrite `skills/<category>/<name>/SKILL.md` with the proposed version?
72
+ > Proposed version wins 2 cases, ties 1, loses 0. May I overwrite `library/skills/<slug>/SKILL.md` with the proposed version?
73
73
 
74
74
  ### 6. Ship
75
75
 
76
76
  On user yes:
77
- - Overwrite `SKILL.md`.
77
+ - Overwrite `SKILL.md` and bump `version` in `resource.yaml`.
78
78
  - Commit with message `feat(skill): improve <name> — <one-line summary of change>`.
79
79
 
80
80
  ## Collaborative protocol
@@ -83,6 +83,6 @@ This skill writes files at multiple steps. Always ask before each write.
83
83
 
84
84
  ## See also
85
85
 
86
- - `workflow/skill-test/SKILL.md`
86
+ - `skill-test`
87
87
  - `tests/runner.md`
88
- - `tests/specs/`
88
+ - `evals/skills/specs/`
@@ -13,28 +13,28 @@ Three modes. Pick by the user's intent.
13
13
 
14
14
  ## Mode: `static` — Structural lint (default for "test this skill")
15
15
 
16
- For a single skill at `skills/<category>/<name>/`, run these checks:
16
+ For a single skill at `library/skills/<slug>/`, run these checks:
17
17
 
18
18
  1. **Frontmatter completeness.** `name`, `description`, `license`, `compatibility`, `category` present. `name` matches the directory name.
19
- 2. **SKILL.md length.** ≤ 500 lines. (Progressive disclosure rule from Anthropic spec.)
19
+ 2. **SKILL.md length.** ≤ 500 lines (progressive disclosure: push detail into references).
20
20
  3. **MCP-preferred + file-edit-fallback.** If the skill mutates scenes or resources, body must show both:
21
21
  - At least one `summer_*` MCP tool example.
22
22
  - At least one file-edit fallback block (e.g., raw `.tscn` snippet) OR an explicit "no fallback for this — Summer MCP required" note.
23
23
  4. **Collaborative protocol.** If the skill triggers user-visible writes, body must contain at least one of: `May I`, `I'm about to`, `Continue?`, `OK?`, `Proceed?`. Skills that only inspect/read are exempt.
24
24
  5. **Template-id resolved.** If the skill's frontmatter declares `template-id: <id>`, that id must exist in the template registry: `library/templates/<id>/resource.yaml` (see `library/templates/README.md`).
25
- 6. **Tests/spec.md present.** Every skill in a non-`_meta` category must have `tests/spec.md` with at least one `## Case` heading.
26
- 7. **Relative links resolve.** Every `](../references/...)`, `](../../references/...)`, `](./references/...)`, and `](./examples/...)` link must point at an existing file (FAIL if broken). Forward references in `## See also` to other SKILL.md files (e.g., `[design-mechanic](../design-mechanic/SKILL.md)`) are allowed to dangle and only WARN if the target is missing — the catalog evolves and skills should be free to point at planned skills.
25
+ 6. **Behavioral spec.** If the skill has a spec (`evals/skills/specs/<slug>.md` or `tests/spec.md` in the skill folder), it has at least one `## Case` heading. A missing spec is a WARN, not a FAIL.
26
+ 7. **Relative links resolve.** Every `](../references/...)`, `](../../references/...)`, `](./references/...)`, and `](./examples/...)` link must point at an existing file (FAIL if broken). Links to other skills should use the bare slug (`design-mechanic`), not a path.
27
27
 
28
28
  Output:
29
29
 
30
30
  ```
31
- skill: <category>/<name>
31
+ skill: <slug>
32
32
  PASS (1) frontmatter complete
33
33
  PASS (2) length 217 / 500 lines
34
34
  FAIL (3) no MCP-preferred example found in body
35
35
  PASS (4) collaborative protocol present
36
36
  PASS (5) template-id resolved
37
- PASS (6) tests/spec.md exists
37
+ PASS (6) behavioral spec has cases
38
38
  PASS (7) all relative links resolve
39
39
 
40
40
  6 PASS / 1 FAIL — fix item 3 before commit.
@@ -42,7 +42,7 @@ skill: <category>/<name>
42
42
 
43
43
  ## Mode: `spec` — Behavioral spec runner
44
44
 
45
- For a single skill, read both `skills/<category>/<name>/SKILL.md` and `tests/specs/<name>.md`. For each `## Case` in the spec:
45
+ For a single skill, read both `library/skills/<slug>/SKILL.md` and `evals/skills/specs/<slug>.md`. For each `## Case` in the spec:
46
46
 
47
47
  1. Lay out the **Fixture** (starting state, available tools).
48
48
  2. Read the **Input** (user prompt).
@@ -51,11 +51,11 @@ For a single skill, read both `skills/<category>/<name>/SKILL.md` and `tests/spe
51
51
 
52
52
  Output: an annotated copy of the spec with assertions filled in, plus a pass-rate.
53
53
 
54
- No code execution. Pure reasoning over text.
54
+ No code execution; this mode reasons over text only.
55
55
 
56
56
  ## Mode: `audit` — Whole library report
57
57
 
58
- Read the `skills:` array in `.claude-plugin/plugin.json`. For each registered skill:
58
+ List `library/skills/*/SKILL.md`. For each skill:
59
59
 
60
60
  1. Run `static` mode on the skill.
61
61
  2. Note any `last-tested:` field in the SKILL.md frontmatter (optional).
@@ -83,4 +83,4 @@ This skill is **read-only**. It never writes. No "May I" needed.
83
83
  - `../../references/collaborative-protocol/collaborative-protocol.md`
84
84
  - the template registry: `library/templates/<id>/resource.yaml` (see `library/templates/README.md`)
85
85
  - `tests/runner.md`
86
- - `tests/specs/` — per-skill behavioral specs
86
+ - `evals/skills/specs/` — per-skill behavioral specs
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: skintokens-auto-rigging
3
- description: "Offline auto-rigging with skin-tokens.cpp (GGML SkinTokens/TokenRig port) — skeleton and skin weights from a static GLB mesh on CPU/Vulkan, into Godot 4."
3
+ description: "Offline auto-rigging with skin-tokens.cpp (GGML SkinTokens/TokenRig port) — skeleton and skin weights from a static GLB mesh on CPU/Vulkan, into Summer Engine."
4
4
  license: MIT
5
5
  category: art-pipeline
6
6
  tags:
@@ -13,13 +13,13 @@ tags:
13
13
  confidence: extracted
14
14
  ---
15
15
 
16
- # Auto-Rigging Static Meshes with skin-tokens.cpp (SkinTokens/TokenRig) in SummerEngine
16
+ # Auto-Rigging Static Meshes with skin-tokens.cpp (SkinTokens/TokenRig) in Summer Engine
17
17
 
18
- ## Tool review verdict
18
+ ## About the tool
19
19
 
20
- Not a "slop tool made by a solodev": it is published under the **localai-org** GitHub organization by Richard Palethorpe (LocalAI maintainer), is an Apache-2.0 C++23/GGML port of VAST-AI's MIT-licensed **SkinTokens/TokenRig** research model (arXiv:2602.04805), ships a flat C11 API, an ASan/UBSan libFuzzer build, CPU/Vulkan numerical-parity test suites against the upstream reference, and a Go/WebGL demo. Weights are a verified, non-retrained GGUF conversion (~1.25 GB F16) on Hugging Face.
20
+ skin-tokens.cpp is published by the **localai-org** GitHub organization. It is an Apache-2.0 C++23/GGML port of VAST-AI's MIT-licensed **SkinTokens/TokenRig** research model (arXiv:2602.04805). It ships a flat C11 API, an ASan/UBSan libFuzzer build, CPU/Vulkan numerical-parity tests against the upstream reference, and a Go/WebGL demo. The weights are a non-retrained GGUF conversion (~1.25 GB F16) on Hugging Face.
21
21
 
22
- Honest limitations to plan around:
22
+ Limitations to plan around:
23
23
 
24
24
  - The fully automatic `rig` command (unconstrained skeleton generation) is **explicitly experimental** — the policy can produce unsuitable bone topologies.
25
25
  - The author's own demo shows **open issues combining the output with kimodo.cpp skeletal animations**.
@@ -30,7 +30,7 @@ Honest limitations to plan around:
30
30
 
31
31
  ## Outcome
32
32
 
33
- Static `.glb` meshes (e.g. AI-generated or scanned characters/creatures) become rigged, skinned `.glb` assets that Godot 4 imports natively as `Skeleton3D` + skinned `MeshInstance3D`, ready for `AnimationPlayer`/retargeted animation — without manual weight painting.
33
+ Static `.glb` meshes (e.g. AI-generated or scanned characters/creatures) become rigged, skinned `.glb` assets that Summer Engine imports natively as `Skeleton3D` + skinned `MeshInstance3D`, ready for `AnimationPlayer`/retargeted animation — without manual weight painting.
34
34
 
35
35
  ## When to Use
36
36
 
@@ -43,13 +43,13 @@ Static `.glb` meshes (e.g. AI-generated or scanned characters/creatures) become
43
43
  - Hero characters needing production-quality, art-directed deformation — plan for manual weight cleanup after auto-rigging.
44
44
  - Non-triangle meshes (tool accepts arbitrary triangle meshes only; triangulate first).
45
45
  - Shapes far from the training distribution (expect weaker results; run `--geometric` diagnostic to compare).
46
- - Runtime/in-engine rigging — this is an offline CLI/library step, not a Godot plugin.
46
+ - Runtime/in-engine rigging — this is an offline CLI/library step, not an editor plugin.
47
47
 
48
48
  ## Core Principle
49
49
 
50
50
  TokenRig models the whole rig — skeleton hierarchy followed by discrete skin-weight tokens (SkinTokens, an FSQ-CVAE vocabulary) — as one autoregressive sequence generated from a Michelangelo point-cloud encoding of the mesh (Qwen3-0.6B backbone, GRPO-refined). skin-tokens.cpp re-runs this stack through GGML on CPU or Vulkan and exports a standard skinned glTF/GLB with a one-frame rest pose, so it opens as a conventional rigged asset in any engine.
51
51
 
52
- ## Pipeline shape (SummerEngine)
52
+ ## Pipeline shape (Summer Engine)
53
53
 
54
54
  ```
55
55
  static character.glb
@@ -61,7 +61,7 @@ static character.glb
61
61
  character-rigged.glb (skeleton + skin weights + rest pose, skinned glTF)
62
62
  │
63
63
  ▼
64
- Godot 4 import → character-rigged.glb (scene)
64
+ Summer Engine import → character-rigged.glb (scene)
65
65
  └── Skeleton3D
66
66
  └── MeshInstance3D (skinned, Skin resource)
67
67
  └── AnimationPlayer / retargeted animations
@@ -122,18 +122,18 @@ Fit modes:
122
122
  | `none` | Both files already share coordinates | No alignment transform |
123
123
  | `articulated` | Recognized humanoid arm chains; **experimental** | Picks whichever of rest pose / first animation frame actually runs inside the arms (bind pose == frame zero → playback starts without warping); falls back to analytic two-bone IK toward conservative mesh targets, preserving arm segment lengths |
124
124
 
125
- ### 3. Import into Godot 4
125
+ ### 3. Import into Summer Engine
126
126
 
127
- Drop the rigged `.glb` into the project; Godot's glTF importer creates the scene automatically:
127
+ Drop the rigged `.glb` into the project; the glTF importer creates the scene automatically:
128
128
 
129
129
  - `Skeleton3D` with bones and a skinned `MeshInstance3D` (Skin resource), rest pose included.
130
130
  - Check in the Import dock: mesh, skeleton, and (if supplied) animations present.
131
- - If the source GLB contains animations and the hierarchy matches, Godot imports them into `AnimationPlayer`; otherwise use Godot 4's retargeting (`SkeletonProfileHumanoid`) to map animations onto the generated skeleton.
131
+ - If the source GLB contains animations and the hierarchy matches, the importer puts them into an `AnimationPlayer`; otherwise use retargeting (`SkeletonProfileHumanoid`, see the `retarget` skill) to map animations onto the generated skeleton.
132
132
  - glTF round-trip note from upstream: on Blender export of results, a `glTF_not_exported` node may need removing (only relevant if the pipeline goes through Blender).
133
133
 
134
134
  ### 4. Optional editor tooling (typed GDScript)
135
135
 
136
- An EditorScript/utility wrapper to rig assets from inside Godot:
136
+ An EditorScript wrapper to rig assets from inside the editor:
137
137
 
138
138
  ```gdscript
139
139
  @tool
@@ -154,7 +154,7 @@ func _run() -> void:
154
154
  var output: Array = []
155
155
  var err := OS.execute(CLI, args, output, true, false)
156
156
  if err != 0:
157
- push_error("skin-tokens-cli failed (%d): %s" % [err, "\n".join(output)))
157
+ push_error("skin-tokens-cli failed (%d): %s" % [err, "\n".join(output)])
158
158
  return
159
159
  print("Rigged: ", dst)
160
160
  # Reimport so the new GLB appears in the FileSystem dock.
@@ -187,14 +187,14 @@ For embedding in a tool/asset server, prefer the flat C11 API (`skintokens.h`):
187
187
 
188
188
  ## Verification
189
189
 
190
- Not summerengine-verified. To validate in SummerEngine:
190
+ Not yet verified in Summer Engine. To validate:
191
191
 
192
192
  1. `skintokens-cli inspect models/SkinTokens-GGUF/F16` succeeds after build + weights download.
193
- 2. Rig a known test mesh (`rig … --postprocess`) and open the output in the Godot editor: `Skeleton3D` with sensible bone hierarchy + skinned `MeshInstance3D`, no import errors.
193
+ 2. Rig a known test mesh (`rig … --postprocess`) and open the output in the editor: `Skeleton3D` with sensible bone hierarchy + skinned `MeshInstance3D`, no import errors.
194
194
  3. Pose one bone in the editor; confirm the surface deforms smoothly without bleeding across disconnected parts.
195
- 4. `skin` path: feed a mesh + animated skeleton GLB with `--fit global`; play the animation in Godot and confirm frame zero does not warp the mesh.
195
+ 4. `skin` path: feed a mesh + animated skeleton GLB with `--fit global`; play the animation in the editor and confirm frame zero does not warp the mesh.
196
196
  5. Re-run ctest / parity binaries if the CLI is rebuilt or GGML is updated.
197
197
 
198
198
  ## Confidence
199
199
 
200
- `extracted` — All tool behavior, commands, flags, sizes, numerics, and caveats come from the retrieved GitHub README, Hugging Face model card, upstream VAST-AI repo, and the author's X announcement (including the self-reported kimodo.cpp animation issue). The Godot 4 import mapping and GDScript wrapper are adaptations, not from the sources.
200
+ `extracted` — All tool behavior, commands, flags, sizes, numerics, and caveats come from the retrieved GitHub README, Hugging Face model card, upstream VAST-AI repo, and the author's X announcement (including the self-reported kimodo.cpp animation issue). The import mapping and GDScript wrapper are adaptations, not from the sources.
@@ -1,7 +1,7 @@
1
1
  id: skill/skintokens-auto-rigging
2
2
  kind: skill
3
3
  version: 0.1.1
4
- summary: "Offline auto-rigging with skin-tokens.cpp (GGML SkinTokens/TokenRig port) — skeleton and skin weights from a static GLB mesh on CPU/Vulkan, into Godot 4."
4
+ summary: "Offline auto-rigging with skin-tokens.cpp (GGML SkinTokens/TokenRig port) — skeleton and skin weights from a static GLB mesh on CPU/Vulkan, into Summer Engine."
5
5
  use_when:
6
6
  - "auto-rig this static GLB mesh so I can animate it"
7
7
  - "generate skin weights for a mesh that already has a skeleton"
@@ -10,7 +10,7 @@ use_when:
10
10
  do_not_use_when:
11
11
  - "hero characters needing art-directed deformation, non-triangle meshes, shapes far from the humanoid training data, or runtime in-engine rigging"
12
12
  - "skin-tokens.cpp is a user-built, user-run offline CLI (minutes per mesh); the agent does not install or run it on the user's behalf"
13
- - "intake from the gamedev-knowledge pipeline (source-cited, pipeline-validated, not yet exercised in-engine by the Summer team) — verify results in the engine as you would any technique"
13
+ - "trusting the output without checking it in the engine (this entry is source-cited but not yet verified in Summer Engine)"
14
14
  facets:
15
15
  lifecycle:
16
16
  - build
@@ -35,4 +35,4 @@ recommended: false
35
35
  lint_exceptions:
36
36
  - url-allowlist
37
37
  - credential-pattern
38
- lint_exception_reason: "Source citation for knowledge extracted by the gamedev-knowledge pipeline: the Setup section quotes the upstream GitHub clone URL of the skin-tokens.cpp tool (localai-org) as a user-run, user-consented build step — a read-only provenance link, not agent-autonomous installation. credential-pattern is a false positive on the CMake option SKINTOKENS_ENABLE_VULKAN, where TOKENS is part of the project name, not a secret or token assignment."
38
+ lint_exception_reason: "Source citation: the Setup section quotes the upstream GitHub clone URL of the skin-tokens.cpp tool (localai-org) as a user-run, user-consented build step — a read-only provenance link, not agent-autonomous installation. credential-pattern is a false positive on the CMake option SKINTOKENS_ENABLE_VULKAN, where TOKENS is part of the project name, not a secret or token assignment."
@@ -5,7 +5,7 @@ license: MIT
5
5
  compatibility: [Cursor, Claude Code, Windsurf, Codex]
6
6
  category: 2d-assets
7
7
  user-invocable: true
8
- allowed-tools: Read Grep Glob Write Edit summer_generate_image summer_search_assets summer_import_from_url summer_set_resource_property summer_add_node summer_set_prop summer_inspect_node
8
+ allowed-tools: Read Grep Glob Write Edit summer_generate_image summer_search_assets summer_import_from_url summer_set_resource_property summer_write_file summer_add_node summer_set_prop summer_save_scene summer_inspect_node
9
9
  paths: ["assets/**", "art/sky/**", "environments/**"]
10
10
  ---
11
11
 
@@ -16,7 +16,7 @@ e.g. 2048×1024 or 4096×2048) suitable for Summer Engine's
16
16
  `PanoramaSkyMaterial`. It wires the image into a `Sky` resource on a
17
17
  `WorldEnvironment` node so the sky is visible from every camera angle.
18
18
 
19
- The single biggest failure mode is **non-equirectangular output**. Diffusion models default to flat 2D scenes; if you don't explicitly demand "equirectangular projection," the result looks fine in a thumbnail but distorts brutally when wrapped onto a sphere — horizon bows, zenith pinches, the sun stretches into a smear. This skill encodes the prompt suffix and the import discipline that produces a usable sky on the first or second try.
19
+ The most common failure is **non-equirectangular output**. Image models default to flat scenes. Without an explicit "equirectangular projection", the result looks fine as a thumbnail but distorts when wrapped onto a sphere: the horizon bows, the zenith pinches, and the sun smears. The prompt suffix and import settings below give a usable sky in one or two tries.
20
20
 
21
21
  ## When to use
22
22
 
@@ -41,7 +41,7 @@ The single biggest failure mode is **non-equirectangular output**. Diffusion mod
41
41
  summer_search_assets(query="<vibe> sky panorama", assetType="2d_image", source="all")
42
42
  ```
43
43
 
44
- Polyhaven (`polyhaven.com/hdris`) hosts hundreds of free CC0 HDRIs that beat AI generation for realism and provide IBL data. For realistic exterior scenes, prefer Polyhaven; for stylized / fantasy / sci-fi, AI generation wins.
44
+ Polyhaven (`polyhaven.com/hdris`) hosts hundreds of free CC0 HDRIs. They look more realistic than generated skies and carry real HDR lighting data. Prefer Polyhaven for realistic exteriors; generate for stylized, fantasy or sci-fi skies.
45
45
 
46
46
  ### 2. Build the prompt — sky description + equirectangular suffix
47
47
 
@@ -60,7 +60,7 @@ Load-bearing phrases:
60
60
 
61
61
  ### 3. Generate, then fix the aspect yourself
62
62
 
63
- Equirectangular MUST be 2:1 (width = 2× height). **`summer_generate_image` cannot give you that.** The tool takes only `prompt`, `model`, `style`, `referenceImageUrl`, and `options` — there is no aspect or size argument, so every MCP image comes back at the server's 1:1 default. `aspectRatio` and `image_size` inside `options` are not recognized and are dropped without an error; the underlying provider does support 2:1-class aspect ratios, but nothing on this surface lets you request one.
63
+ Equirectangular MUST be 2:1 (width = 2× height). **`summer_generate_image` cannot give you that.** The tool takes only `prompt`, `model`, `style`, `referenceImageUrl`, `removeBackground` and `options`; there is no aspect or size argument, so every MCP image comes back at the server's 1:1 default. `aspectRatio` and `image_size` inside `options` are not recognized and are dropped without an error; the underlying provider does support 2:1-class aspect ratios, but nothing on this surface lets you request one.
64
64
 
65
65
  ```
66
66
  summer_generate_image(
@@ -101,9 +101,9 @@ In the import dock:
101
101
  - `Mipmaps: Enabled`.
102
102
  - `Compress: VRAM Compressed` for ship.
103
103
 
104
- ### 6. Wire into WorldEnvironment (3 lines)
104
+ ### 6. Wire into WorldEnvironment
105
105
 
106
- This is not three tool calls. `summer_set_resource_property` reaches exactly **one** level into a resource — it takes `scenePath`, `nodePath`, `resourceProperty`, `subProperty`, `value`, and there is no `"a:b:c"` colon-path form for walking Environment → Sky → SkyMaterial. Write the `Environment` (with its `Sky` and `PanoramaSkyMaterial` as sub-resources) as a `.tres`, then attach it in one property set:
106
+ `summer_set_resource_property` reaches exactly **one** level into a resource — it takes `scenePath`, `nodePath`, `resourceProperty`, `subProperty`, `value`, and there is no `"a:b:c"` colon-path form for walking Environment → Sky → SkyMaterial. Write the `Environment` (with its `Sky` and `PanoramaSkyMaterial` as sub-resources) as a `.tres`, then attach it in one property set:
107
107
 
108
108
  ```
109
109
  summer_write_file(
@@ -158,7 +158,6 @@ Then `summer_play` and look around. Sun in the right place? Seam invisible? Top/
158
158
  - **Tight features at zenith/nadir.** Anything in the top or bottom 10% of the image gets pinched. Bias toward soft, diffuse features there.
159
159
  - **Expecting HDR / IBL quality.** AI panoramas are 8-bit. If the user needs realistic environment lighting from the sky, point them at Polyhaven HDRIs (CC0). AI is for visual sky, not for lighting.
160
160
  - **Forgetting `Repeat: Disabled` on import.** Panoramas wrap once via the material; if `Repeat` is on, you can get duplicate-tile artifacts at the seam.
161
- - **Visible vertical seam on the wrap.** If left/right edges don't match, regenerate with seed bump or fix the seam in Photoshop/GIMP via the offset trick (offset by 50% horizontally → heal the new visible seam → offset back).
162
161
 
163
162
  ## Edge cases
164
163
 
@@ -180,9 +179,9 @@ summer_generate_image(
180
179
  )
181
180
  ```
182
181
 
183
- The dashboard is actually the *better* surface for this skill, not just the fallback: it exposes aspect ratio and a real negative prompt, which MCP does not. Tell the user to set 2:1 and a negative of `vertical seam, foreground, distorted, warped, characters, buildings`, then `summer_import_from_url` to `res://art/sky/<name>.png`, set `Repeat: Disabled`, and wire the WorldEnvironment.
182
+ The dashboard is the better surface for this skill: it exposes aspect ratio and a real negative prompt, which MCP does not. Tell the user to set 2:1 and a negative of `vertical seam, foreground, distorted, warped, characters, buildings`, then `summer_import_from_url` to `res://art/sky/<name>.png`, set `Repeat: Disabled`, and wire the WorldEnvironment.
184
183
 
185
- If MCP is offline entirely: Polyhaven (`polyhaven.com/hdris`) has hundreds of free CC0 HDRIs ready to drop into `PanoramaSkyMaterial`. Often a better choice than AI for realistic exteriors anyway.
184
+ If MCP is offline entirely: Polyhaven (`polyhaven.com/hdris`) has hundreds of free CC0 HDRIs ready to drop into `PanoramaSkyMaterial`, and often the better choice for realistic exteriors.
186
185
 
187
186
  ## Handoff
188
187
 
@@ -5,7 +5,7 @@ license: MIT
5
5
  compatibility: [Cursor, Claude Code, Windsurf, Codex]
6
6
  category: audio
7
7
  user-invocable: true
8
- allowed-tools: Read Grep Glob Write Edit summer_generate_audio summer_search_assets summer_import_from_url summer_add_node summer_set_prop summer_inspect_node summer_get_scene_tree
8
+ allowed-tools: Read Grep Glob Write Edit summer_generate_audio summer_search_assets summer_import_from_url summer_add_node summer_set_prop summer_instantiate_scene summer_inspect_node summer_get_scene_tree
9
9
  paths: ["audio/sfx/**", "scripts/**", "**/*.tscn"]
10
10
  ---
11
11
 
@@ -13,22 +13,22 @@ paths: ["audio/sfx/**", "scripts/**", "**/*.tscn"]
13
13
 
14
14
  ## Overview
15
15
 
16
- This skill produces one named SFX clip aligned with the audio bible's vocabulary, then wires it into the scene as an AudioStreamPlayer that plays once and frees its parent (or stops cleanly if it's a looped texture). The shape of the prompt is what makes the difference between "metal sword swing whoosh, dry, sharp, 250ms" returning the right clip on the first try and "epic battle sound" returning twenty seconds of musical noise.
16
+ This skill produces one named SFX clip that follows the audio bible's vocabulary, then wires it into the scene as an AudioStreamPlayer that plays once and frees itself (or stops cleanly if it is a short loop). The prompt shape decides the result: "metal sword swing whoosh, dry, sharp, 250ms" returns the right clip on the first try; "epic battle sound" returns twenty seconds of musical noise.
17
17
 
18
- ElevenLabs SFX (the `sound_effects` capability of `summer_generate_audio`) is *literal*. It treats the prompt as a description of a real sound, not as a vibe. Concrete material + action + intensity beats adjectives every time.
18
+ ElevenLabs SFX (the `sound_effects` capability of `summer_generate_audio`) is literal. It treats the prompt as a description of a real sound. Concrete material, action and intensity beat adjectives.
19
19
 
20
20
  ## When to use
21
21
 
22
22
  - One-shot SFX: footstep, swing, click, hit, impact, pickup, jump, land, door, breath.
23
- - Short loops < 2s: hum, drone snippet, rain texture (for very short looping ambients prefer `audio/ambient-bed`).
23
+ - Short loops < 2s: hum, drone snippet, rain texture (for longer looping ambience use `ambient-bed`).
24
24
  - Replacing a placeholder beep with something on-bible.
25
25
 
26
26
  ## When NOT to use
27
27
 
28
- - Music or musical stings → `audio/music-track`.
29
- - Long location ambience (>5s) → `audio/ambient-bed`.
30
- - Voice / dialogue → `audio/voice-line`.
31
- - Defining the *vocabulary* of SFX — that's `audio/audio-direction`. This skill executes against an existing bible.
28
+ - Music or musical stings → `music-track`.
29
+ - Long location ambience (>5s) → `ambient-bed`.
30
+ - Voice / dialogue → `voice-line`.
31
+ - Defining the *vocabulary* of SFX → `audio-direction`. This skill executes against an existing bible.
32
32
 
33
33
  ## Steps
34
34
 
@@ -46,7 +46,7 @@ The bible defines an SFX *class* (UI, Pickup positive, Damage, Footstep, Attack,
46
46
 
47
47
  ### 2. Search for an existing clip first
48
48
 
49
- Generation is metered. Reuse beats regenerate.
49
+ Generation uses credits. Reuse an existing clip when one fits.
50
50
 
51
51
  ```
52
52
  summer_search_assets(query="<class> <subject>", assetType="audio", source="all")
@@ -64,7 +64,7 @@ ElevenLabs SFX responds to literal sound descriptions. Pattern:
64
64
  <subject> <material> <action>, <intensity>, <character>, <duration cue>
65
65
  ```
66
66
 
67
- Working examples (these produce the right clip on the first try):
67
+ Working examples:
68
68
 
69
69
  | Goal | Prompt that works | Why |
70
70
  |---|---|---|
@@ -91,7 +91,7 @@ Prompts that DON'T work (and why):
91
91
 
92
92
  Show the prompt and the call before running:
93
93
 
94
- > Prompt: `metal sword swing whoosh, dry, sharp, 250ms`. Duration 0.5s (model floor). Model: ElevenLabs SFX. Cost: ~1 credit. Generate?
94
+ > Prompt: `metal sword swing whoosh, dry, sharp, 250ms`. Duration 0.5s (model floor). Model: ElevenLabs SFX. Generate?
95
95
 
96
96
  The `sound_effects` capability reads the description from **`text`**, not `prompt`. Passing `prompt` here is a 400 `text_required` — `prompt` is only for the `music` capability.
97
97
 
@@ -155,7 +155,7 @@ func _ready() -> void:
155
155
  play()
156
156
  ```
157
157
 
158
- Save it as a `.tscn`, then `summer_instantiate_scene(scenePath, parent, scene, name)` to place it. Note this only wires the node into a scene at author time — spawning one per event at the emitter's runtime position is a job for GDScript (`preload(...).instantiate()` + `add_child`), not for an MCP call. The node frees itself when the stream finishes — no leaks.
158
+ Save it as a `.tscn`, then `summer_instantiate_scene(scenePath, parent, scene, name)` to place it. That only places the node at author time. To spawn one per event at the emitter's position at runtime, use GDScript (`preload(...).instantiate()` + `add_child`). The node frees itself when the stream finishes.
159
159
 
160
160
  ### 8. Volume calibration
161
161
 
@@ -170,7 +170,7 @@ If it comes back too loud (rare): negative `volume_db`, or trim attack in an edi
170
170
  ### 9. Confirm in scene
171
171
 
172
172
  ```
173
- summer_inspect_node(path="/root/Game/Player/SwingSFX")
173
+ summer_inspect_node(path="Player/SwingSFX")
174
174
  ```
175
175
 
176
176
  Verify `stream`, `bus`, `volume_db`. Trigger it via `summer_play` if the user wants to hear it now.
@@ -199,7 +199,7 @@ Stinger event: short triumphant brass stinger, 1.5s, hall reverb
199
199
 
200
200
  - **Adjective-only prompts.** `epic`, `cool`, `realistic`, `professional` — meaningless to the model.
201
201
  - **Multiple events in one prompt.** Split into two generations.
202
- - **Looping a non-loop-clean clip.** Will click. Use `audio/ambient-bed` for actual loops.
202
+ - **Looping a non-loop-clean clip.** It clicks. Use `ambient-bed` for real loops.
203
203
  - **Skipping the bus.** Default bus is `Master`. SFX must route to the `SFX` bus or the mix breaks.
204
204
  - **Generating before searching.** Reuse before regenerate.
205
205
  - **Generating before reading the bible.** The clip will fight the rest of the audio.
@@ -230,13 +230,13 @@ After the SFX is wired:
230
230
  > SFX `sword_swing_01.wav` wired to `Player/SwingSFX` on the `SFX` bus. Next:
231
231
  > - Trigger it from your attack animation's `Call Method Track` → `play()`.
232
232
  > - Generate the parry / clash counterpart with `/sound-effect` again.
233
- > - For a full footstep system across surfaces, see `audio/footstep-systems`.
233
+ > - For footsteps across surfaces, generate one clip per material and switch on the floor's `physics_material` (see Edge cases).
234
234
 
235
235
  ## See also
236
236
 
237
- - `audio/audio-direction` — defines the vocabulary this skill obeys
238
- - `audio/ambient-bed` — long looping textures
239
- - `audio/music-track` — music
240
- - `audio/voice-line` — TTS
237
+ - `audio-direction` — defines the vocabulary this skill obeys
238
+ - `ambient-bed` — long looping textures
239
+ - `music-track` — music
240
+ - `voice-line` — TTS
241
241
  - `../../references/mcp-tools-reference/mcp-tools-reference.md`
242
242
  - `../../references/godot-version/godot-version.md` — Summer compatibility for audio nodes