summer-engine 3.8.0 → 4.2.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 (527) hide show
  1. package/.claude-plugin/marketplace.json +2 -13
  2. package/.claude-plugin/plugin.json +24 -22
  3. package/.codex-plugin/plugin.json +18 -22
  4. package/.cursor-plugin/plugin.json +8 -14
  5. package/.factory-plugin/plugin.json +6 -13
  6. package/AGENTS.md +19 -12
  7. package/CHANGELOG.md +133 -0
  8. package/GEMINI.md +3 -3
  9. package/README.md +118 -37
  10. package/assets/icon.png +0 -0
  11. package/commands/start.md +71 -0
  12. package/commands/summer.md +3 -2
  13. package/dist/cli/banner.js +3 -0
  14. package/dist/cli/commands/config.js +3 -2
  15. package/dist/cli/commands/create.js +12 -3
  16. package/dist/cli/commands/list.d.ts +5 -0
  17. package/dist/cli/commands/list.js +30 -13
  18. package/dist/cli/commands/login.d.ts +27 -0
  19. package/dist/cli/commands/login.js +58 -12
  20. package/dist/cli/commands/memory.js +6 -2
  21. package/dist/cli/commands/ops.d.ts +64 -0
  22. package/dist/cli/commands/ops.js +329 -0
  23. package/dist/cli/commands/setup.d.ts +4 -0
  24. package/dist/cli/commands/setup.js +254 -26
  25. package/dist/cli/commands/skills.js +28 -11
  26. package/dist/cli/commands/status.d.ts +26 -0
  27. package/dist/cli/commands/status.js +36 -21
  28. package/dist/cli/index.js +7 -0
  29. package/dist/core/agent-host.d.ts +65 -0
  30. package/dist/core/agent-host.js +193 -0
  31. package/dist/core/capabilities/agent-playbook.d.ts +3 -0
  32. package/dist/core/capabilities/agent-playbook.js +54 -2
  33. package/dist/core/capabilities/apps.d.ts +33 -10
  34. package/dist/core/capabilities/apps.js +25 -12
  35. package/dist/core/capabilities/audit/args.d.ts +6 -6
  36. package/dist/core/capabilities/doctor.d.ts +3 -0
  37. package/dist/core/capabilities/doctor.js +20 -15
  38. package/dist/core/capabilities/fabricate-mesh.d.ts +4 -4
  39. package/dist/core/capabilities/game-task-plan.d.ts +12 -6
  40. package/dist/core/capabilities/game-task-plan.js +80 -5
  41. package/dist/core/capabilities/hdri-import.d.ts +2 -2
  42. package/dist/core/capabilities/motion-generation.d.ts +2 -2
  43. package/dist/core/capabilities/motion-generation.js +2 -2
  44. package/dist/core/capabilities/navigation/open.d.ts +6 -2
  45. package/dist/core/capabilities/navigation/open.js +3 -0
  46. package/dist/core/capabilities/placement.d.ts +23 -23
  47. package/dist/core/capabilities/publish-build.js +2 -0
  48. package/dist/core/capabilities/runtime-control.d.ts +42 -42
  49. package/dist/core/capabilities/scene-script-target.d.ts +17 -0
  50. package/dist/core/capabilities/scene-script-target.js +70 -0
  51. package/dist/core/capabilities/seeing/args.d.ts +16 -16
  52. package/dist/core/capabilities/sfx-choices.d.ts +4 -0
  53. package/dist/core/capabilities/sfx-choices.js +13 -6
  54. package/dist/core/capabilities/tool-dispatch.d.ts +12 -3
  55. package/dist/core/capabilities/tool-dispatch.js +81 -46
  56. package/dist/core/capabilities/ui-control.d.ts +2 -2
  57. package/dist/core/capabilities/world-snapshot.d.ts +4 -4
  58. package/dist/core/embeddings.d.ts +2 -0
  59. package/dist/core/embeddings.js +1 -1
  60. package/dist/core/error-codes.d.ts +62 -0
  61. package/dist/core/error-codes.js +97 -0
  62. package/dist/core/format.d.ts +2 -0
  63. package/dist/core/format.js +2 -1
  64. package/dist/core/hosted-mcp.d.ts +22 -0
  65. package/dist/core/hosted-mcp.js +56 -1
  66. package/dist/core/library-read.js +5 -0
  67. package/dist/core/library-search.d.ts +2 -2
  68. package/dist/core/library-search.js +2 -1
  69. package/dist/core/oauth.js +4 -0
  70. package/dist/core/ops/areas.d.ts +11 -0
  71. package/dist/core/ops/areas.js +24 -0
  72. package/dist/core/ops/catalog.d.ts +45 -0
  73. package/dist/core/ops/catalog.js +157 -0
  74. package/dist/core/ops/cloud.d.ts +64 -0
  75. package/dist/core/ops/cloud.js +198 -0
  76. package/dist/core/ops/contract.d.ts +120 -0
  77. package/dist/core/ops/contract.js +134 -0
  78. package/dist/core/ops/engine-answer.d.ts +25 -0
  79. package/dist/core/ops/engine-answer.js +117 -0
  80. package/dist/core/ops/engine.d.ts +55 -0
  81. package/dist/core/ops/engine.js +649 -0
  82. package/dist/core/ops/public-catalog.d.ts +48 -0
  83. package/dist/core/ops/public-catalog.js +56 -0
  84. package/dist/core/ops/save-files.d.ts +78 -0
  85. package/dist/core/ops/save-files.js +419 -0
  86. package/dist/core/ops/search.d.ts +8 -0
  87. package/dist/core/ops/search.js +187 -0
  88. package/dist/core/skills-registry.d.ts +16 -1
  89. package/dist/core/skills-registry.js +35 -2
  90. package/dist/core/telemetry.d.ts +32 -0
  91. package/dist/core/telemetry.js +38 -10
  92. package/dist/core/tool-profiles.d.ts +25 -0
  93. package/dist/core/tool-profiles.js +41 -0
  94. package/dist/installer/agent-config.d.ts +17 -4
  95. package/dist/installer/agent-config.js +27 -6
  96. package/dist/installer/agent-table.d.ts +12 -0
  97. package/dist/installer/agent-table.js +33 -9
  98. package/dist/installer/cli-permissions.d.ts +65 -0
  99. package/dist/installer/cli-permissions.js +182 -0
  100. package/dist/installer/setup.d.ts +4 -0
  101. package/dist/installer/setup.js +12 -4
  102. package/dist/installer/skills-refresh.d.ts +29 -0
  103. package/dist/installer/skills-refresh.js +261 -0
  104. package/dist/installer/version-check.d.ts +51 -11
  105. package/dist/installer/version-check.js +147 -37
  106. package/dist/mcp/command.js +7 -0
  107. package/dist/mcp/hosted-mount.d.ts +27 -2
  108. package/dist/mcp/hosted-mount.js +53 -23
  109. package/dist/mcp/legacy-toolset.d.ts +27 -0
  110. package/dist/mcp/legacy-toolset.js +43 -0
  111. package/dist/mcp/ops-surface.d.ts +59 -0
  112. package/dist/mcp/ops-surface.js +453 -0
  113. package/dist/mcp/server.d.ts +45 -11
  114. package/dist/mcp/server.js +263 -89
  115. package/dist/mcp/tool-results.d.ts +26 -0
  116. package/dist/mcp/tool-results.js +81 -0
  117. package/dist/mcp/tool-surface.d.ts +65 -0
  118. package/dist/mcp/tool-surface.js +317 -0
  119. package/dist/mcp/tools/app-tools.js +9 -2
  120. package/dist/mcp/tools/asset-tools.js +55 -53
  121. package/dist/mcp/tools/audit-tools.js +21 -21
  122. package/dist/mcp/tools/debug-tools.js +6 -6
  123. package/dist/mcp/tools/fabricate-tools.js +6 -6
  124. package/dist/mcp/tools/generate-tools.js +76 -70
  125. package/dist/mcp/tools/project-tools.d.ts +9 -4
  126. package/dist/mcp/tools/project-tools.js +16 -10
  127. package/dist/mcp/tools/scene-tools.js +12 -23
  128. package/dist/mcp/tools/script-tools.js +9 -5
  129. package/dist/mcp/tools/with-engine.d.ts +6 -0
  130. package/dist/mcp/tools/with-engine.js +19 -0
  131. package/dist/project-memory/agent-instructions.d.ts +47 -0
  132. package/dist/project-memory/agent-instructions.js +226 -0
  133. package/gemini-extension.json +6 -13
  134. package/hooks/pre-commit-doctor.sh +5 -4
  135. package/hooks/session-start.sh +24 -28
  136. package/integrations/README.md +1 -1
  137. package/integrations/claude/README.md +6 -0
  138. package/integrations/claude/manifest-target.json +4 -0
  139. package/integrations/claude-desktop/README.md +1 -1
  140. package/integrations/copilot-jetbrains/README.md +1 -1
  141. package/integrations/gemini/README.md +11 -0
  142. package/integrations/junie/README.md +1 -1
  143. package/integrations/lm-studio/README.md +1 -1
  144. package/integrations/trae/README.md +1 -1
  145. package/integrations/visual-studio/README.md +1 -1
  146. package/integrations/windsurf/README.md +1 -1
  147. package/library/references/mcp-tools-reference/mcp-tools-reference.md +79 -51
  148. package/library/references/mcp-tools-reference/resource.yaml +1 -1
  149. package/library/references/product-map/resource.yaml +2 -2
  150. package/library/skills/3d-lighting/SKILL.md +69 -28
  151. package/library/skills/3d-lighting/resource.yaml +1 -1
  152. package/library/skills/README.md +121 -118
  153. package/library/skills/adaptive-music/SKILL.md +40 -23
  154. package/library/skills/adaptive-music/resource.yaml +1 -1
  155. package/library/skills/agent-playtesting/SKILL.md +23 -1
  156. package/library/skills/agent-playtesting/resource.yaml +1 -1
  157. package/library/skills/ai-characters-in-games/SKILL.md +16 -1
  158. package/library/skills/ai-characters-in-games/resource.yaml +1 -1
  159. package/library/skills/ambient-bed/SKILL.md +38 -13
  160. package/library/skills/ambient-bed/resource.yaml +1 -1
  161. package/library/skills/animated-loop/SKILL.md +60 -32
  162. package/library/skills/animated-loop/resource.yaml +1 -1
  163. package/library/skills/animation-tree/SKILL.md +27 -1
  164. package/library/skills/animation-tree/resource.yaml +1 -1
  165. package/library/skills/art-direction/SKILL.md +17 -3
  166. package/library/skills/art-direction/resource.yaml +1 -1
  167. package/library/skills/asset-strategy/SKILL.md +51 -4
  168. package/library/skills/asset-strategy/resource.yaml +2 -1
  169. package/library/skills/audio-direction/SKILL.md +26 -10
  170. package/library/skills/audio-direction/resource.yaml +1 -1
  171. package/library/skills/auto-fire-targeting/SKILL.md +15 -1
  172. package/library/skills/auto-fire-targeting/resource.yaml +1 -1
  173. package/library/skills/bounded-engine-runs/SKILL.md +1 -1
  174. package/library/skills/bounded-engine-runs/resource.yaml +1 -1
  175. package/library/skills/brainstorm-game/SKILL.md +14 -1
  176. package/library/skills/brainstorm-game/resource.yaml +1 -1
  177. package/library/skills/brainstorming/SKILL.md +1 -1
  178. package/library/skills/brainstorming/resource.yaml +1 -1
  179. package/library/skills/browse-templates/SKILL.md +11 -1
  180. package/library/skills/browse-templates/resource.yaml +1 -1
  181. package/library/skills/camera-rigs/SKILL.md +22 -2
  182. package/library/skills/camera-rigs/resource.yaml +1 -1
  183. package/library/skills/celeste-momentum-platforming/resource.yaml +1 -0
  184. package/library/skills/character-animation-wiring/SKILL.md +28 -4
  185. package/library/skills/character-animation-wiring/resource.yaml +1 -1
  186. package/library/skills/character-model/SKILL.md +83 -47
  187. package/library/skills/character-model/resource.yaml +1 -1
  188. package/library/skills/character-movement/SKILL.md +27 -3
  189. package/library/skills/character-movement/resource.yaml +1 -1
  190. package/library/skills/character-portrait/SKILL.md +39 -19
  191. package/library/skills/character-portrait/resource.yaml +1 -1
  192. package/library/skills/cinematic-cutscene/SKILL.md +79 -46
  193. package/library/skills/cinematic-cutscene/resource.yaml +1 -1
  194. package/library/skills/combat-basics/SKILL.md +20 -1
  195. package/library/skills/combat-basics/resource.yaml +1 -1
  196. package/library/skills/compatibility-renderer-traps/SKILL.md +12 -1
  197. package/library/skills/compatibility-renderer-traps/resource.yaml +1 -1
  198. package/library/skills/concept-art/SKILL.md +29 -12
  199. package/library/skills/concept-art/resource.yaml +1 -1
  200. package/library/skills/concept-to-level/SKILL.md +258 -0
  201. package/library/skills/concept-to-level/references/technical-rules.md +150 -0
  202. package/library/skills/concept-to-level/resource.yaml +44 -0
  203. package/library/skills/create-asset-sheet/SKILL.md +37 -13
  204. package/library/skills/create-asset-sheet/resource.yaml +1 -1
  205. package/library/skills/debug/SKILL.md +34 -2
  206. package/library/skills/debug/resource.yaml +1 -1
  207. package/library/skills/debugging-game-feel/SKILL.md +13 -1
  208. package/library/skills/debugging-game-feel/resource.yaml +1 -1
  209. package/library/skills/design-level/SKILL.md +40 -35
  210. package/library/skills/design-level/resource.yaml +1 -1
  211. package/library/skills/design-mechanic/SKILL.md +18 -1
  212. package/library/skills/design-mechanic/resource.yaml +1 -1
  213. package/library/skills/design-npc/SKILL.md +43 -24
  214. package/library/skills/design-npc/resource.yaml +1 -1
  215. package/library/skills/diagnosing-perf-regressions/SKILL.md +13 -1
  216. package/library/skills/diagnosing-perf-regressions/resource.yaml +1 -1
  217. package/library/skills/driving-the-editor-ui/SKILL.md +24 -1
  218. package/library/skills/driving-the-editor-ui/resource.yaml +1 -1
  219. package/library/skills/environment-kit/SKILL.md +43 -16
  220. package/library/skills/environment-kit/resource.yaml +1 -1
  221. package/library/skills/export-and-ship/SKILL.md +29 -6
  222. package/library/skills/export-and-ship/resource.yaml +1 -1
  223. package/library/skills/fabricating-assets/SKILL.md +30 -7
  224. package/library/skills/fabricating-assets/resource.yaml +3 -3
  225. package/library/skills/facial-and-lipsync/SKILL.md +36 -15
  226. package/library/skills/facial-and-lipsync/resource.yaml +1 -1
  227. package/library/skills/fps-controller/SKILL.md +50 -41
  228. package/library/skills/fps-controller/resource.yaml +1 -1
  229. package/library/skills/game-feel/SKILL.md +34 -8
  230. package/library/skills/game-feel/resource.yaml +1 -1
  231. package/library/skills/gameskill/SKILL.md +15 -4
  232. package/library/skills/gameskill/resource.yaml +1 -1
  233. package/library/skills/gdscript-patterns/SKILL.md +16 -1
  234. package/library/skills/gdscript-patterns/resource.yaml +1 -1
  235. package/library/skills/generate-motion/SKILL.md +51 -21
  236. package/library/skills/generate-motion/resource.yaml +1 -1
  237. package/library/skills/godogen-visual-proof-game-generation/SKILL.md +18 -1
  238. package/library/skills/godogen-visual-proof-game-generation/resource.yaml +1 -0
  239. package/library/skills/grow-analytics/SKILL.md +13 -3
  240. package/library/skills/grow-analytics/resource.yaml +1 -1
  241. package/library/skills/headless-scripting/SKILL.md +14 -1
  242. package/library/skills/headless-scripting/resource.yaml +1 -1
  243. package/library/skills/in-game-purchases/SKILL.md +12 -1
  244. package/library/skills/in-game-purchases/resource.yaml +1 -1
  245. package/library/skills/instantiate-asset-pack/SKILL.md +19 -2
  246. package/library/skills/instantiate-asset-pack/resource.yaml +1 -1
  247. package/library/skills/lumera-single-image-scene-reconstruction/resource.yaml +1 -0
  248. package/library/skills/make-game/SKILL.md +33 -4
  249. package/library/skills/make-game/references/2d-platformer.md +1 -1
  250. package/library/skills/make-game/references/3d-fps.md +1 -1
  251. package/library/skills/make-game/references/3d-horror.md +1 -1
  252. package/library/skills/make-game/references/3d-third-person.md +2 -2
  253. package/library/skills/make-game/resource.yaml +1 -1
  254. package/library/skills/multiplayer/SKILL.md +13 -1
  255. package/library/skills/multiplayer/resource.yaml +1 -1
  256. package/library/skills/multiplayer-movement/SKILL.md +19 -1
  257. package/library/skills/multiplayer-movement/resource.yaml +1 -1
  258. package/library/skills/multiplayer-project/SKILL.md +18 -1
  259. package/library/skills/multiplayer-project/resource.yaml +1 -1
  260. package/library/skills/multiplayer-publish/SKILL.md +25 -7
  261. package/library/skills/multiplayer-publish/resource.yaml +3 -3
  262. package/library/skills/multiplayer-state/SKILL.md +17 -1
  263. package/library/skills/multiplayer-state/resource.yaml +1 -1
  264. package/library/skills/multiplayer-testing/SKILL.md +16 -1
  265. package/library/skills/multiplayer-testing/resource.yaml +1 -1
  266. package/library/skills/music-track/SKILL.md +38 -13
  267. package/library/skills/music-track/resource.yaml +1 -1
  268. package/library/skills/navigate-summer/SKILL.md +26 -9
  269. package/library/skills/navigate-summer/resource.yaml +1 -1
  270. package/library/skills/new-project/SKILL.md +12 -1
  271. package/library/skills/new-project/resource.yaml +1 -1
  272. package/library/skills/organic-model/SKILL.md +48 -18
  273. package/library/skills/organic-model/resource.yaml +1 -1
  274. package/library/skills/pixel-art/SKILL.md +42 -23
  275. package/library/skills/pixel-art/resource.yaml +1 -1
  276. package/library/skills/play/SKILL.md +19 -1
  277. package/library/skills/play/resource.yaml +1 -1
  278. package/library/skills/playtesting-a-feature/SKILL.md +24 -1
  279. package/library/skills/playtesting-a-feature/resource.yaml +1 -1
  280. package/library/skills/procedural-animation/SKILL.md +38 -16
  281. package/library/skills/procedural-animation/resource.yaml +1 -1
  282. package/library/skills/prop-model/SKILL.md +48 -19
  283. package/library/skills/prop-model/resource.yaml +1 -1
  284. package/library/skills/psx-retro-rendering/resource.yaml +1 -0
  285. package/library/skills/publish-your-game/SKILL.md +43 -6
  286. package/library/skills/publish-your-game/resource.yaml +3 -3
  287. package/library/skills/realtime-wet-surfaces/resource.yaml +1 -0
  288. package/library/skills/release-readiness/SKILL.md +13 -1
  289. package/library/skills/release-readiness/resource.yaml +1 -1
  290. package/library/skills/remote-deploy/SKILL.md +15 -1
  291. package/library/skills/remote-deploy/resource.yaml +1 -1
  292. package/library/skills/retarget/SKILL.md +43 -20
  293. package/library/skills/retarget/resource.yaml +1 -1
  294. package/library/skills/running-in-the-cloud/SKILL.md +11 -1
  295. package/library/skills/running-in-the-cloud/resource.yaml +1 -1
  296. package/library/skills/save-load/SKILL.md +16 -1
  297. package/library/skills/save-load/resource.yaml +1 -1
  298. package/library/skills/scene-composition/SKILL.md +18 -1
  299. package/library/skills/scene-composition/resource.yaml +1 -1
  300. package/library/skills/scene-hierarchy-design/SKILL.md +26 -2
  301. package/library/skills/scene-hierarchy-design/resource.yaml +1 -1
  302. package/library/skills/scene-scripting/SKILL.md +96 -636
  303. package/library/skills/scene-scripting/references/ctx-api.md +184 -0
  304. package/library/skills/scene-scripting/references/recipes-2d-ui.md +193 -0
  305. package/library/skills/scene-scripting/references/recipes-3d.md +280 -0
  306. package/library/skills/scene-scripting/resource.yaml +4 -4
  307. package/library/skills/scene-to-level/SKILL.md +24 -2
  308. package/library/skills/scene-to-level/resource.yaml +1 -1
  309. package/library/skills/skill-create/resource.yaml +1 -0
  310. package/library/skills/skill-improve/resource.yaml +1 -0
  311. package/library/skills/skill-test/SKILL.md +12 -2
  312. package/library/skills/skill-test/resource.yaml +1 -0
  313. package/library/skills/skintokens-auto-rigging/resource.yaml +1 -0
  314. package/library/skills/skybox-panorama/SKILL.md +47 -21
  315. package/library/skills/skybox-panorama/resource.yaml +1 -1
  316. package/library/skills/sound-effect/SKILL.md +52 -20
  317. package/library/skills/sound-effect/resource.yaml +1 -1
  318. package/library/skills/spatial-placement/SKILL.md +44 -9
  319. package/library/skills/spatial-placement/resource.yaml +1 -1
  320. package/library/skills/sprite-sheet/SKILL.md +55 -27
  321. package/library/skills/sprite-sheet/resource.yaml +1 -1
  322. package/library/skills/store-art/SKILL.md +14 -3
  323. package/library/skills/store-art/resource.yaml +2 -2
  324. package/library/skills/store-listing/SKILL.md +13 -3
  325. package/library/skills/store-listing/resource.yaml +2 -2
  326. package/library/skills/summer-analytics/SKILL.md +22 -5
  327. package/library/skills/summer-analytics/resource.yaml +2 -2
  328. package/library/skills/summer-apps/SKILL.md +77 -32
  329. package/library/skills/summer-apps/manifest.md +1 -1
  330. package/library/skills/summer-apps/minimal-app.md +7 -7
  331. package/library/skills/summer-apps/resource.yaml +1 -1
  332. package/library/skills/summer-apps/sdk-reference.md +5 -5
  333. package/library/skills/summer-apps-design/SKILL.md +1 -1
  334. package/library/skills/summer-apps-design/resource.yaml +1 -1
  335. package/library/skills/summer-assets/SKILL.md +86 -0
  336. package/library/skills/summer-assets/resource.yaml +34 -0
  337. package/library/skills/summer-cli/SKILL.md +133 -0
  338. package/library/skills/summer-cli/resource.yaml +31 -0
  339. package/library/skills/summer-friends/SKILL.md +14 -0
  340. package/library/skills/summer-leaderboards/SKILL.md +16 -0
  341. package/library/skills/summer-match-results/SKILL.md +17 -0
  342. package/library/skills/summer-matchmaking/SKILL.md +17 -0
  343. package/library/skills/summer-parties/SKILL.md +14 -0
  344. package/library/skills/summer-player-data/SKILL.md +14 -0
  345. package/library/skills/summer-store/SKILL.md +16 -1
  346. package/library/skills/summer-world-chat/SKILL.md +14 -0
  347. package/library/skills/summer-world-saves/SKILL.md +14 -0
  348. package/library/skills/text-to-motion/SKILL.md +45 -23
  349. package/library/skills/text-to-motion/prompts-and-controls.md +5 -5
  350. package/library/skills/text-to-motion/resource.yaml +1 -1
  351. package/library/skills/text-to-motion/rigging-for-text-motion.md +2 -2
  352. package/library/skills/tileable-texture/SKILL.md +37 -15
  353. package/library/skills/tileable-texture/resource.yaml +1 -1
  354. package/library/skills/trailer-shot/SKILL.md +46 -24
  355. package/library/skills/trailer-shot/resource.yaml +1 -1
  356. package/library/skills/tune-performance/SKILL.md +32 -6
  357. package/library/skills/tune-performance/resource.yaml +1 -1
  358. package/library/skills/ui-basics/SKILL.md +55 -36
  359. package/library/skills/ui-basics/resource.yaml +1 -1
  360. package/library/skills/ui-graphics/SKILL.md +64 -38
  361. package/library/skills/ui-graphics/resource.yaml +1 -1
  362. package/library/skills/use-widget-asset/SKILL.md +15 -1
  363. package/library/skills/use-widget-asset/resource.yaml +1 -1
  364. package/library/skills/using-summer/SKILL.md +32 -5
  365. package/library/skills/using-summer/resource.yaml +3 -2
  366. package/library/skills/vehicle-model/SKILL.md +92 -57
  367. package/library/skills/vehicle-model/resource.yaml +1 -1
  368. package/library/skills/verification-before-completion/SKILL.md +1 -1
  369. package/library/skills/verification-before-completion/resource.yaml +1 -1
  370. package/library/skills/verifying-scenes/SKILL.md +31 -2
  371. package/library/skills/verifying-scenes/resource.yaml +1 -1
  372. package/library/skills/vfx-dissolve/SKILL.md +21 -2
  373. package/library/skills/vfx-dissolve/resource.yaml +1 -1
  374. package/library/skills/vfx-fire/SKILL.md +41 -41
  375. package/library/skills/vfx-fire/resource.yaml +1 -1
  376. package/library/skills/vfx-hit-spark/SKILL.md +24 -1
  377. package/library/skills/vfx-hit-spark/resource.yaml +1 -1
  378. package/library/skills/vfx-lightning/SKILL.md +30 -16
  379. package/library/skills/vfx-lightning/resource.yaml +1 -1
  380. package/library/skills/vfx-magic-glow/SKILL.md +46 -32
  381. package/library/skills/vfx-magic-glow/resource.yaml +1 -1
  382. package/library/skills/vfx-muzzle-flash/SKILL.md +43 -35
  383. package/library/skills/vfx-muzzle-flash/resource.yaml +1 -1
  384. package/library/skills/vfx-smoke/SKILL.md +39 -31
  385. package/library/skills/vfx-smoke/resource.yaml +1 -1
  386. package/library/skills/vfx-water-ripple/SKILL.md +35 -31
  387. package/library/skills/vfx-water-ripple/resource.yaml +1 -1
  388. package/library/skills/voice-line/SKILL.md +87 -40
  389. package/library/skills/voice-line/resource.yaml +1 -1
  390. package/library/skills/web-and-touch-input/SKILL.md +20 -1
  391. package/library/skills/web-and-touch-input/resource.yaml +1 -1
  392. package/library/skills/web-compatibility-look/SKILL.md +21 -1
  393. package/library/skills/web-compatibility-look/resource.yaml +1 -1
  394. package/library/skills/world-building-3d/SKILL.md +29 -1
  395. package/library/skills/world-building-3d/resource.yaml +1 -1
  396. package/library/skills/writing-skills/resource.yaml +1 -0
  397. package/library/tools/add-node/GUIDE.md +14 -0
  398. package/library/tools/align-distribute-3d/GUIDE.md +7 -0
  399. package/library/tools/app-call/resource.yaml +1 -1
  400. package/library/tools/app-guide/resource.yaml +2 -2
  401. package/library/tools/app-page/resource.yaml +1 -1
  402. package/library/tools/app-screenshot/resource.yaml +19 -1
  403. package/library/tools/app-tools/resource.yaml +1 -1
  404. package/library/tools/attach-to-surface/GUIDE.md +15 -0
  405. package/library/tools/batch/GUIDE.md +27 -0
  406. package/library/tools/camera-bookmark/GUIDE.md +12 -0
  407. package/library/tools/capture-gameplay/GUIDE.md +3 -0
  408. package/library/tools/capture-gameplay/resource.yaml +3 -3
  409. package/library/tools/check-job/resource.yaml +1 -1
  410. package/library/tools/clear-console/GUIDE.md +3 -0
  411. package/library/tools/connect-ports/GUIDE.md +9 -0
  412. package/library/tools/connect-signal/GUIDE.md +14 -0
  413. package/library/tools/create-debug-report/GUIDE.md +10 -0
  414. package/library/tools/create-scene/GUIDE.md +10 -0
  415. package/library/tools/debug-views/GUIDE.md +7 -0
  416. package/library/tools/enable-plugin/GUIDE.md +3 -0
  417. package/library/tools/export-game/GUIDE.md +3 -0
  418. package/library/tools/export-game/resource.yaml +3 -3
  419. package/library/tools/export-templates/GUIDE.md +3 -0
  420. package/library/tools/fabricate-3d/GUIDE.md +19 -0
  421. package/library/tools/frame-nodes/GUIDE.md +9 -0
  422. package/library/tools/frame-shot/GUIDE.md +9 -0
  423. package/library/tools/game-control/GUIDE.md +9 -0
  424. package/library/tools/game-input/GUIDE.md +9 -0
  425. package/library/tools/game-probe/GUIDE.md +9 -0
  426. package/library/tools/generate-3d/resource.yaml +3 -3
  427. package/library/tools/generate-motion/resource.yaml +2 -2
  428. package/library/tools/get-console/GUIDE.md +9 -0
  429. package/library/tools/get-console/resource.yaml +5 -0
  430. package/library/tools/get-debugger-errors/GUIDE.md +7 -0
  431. package/library/tools/get-debugger-errors/resource.yaml +5 -0
  432. package/library/tools/get-debugger-warnings/GUIDE.md +7 -0
  433. package/library/tools/get-debugger-warnings/resource.yaml +5 -0
  434. package/library/tools/get-diagnostics/GUIDE.md +13 -0
  435. package/library/tools/get-project-context/GUIDE.md +25 -0
  436. package/library/tools/get-runtime-tree/GUIDE.md +7 -0
  437. package/library/tools/get-runtime-tree/resource.yaml +5 -0
  438. package/library/tools/get-scene-tree/GUIDE.md +11 -0
  439. package/library/tools/get-scene-tree/resource.yaml +5 -0
  440. package/library/tools/get-script-errors/GUIDE.md +5 -0
  441. package/library/tools/grep/GUIDE.md +11 -0
  442. package/library/tools/import-asset/GUIDE.md +8 -0
  443. package/library/tools/import-asset-by-id/GUIDE.md +12 -0
  444. package/library/tools/import-from-url/GUIDE.md +10 -0
  445. package/library/tools/import-from-url-batch/GUIDE.md +3 -0
  446. package/library/tools/import-hdri/GUIDE.md +16 -0
  447. package/library/tools/input-map-bind/GUIDE.md +11 -0
  448. package/library/tools/inspect-asset/GUIDE.md +14 -0
  449. package/library/tools/inspect-asset/resource.yaml +5 -0
  450. package/library/tools/inspect-node/GUIDE.md +11 -0
  451. package/library/tools/inspect-node/resource.yaml +5 -0
  452. package/library/tools/inspect-resource/GUIDE.md +7 -0
  453. package/library/tools/inspect-resource/resource.yaml +5 -0
  454. package/library/tools/inspect-runtime-node/GUIDE.md +7 -0
  455. package/library/tools/inspect-runtime-node/resource.yaml +5 -0
  456. package/library/tools/instantiate-scene/GUIDE.md +12 -0
  457. package/library/tools/is-running/GUIDE.md +3 -0
  458. package/library/tools/measure/GUIDE.md +8 -0
  459. package/library/tools/navigation-probe/GUIDE.md +9 -0
  460. package/library/tools/open/resource.yaml +2 -2
  461. package/library/tools/open-main-scene/GUIDE.md +6 -0
  462. package/library/tools/open-scene/GUIDE.md +8 -0
  463. package/library/tools/place-adjacent/GUIDE.md +7 -0
  464. package/library/tools/play/GUIDE.md +13 -0
  465. package/library/tools/project-setting/GUIDE.md +9 -0
  466. package/library/tools/publish-build/resource.yaml +6 -6
  467. package/library/tools/raycast/GUIDE.md +7 -0
  468. package/library/tools/read-file/GUIDE.md +10 -0
  469. package/library/tools/read-library/resource.yaml +5 -0
  470. package/library/tools/recent-events/GUIDE.md +7 -0
  471. package/library/tools/remove-node/GUIDE.md +3 -0
  472. package/library/tools/repeat-along/GUIDE.md +5 -0
  473. package/library/tools/replace-node/GUIDE.md +9 -0
  474. package/library/tools/replace-text/GUIDE.md +5 -0
  475. package/library/tools/run-editor-script/GUIDE.md +16 -0
  476. package/library/tools/run-script/GUIDE.md +30 -0
  477. package/library/tools/run-script/resource.yaml +6 -3
  478. package/library/tools/runtime-animate/GUIDE.md +7 -0
  479. package/library/tools/runtime-call/GUIDE.md +7 -0
  480. package/library/tools/runtime-set/GUIDE.md +9 -0
  481. package/library/tools/runtime-spawn/GUIDE.md +9 -0
  482. package/library/tools/save-scene/GUIDE.md +3 -0
  483. package/library/tools/scene-audit/GUIDE.md +29 -0
  484. package/library/tools/screenshot/GUIDE.md +17 -0
  485. package/library/tools/select-node/GUIDE.md +3 -0
  486. package/library/tools/set-prop/GUIDE.md +23 -0
  487. package/library/tools/set-resource-property/GUIDE.md +8 -0
  488. package/library/tools/shot-sheet/GUIDE.md +7 -0
  489. package/library/tools/snap-to-surface/GUIDE.md +17 -0
  490. package/library/tools/snapshot-diff/GUIDE.md +7 -0
  491. package/library/tools/starcast/GUIDE.md +12 -0
  492. package/library/tools/stop/GUIDE.md +3 -0
  493. package/library/tools/test-placement/GUIDE.md +7 -0
  494. package/library/tools/ui-actions/GUIDE.md +12 -0
  495. package/library/tools/ui-activate/GUIDE.md +11 -0
  496. package/library/tools/ui-screenshot/GUIDE.md +9 -0
  497. package/library/tools/ui-tree/GUIDE.md +10 -0
  498. package/library/tools/wait-for-event/GUIDE.md +11 -0
  499. package/library/tools/world-snapshot/GUIDE.md +9 -0
  500. package/library/tools/write-file/GUIDE.md +5 -0
  501. package/library/tools/zoom/GUIDE.md +5 -0
  502. package/package.json +8 -5
  503. package/registry/generated/counts.json +2 -2
  504. package/registry/generated/gemini-extension.json +6 -13
  505. package/registry/generated/index.json +482 -349
  506. package/registry/generated/marketplace.claude.json +2 -13
  507. package/registry/generated/plugin.claude-directory.json +168 -0
  508. package/registry/generated/plugin.claude.json +24 -22
  509. package/registry/generated/plugin.codex.json +18 -22
  510. package/registry/generated/plugin.cursor.json +8 -14
  511. package/registry/generated/plugin.factory.json +6 -13
  512. package/registry/generated/server.json +43 -0
  513. package/registry/generated/skills-index.md +121 -118
  514. package/registry/generated/skills-registry.json +167 -115
  515. package/registry/operations/fixtures/invalid-deprecated-without-replacement.json +60 -0
  516. package/registry/operations/fixtures/invalid-name.json +60 -0
  517. package/registry/operations/fixtures/invalid-publish-without-owner.json +82 -0
  518. package/registry/operations/fixtures/invalid-spend-without-estimate.json +42 -0
  519. package/registry/operations/fixtures/invalid-unknown-field.json +61 -0
  520. package/registry/operations/fixtures/valid-player-facing.json +82 -0
  521. package/registry/operations/fixtures/valid-read.json +60 -0
  522. package/registry/operations/fixtures/valid-spend.json +43 -0
  523. package/registry/operations/legacy-names.json +1241 -0
  524. package/registry/operations/public-catalog.json +33160 -0
  525. package/registry/schemas/operation.schema.json +318 -0
  526. package/registry/schemas/skill.schema.json +4 -0
  527. package/CLAUDE.md +0 -7
@@ -1,11 +1,11 @@
1
1
  ---
2
2
  name: audio-direction
3
- description: "Define the game's sonic identity — music style, instruments, SFX vocabulary, dynamic music plan — output as an audio bible at .summer/audio-bible.md."
3
+ description: "Define the game's sound (music style, SFX vocabulary, dynamic music) as .summer/audio-bible.md."
4
4
  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_get_project_context summer_get_scene_tree summer_inspect_node summer_add_node summer_project_setting summer_generate_audio
8
+ allowed-tools: Read Grep Glob Write Edit summer_get_project_context summer_get_scene_tree summer_inspect_node summer_add_node summer_project_setting summer_assets_generate_audio summer_call
9
9
  paths: [".summer/**", "project.godot", "**/*.tscn", "audio/**"]
10
10
  ---
11
11
 
@@ -206,9 +206,9 @@ Ask:
206
206
  If the user wants to start generating, propose 3-5 SFX seeds aligned with the vocabulary. These are starting points, not finals. Generate them with the `sound-effect` skill: the first sound effect in a chat starts with its question (three versions from three models, picked by ear in Summer Studio), and its prompt shape is the one that tested well.
207
207
 
208
208
  ```
209
- summer_generate_audio(capability="sound_effects", text="Foley one-shot: a fingertip taps a small wooden button, soft woody click, no tail, close-mic, dry, no reverb, no music, no voices.", durationSeconds=0.5)
210
- summer_generate_audio(capability="sound_effects", text="Foley one-shot: a small gold coin drops onto a wooden table, bright metallic ting with a short ring, close-mic, dry, no music, no voices.", durationSeconds=0.5)
211
- summer_generate_audio(capability="sound_effects", text="Foley one-shot: a fist hits a padded leather vest, low-mid thump, no tail, close-mic, dry, no reverb, no music, no voices.", durationSeconds=0.5)
209
+ assets.generate_audio({ capability: "sound_effects", text: "Foley one-shot: a fingertip taps a small wooden button, soft woody click, no tail, close-mic, dry, no reverb, no music, no voices.", durationSeconds: 0.5 })
210
+ assets.generate_audio({ capability: "sound_effects", text: "Foley one-shot: a small gold coin drops onto a wooden table, bright metallic ting with a short ring, close-mic, dry, no music, no voices.", durationSeconds: 0.5 })
211
+ assets.generate_audio({ capability: "sound_effects", text: "Foley one-shot: a fist hits a padded leather vest, low-mid thump, no tail, close-mic, dry, no reverb, no music, no voices.", durationSeconds: 0.5 })
212
212
  ```
213
213
 
214
214
  `capability` is required; `sound_effects` reads from `text` (not `prompt`), and the length argument is `durationSeconds` (not `duration`) with a floor of 0.5 s (1 s for Stable Audio 3 SFX). Leave out `modelId` so the person's approved default model runs. Ask for the character you want inside the text and let the player only use the front of the clip — you cannot request 80 ms.
@@ -239,11 +239,11 @@ End with:
239
239
  | Pure sine "ding" for pickup | Reads as cheap mobile game. Use a major-third interval with character. |
240
240
  | Same footstep sample for all surfaces | Players hear footsteps constantly; material-aware steps carry much of the perceived audio quality. |
241
241
  | No master ceiling / true peak | Audio clips on console builds without `-1 dBTP` ceiling. Always set it. |
242
- | Assuming SetResourceProperty fails silently on inline sub_resources | It does not — inline targets work, and the structural failures (`node not found`, `property is not a resource`, `resource is null`) are explicit errors. What *is* silent on current engines is a bad value shape: a JSON object instead of an engine literal string, a misspelled `subProperty`, or a wrong-typed value returns `ok:true` yet no-ops or coerces destructively. Pass class names and literal strings, and confirm in the saved `.tres`/`.tscn`, never from `ok` alone. See `../../references/mcp-tools-reference/mcp-tools-reference.md`. |
242
+ | Assuming SetResourceProperty fails silently on inline sub_resources | It does not — inline targets work, and the structural failures (`node not found`, `property is not a resource`, `resource is null`) are explicit errors. What *is* silent on current engines is a bad value shape: a JSON object instead of an engine literal string, a misspelled `subProperty`, or a wrong-typed value returns `ok:true` yet no-ops or coerces destructively. Pass class names and literal strings, and confirm in the saved `.tres`/`.tscn`, never from `ok` alone. See `summer_docs_read` id `reference/mcp-tools-reference`. |
243
243
 
244
244
  ## Collaborative protocol
245
245
 
246
- 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/collaborative-protocol.md`.
246
+ 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 `summer_docs_read` id `reference/collaborative-protocol`.
247
247
 
248
248
  ## Want a working starter?
249
249
 
@@ -251,11 +251,27 @@ No template — this is a workflow that produces the bible the rest of the proje
251
251
 
252
252
  ## See also
253
253
 
254
- - `../../references/collaborative-protocol/collaborative-protocol.md`
255
- - `../../references/godot-version/godot-version.md` — Summer compatibility and
254
+ - `summer_docs_read` id `reference/collaborative-protocol`
255
+ - `summer_docs_read` id `reference/godot-version` — Summer compatibility and
256
256
  version-sensitive audio API notes
257
- - `../../references/mcp-tools-reference/mcp-tools-reference.md`
257
+ - `summer_docs_read` id `reference/mcp-tools-reference`
258
258
  - `brainstorm-game` — produces the brief that anchors the bible
259
259
  - `art-direction` — the visual counterpart; audio must rhyme with it
260
260
  - `adaptive-music` — implements the dynamic music plan
261
261
  - `sound-effect`, `music-track`, `ambient-bed`, `voice-line` — generate the audio the bible describes
262
+
263
+ <!-- shell-commands: generated from the operation catalog by npm run generate:registry; do not edit by hand -->
264
+ ## From a shell
265
+
266
+ No Summer MCP tools in this session? Run each one as a command; when `summer --version` is missing or below 4.0, use `npx -y summer-engine@latest` in place of `summer`. Fields are flags in kebab-case (`--scene-path res://main.tscn`) or one `--input '<json>'`, and `summer ops describe <op>` prints the exact input. The `summer-cli` skill has the rest.
267
+
268
+ | In this skill | Command |
269
+ |---|---|
270
+ | `summer_assets_generate_audio` | `summer assets generate-audio` |
271
+ | `summer_docs_read` | `summer docs read` |
272
+ | `summer_add_node` | `summer engine add-node` |
273
+ | `summer_get_project_context` | `summer engine get-project-context` |
274
+ | `summer_get_scene_tree` | `summer engine get-scene-tree` |
275
+ | `summer_inspect_node` | `summer engine inspect-node` |
276
+ | `summer_project_setting` | `summer engine project-setting` |
277
+ <!-- /shell-commands -->
@@ -1,7 +1,7 @@
1
1
  id: skill/audio-direction
2
2
  kind: skill
3
3
  version: 1.0.7
4
- summary: Define the game's sonic identity — music style, instruments, SFX vocabulary, dynamic music plan — output as an audio bible at .summer/audio-bible.md.
4
+ summary: "Define the game's sound (music style, SFX vocabulary, dynamic music) as .summer/audio-bible.md."
5
5
  use_when:
6
6
  - defining the sonic identity — music style, instruments, SFX vocabulary, dynamic music plan
7
7
  - starting audio work with no audio bible, or soundtrack and SFX requests keep drifting in style
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: auto-fire-targeting
3
- description: "Design or fix auto-fire weapon targeting (survivors, top-down ARPG, tower defense) — the pending-damage pattern that prevents over-commit and overkill."
3
+ description: "Fix auto-fire targeting (survivors, ARPG, tower defense) with pending damage to stop overkill."
4
4
  license: MIT
5
5
  compatibility: [Cursor, Claude Code, Windsurf, Codex]
6
6
  category: gameplay-mechanics
@@ -194,3 +194,17 @@ Do **not** reach for `SimulateInput` here. It is only reachable from the
194
194
  in-editor chat bridge; an MCP or CLI caller gets
195
195
  `{ok: false, failure_reason: "unsupported_transport"}` back. Drive input from
196
196
  inside the probe with `press()` / `key()` instead.
197
+
198
+ <!-- shell-commands: generated from the operation catalog by npm run generate:registry; do not edit by hand -->
199
+ ## From a shell
200
+
201
+ No Summer MCP tools in this session? Run each one as a command; when `summer --version` is missing or below 4.0, use `npx -y summer-engine@latest` in place of `summer`. Fields are flags in kebab-case (`--scene-path res://main.tscn`) or one `--input '<json>'`, and `summer ops describe <op>` prints the exact input. The `summer-cli` skill has the rest.
202
+
203
+ | In this skill | Command |
204
+ |---|---|
205
+ | `summer_batch` | `summer engine batch` |
206
+ | `summer_game_probe` | `summer engine game-probe` |
207
+ | `summer_get_diagnostics` | `summer engine get-diagnostics` |
208
+ | `summer_inspect_node` | `summer engine inspect-node` |
209
+ | `summer_inspect_runtime_node` | `summer engine inspect-runtime-node` |
210
+ <!-- /shell-commands -->
@@ -1,7 +1,7 @@
1
1
  id: skill/auto-fire-targeting
2
2
  kind: skill
3
3
  version: 1.0.0
4
- summary: Design or fix auto-fire weapon targeting (survivors, top-down ARPG, tower defense) — the pending-damage pattern that prevents over-commit and overkill.
4
+ summary: "Fix auto-fire targeting (survivors, ARPG, tower defense) with pending damage to stop overkill."
5
5
  use_when:
6
6
  - designing or fixing the targeting system for an auto-fire weapon (survivors-genre, top-down ARPG, tower-defense)
7
7
  - bullet flight time longer than fire rate causes wasted bullets or overkill
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: bounded-engine-runs
3
- description: "Run Summer headless or offscreen safely from an agent: time limits, one engine per project, muted runs, import passes, tests that fail on crashes."
3
+ description: "Run Summer headless or offscreen safely: time limits, one engine per project, import passes, crash checks."
4
4
  license: MIT
5
5
  compatibility: [Cursor, Claude Code, Windsurf, Codex]
6
6
  category: workflow
@@ -1,7 +1,7 @@
1
1
  id: skill/bounded-engine-runs
2
2
  kind: skill
3
3
  version: 1.0.0
4
- summary: "Run Summer headless or offscreen safely from an agent: time limits, one engine per project, muted runs, import passes, tests that fail on crashes."
4
+ summary: "Run Summer headless or offscreen safely: time limits, one engine per project, import passes, crash checks."
5
5
  use_when:
6
6
  - running the engine from a shell or agent for tests, imports, captures or bots
7
7
  - several agents or processes share one project
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: brainstorm-game
3
- description: "Turn a vague idea into a buildable plan — genre, scope, core loop, mechanics, art direction — written as a 1-page brief to .summer/GameSoul.md."
3
+ description: "Turn a vague game idea into a 1-page brief (genre, scope, core loop, mechanics) in .summer/GameSoul.md."
4
4
  license: MIT
5
5
  compatibility: [Cursor, Claude Code, Windsurf, Codex]
6
6
  category: scene-and-project
@@ -206,3 +206,16 @@ No template — this is a workflow that produces the brief that drives template
206
206
  - `art-direction` — turn the one-phrase look into a full bible
207
207
  - `audio-direction` — sonic identity
208
208
  - `make-game` — scaffold the project once the brief is locked
209
+
210
+ <!-- shell-commands: generated from the operation catalog by npm run generate:registry; do not edit by hand -->
211
+ ## From a shell
212
+
213
+ No Summer MCP tools in this session? Run each one as a command; when `summer --version` is missing or below 4.0, use `npx -y summer-engine@latest` in place of `summer`. Fields are flags in kebab-case (`--scene-path res://main.tscn`) or one `--input '<json>'`, and `summer ops describe <op>` prints the exact input. The `summer-cli` skill has the rest.
214
+
215
+ | In this skill | Command |
216
+ |---|---|
217
+ | `summer_get_project_context` | `summer engine get-project-context` |
218
+ | `summer_get_scene_tree` | `summer engine get-scene-tree` |
219
+ | `summer_read_file` | `summer engine read-file` |
220
+ | `summer_write_file` | `summer engine write-file` |
221
+ <!-- /shell-commands -->
@@ -1,7 +1,7 @@
1
1
  id: skill/brainstorm-game
2
2
  kind: skill
3
3
  version: 1.0.3
4
- summary: Turn a vague idea into a buildable plan — genre, scope, core loop, mechanics, art direction — written as a 1-page brief to .summer/GameSoul.md.
4
+ summary: "Turn a vague game idea into a 1-page brief (genre, scope, core loop, mechanics) in .summer/GameSoul.md."
5
5
  use_when:
6
6
  - the user wants help deciding what game to make, scoping a new project, or turning a vague idea into a buildable plan
7
7
  - the user has a genre, theme, or one-line pitch but no core loop, scope, or brief yet
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: brainstorming
3
- description: "Explore user intent, requirements, and design before implementation — must run before any creative work: features, components, mechanics, behavior."
3
+ description: "Explore user intent, requirements and design before any creative work: features, mechanics, behavior."
4
4
  ---
5
5
 
6
6
  # Brainstorming Ideas Into Designs
@@ -1,7 +1,7 @@
1
1
  id: skill/brainstorming
2
2
  kind: skill
3
3
  version: 1.0.3
4
- summary: "Explore user intent, requirements, and design before implementation — must run before any creative work: features, components, mechanics, behavior."
4
+ summary: "Explore user intent, requirements and design before any creative work: features, mechanics, behavior."
5
5
  use_when:
6
6
  - starting creative work — designing a game, picking a mechanic, building features or components, modifying behavior
7
7
  - a request is ambiguous about goals or constraints and work would otherwise start on guesses
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: browse-templates
3
- description: "List available Summer Engine project templates, present the choices, and create a project from the chosen one via summer create."
3
+ description: "List Summer Engine project templates, present the choices, and create a project from the chosen one."
4
4
  license: MIT
5
5
  compatibility: [Cursor, Claude Code, Codex, Windsurf, Gemini, OpenCode]
6
6
  category: scene-and-project
@@ -103,3 +103,13 @@ Once the project is created and running, hand off cleanly. The next skill that f
103
103
  - 2D platformer → `design-mechanic` for the platforming feel, then `design-level`.
104
104
 
105
105
  Don't auto-fire the next skill — wait for the user to say what they want to change first.
106
+
107
+ <!-- shell-commands: generated from the operation catalog by npm run generate:registry; do not edit by hand -->
108
+ ## From a shell
109
+
110
+ No Summer MCP tools in this session? Run each one as a command; when `summer --version` is missing or below 4.0, use `npx -y summer-engine@latest` in place of `summer`. Fields are flags in kebab-case (`--scene-path res://main.tscn`) or one `--input '<json>'`, and `summer ops describe <op>` prints the exact input. The `summer-cli` skill has the rest.
111
+
112
+ | In this skill | Command |
113
+ |---|---|
114
+ | `summer_get_project_context` | `summer engine get-project-context` |
115
+ <!-- /shell-commands -->
@@ -1,7 +1,7 @@
1
1
  id: skill/browse-templates
2
2
  kind: skill
3
3
  version: 1.0.5
4
- summary: List available Summer Engine project templates, present the choices, and create a project from the chosen one via summer create.
4
+ summary: "List Summer Engine project templates, present the choices, and create a project from the chosen one."
5
5
  use_when:
6
6
  - the user wants to see available Summer Engine project templates, start from an existing template, or asks what templates exist
7
7
  - picking a starting point and unsure which starter templates already exist
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: camera-rigs
3
- description: "Camera rigs for 2D and 3D: Camera2D follow with limits, first-person head camera, SpringArm3D third-person, orthographic top-down, FOV guidance."
3
+ description: "Camera rigs: Camera2D follow with limits, first-person head, SpringArm3D third-person, top-down, FOV."
4
4
  license: MIT
5
5
  compatibility: [Cursor, Claude Code, Codex, Windsurf, Gemini, OpenCode]
6
6
  category: scene-and-project
@@ -55,7 +55,7 @@ Same as above minus the platformer edge-lock urgency. Zoom out to show the field
55
55
  ## 3D first-person camera
56
56
 
57
57
  Camera is a child of a `Head` node on the player. Body yaws, Head pitches. See
58
- the `character-movement` skill (its `../character-movement/references/movement-3d.md`) or
58
+ the `character-movement` skill (its 3D movement reference: `summer_docs_read` id `skill/character-movement/references/movement-3d.md`) or
59
59
  `fps-controller` for the look script. FOV 70-75, near 0.05.
60
60
 
61
61
  ```
@@ -126,3 +126,23 @@ camera, not the game's.
126
126
  | Shows past level edge | No 2D limits | Set `limit_*` to level bounds |
127
127
  | Wrong facing (3D) | rotation.y off | y: 0 = forward, 180 = backward |
128
128
  | Everything tiny/huge (ortho) | `size` wrong | Tune `size`, not `position.y` |
129
+
130
+ <!-- shell-commands: generated from the operation catalog by npm run generate:registry; do not edit by hand -->
131
+ ## From a shell
132
+
133
+ No Summer MCP tools in this session? Run each one as a command; when `summer --version` is missing or below 4.0, use `npx -y summer-engine@latest` in place of `summer`. Fields are flags in kebab-case (`--scene-path res://main.tscn`) or one `--input '<json>'`, and `summer ops describe <op>` prints the exact input. The `summer-cli` skill has the rest.
134
+
135
+ | In this skill | Command |
136
+ |---|---|
137
+ | `summer_docs_read` | `summer docs read` |
138
+ | `summer_add_node` | `summer engine add-node` |
139
+ | `summer_batch` | `summer engine batch` |
140
+ | `summer_get_diagnostics` | `summer engine get-diagnostics` |
141
+ | `summer_get_scene_tree` | `summer engine get-scene-tree` |
142
+ | `summer_inspect_node` | `summer engine inspect-node` |
143
+ | `summer_play` | `summer engine play` |
144
+ | `summer_save_scene` | `summer engine save-scene` |
145
+ | `summer_screenshot` | `summer engine screenshot` |
146
+ | `summer_set_prop` | `summer engine set-prop` |
147
+ | `summer_stop` | `summer engine stop` |
148
+ <!-- /shell-commands -->
@@ -1,7 +1,7 @@
1
1
  id: skill/camera-rigs
2
2
  kind: skill
3
3
  version: 1.0.0
4
- summary: "Camera rigs for 2D and 3D: Camera2D follow with limits, first-person head camera, SpringArm3D third-person, orthographic top-down, FOV guidance."
4
+ summary: "Camera rigs: Camera2D follow with limits, first-person head, SpringArm3D third-person, top-down, FOV."
5
5
  use_when:
6
6
  - black screen on play, or the camera shows past the level edge
7
7
  - jerky camera follow, wrong FOV, or the third-person camera clips into walls
@@ -31,3 +31,4 @@ source: official
31
31
  license: MIT
32
32
  status: preview
33
33
  recommended: false
34
+ bundled: false
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: character-animation-wiring
3
- description: "Wire a rigged, animated character end to end — inspect real clips and bones, locomotion state machine, method-track events, poses, blend shapes, root motion."
3
+ description: "Wire a rigged character end to end: real clips and bones, locomotion states, method tracks, root motion."
4
4
  license: MIT
5
5
  compatibility: [Cursor, Claude Code, Windsurf, Codex]
6
6
  category: animation
@@ -11,7 +11,7 @@ paths: ["**/*.gd", "**/*.tscn", "**/*.glb"]
11
11
 
12
12
  # Character Animation Wiring — Rigged GLB to Living Character
13
13
 
14
- The game-critical path: a rigged, animated character lands in the scene — from `summer_generate_3d({options:{rig:true}})` + `summer_generate_motion`, or an imported GLB — and nothing moves yet. This skill wires it end to end: inspect what actually arrived, build locomotion, fire gameplay events off animation frames, add poses and head tracking, key the face, and handle root motion. Then **prove it in a playtest** — a wired tree that was never played is a claim, not a result.
14
+ The game-critical path: a rigged, animated character lands in the scene — from `assets.generate_3d({ ..., rig: true })` + `assets.generate_motion`, or an imported GLB — and nothing moves yet. This skill wires it end to end: inspect what actually arrived, build locomotion, fire gameplay events off animation frames, add poses and head tracking, key the face, and handle root motion. Then **prove it in a playtest** — a wired tree that was never played is a claim, not a result.
15
15
 
16
16
  Two lanes throughout:
17
17
 
@@ -85,7 +85,7 @@ Read the reports. Every later step quotes these exact strings. If the clip list
85
85
  ```gdscript
86
86
  func run(ctx):
87
87
  var character = ctx.find("Goblin")
88
- var tree := ctx.anim_state_machine(character, {
88
+ var tree = ctx.anim_state_machine(character, {
89
89
  "states": {"idle": "idle", "walk": "walk", "run": "run"},
90
90
  "transitions": [
91
91
  ["idle", "walk", {"blend_s": 0.2}],
@@ -150,7 +150,7 @@ func run(ctx):
150
150
  Head tracking — one call creates the owned `LookAtModifier3D` under the skeleton:
151
151
 
152
152
  ```gdscript
153
- var mod := ctx.look_at_modifier(skel, ctx.find("Player"), {"bone_name": "Head"})
153
+ var mod = ctx.look_at_modifier(skel, ctx.find("Player"), {"bone_name": "Head"})
154
154
  ```
155
155
 
156
156
  Unknown props land in `prop_warnings` — read them. Angle limits, influence fade-out by distance, and spine-chain distribution are the difference between alive and possessed: tune per `procedural-animation` (A1/A2).
@@ -247,3 +247,27 @@ Method tracks raw: `anim.add_track(Animation.TYPE_METHOD)` + `track_set_path(idx
247
247
 
248
248
  - `scene-scripting` — the ctx stdlib contract, owner rules, budgets, undo/rollback.
249
249
  - `verifying-scenes` — snapshot/diff/screenshot/runtime-read discipline this skill leans on.
250
+
251
+ <!-- shell-commands: generated from the operation catalog by npm run generate:registry; do not edit by hand -->
252
+ ## From a shell
253
+
254
+ No Summer MCP tools in this session? Run each one as a command; when `summer --version` is missing or below 4.0, use `npx -y summer-engine@latest` in place of `summer`. Fields are flags in kebab-case (`--scene-path res://main.tscn`) or one `--input '<json>'`, and `summer ops describe <op>` prints the exact input. The `summer-cli` skill has the rest.
255
+
256
+ | In this skill | Command |
257
+ |---|---|
258
+ | `assets.generate_3d` | `summer assets generate-3d` |
259
+ | `assets.generate_motion` | `summer assets generate-motion` |
260
+ | `summer_api_docs` | `summer docs engine-api` |
261
+ | `summer_get_runtime_tree` | `summer engine get-runtime-tree` |
262
+ | `summer_get_scene_tree` | `summer engine get-scene-tree` |
263
+ | `summer_get_script_errors` | `summer engine get-script-errors` |
264
+ | `summer_inspect_node` | `summer engine inspect-node` |
265
+ | `summer_inspect_runtime_node` | `summer engine inspect-runtime-node` |
266
+ | `summer_play` | `summer engine play` |
267
+ | `summer_run_script` | `summer engine run-script` |
268
+ | `summer_save_scene` | `summer engine save-scene` |
269
+ | `summer_screenshot` | `summer engine screenshot` |
270
+ | `summer_snapshot_diff` | `summer engine snapshot-diff` |
271
+ | `summer_stop` | `summer engine stop` |
272
+ | `summer_world_snapshot` | `summer engine world-snapshot` |
273
+ <!-- /shell-commands -->
@@ -1,7 +1,7 @@
1
1
  id: skill/character-animation-wiring
2
2
  kind: skill
3
3
  version: 1.0.1
4
- summary: Wire a rigged, animated character end to end — inspect real clips and bones, locomotion state machine, method-track events, poses, blend shapes, root motion.
4
+ summary: "Wire a rigged character end to end: real clips and bones, locomotion states, method tracks, root motion."
5
5
  use_when:
6
6
  - a rigged GLB or Meshy rig with generated clips is in the scene and needs idle/walk/run wiring with blend times
7
7
  - footstep or attack-frame events, head tracking, still poses, blend-shape facial keys, or root motion must be hooked up
@@ -1,11 +1,11 @@
1
1
  ---
2
2
  name: character-model
3
- description: "Generate a rigged humanoid — player, NPC, enemy, boss — via T-pose reference, user-gated preview, and Meshy auto-rig, wired as CharacterBody3D or Node3D."
3
+ description: "Generate a rigged humanoid (player, NPC, enemy, boss) from a T-pose reference, previewed before rigging."
4
4
  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_list_my_assets summer_get_asset summer_import_asset_by_id summer_generate_image summer_generate_3d summer_import_from_url summer_add_node summer_set_prop summer_set_resource_property summer_inspect_node summer_inspect_resource summer_get_scene_tree summer_save_scene summer_check_job summer_generate_motion
8
+ allowed-tools: Read Grep summer_assets_search summer_assets_get summer_import_asset_by_id summer_assets_generate_image summer_assets_generate_3d summer_import_from_url summer_add_node summer_set_prop summer_set_resource_property summer_inspect_node summer_inspect_resource summer_get_scene_tree summer_save_scene summer_jobs_wait summer_assets_generate_motion summer_call
9
9
  paths: ["assets/characters/**", "assets/models/**", "**/*.tscn", "**/*.gd"]
10
10
  ---
11
11
 
@@ -16,16 +16,18 @@ This is the canonical auto-rig pipeline. It produces a humanoid `.glb` with a sk
16
16
  The whole flow:
17
17
 
18
18
  ```
19
- 1. T-pose reference image → summer_generate_image (~10s)
20
- 2. Un-rigged 3D mesh → summer_generate_3d(image-to-3d) (~60s)
19
+ 1. T-pose reference image → assets.generate_image (~10s)
20
+ 2. Un-rigged 3D mesh → assets.generate_3d(image-to-3d) → a job (~60s)
21
21
  3. ── USER REVIEW GATE ──
22
- 4. Rigged .glb → summer_generate_3d(image-to-3d, rig=true) (~90s)
22
+ 4. Rigged .glb → assets.generate_3d(image-to-3d, rig) → a job (~90s)
23
23
  5. Import → editor RESTART → wire as CharacterBody3D / Node3D
24
24
  6. Hand off to generate-motion for clips
25
25
  ```
26
26
 
27
27
  The animation skill (`generate-motion`) requires a rigged humanoid; a static `.glb` won't drive motion.
28
28
 
29
+ `assets.generate_3d` always answers at once with a job (`{ status: "running", job: { id } }`); `jobs.wait({ jobId, timeoutSeconds: 50 })` follows it, called again until `finished` is true. The finished job's `result` holds the asset ids. Both passes spend the person's credits: `dryRun: true` on any call returns the estimate (`credits`, `balance`, `enough`) and changes nothing.
30
+
29
31
  ## When to use
30
32
 
31
33
  - "Make a knight character for the player to control."
@@ -46,11 +48,11 @@ The animation skill (`generate-motion`) requires a rigged humanoid; a static `.g
46
48
 
47
49
  | Role | Tris | Pass via |
48
50
  |---|---|---|
49
- | Hero character (player, close camera) | 8k–15k | `target_polycount: 12000` |
50
- | Grunt enemy (mid-range, multiple onscreen) | 3k–6k | `target_polycount: 5000` |
51
- | Crowd / background NPC (LOD-able) | 1k–2k | `target_polycount: 1500` |
52
- | Mobile-game character | 1k–3k | `target_polycount: 2000` |
53
- | Cinematic hero (no realtime constraint) | 20k–40k | `target_polycount: 30000` |
51
+ | Hero character (player, close camera) | 8k–15k | `targetPolycount: 12000` |
52
+ | Grunt enemy (mid-range, multiple onscreen) | 3k–6k | `targetPolycount: 5000` |
53
+ | Crowd / background NPC (LOD-able) | 1k–2k | `targetPolycount: 1500` |
54
+ | Mobile-game character | 1k–3k | `targetPolycount: 2000` |
55
+ | Cinematic hero (no realtime constraint) | 20k–40k | `targetPolycount: 30000` |
54
56
 
55
57
  Pass at the **mesh-generation step** (step 2). The rig pass preserves the topology; you can't reduce polycount after rigging without breaking weights.
56
58
 
@@ -61,10 +63,11 @@ Pass at the **mesh-generation step** (step 2). The rig pass preserves the topolo
61
63
  The rig pass requires a **front-facing T-pose** with arms out and legs slightly apart. If the reference is in an action pose, the rig will bend wrong and locomotion clips will look broken (knees inverted, elbows snapped — common Meshy failure mode).
62
64
 
63
65
  ```
64
- summer_generate_image(
65
- prompt="A fantasy knight in full plate armor, red cape, T-pose, arms straight out horizontal, legs slightly apart, front-facing, neutral expression. Game character asset, stylized, clean white background, soft studio lighting, full body in frame, ready for 3D mesh generation.",
66
- model="nano-banana-2"
67
- )
66
+ assets.generate_image({
67
+ prompt: "A fantasy knight in full plate armor, red cape, T-pose, arms straight out horizontal, legs slightly apart, front-facing, neutral expression. Game character asset, stylized, clean white background, soft studio lighting, full body in frame, ready for 3D mesh generation.",
68
+ model: "nano-banana-2",
69
+ aspectRatio: "3:4"
70
+ })
68
71
  ```
69
72
 
70
73
  The phrase `T-pose, arms straight out horizontal, legs slightly apart, front-facing` is load-bearing — drop any of those and the model will drift toward A-pose or a hero stance.
@@ -72,7 +75,7 @@ The phrase `T-pose, arms straight out horizontal, legs slightly apart, front-fac
72
75
  If the user already has a concept image in an action pose, re-pose it to T-pose via img2img without re-rolling the design:
73
76
 
74
77
  ```
75
- summer_generate_image({
78
+ assets.generate_image({
76
79
  referenceImageUrl: "<existing concept image>",
77
80
  prompt: "<character> in T-pose, arms extended horizontally, neutral facing camera, white background, clean lighting"
78
81
  })
@@ -85,20 +88,20 @@ Show the image to the user:
85
88
  ### 2. Generate the un-rigged 3D mesh
86
89
 
87
90
  ```
88
- summer_generate_3d(
89
- kind="image-to-3d",
90
- imageUrl="<image url from step 1>",
91
- model="hunyuan",
92
- options={ target_polycount: 12000 },
93
- wait=true
94
- )
91
+ assets.generate_3d({
92
+ kind: "image-to-3d",
93
+ imageUrl: "<image url from step 1>",
94
+ model: "hunyuan",
95
+ targetPolycount: 12000
96
+ })
97
+ jobs.wait({ jobId: "<job.id>", timeoutSeconds: 50 }) // again until finished
95
98
  ```
96
99
 
97
- Returns a job result with `assetId` and `fileUrl` — an un-rigged static `.glb`.
100
+ The finished job's `result` has `assetId` and `fileUrl` — an un-rigged static `.glb`.
98
101
  Use the asset ID as the stable handle. Import it for preview only:
99
102
 
100
103
  ```
101
- summer_get_asset(assetId="<assetId>")
104
+ assets.get({ assetId: "<assetId>" })
102
105
  summer_import_asset_by_id(
103
106
  assetId="<assetId>",
104
107
  path="res://assets/characters/knight_unrigged.glb"
@@ -120,25 +123,25 @@ If the user wants changes, loop back to step 1 or 2. Do NOT silently run the rig
120
123
  ### 4. Run the rig pass
121
124
 
122
125
  ```
123
- summer_generate_3d({
126
+ assets.generate_3d({
124
127
  kind: "image-to-3d",
125
128
  imageUrl: "<image url from step 1>",
126
129
  rig: true,
127
- options: { target_polycount: 12000 }
130
+ targetPolycount: 12000
128
131
  })
132
+ jobs.wait({ jobId: "<job.id>", timeoutSeconds: 50 }) // again until finished
129
133
  ```
130
134
 
131
- `rig` is a **top-level boolean argument** on `summer_generate_3d` (the tool also merges it into `options.rig`, so `options: { rig: true }` works too). There is no `polyTarget` — the polycount key is `target_polycount` inside `options`, exactly as in step 2. Related top-level arguments worth knowing here: `riggingHeightMeters` for character height, and `animationNames` / `actionIds` to have the shared animated-character pipeline produce clips in the same job instead of a separate `summer_generate_motion` pass.
135
+ `rig` and `targetPolycount` are plain fields of `assets.generate_3d` (there is no `options` object and no `polyTarget`). Related fields worth knowing here: `riggingHeightMeters` for character height, and `animationNames` / `actionIds` to have the shared animated-character pipeline produce clips in the same job instead of a separate `assets.generate_motion` pass.
132
136
 
133
- Returns a job whose result includes `assetId`, `fileUrl`, and `rigAssetId`.
134
- If you ran with `wait: false`, poll via `summer_check_job(jobId)`. The
137
+ The finished job's `result` includes `assetId`, `fileUrl`, and `rigAssetId`. The
135
138
  `rigAssetId` is the handle `generate-motion` needs — store it.
136
139
  Resolve it before import so the agent has the viewer/download metadata:
137
140
 
138
141
  Import the rigged version, replacing the un-rigged file:
139
142
 
140
143
  ```
141
- summer_get_asset(assetId="<rigAssetId>")
144
+ assets.get({ assetId: "<rigAssetId>" })
142
145
  summer_import_asset_by_id(
143
146
  assetId="<rigAssetId>",
144
147
  path="res://assets/characters/knight.glb"
@@ -162,27 +165,28 @@ No programmatic workaround is known. Tell the user, wait, then continue.
162
165
  | Pure-visual character (background extra, dialogue head) | `Node3D` | Same as above |
163
166
  | Ragdoll-on-death enemy | `CharacterBody3D` while alive, swap to `RigidBody3D` skeleton on death | Two-mode rig; see `procedural-animation` |
164
167
 
165
- Four things the call shapes below encode:
168
+ Three things the call shapes below encode:
166
169
 
167
- - **Every scene-mutating tool takes an explicit `scenePath`** and the scene need not be the active editor tab.
168
- - **Node paths are relative to that scene's root (`./`)**, not absolute `/root/...` runtime paths.
169
- - **`summer_set_prop`'s property argument is named `key`**, not `property`.
170
- - **A `.glb` is instantiated, not assigned.** There is no `scene` property on `Node3D`, and an imported `.glb` is a scene rather than a `Mesh` — on the shipped 4.6.1 binary `ResourceLoader.get_recognized_extensions_for_type("Mesh")` returns `["tres", "mesh", "res"]`, with no `glb`. Use `summer_instantiate_scene`.
170
+ - **Every scene tool, `summer_run_script` included, takes an explicit `scenePath`**, and the scene need not be the active editor tab.
171
+ - **A character is several nodes: build it in one `summer_run_script`**, not a chain of single calls.
172
+ - **A `.glb` is instantiated, not assigned.** There is no `scene` property on `Node3D`, and an imported `.glb` is a scene rather than a `Mesh` — on the shipped 4.6.1 binary `ResourceLoader.get_recognized_extensions_for_type("Mesh")` returns `["tres", "mesh", "res"]`, with no `glb`. Use `ctx.instance_scene` in a script, or `summer_instantiate_scene` for one model.
171
173
 
172
174
  **CharacterBody3D wiring (player / enemy):**
173
175
 
174
176
  ```
175
- summer_add_node(scenePath="res://main.tscn", parent="./World", type="CharacterBody3D", name="Knight")
176
- summer_set_prop(scenePath="res://main.tscn", path="./World/Knight", key="position", value="Vector3(0, 0, 0)")
177
- summer_instantiate_scene(scenePath="res://main.tscn", parent="./World/Knight", scene="res://assets/characters/knight.glb", name="Mesh")
178
- summer_add_node(scenePath="res://main.tscn", parent="./World/Knight", type="CollisionShape3D", name="Collider")
179
- summer_set_prop(scenePath="res://main.tscn", path="./World/Knight/Collider", key="shape", value="CapsuleShape3D")
180
- summer_set_resource_property(scenePath="res://main.tscn", nodePath="./World/Knight/Collider", resourceProperty="shape", subProperty="height", value=1.7)
181
- summer_set_resource_property(scenePath="res://main.tscn", nodePath="./World/Knight/Collider", resourceProperty="shape", subProperty="radius", value=0.4)
182
- summer_save_scene(scenePath="res://main.tscn")
177
+ summer_run_script(scenePath="res://main.tscn", source="""
178
+ func run(ctx):
179
+ var knight = ctx.add_node("CharacterBody3D", "Knight", ctx.find("World"), {"position": Vector3(0, 0, 0)})
180
+ ctx.instance_scene("res://assets/characters/knight.glb", knight, "Mesh")
181
+ var capsule := CapsuleShape3D.new()
182
+ capsule.height = 1.7
183
+ capsule.radius = 0.4
184
+ ctx.add_node("CollisionShape3D", "Collider", knight, {"shape": capsule})
185
+ ctx.save_scene()
186
+ """)
183
187
  ```
184
188
 
185
- Assigning a bare class name like `"CapsuleShape3D"` to a resource property auto-instantiates it, which is how you get a shape you can then size. `summer_set_resource_property` needs all five of `scenePath`, `nodePath`, `resourceProperty`, `subProperty`, `value`.
189
+ Build the shape as a real resource and size it before you assign it. Later, one size change on that shape is one `summer_set_resource_property` (`nodePath`, `resourceProperty="shape"`, `subProperty`, `value`, plus `scenePath`).
186
190
 
187
191
  **Node3D wiring (cinematic NPC):**
188
192
 
@@ -198,8 +202,8 @@ The imported `.glb` includes its own `Skeleton3D` and `AnimationPlayer` (empty l
198
202
  > Knight is wired at `./World/Knight` with an auto-rigged skeleton. `rigAssetId` saved.
199
203
  >
200
204
  > Next: `generate-motion` to add idle / walk / run / attack
201
- > clips. Example call: `summer_generate_motion(rigAssetId: "<saved id>",
202
- > backend: "meshy-library", motionName: "walk")`. For custom actions, use
205
+ > clips. Example call: `assets.generate_motion({ rigAssetId: "<saved id>",
206
+ > backend: "meshy-library", motionNames: ["walk"] })`. For custom actions, use
203
207
  > `text-to-motion` (`backend: "text-to-motion"`).
204
208
 
205
209
  ## Anti-patterns
@@ -220,6 +224,10 @@ The imported `.glb` includes its own `Skeleton3D` and `AnimationPlayer` (empty l
220
224
  - **First-person hands-only character.** Generate just hands + forearms in T-pose; rig pass still works. See `fps-controller` for first-person wiring.
221
225
  - **Stylized non-human (goblin, orc, halfling).** Works fine as long as the silhouette is bipedal with two arms, two legs, one head. Quadrupeds and centaurs do not.
222
226
 
227
+ ## Without Summer Engine
228
+
229
+ In a session without Summer Engine tools (the assets profile; the `summer-assets` skill has the whole loop), do steps 1-4, including the review gate, and stop when the rig pass finishes. Skip steps 5-6 (editor restart, scene wiring). Save the rigged GLB (`rigAssetId`; the unrigged mesh is `assetId`) where the person asked with `out` on `jobs.wait` or `assets.get` (the `summer-assets` skill says how), and tell them the path. Step 7 still applies: `generate-motion` runs without the engine.
230
+
223
231
  ## Fallback (no MCP)
224
232
 
225
233
  1. Generate the T-pose reference in the Summer dashboard.
@@ -248,4 +256,32 @@ After the rigged character is wired:
248
256
  - `asset-strategy` — meta-router; this skill is the canonical drill-down of its "Image-to-3D for characters" path.
249
257
  - `prop-model` — for non-character props.
250
258
  - `scene-composition` — for the CharacterBody3D + Mesh + Collider parent pattern.
251
- - `../../references/mcp-tools-reference/mcp-tools-reference.md` — full parameter schemas for `summer_generate_3d`, `summer_generate_image`, and `summer_generate_motion`.
259
+ - `summer_docs_read` id `reference/mcp-tools-reference` — how to call `assets.generate_3d`, `assets.generate_image` and `assets.generate_motion`; `summer_search` returns each one's exact input.
260
+
261
+ <!-- shell-commands: generated from the operation catalog by npm run generate:registry; do not edit by hand -->
262
+ ## From a shell
263
+
264
+ No Summer MCP tools in this session? Run each one as a command; when `summer --version` is missing or below 4.0, use `npx -y summer-engine@latest` in place of `summer`. Fields are flags in kebab-case (`--scene-path res://main.tscn`) or one `--input '<json>'`, and `summer ops describe <op>` prints the exact input. The `summer-cli` skill has the rest.
265
+
266
+ | In this skill | Command |
267
+ |---|---|
268
+ | `assets.generate_3d`, `summer_assets_generate_3d` | `summer assets generate-3d` |
269
+ | `assets.generate_image`, `summer_assets_generate_image` | `summer assets generate-image` |
270
+ | `assets.generate_motion`, `summer_assets_generate_motion` | `summer assets generate-motion` |
271
+ | `assets.get`, `summer_assets_get` | `summer assets get` |
272
+ | `summer_assets_search` | `summer assets search` |
273
+ | `summer_docs_read` | `summer docs read` |
274
+ | `summer_add_node` | `summer engine add-node` |
275
+ | `summer_get_scene_tree` | `summer engine get-scene-tree` |
276
+ | `summer_import_asset_by_id` | `summer engine import-asset-by-id` |
277
+ | `summer_import_from_url` | `summer engine import-from-url` |
278
+ | `summer_inspect_node` | `summer engine inspect-node` |
279
+ | `summer_inspect_resource` | `summer engine inspect-resource` |
280
+ | `summer_instantiate_scene` | `summer engine instantiate-scene` |
281
+ | `summer_run_script` | `summer engine run-script` |
282
+ | `summer_save_scene` | `summer engine save-scene` |
283
+ | `summer_set_prop` | `summer engine set-prop` |
284
+ | `summer_set_resource_property` | `summer engine set-resource-property` |
285
+ | `jobs.wait`, `summer_jobs_wait` | `summer jobs wait` |
286
+ | `summer_search` | `summer ops search "<what you want>"` |
287
+ <!-- /shell-commands -->
@@ -1,7 +1,7 @@
1
1
  id: skill/character-model
2
2
  kind: skill
3
3
  version: 1.0.2
4
- summary: Generate a rigged humanoid — player, NPC, enemy, boss — via T-pose reference, user-gated preview, and Meshy auto-rig, wired as CharacterBody3D or Node3D.
4
+ summary: "Generate a rigged humanoid (player, NPC, enemy, boss) from a T-pose reference, previewed before rigging."
5
5
  use_when:
6
6
  - generating a humanoid character ready for animation — player avatar, NPC, enemy, boss, companion
7
7
  - the user asks for a rigged humanoid or a model with a skeleton