summer-engine 2.8.2 → 3.1.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 (790) hide show
  1. package/.claude-plugin/marketplace.json +27 -7
  2. package/.claude-plugin/plugin.json +99 -83
  3. package/.codex-plugin/plugin.json +112 -82
  4. package/.cursor-plugin/plugin.json +119 -83
  5. package/.factory-plugin/plugin.json +100 -3
  6. package/.mcp.json +6 -1
  7. package/.opencode/INSTALL.md +7 -4
  8. package/.opencode/plugins/summer.js +31 -18
  9. package/AGENTS.md +107 -34
  10. package/CHANGELOG.md +149 -44
  11. package/CLAUDE.md +4 -2
  12. package/GEMINI.md +7 -53
  13. package/NOTICE +31 -0
  14. package/README.md +161 -393
  15. package/assets/api-docs.json.gz +0 -0
  16. package/assets/autopilot/README.md +20 -6
  17. package/assets/autopilot/autopilot.gd +80 -26
  18. package/assets/autopilot/run.sh +132 -7
  19. package/assets/navigation/web-routes.json +719 -0
  20. package/commands/gameskill.md +10 -108
  21. package/commands/summer.md +72 -4
  22. package/dist/bin/summer.js +6 -87
  23. package/dist/cli/banner.d.ts +1 -0
  24. package/dist/cli/banner.js +33 -0
  25. package/dist/{commands → cli/commands}/config.js +1 -1
  26. package/dist/cli/commands/create.d.ts +30 -0
  27. package/dist/cli/commands/create.js +212 -0
  28. package/dist/{commands → cli/commands}/debug.js +2 -2
  29. package/dist/cli/commands/doctor.d.ts +2 -0
  30. package/dist/cli/commands/doctor.js +18 -0
  31. package/dist/cli/commands/events.d.ts +57 -0
  32. package/dist/cli/commands/events.js +158 -0
  33. package/dist/cli/commands/install.d.ts +50 -0
  34. package/dist/cli/commands/install.js +447 -0
  35. package/dist/cli/commands/list.js +72 -0
  36. package/dist/{commands → cli/commands}/login.js +33 -17
  37. package/dist/{commands → cli/commands}/logout.d.ts +1 -0
  38. package/dist/cli/commands/logout.js +19 -0
  39. package/dist/{commands → cli/commands}/memory.d.ts +1 -8
  40. package/dist/{commands → cli/commands}/memory.js +20 -11
  41. package/dist/cli/commands/open.d.ts +45 -0
  42. package/dist/cli/commands/open.js +216 -0
  43. package/dist/{commands → cli/commands}/plan.js +2 -2
  44. package/dist/{commands → cli/commands}/publish.js +1 -1
  45. package/dist/{commands → cli/commands}/releases.js +1 -1
  46. package/dist/cli/commands/run.d.ts +19 -0
  47. package/dist/cli/commands/run.js +255 -0
  48. package/dist/cli/commands/setup.js +158 -0
  49. package/dist/{commands → cli/commands}/skills.js +121 -251
  50. package/dist/{commands → cli/commands}/status.d.ts +1 -0
  51. package/dist/cli/commands/status.js +62 -0
  52. package/dist/cli/commands/tool.d.ts +11 -0
  53. package/dist/cli/commands/tool.js +121 -0
  54. package/dist/cli/index.d.ts +6 -0
  55. package/dist/cli/index.js +89 -0
  56. package/dist/cli/root-action.d.ts +7 -0
  57. package/dist/cli/root-action.js +15 -0
  58. package/dist/{lib → core}/api-client.d.ts +106 -15
  59. package/dist/{lib → core}/api-client.js +267 -75
  60. package/dist/{lib → core}/async-op-lifecycle.d.ts +3 -4
  61. package/dist/{lib → core}/async-op-lifecycle.js +3 -4
  62. package/dist/{lib → core}/auth.d.ts +14 -6
  63. package/dist/{lib → core}/auth.js +56 -40
  64. package/dist/core/capabilities/agent-playbook.d.ts +20 -0
  65. package/dist/core/capabilities/agent-playbook.js +218 -0
  66. package/dist/core/capabilities/api-docs.d.ts +36 -0
  67. package/dist/core/capabilities/api-docs.js +118 -0
  68. package/dist/core/capabilities/asset-import.d.ts +49 -0
  69. package/dist/core/capabilities/asset-import.js +134 -0
  70. package/dist/core/capabilities/camera-view.d.ts +98 -0
  71. package/dist/core/capabilities/camera-view.js +222 -0
  72. package/dist/core/capabilities/capture.d.ts +63 -0
  73. package/dist/core/capabilities/capture.js +67 -0
  74. package/dist/core/capabilities/console-read.d.ts +17 -0
  75. package/dist/core/capabilities/console-read.js +21 -0
  76. package/dist/{lib → core/capabilities}/creator.d.ts +1 -29
  77. package/dist/{lib → core/capabilities}/creator.js +14 -33
  78. package/dist/{lib → core/capabilities}/debug-report.d.ts +1 -1
  79. package/dist/{lib → core/capabilities}/debug-report.js +12 -31
  80. package/dist/{commands → core/capabilities}/doctor.d.ts +7 -2
  81. package/dist/{commands → core/capabilities}/doctor.js +47 -73
  82. package/dist/core/capabilities/engine-fallbacks.d.ts +26 -0
  83. package/dist/core/capabilities/engine-fallbacks.js +36 -0
  84. package/dist/core/capabilities/engine-ops.d.ts +33 -0
  85. package/dist/core/capabilities/engine-ops.js +145 -0
  86. package/dist/core/capabilities/engine-receipt.d.ts +53 -0
  87. package/dist/core/capabilities/engine-receipt.js +134 -0
  88. package/dist/core/capabilities/events.d.ts +200 -0
  89. package/dist/core/capabilities/events.js +383 -0
  90. package/dist/core/capabilities/fabricate-mesh.d.ts +111 -0
  91. package/dist/core/capabilities/fabricate-mesh.js +165 -0
  92. package/dist/core/capabilities/frame-quality.d.ts +71 -0
  93. package/dist/core/capabilities/frame-quality.js +449 -0
  94. package/dist/core/capabilities/game-task-plan.d.ts +66 -0
  95. package/dist/{lib → core/capabilities}/game-task-plan.js +59 -8
  96. package/dist/core/capabilities/hdri-import.d.ts +90 -0
  97. package/dist/core/capabilities/hdri-import.js +250 -0
  98. package/dist/core/capabilities/image-generation.d.ts +24 -0
  99. package/dist/core/capabilities/image-generation.js +22 -0
  100. package/dist/core/capabilities/navigation/open.d.ts +156 -0
  101. package/dist/core/capabilities/navigation/open.js +567 -0
  102. package/dist/core/capabilities/navigation/render-product-map.d.ts +1 -0
  103. package/dist/core/capabilities/navigation/render-product-map.js +84 -0
  104. package/dist/core/capabilities/navigation/targets.d.ts +87 -0
  105. package/dist/core/capabilities/navigation/targets.js +250 -0
  106. package/dist/core/capabilities/play-determinism.d.ts +35 -0
  107. package/dist/core/capabilities/play-determinism.js +86 -0
  108. package/dist/core/capabilities/project-context.d.ts +114 -0
  109. package/dist/core/capabilities/project-context.js +249 -0
  110. package/dist/core/capabilities/runtime-control.d.ts +540 -0
  111. package/dist/core/capabilities/runtime-control.js +1011 -0
  112. package/dist/core/capabilities/scene-kind.d.ts +19 -0
  113. package/dist/core/capabilities/scene-kind.js +137 -0
  114. package/dist/core/capabilities/scene-script.d.ts +38 -0
  115. package/dist/core/capabilities/scene-script.js +45 -0
  116. package/dist/core/capabilities/tool-dispatch.d.ts +42 -0
  117. package/dist/core/capabilities/tool-dispatch.js +1490 -0
  118. package/dist/core/capabilities/ui-control.d.ts +179 -0
  119. package/dist/core/capabilities/ui-control.js +423 -0
  120. package/dist/core/capabilities/variant-types.d.ts +22 -0
  121. package/dist/core/capabilities/variant-types.js +101 -0
  122. package/dist/core/capability-skew.d.ts +205 -0
  123. package/dist/core/capability-skew.js +386 -0
  124. package/dist/{lib → core}/config.d.ts +11 -1
  125. package/dist/{lib → core}/config.js +13 -2
  126. package/dist/core/embeddings.d.ts +78 -0
  127. package/dist/core/embeddings.js +166 -0
  128. package/dist/core/engine-install.d.ts +105 -0
  129. package/dist/core/engine-install.js +190 -0
  130. package/dist/core/engine.d.ts +94 -0
  131. package/dist/{lib → core}/engine.js +74 -28
  132. package/dist/core/feedback/client.d.ts +88 -0
  133. package/dist/core/feedback/client.js +182 -0
  134. package/dist/{lib → core}/format.d.ts +0 -1
  135. package/dist/{lib → core}/format.js +1 -1
  136. package/dist/core/headless/connection.d.ts +86 -0
  137. package/dist/core/headless/connection.js +97 -0
  138. package/dist/core/headless/editor-connection.d.ts +26 -0
  139. package/dist/core/headless/editor-connection.js +81 -0
  140. package/dist/core/headless/mcp-routing.d.ts +38 -0
  141. package/dist/core/headless/mcp-routing.js +83 -0
  142. package/dist/core/headless/registry.d.ts +91 -0
  143. package/dist/core/headless/registry.js +226 -0
  144. package/dist/core/headless/resolve.d.ts +46 -0
  145. package/dist/core/headless/resolve.js +75 -0
  146. package/dist/core/headless/spawn.d.ts +46 -0
  147. package/dist/core/headless/spawn.js +205 -0
  148. package/dist/core/headless/worker-connection.d.ts +96 -0
  149. package/dist/core/headless/worker-connection.js +353 -0
  150. package/dist/core/headless/worker-engine-client.d.ts +58 -0
  151. package/dist/core/headless/worker-engine-client.js +246 -0
  152. package/dist/core/launch-posture.d.ts +170 -0
  153. package/dist/core/launch-posture.js +317 -0
  154. package/dist/core/library-read.d.ts +73 -0
  155. package/dist/core/library-read.js +279 -0
  156. package/dist/core/library-search.d.ts +143 -0
  157. package/dist/core/library-search.js +301 -0
  158. package/dist/{lib → core}/log-filters.js +4 -2
  159. package/dist/{lib → core}/mcp-log.js +2 -17
  160. package/dist/core/package-root.d.ts +9 -0
  161. package/dist/core/package-root.js +11 -0
  162. package/dist/core/redact.d.ts +20 -0
  163. package/dist/core/redact.js +64 -0
  164. package/dist/core/registry-search.d.ts +167 -0
  165. package/dist/core/registry-search.js +358 -0
  166. package/dist/core/skills-registry.d.ts +55 -0
  167. package/dist/core/skills-registry.js +106 -0
  168. package/dist/{lib → core}/store.js +11 -7
  169. package/dist/{lib → core}/summer-compatibility.js +3 -3
  170. package/dist/{lib → core}/telemetry.js +5 -2
  171. package/dist/core/templates.d.ts +98 -0
  172. package/dist/core/templates.js +241 -0
  173. package/dist/core/tool-errors.d.ts +30 -0
  174. package/dist/core/tool-errors.js +40 -0
  175. package/dist/core/trajectory.d.ts +80 -0
  176. package/dist/core/trajectory.js +307 -0
  177. package/dist/core/util/http.d.ts +13 -0
  178. package/dist/core/util/http.js +28 -0
  179. package/dist/core/util/json.d.ts +12 -0
  180. package/dist/core/util/json.js +21 -0
  181. package/dist/core/util/process.d.ts +3 -0
  182. package/dist/core/util/process.js +13 -0
  183. package/dist/core/util/sleep.d.ts +1 -0
  184. package/dist/core/util/sleep.js +3 -0
  185. package/dist/core/version.d.ts +3 -0
  186. package/dist/core/version.js +5 -0
  187. package/dist/installer/agent-config.d.ts +63 -0
  188. package/dist/installer/agent-config.js +540 -0
  189. package/dist/installer/agent-table.d.ts +103 -0
  190. package/dist/installer/agent-table.js +584 -0
  191. package/dist/installer/legacy-skills.d.ts +26 -0
  192. package/dist/installer/legacy-skills.js +53 -0
  193. package/dist/installer/setup.d.ts +76 -0
  194. package/dist/installer/setup.js +148 -0
  195. package/dist/installer/skill-locations.d.ts +36 -0
  196. package/dist/installer/skill-locations.js +91 -0
  197. package/dist/installer/version-check.d.ts +178 -0
  198. package/dist/installer/version-check.js +479 -0
  199. package/dist/{lib/mcp-boot-notice.d.ts → mcp/boot-notice.d.ts} +1 -1
  200. package/dist/{commands/mcp.js → mcp/command.js} +18 -6
  201. package/dist/mcp/server.d.ts +23 -3
  202. package/dist/mcp/server.js +122 -28
  203. package/dist/mcp/tools/asset-tools.js +62 -142
  204. package/dist/mcp/tools/creator-tools.js +5 -23
  205. package/dist/mcp/tools/debug-tools.js +61 -18
  206. package/dist/mcp/tools/event-tools.d.ts +14 -0
  207. package/dist/mcp/tools/event-tools.js +41 -0
  208. package/dist/mcp/tools/fabricate-tools.d.ts +2 -0
  209. package/dist/mcp/tools/fabricate-tools.js +28 -0
  210. package/dist/mcp/tools/feedback-tools.d.ts +77 -0
  211. package/dist/mcp/tools/feedback-tools.js +88 -0
  212. package/dist/mcp/tools/file-tools.js +6 -53
  213. package/dist/mcp/tools/generate-tools.js +37 -63
  214. package/dist/mcp/tools/library-tools.d.ts +11 -0
  215. package/dist/mcp/tools/library-tools.js +42 -0
  216. package/dist/mcp/tools/navigation-tools.d.ts +7 -0
  217. package/dist/mcp/tools/navigation-tools.js +37 -0
  218. package/dist/mcp/tools/perception-tools.d.ts +20 -0
  219. package/dist/mcp/tools/perception-tools.js +146 -0
  220. package/dist/mcp/tools/project-tools.d.ts +14 -0
  221. package/dist/mcp/tools/project-tools.js +72 -281
  222. package/dist/mcp/tools/runtime-tools.d.ts +2 -0
  223. package/dist/mcp/tools/runtime-tools.js +92 -0
  224. package/dist/mcp/tools/scene-tools.d.ts +3 -0
  225. package/dist/mcp/tools/scene-tools.js +68 -119
  226. package/dist/mcp/tools/script-tools.d.ts +3 -0
  227. package/dist/mcp/tools/script-tools.js +118 -0
  228. package/dist/mcp/tools/spatial-tools.d.ts +2 -0
  229. package/dist/mcp/tools/spatial-tools.js +485 -0
  230. package/dist/mcp/tools/text-json.d.ts +8 -0
  231. package/dist/mcp/tools/text-json.js +12 -0
  232. package/dist/mcp/tools/{cloud-tools.d.ts → ui-tools.d.ts} +1 -1
  233. package/dist/mcp/tools/ui-tools.js +82 -0
  234. package/dist/mcp/tools/visual-tools.d.ts +2 -7
  235. package/dist/mcp/tools/visual-tools.js +383 -101
  236. package/dist/mcp/tools/with-engine.d.ts +9 -15
  237. package/dist/mcp/tools/with-engine.js +60 -96
  238. package/dist/project-memory/project-manifest.d.ts +36 -0
  239. package/dist/project-memory/project-manifest.js +50 -0
  240. package/dist/project-memory/project-memory.d.ts +57 -0
  241. package/dist/{lib → project-memory}/project-memory.js +46 -0
  242. package/gemini-extension.json +103 -2
  243. package/hooks/hooks-cursor.json +2 -2
  244. package/hooks/hooks.json +2 -1
  245. package/hooks/pre-commit-doctor.sh +45 -39
  246. package/hooks/run-hook.cmd +30 -23
  247. package/hooks/run-hook.sh +20 -0
  248. package/hooks/session-start.sh +18 -7
  249. package/integrations/README.md +99 -0
  250. package/integrations/amp/README.md +12 -0
  251. package/integrations/amp/manifest-target.json +3 -0
  252. package/integrations/antigravity/README.md +12 -0
  253. package/integrations/antigravity/manifest-target.json +3 -0
  254. package/integrations/claude/README.md +19 -0
  255. package/integrations/claude/manifest-target.json +16 -0
  256. package/integrations/claude-desktop/README.md +12 -0
  257. package/integrations/claude-desktop/manifest-target.json +3 -0
  258. package/integrations/cline/README.md +12 -0
  259. package/integrations/cline/manifest-target.json +3 -0
  260. package/integrations/cline-cli/README.md +12 -0
  261. package/integrations/cline-cli/manifest-target.json +3 -0
  262. package/integrations/codex/README.md +15 -0
  263. package/integrations/codex/manifest-target.json +5 -0
  264. package/integrations/copilot-jetbrains/README.md +12 -0
  265. package/integrations/copilot-jetbrains/manifest-target.json +3 -0
  266. package/integrations/crush/README.md +12 -0
  267. package/integrations/crush/manifest-target.json +3 -0
  268. package/integrations/cursor/README.md +16 -0
  269. package/integrations/cursor/manifest-target.json +5 -0
  270. package/integrations/factory/README.md +26 -0
  271. package/integrations/factory/manifest-target.json +5 -0
  272. package/integrations/gemini/README.md +26 -0
  273. package/integrations/gemini/manifest-target.json +5 -0
  274. package/integrations/github-copilot/README.md +12 -0
  275. package/integrations/github-copilot/manifest-target.json +3 -0
  276. package/integrations/goose/README.md +12 -0
  277. package/integrations/goose/manifest-target.json +3 -0
  278. package/integrations/grok-build/README.md +12 -0
  279. package/integrations/grok-build/manifest-target.json +3 -0
  280. package/integrations/hermes/README.md +12 -0
  281. package/integrations/hermes/manifest-target.json +3 -0
  282. package/integrations/junie/README.md +12 -0
  283. package/integrations/junie/manifest-target.json +3 -0
  284. package/integrations/kilo-code/README.md +12 -0
  285. package/integrations/kilo-code/manifest-target.json +3 -0
  286. package/integrations/kimi-code/README.md +12 -0
  287. package/integrations/kimi-code/manifest-target.json +3 -0
  288. package/integrations/kiro/README.md +12 -0
  289. package/integrations/kiro/manifest-target.json +3 -0
  290. package/integrations/lm-studio/README.md +12 -0
  291. package/integrations/lm-studio/manifest-target.json +3 -0
  292. package/integrations/mistral-vibe/README.md +12 -0
  293. package/integrations/mistral-vibe/manifest-target.json +3 -0
  294. package/integrations/opencode/README.md +12 -0
  295. package/integrations/opencode/manifest-target.json +3 -0
  296. package/integrations/qoder/README.md +12 -0
  297. package/integrations/qoder/manifest-target.json +3 -0
  298. package/integrations/qwen-code/README.md +12 -0
  299. package/integrations/qwen-code/manifest-target.json +3 -0
  300. package/integrations/roo-code/README.md +14 -0
  301. package/integrations/roo-code/manifest-target.json +3 -0
  302. package/integrations/rovo-dev/README.md +12 -0
  303. package/integrations/rovo-dev/manifest-target.json +3 -0
  304. package/integrations/trae/README.md +12 -0
  305. package/integrations/trae/manifest-target.json +3 -0
  306. package/integrations/visual-studio/README.md +12 -0
  307. package/integrations/visual-studio/manifest-target.json +3 -0
  308. package/integrations/vscode-copilot/README.md +12 -0
  309. package/integrations/vscode-copilot/manifest-target.json +3 -0
  310. package/integrations/warp/README.md +12 -0
  311. package/integrations/warp/manifest-target.json +3 -0
  312. package/integrations/windsurf/README.md +12 -0
  313. package/integrations/windsurf/manifest-target.json +3 -0
  314. package/integrations/zed/README.md +12 -0
  315. package/integrations/zed/manifest-target.json +3 -0
  316. package/library/references/collaborative-protocol/resource.yaml +24 -0
  317. package/library/references/gd-style/resource.yaml +24 -0
  318. package/{references → library/references/godot-version}/godot-version.md +6 -6
  319. package/library/references/godot-version/resource.yaml +22 -0
  320. package/library/references/headless-routing/headless-routing.md +46 -0
  321. package/library/references/headless-routing/resource.yaml +24 -0
  322. package/library/references/mcp-fresh-chat-playbook/mcp-fresh-chat-playbook.md +49 -0
  323. package/library/references/mcp-fresh-chat-playbook/resource.yaml +23 -0
  324. package/library/references/mcp-tools-reference/mcp-tools-reference.md +271 -0
  325. package/library/references/mcp-tools-reference/resource.yaml +17 -0
  326. package/library/references/product-map/product-map.md +103 -0
  327. package/library/references/product-map/resource.yaml +33 -0
  328. package/{references → library/references/public-surface-language}/public-surface-language.md +5 -7
  329. package/library/references/public-surface-language/resource.yaml +17 -0
  330. package/library/references/summer-folder/resource.yaml +20 -0
  331. package/{references → library/references/summer-folder}/summer-folder.md +22 -21
  332. package/{skills/rendering-and-lighting → library/skills}/3d-lighting/SKILL.md +15 -11
  333. package/library/skills/3d-lighting/resource.yaml +27 -0
  334. package/library/skills/README.md +242 -0
  335. package/{skills/audio → library/skills}/adaptive-music/SKILL.md +1 -1
  336. package/library/skills/adaptive-music/resource.yaml +28 -0
  337. package/library/skills/agent-playtesting/SKILL.md +148 -0
  338. package/library/skills/agent-playtesting/resource.yaml +52 -0
  339. package/library/skills/ambient-bed/resource.yaml +24 -0
  340. package/{skills/video → library/skills}/animated-loop/SKILL.md +1 -1
  341. package/library/skills/animated-loop/resource.yaml +27 -0
  342. package/{skills/animation → library/skills}/animation-tree/SKILL.md +29 -14
  343. package/library/skills/animation-tree/resource.yaml +33 -0
  344. package/{skills/rendering-and-lighting → library/skills}/art-direction/SKILL.md +3 -3
  345. package/library/skills/art-direction/resource.yaml +29 -0
  346. package/{skills/asset-pipeline → library/skills}/asset-strategy/SKILL.md +44 -44
  347. package/library/skills/asset-strategy/resource.yaml +63 -0
  348. package/{skills/audio → library/skills}/audio-direction/SKILL.md +7 -7
  349. package/library/skills/audio-direction/resource.yaml +32 -0
  350. package/library/skills/auto-fire-targeting/resource.yaml +22 -0
  351. package/{skills/scene-and-project → library/skills}/brainstorm-game/SKILL.md +8 -8
  352. package/library/skills/brainstorm-game/resource.yaml +30 -0
  353. package/{skills/workflow → library/skills}/brainstorming/SKILL.md +2 -22
  354. package/library/skills/brainstorming/resource.yaml +23 -0
  355. package/{skills/workflow → library/skills}/brainstorming/spec-document-reviewer-prompt.md +1 -1
  356. package/{skills/scene-and-project → library/skills}/browse-templates/SKILL.md +18 -18
  357. package/library/skills/browse-templates/resource.yaml +23 -0
  358. package/library/skills/celeste-momentum-platforming/SKILL.md +366 -0
  359. package/library/skills/celeste-momentum-platforming/resource.yaml +33 -0
  360. package/library/skills/character-animation-wiring/SKILL.md +249 -0
  361. package/library/skills/character-animation-wiring/resource.yaml +39 -0
  362. package/{skills/3d-assets → library/skills}/character-model/SKILL.md +25 -25
  363. package/library/skills/character-model/resource.yaml +36 -0
  364. package/{skills/2d-assets → library/skills}/character-portrait/SKILL.md +14 -14
  365. package/library/skills/character-portrait/resource.yaml +30 -0
  366. package/{skills/video → library/skills}/cinematic-cutscene/SKILL.md +2 -2
  367. package/library/skills/cinematic-cutscene/resource.yaml +29 -0
  368. package/{skills/2d-assets → library/skills}/concept-art/SKILL.md +15 -15
  369. package/library/skills/concept-art/resource.yaml +34 -0
  370. package/{skills/2d-assets → library/skills}/create-asset-sheet/SKILL.md +8 -8
  371. package/library/skills/create-asset-sheet/resource.yaml +33 -0
  372. package/{skills/debugging → library/skills}/debug/SKILL.md +3 -3
  373. package/library/skills/debug/resource.yaml +31 -0
  374. package/{skills/workflow → library/skills}/debugging-game-feel/SKILL.md +11 -11
  375. package/library/skills/debugging-game-feel/resource.yaml +25 -0
  376. package/{skills/level-design → library/skills}/design-level/SKILL.md +6 -6
  377. package/library/skills/design-level/resource.yaml +31 -0
  378. package/{skills/gameplay-mechanics → library/skills}/design-mechanic/SKILL.md +3 -3
  379. package/library/skills/design-mechanic/resource.yaml +31 -0
  380. package/{skills/ai-and-npcs → library/skills}/design-npc/SKILL.md +7 -3
  381. package/library/skills/design-npc/resource.yaml +29 -0
  382. package/{skills/workflow → library/skills}/diagnosing-perf-regressions/SKILL.md +10 -10
  383. package/library/skills/diagnosing-perf-regressions/resource.yaml +25 -0
  384. package/{skills/workflow → library/skills}/dispatching-parallel-agents/SKILL.md +8 -8
  385. package/library/skills/dispatching-parallel-agents/resource.yaml +23 -0
  386. package/library/skills/driving-the-editor-ui/SKILL.md +85 -0
  387. package/library/skills/driving-the-editor-ui/resource.yaml +46 -0
  388. package/{skills/3d-assets → library/skills}/environment-kit/SKILL.md +11 -11
  389. package/library/skills/environment-kit/resource.yaml +29 -0
  390. package/{skills/deployment → library/skills}/export-and-ship/SKILL.md +5 -5
  391. package/library/skills/export-and-ship/resource.yaml +32 -0
  392. package/library/skills/fabricating-assets/SKILL.md +195 -0
  393. package/library/skills/fabricating-assets/resource.yaml +52 -0
  394. package/{skills/animation → library/skills}/facial-and-lipsync/SKILL.md +23 -11
  395. package/library/skills/facial-and-lipsync/resource.yaml +36 -0
  396. package/{skills/character-controllers → library/skills}/fps-controller/SKILL.md +8 -4
  397. package/library/skills/fps-controller/resource.yaml +29 -0
  398. package/{skills/visual-effects → library/skills}/game-feel/SKILL.md +7 -7
  399. package/library/skills/game-feel/resource.yaml +27 -0
  400. package/library/skills/gameskill/SKILL.md +64 -0
  401. package/library/skills/gameskill/resource.yaml +22 -0
  402. package/library/skills/gdscript-patterns/resource.yaml +23 -0
  403. package/{skills/animation → library/skills}/generate-motion/SKILL.md +16 -16
  404. package/library/skills/generate-motion/resource.yaml +34 -0
  405. package/library/skills/godogen-visual-proof-game-generation/SKILL.md +223 -0
  406. package/library/skills/godogen-visual-proof-game-generation/resource.yaml +33 -0
  407. package/{skills/workflow → library/skills}/headless-scripting/SKILL.md +14 -7
  408. package/library/skills/headless-scripting/resource.yaml +26 -0
  409. package/library/skills/host-authoritative-state/resource.yaml +28 -0
  410. package/{skills/2d-assets → library/skills}/instantiate-asset-pack/SKILL.md +10 -12
  411. package/library/skills/instantiate-asset-pack/resource.yaml +29 -0
  412. package/{skills/workflow → library/skills}/investigating-bugs/SKILL.md +4 -4
  413. package/{skills/workflow → library/skills}/investigating-bugs/condition-based-waiting.md +8 -8
  414. package/library/skills/investigating-bugs/resource.yaml +24 -0
  415. package/{skills/workflow → library/skills}/investigating-bugs/root-cause-tracing.md +1 -7
  416. package/library/skills/lumera-single-image-scene-reconstruction/SKILL.md +164 -0
  417. package/library/skills/lumera-single-image-scene-reconstruction/resource.yaml +35 -0
  418. package/{skills/scene-and-project → library/skills}/make-game/SKILL.md +22 -22
  419. package/library/skills/make-game/resource.yaml +35 -0
  420. package/library/skills/music-track/resource.yaml +28 -0
  421. package/library/skills/navigate-summer/SKILL.md +61 -0
  422. package/library/skills/navigate-summer/resource.yaml +35 -0
  423. package/{skills/scene-and-project → library/skills}/new-project/SKILL.md +10 -10
  424. package/library/skills/new-project/resource.yaml +28 -0
  425. package/{skills/3d-assets → library/skills}/organic-model/SKILL.md +16 -16
  426. package/library/skills/organic-model/resource.yaml +32 -0
  427. package/{skills/multiplayer-and-networking → library/skills}/peer-to-peer-multiplayer/SKILL.md +2 -2
  428. package/library/skills/peer-to-peer-multiplayer/resource.yaml +28 -0
  429. package/{skills/2d-assets → library/skills}/pixel-art/SKILL.md +13 -13
  430. package/library/skills/pixel-art/resource.yaml +31 -0
  431. package/library/skills/play/resource.yaml +26 -0
  432. package/{skills/workflow → library/skills}/playtesting-a-feature/SKILL.md +41 -22
  433. package/library/skills/playtesting-a-feature/resource.yaml +31 -0
  434. package/{skills/animation → library/skills}/procedural-animation/SKILL.md +25 -10
  435. package/library/skills/procedural-animation/resource.yaml +33 -0
  436. package/{skills/3d-assets → library/skills}/prop-model/SKILL.md +13 -13
  437. package/library/skills/prop-model/resource.yaml +33 -0
  438. package/library/skills/psx-retro-rendering/SKILL.md +416 -0
  439. package/library/skills/psx-retro-rendering/resource.yaml +36 -0
  440. package/library/skills/realtime-wet-surfaces/SKILL.md +189 -0
  441. package/library/skills/realtime-wet-surfaces/resource.yaml +31 -0
  442. package/{skills/deployment → library/skills}/remote-deploy/SKILL.md +3 -3
  443. package/library/skills/remote-deploy/resource.yaml +23 -0
  444. package/{skills/animation → library/skills}/retarget/SKILL.md +15 -14
  445. package/library/skills/retarget/resource.yaml +33 -0
  446. package/library/skills/running-in-the-cloud/SKILL.md +103 -0
  447. package/library/skills/running-in-the-cloud/resource.yaml +33 -0
  448. package/{skills/scene-and-project → library/skills}/scene-composition/SKILL.md +8 -0
  449. package/library/skills/scene-composition/resource.yaml +27 -0
  450. package/library/skills/scene-hierarchy-design/SKILL.md +102 -0
  451. package/library/skills/scene-hierarchy-design/resource.yaml +31 -0
  452. package/library/skills/scene-scripting/SKILL.md +764 -0
  453. package/library/skills/scene-scripting/resource.yaml +58 -0
  454. package/{skills/level-design → library/skills}/scene-to-level/SKILL.md +16 -17
  455. package/library/skills/scene-to-level/resource.yaml +33 -0
  456. package/library/skills/setup-multiplayer/resource.yaml +28 -0
  457. package/library/skills/skill-create/SKILL.md +138 -0
  458. package/library/skills/skill-create/resource.yaml +25 -0
  459. package/{skills/workflow → library/skills}/skill-improve/SKILL.md +2 -2
  460. package/library/skills/skill-improve/resource.yaml +25 -0
  461. package/{skills/workflow → library/skills}/skill-test/SKILL.md +4 -4
  462. package/library/skills/skill-test/resource.yaml +26 -0
  463. package/library/skills/skintokens-auto-rigging/SKILL.md +200 -0
  464. package/library/skills/skintokens-auto-rigging/resource.yaml +38 -0
  465. package/{skills/2d-assets → library/skills}/skybox-panorama/SKILL.md +8 -8
  466. package/library/skills/skybox-panorama/resource.yaml +28 -0
  467. package/{skills/audio → library/skills}/sound-effect/SKILL.md +2 -2
  468. package/library/skills/sound-effect/resource.yaml +27 -0
  469. package/library/skills/spatial-placement/SKILL.md +74 -0
  470. package/library/skills/spatial-placement/resource.yaml +42 -0
  471. package/library/skills/spatial-placement/tests/spec.md +65 -0
  472. package/{skills/2d-assets → library/skills}/sprite-sheet/SKILL.md +12 -12
  473. package/library/skills/sprite-sheet/resource.yaml +32 -0
  474. package/{skills/2d-assets → library/skills}/tileable-texture/SKILL.md +9 -9
  475. package/library/skills/tileable-texture/resource.yaml +31 -0
  476. package/{skills/video → library/skills}/trailer-shot/SKILL.md +1 -1
  477. package/library/skills/trailer-shot/resource.yaml +27 -0
  478. package/{skills/performance → library/skills}/tune-performance/SKILL.md +6 -6
  479. package/library/skills/tune-performance/resource.yaml +31 -0
  480. package/library/skills/ui-basics/resource.yaml +25 -0
  481. package/{skills/2d-assets → library/skills}/ui-graphics/SKILL.md +11 -11
  482. package/library/skills/ui-graphics/resource.yaml +29 -0
  483. package/{skills/2d-assets → library/skills}/use-widget-asset/SKILL.md +4 -4
  484. package/library/skills/use-widget-asset/resource.yaml +29 -0
  485. package/{skills/workflow → library/skills}/using-summer/SKILL.md +12 -9
  486. package/library/skills/using-summer/resource.yaml +41 -0
  487. package/{skills/3d-assets → library/skills}/vehicle-model/SKILL.md +18 -18
  488. package/library/skills/vehicle-model/resource.yaml +34 -0
  489. package/{skills/workflow → library/skills}/verification-before-completion/SKILL.md +10 -10
  490. package/library/skills/verification-before-completion/resource.yaml +23 -0
  491. package/library/skills/verifying-scenes/SKILL.md +98 -0
  492. package/library/skills/verifying-scenes/resource.yaml +42 -0
  493. package/{skills/visual-effects/recipes/dissolve → library/skills/vfx-dissolve}/SKILL.md +31 -11
  494. package/library/skills/vfx-dissolve/resource.yaml +33 -0
  495. package/{skills/visual-effects/recipes/fire → library/skills/vfx-fire}/SKILL.md +43 -12
  496. package/library/skills/vfx-fire/_building-blocks/noise-3d-fbm.gdshaderinc +45 -0
  497. package/library/skills/vfx-fire/resource.yaml +35 -0
  498. package/{skills/visual-effects/recipes/hit-spark → library/skills/vfx-hit-spark}/SKILL.md +16 -10
  499. package/library/skills/vfx-hit-spark/_building-blocks/additive-billboard-particles.md +37 -0
  500. package/library/skills/vfx-hit-spark/resource.yaml +34 -0
  501. package/{skills/visual-effects/recipes/lightning → library/skills/vfx-lightning}/SKILL.md +24 -11
  502. package/library/skills/vfx-lightning/_building-blocks/additive-billboard-particles.md +37 -0
  503. package/library/skills/vfx-lightning/resource.yaml +33 -0
  504. package/{skills/visual-effects/recipes/magic-glow → library/skills/vfx-magic-glow}/SKILL.md +31 -11
  505. package/library/skills/vfx-magic-glow/_building-blocks/additive-billboard-particles.md +37 -0
  506. package/library/skills/vfx-magic-glow/resource.yaml +34 -0
  507. package/{skills/visual-effects/recipes/muzzle-flash → library/skills/vfx-muzzle-flash}/SKILL.md +29 -9
  508. package/library/skills/vfx-muzzle-flash/_building-blocks/additive-billboard-particles.md +37 -0
  509. package/library/skills/vfx-muzzle-flash/_building-blocks/trauma-shake-snippet.md +53 -0
  510. package/library/skills/vfx-muzzle-flash/resource.yaml +35 -0
  511. package/{skills/visual-effects/recipes/smoke → library/skills/vfx-smoke}/SKILL.md +35 -9
  512. package/library/skills/vfx-smoke/_building-blocks/noise-3d-fbm.gdshaderinc +45 -0
  513. package/library/skills/vfx-smoke/resource.yaml +32 -0
  514. package/{skills/visual-effects/recipes/water-ripple → library/skills/vfx-water-ripple}/SKILL.md +31 -9
  515. package/library/skills/vfx-water-ripple/_building-blocks/additive-billboard-particles.md +37 -0
  516. package/library/skills/vfx-water-ripple/resource.yaml +31 -0
  517. package/library/skills/voice-line/resource.yaml +27 -0
  518. package/library/skills/world-building-3d/SKILL.md +105 -0
  519. package/library/skills/world-building-3d/references/spatial-tools.md +50 -0
  520. package/library/skills/world-building-3d/resource.yaml +44 -0
  521. package/library/skills/world-building-3d/tests/spec.md +48 -0
  522. package/{skills/workflow → library/skills}/writing-plans/SKILL.md +19 -14
  523. package/library/skills/writing-plans/resource.yaml +23 -0
  524. package/{skills/workflow → library/skills}/writing-skills/SKILL.md +38 -44
  525. package/library/skills/writing-skills/resource.yaml +29 -0
  526. package/{skills/workflow → library/skills}/writing-skills/testing-skills-with-subagents.md +13 -14
  527. package/library/templates/2d-brario-platformer/resource.yaml +21 -0
  528. package/library/templates/2d-dungeon-roguelike/resource.yaml +23 -0
  529. package/library/templates/2d-grid-puzzle/resource.yaml +21 -0
  530. package/library/templates/2d-plants-and-zombies-tower-defense/resource.yaml +21 -0
  531. package/library/templates/2d-platformer/resource.yaml +24 -0
  532. package/library/templates/2d-rpg/resource.yaml +21 -0
  533. package/library/templates/2d-vampire-survivor-roguelike/resource.yaml +21 -0
  534. package/library/templates/3d-basic/resource.yaml +16 -0
  535. package/library/templates/3d-city-kit/resource.yaml +24 -0
  536. package/library/templates/3d-fps-old-school/resource.yaml +21 -0
  537. package/library/templates/3d-fps-simple-animated-npc/resource.yaml +21 -0
  538. package/library/templates/3d-lan-multiplayer-starter/resource.yaml +22 -0
  539. package/library/templates/3d-open-world-explore-tps/resource.yaml +21 -0
  540. package/library/templates/3d-procedural-road-world/resource.yaml +21 -0
  541. package/library/templates/3d-racing-game/resource.yaml +21 -0
  542. package/library/templates/3d-royale-clash-type/resource.yaml +21 -0
  543. package/library/templates/3d-third-person-controller/resource.yaml +21 -0
  544. package/library/templates/3d-voxel-sandbox/resource.yaml +24 -0
  545. package/library/templates/README.md +94 -0
  546. package/library/templates/empty/resource.yaml +16 -0
  547. package/library/tools/add-node/resource.yaml +60 -0
  548. package/library/tools/align-distribute-3d/resource.yaml +87 -0
  549. package/library/tools/api-docs/resource.yaml +57 -0
  550. package/library/tools/batch/resource.yaml +52 -0
  551. package/library/tools/camera-bookmark/resource.yaml +73 -0
  552. package/library/tools/check-job/resource.yaml +45 -0
  553. package/library/tools/clear-console/resource.yaml +40 -0
  554. package/library/tools/connect-signal/resource.yaml +63 -0
  555. package/library/tools/create-debug-report/resource.yaml +67 -0
  556. package/library/tools/create-scene/resource.yaml +59 -0
  557. package/library/tools/creator-config/resource.yaml +63 -0
  558. package/library/tools/creator-publish/resource.yaml +73 -0
  559. package/library/tools/creator-releases/resource.yaml +53 -0
  560. package/library/tools/fabricate-3d/resource.yaml +108 -0
  561. package/library/tools/game-control/resource.yaml +84 -0
  562. package/library/tools/game-input/resource.yaml +159 -0
  563. package/library/tools/game-probe/resource.yaml +90 -0
  564. package/library/tools/generate-3d/resource.yaml +112 -0
  565. package/library/tools/generate-audio/resource.yaml +80 -0
  566. package/library/tools/generate-image/resource.yaml +62 -0
  567. package/library/tools/generate-motion/resource.yaml +66 -0
  568. package/library/tools/generate-video/resource.yaml +66 -0
  569. package/library/tools/get-agent-playbook/resource.yaml +40 -0
  570. package/library/tools/get-asset/resource.yaml +42 -0
  571. package/library/tools/get-asset-download-url/resource.yaml +52 -0
  572. package/library/tools/get-console/resource.yaml +69 -0
  573. package/library/tools/get-debugger-errors/resource.yaml +56 -0
  574. package/library/tools/get-debugger-warnings/resource.yaml +52 -0
  575. package/library/tools/get-diagnostics/resource.yaml +42 -0
  576. package/library/tools/get-project-context/resource.yaml +45 -0
  577. package/library/tools/get-runtime-tree/resource.yaml +62 -0
  578. package/library/tools/get-scene-tree/resource.yaml +52 -0
  579. package/library/tools/get-script-errors/resource.yaml +45 -0
  580. package/library/tools/get-studio-workflow/resource.yaml +43 -0
  581. package/library/tools/import-asset/resource.yaml +73 -0
  582. package/library/tools/import-asset-by-id/resource.yaml +56 -0
  583. package/library/tools/import-from-url/resource.yaml +51 -0
  584. package/library/tools/import-from-url-batch/resource.yaml +60 -0
  585. package/library/tools/import-hdri/resource.yaml +69 -0
  586. package/library/tools/input-map-bind/resource.yaml +52 -0
  587. package/library/tools/inspect-node/resource.yaml +46 -0
  588. package/library/tools/inspect-resource/resource.yaml +45 -0
  589. package/library/tools/inspect-runtime-node/resource.yaml +54 -0
  590. package/library/tools/instantiate-scene/resource.yaml +62 -0
  591. package/library/tools/is-running/resource.yaml +40 -0
  592. package/library/tools/library-feedback/resource.yaml +89 -0
  593. package/library/tools/list-my-assets/resource.yaml +56 -0
  594. package/library/tools/navigation-probe/resource.yaml +85 -0
  595. package/library/tools/open/resource.yaml +80 -0
  596. package/library/tools/open-main-scene/resource.yaml +40 -0
  597. package/library/tools/open-scene/resource.yaml +46 -0
  598. package/library/tools/play/resource.yaml +91 -0
  599. package/library/tools/project-setting/resource.yaml +53 -0
  600. package/library/tools/read-file/resource.yaml +47 -0
  601. package/library/tools/read-library/resource.yaml +67 -0
  602. package/library/tools/recent-events/resource.yaml +71 -0
  603. package/library/tools/remove-node/resource.yaml +51 -0
  604. package/library/tools/replace-node/resource.yaml +57 -0
  605. package/library/tools/replace-text/resource.yaml +61 -0
  606. package/library/tools/run-editor-script/resource.yaml +61 -0
  607. package/library/tools/run-script/resource.yaml +73 -0
  608. package/library/tools/runtime-animate/resource.yaml +140 -0
  609. package/library/tools/runtime-call/resource.yaml +74 -0
  610. package/library/tools/runtime-set/resource.yaml +80 -0
  611. package/library/tools/runtime-spawn/resource.yaml +95 -0
  612. package/library/tools/save-scene/resource.yaml +50 -0
  613. package/library/tools/screenshot/resource.yaml +112 -0
  614. package/library/tools/search-assets/resource.yaml +67 -0
  615. package/library/tools/search-library/resource.yaml +81 -0
  616. package/library/tools/select-node/resource.yaml +48 -0
  617. package/library/tools/set-prop/resource.yaml +64 -0
  618. package/library/tools/set-resource-property/resource.yaml +66 -0
  619. package/library/tools/slice-asset-sheet/resource.yaml +47 -0
  620. package/library/tools/snap-to-surface/resource.yaml +90 -0
  621. package/library/tools/snapshot-diff/resource.yaml +58 -0
  622. package/library/tools/starcast/resource.yaml +120 -0
  623. package/library/tools/start-game-task/resource.yaml +91 -0
  624. package/library/tools/stop/resource.yaml +51 -0
  625. package/library/tools/test-placement/resource.yaml +109 -0
  626. package/library/tools/ui-actions/resource.yaml +77 -0
  627. package/library/tools/ui-activate/resource.yaml +88 -0
  628. package/library/tools/ui-screenshot/resource.yaml +63 -0
  629. package/library/tools/ui-tree/resource.yaml +69 -0
  630. package/library/tools/wait-for-event/resource.yaml +84 -0
  631. package/library/tools/world-snapshot/resource.yaml +60 -0
  632. package/library/tools/write-file/resource.yaml +54 -0
  633. package/package.json +21 -15
  634. package/registry/generated/aliases.json +207 -0
  635. package/registry/generated/counts.json +12 -0
  636. package/registry/generated/gemini-extension.json +122 -0
  637. package/registry/generated/index.json +7709 -0
  638. package/registry/generated/marketplace.claude.json +44 -0
  639. package/registry/generated/mcp.json +13 -0
  640. package/registry/generated/plugin.claude.json +135 -0
  641. package/registry/generated/plugin.codex.json +144 -0
  642. package/registry/generated/plugin.cursor.json +134 -0
  643. package/registry/generated/plugin.factory.json +117 -0
  644. package/registry/generated/skills-index.md +242 -0
  645. package/registry/generated/skills-registry.json +1249 -0
  646. package/registry/generated/templates-registry.json +455 -0
  647. package/registry/schemas/allowed-hosts.json +19 -0
  648. package/registry/schemas/collection.schema.json +68 -0
  649. package/registry/schemas/domains.json +96 -0
  650. package/registry/schemas/example.schema.json +11 -0
  651. package/registry/schemas/reference.schema.json +10 -0
  652. package/registry/schemas/resource.schema.json +154 -0
  653. package/registry/schemas/skill.schema.json +14 -0
  654. package/registry/schemas/template.schema.json +46 -0
  655. package/registry/schemas/tool.schema.json +61 -0
  656. package/_persona/summer/SKILL.md +0 -113
  657. package/dist/bin/postinstall.d.ts +0 -2
  658. package/dist/bin/postinstall.js +0 -3
  659. package/dist/commands/cloud.d.ts +0 -2
  660. package/dist/commands/cloud.js +0 -80
  661. package/dist/commands/create.d.ts +0 -3
  662. package/dist/commands/create.js +0 -171
  663. package/dist/commands/install.d.ts +0 -19
  664. package/dist/commands/install.js +0 -194
  665. package/dist/commands/list.js +0 -67
  666. package/dist/commands/logout.js +0 -13
  667. package/dist/commands/logs.d.ts +0 -2
  668. package/dist/commands/logs.js +0 -19
  669. package/dist/commands/open.d.ts +0 -2
  670. package/dist/commands/open.js +0 -32
  671. package/dist/commands/orchestrator.d.ts +0 -8
  672. package/dist/commands/orchestrator.js +0 -143
  673. package/dist/commands/run.d.ts +0 -2
  674. package/dist/commands/run.js +0 -167
  675. package/dist/commands/setup.js +0 -217
  676. package/dist/commands/status.js +0 -46
  677. package/dist/lib/agent-config.d.ts +0 -39
  678. package/dist/lib/agent-config.js +0 -626
  679. package/dist/lib/banner.d.ts +0 -4
  680. package/dist/lib/banner.js +0 -122
  681. package/dist/lib/cloud/api.d.ts +0 -79
  682. package/dist/lib/cloud/api.js +0 -107
  683. package/dist/lib/cloud/apply.d.ts +0 -32
  684. package/dist/lib/cloud/apply.js +0 -294
  685. package/dist/lib/cloud/checkpoint.d.ts +0 -26
  686. package/dist/lib/cloud/checkpoint.js +0 -142
  687. package/dist/lib/cloud/conflicts.d.ts +0 -55
  688. package/dist/lib/cloud/conflicts.js +0 -131
  689. package/dist/lib/cloud/containment.d.ts +0 -8
  690. package/dist/lib/cloud/containment.js +0 -52
  691. package/dist/lib/cloud/diff.d.ts +0 -39
  692. package/dist/lib/cloud/diff.js +0 -138
  693. package/dist/lib/cloud/engine-bridge.d.ts +0 -34
  694. package/dist/lib/cloud/engine-bridge.js +0 -139
  695. package/dist/lib/cloud/hash-cache.d.ts +0 -23
  696. package/dist/lib/cloud/hash-cache.js +0 -44
  697. package/dist/lib/cloud/hash.d.ts +0 -10
  698. package/dist/lib/cloud/hash.js +0 -111
  699. package/dist/lib/cloud/http.d.ts +0 -17
  700. package/dist/lib/cloud/http.js +0 -47
  701. package/dist/lib/cloud/lock-path.d.ts +0 -1
  702. package/dist/lib/cloud/lock-path.js +0 -5
  703. package/dist/lib/cloud/lock.d.ts +0 -14
  704. package/dist/lib/cloud/lock.js +0 -143
  705. package/dist/lib/cloud/manifest.d.ts +0 -6
  706. package/dist/lib/cloud/manifest.js +0 -41
  707. package/dist/lib/cloud/paths.d.ts +0 -20
  708. package/dist/lib/cloud/paths.js +0 -90
  709. package/dist/lib/cloud/project-godot-merge.d.ts +0 -32
  710. package/dist/lib/cloud/project-godot-merge.js +0 -185
  711. package/dist/lib/cloud/rules.d.ts +0 -39
  712. package/dist/lib/cloud/rules.js +0 -159
  713. package/dist/lib/cloud/sync.d.ts +0 -21
  714. package/dist/lib/cloud/sync.js +0 -518
  715. package/dist/lib/cloud/transfer.d.ts +0 -23
  716. package/dist/lib/cloud/transfer.js +0 -184
  717. package/dist/lib/cloud/types.d.ts +0 -62
  718. package/dist/lib/cloud/types.js +0 -1
  719. package/dist/lib/cloud/validate-path.d.ts +0 -23
  720. package/dist/lib/cloud/validate-path.js +0 -103
  721. package/dist/lib/engine.d.ts +0 -51
  722. package/dist/lib/game-task-plan.d.ts +0 -42
  723. package/dist/lib/project-memory.d.ts +0 -33
  724. package/dist/lib/public-surface-paths.d.ts +0 -13
  725. package/dist/lib/public-surface-paths.js +0 -42
  726. package/dist/lib/remote-templates.d.ts +0 -25
  727. package/dist/lib/remote-templates.js +0 -86
  728. package/dist/lib/skills-registry.d.ts +0 -572
  729. package/dist/lib/skills-registry.js +0 -1061
  730. package/dist/lib/version-check.d.ts +0 -106
  731. package/dist/lib/version-check.js +0 -338
  732. package/dist/mcp/tools/cloud-tools.js +0 -42
  733. package/references/mcp-tools-reference.md +0 -199
  734. package/references/template-registry.md +0 -73
  735. package/skills/README.md +0 -103
  736. package/skills/scene-and-project/summer-cloud/SKILL.md +0 -92
  737. package/skills/workflow/brainstorming/scripts/frame-template.html +0 -214
  738. package/skills/workflow/brainstorming/scripts/helper.js +0 -88
  739. package/skills/workflow/brainstorming/scripts/server.cjs +0 -354
  740. package/skills/workflow/brainstorming/scripts/start-server.sh +0 -148
  741. package/skills/workflow/brainstorming/scripts/stop-server.sh +0 -56
  742. package/skills/workflow/brainstorming/visual-companion.md +0 -287
  743. package/skills/workflow/gameskill/SKILL.md +0 -120
  744. package/skills/workflow/investigating-bugs/CREATION-LOG.md +0 -119
  745. package/skills/workflow/investigating-bugs/condition-based-waiting-example.ts +0 -158
  746. package/skills/workflow/investigating-bugs/find-polluter.sh +0 -63
  747. package/skills/workflow/investigating-bugs/test-academic.md +0 -14
  748. package/skills/workflow/investigating-bugs/test-pressure-1.md +0 -58
  749. package/skills/workflow/investigating-bugs/test-pressure-2.md +0 -68
  750. package/skills/workflow/investigating-bugs/test-pressure-3.md +0 -69
  751. package/skills/workflow/mcpupdate/SKILL.md +0 -134
  752. package/skills/workflow/skill-create/SKILL.md +0 -153
  753. package/skills/workflow/writing-skills/anthropic-best-practices.md +0 -1150
  754. package/skills/workflow/writing-skills/examples/CLAUDE_MD_TESTING.md +0 -189
  755. package/skills/workflow/writing-skills/graphviz-conventions.dot +0 -172
  756. package/skills/workflow/writing-skills/persuasion-principles.md +0 -187
  757. package/skills/workflow/writing-skills/render-graphs.js +0 -168
  758. /package/dist/{commands → cli/commands}/config.d.ts +0 -0
  759. /package/dist/{commands → cli/commands}/debug.d.ts +0 -0
  760. /package/dist/{commands → cli/commands}/list.d.ts +0 -0
  761. /package/dist/{commands → cli/commands}/login.d.ts +0 -0
  762. /package/dist/{commands → cli/commands}/plan.d.ts +0 -0
  763. /package/dist/{commands → cli/commands}/publish.d.ts +0 -0
  764. /package/dist/{commands → cli/commands}/releases.d.ts +0 -0
  765. /package/dist/{commands → cli/commands}/setup.d.ts +0 -0
  766. /package/dist/{commands → cli/commands}/skills.d.ts +0 -0
  767. /package/dist/{lib → core}/log-filters.d.ts +0 -0
  768. /package/dist/{lib → core}/mcp-log.d.ts +0 -0
  769. /package/dist/{lib → core}/store.d.ts +0 -0
  770. /package/dist/{lib → core}/summer-compatibility.d.ts +0 -0
  771. /package/dist/{lib → core}/telemetry.d.ts +0 -0
  772. /package/dist/{lib/mcp-boot-notice.js → mcp/boot-notice.js} +0 -0
  773. /package/dist/{commands/mcp.d.ts → mcp/command.d.ts} +0 -0
  774. /package/{references → library/references/collaborative-protocol}/collaborative-protocol.md +0 -0
  775. /package/{references → library/references/gd-style}/gd-style.md +0 -0
  776. /package/{skills/audio → library/skills}/ambient-bed/SKILL.md +0 -0
  777. /package/{skills/gameplay-mechanics → library/skills}/auto-fire-targeting/SKILL.md +0 -0
  778. /package/{skills/scripting-patterns → library/skills}/gdscript-patterns/SKILL.md +0 -0
  779. /package/{skills/scripting-patterns → library/skills}/gdscript-patterns/reference.md +0 -0
  780. /package/{skills/multiplayer-and-networking → library/skills}/host-authoritative-state/SKILL.md +0 -0
  781. /package/{skills/workflow → library/skills}/investigating-bugs/defense-in-depth.md +0 -0
  782. /package/{skills/audio → library/skills}/music-track/SKILL.md +0 -0
  783. /package/{skills/scene-and-project → library/skills}/play/SKILL.md +0 -0
  784. /package/{skills/multiplayer-and-networking → library/skills}/setup-multiplayer/SKILL.md +0 -0
  785. /package/{skills/ui-and-ux → library/skills}/ui-basics/SKILL.md +0 -0
  786. /package/{skills/visual-effects → library/skills/vfx-dissolve}/_building-blocks/noise-3d-fbm.gdshaderinc +0 -0
  787. /package/{skills/visual-effects → library/skills/vfx-fire}/_building-blocks/additive-billboard-particles.md +0 -0
  788. /package/{skills/visual-effects → library/skills/vfx-lightning}/_building-blocks/trauma-shake-snippet.md +0 -0
  789. /package/{skills/audio → library/skills}/voice-line/SKILL.md +0 -0
  790. /package/{skills/workflow → library/skills}/writing-plans/plan-document-reviewer-prompt.md +0 -0
@@ -0,0 +1,158 @@
1
+ import { Command, Option } from "commander";
2
+ import { configureAgentMcp, resolveAgentSelection, resolveConfigScope, supportedAgents, } from "../../installer/agent-config.js";
3
+ import { previewNote, setupSkills } from "../../installer/setup.js";
4
+ import { printDoctorResult, runDoctor } from "../../core/capabilities/doctor.js";
5
+ import { brandLine, c, sym, tildeify } from "../../core/format.js";
6
+ import { TOOLKIT_VERSION as cliVersion } from "../../core/version.js";
7
+ import { resolveDefaultChannel } from "../../installer/version-check.js";
8
+ import { agentLabel } from "../../installer/agent-table.js";
9
+ export const setupCommand = new Command("setup")
10
+ .description("Configure Summer Engine for an AI agent and run diagnostics")
11
+ .argument("[agent]", `Agent to configure: ${supportedAgents.join(", ")}`)
12
+ .option("--agent <agent>", `Agent to configure: ${supportedAgents.join(", ")}`)
13
+ .option("--scope <scope>", "Configuration scope: user or project", "user")
14
+ .option("--dry-run", "Show planned changes without writing files")
15
+ .option("--print", "Print the MCP config snippet instead of writing files")
16
+ .option("--local-dev", "Point the agent at this checkout's built CLI (node <repo>/dist/bin/summer.js mcp) instead of npx summer-engine@latest — for testing unpublished builds. SUMMER_DEV=1 does the same.")
17
+ .option("--channel <dist-tag>", "npm dist-tag the agent's MCP entry runs: npx -y summer-engine@<dist-tag> mcp (default latest; use next while a release soaks on the next tag). SUMMER_CHANNEL does the same.")
18
+ .option("--yes", "Apply practical setup steps without prompting")
19
+ .option("--json", "Print setup result as JSON")
20
+ .option("--force", "Overwrite existing skill content (passes --force through to skills install)")
21
+ .option("--recommended", "Install only the recommended skill subset instead of the whole library")
22
+ .option("--stable-only", "Skip preview skills (installed by default; each is labelled preview in its guidance)")
23
+ // Pre-reversal opt-in, kept one release as a hidden no-op so old scripts still parse.
24
+ .addOption(new Option("--include-preview", "No-op: preview skills install by default").hideHelp())
25
+ .action(async (agentArg, opts) => {
26
+ const agent = resolveAgentSelection(agentArg, opts.agent);
27
+ const scope = resolveConfigScope(opts.scope);
28
+ const defaultChannel = await resolveDefaultChannel(cliVersion);
29
+ const config = await configureAgentMcp({
30
+ agent,
31
+ scope,
32
+ dryRun: opts.dryRun,
33
+ print: opts.print,
34
+ localDev: Boolean(opts.localDev) || process.env.SUMMER_DEV === "1",
35
+ channel: opts.channel ?? process.env.SUMMER_CHANNEL ?? defaultChannel.channel,
36
+ });
37
+ if (!opts.channel && !process.env.SUMMER_CHANNEL && defaultChannel.note && !opts.print) {
38
+ console.log(` ${c.dim(defaultChannel.note)}`);
39
+ }
40
+ const skills = setupSkills(agent, {
41
+ dryRun: Boolean(opts.dryRun || opts.print),
42
+ yes: Boolean(opts.yes),
43
+ force: Boolean(opts.force),
44
+ scope,
45
+ recommended: Boolean(opts.recommended),
46
+ stableOnly: Boolean(opts.stableOnly),
47
+ });
48
+ const doctor = await runDoctor({ quiet: true });
49
+ if (opts.json) {
50
+ console.log(JSON.stringify({
51
+ ok: doctor.ok && skills.status !== "failed",
52
+ config,
53
+ skills,
54
+ doctor,
55
+ }, null, 2));
56
+ }
57
+ else {
58
+ printSetupResult(config, skills, doctor);
59
+ }
60
+ if (!doctor.ok || skills.status === "failed") {
61
+ process.exit(1);
62
+ }
63
+ });
64
+ function printSetupResult(config, skills, doctor) {
65
+ if (config.print) {
66
+ console.log(config.snippet.trimEnd());
67
+ return;
68
+ }
69
+ console.log("");
70
+ console.log(brandLine(cliVersion));
71
+ console.log("");
72
+ const label = agentLabel(config.agent);
73
+ if (config.dryRun) {
74
+ console.log(` ${c.dim("(dry run)")} Would link to ${label} ${c.dim(tildeify(config.path))}`);
75
+ }
76
+ else if (config.wrote) {
77
+ console.log(` ${sym.ok()} Linked to ${c.bold(label)} ${c.dim(tildeify(config.path))}`);
78
+ }
79
+ else {
80
+ console.log(` ${sym.ok()} Already linked to ${c.bold(label)} ${c.dim(tildeify(config.path))}`);
81
+ }
82
+ if (config.localDev) {
83
+ console.log(` ${c.dim("(local dev)")} MCP server command: ${c.dim(`${config.server.command} ${config.server.args.join(" ")}`)}`);
84
+ }
85
+ else if (config.channel !== "latest") {
86
+ console.log(` ${c.dim(`(channel ${config.channel})`)} MCP server command: ${c.dim(`${config.server.command} ${config.server.args.join(" ")}`)}`);
87
+ }
88
+ if (skills.status === "installed") {
89
+ const installed = parseInstalledSkills(skills.stdout);
90
+ if (installed.length > 0) {
91
+ const where = parseSkillTargetDir(skills.stdout);
92
+ const note = previewNote(skills);
93
+ const tally = skills.installed
94
+ ? c.dim(` (${skills.installed.added} new, ${skills.installed.updated} updated${note ? `; ${note}` : ""})`)
95
+ : "";
96
+ console.log(` ${sym.ok()} Installed ${c.bold(String(installed.length) + " skills")}${tally} ${where ? c.dim(tildeify(where)) : ""}`);
97
+ const grouped = installed.reduce((rows, name, i) => {
98
+ const row = Math.floor(i / 3);
99
+ rows[row] = rows[row] ?? [];
100
+ rows[row].push(name);
101
+ return rows;
102
+ }, []);
103
+ for (const row of grouped) {
104
+ console.log(` ${c.dim(row.join(" · "))}`);
105
+ }
106
+ }
107
+ else {
108
+ console.log(` ${sym.ok()} ${skills.message}`);
109
+ }
110
+ }
111
+ else if (skills.status === "planned" && config.dryRun) {
112
+ const note = previewNote(skills);
113
+ console.log(` ${c.dim("(dry run)")} Would install ${c.bold(String(skills.count ?? "?") + " skills")}${note ? c.dim(` (${note})`) : ""} ${c.dim(skills.destination ?? "")}`);
114
+ }
115
+ else if (skills.status === "planned" || skills.status === "skipped") {
116
+ console.log(` ${sym.warn()} Skills: ${c.dim(skills.message)}`);
117
+ }
118
+ else if (skills.status === "failed") {
119
+ console.log(` ${sym.fail()} Skills install failed`);
120
+ if (skills.stderr)
121
+ console.log(` ${c.dim(skills.stderr)}`);
122
+ }
123
+ for (const warning of config.warnings) {
124
+ console.log(` ${sym.warn()} ${c.yellow(warning)}`);
125
+ }
126
+ console.log("");
127
+ printDoctorResult(doctor);
128
+ if (doctor.ok && skills.status !== "failed" && !config.dryRun) {
129
+ console.log("");
130
+ console.log(`${c.dim("Try it:")} open ${label} and ask: ${c.bold("\"add a DirectionalLight3D and Camera3D to my scene\"")}`);
131
+ }
132
+ }
133
+ function parseInstalledSkills(stdout) {
134
+ if (!stdout)
135
+ return [];
136
+ // Lines look like: " Installed fps-controller -> /path/.../fps-controller"
137
+ const names = [];
138
+ for (const line of stdout.split("\n")) {
139
+ const m = line.match(/^\s*(?:Installed|Updated|Generated)\s+([a-z0-9-]+)\s+->/i);
140
+ if (m)
141
+ names.push(m[1]);
142
+ }
143
+ return names;
144
+ }
145
+ function parseSkillTargetDir(stdout) {
146
+ if (!stdout)
147
+ return null;
148
+ for (const line of stdout.split("\n")) {
149
+ const m = line.match(/^\s*(?:Installed|Updated|Generated)\s+[a-z0-9-]+\s+->\s+(.+)$/i);
150
+ if (m) {
151
+ const path = m[1].trim();
152
+ // Strip trailing /<skill-name> to get the parent dir
153
+ const parent = path.replace(/\/[a-z0-9-]+$/i, "/");
154
+ return parent;
155
+ }
156
+ }
157
+ return null;
158
+ }
@@ -1,244 +1,65 @@
1
- import { Command } from "commander";
1
+ import { Command, Option } from "commander";
2
2
  import { existsSync, mkdirSync, readFileSync, cpSync, rmSync, writeFileSync, readdirSync, copyFileSync, } from "fs";
3
3
  import { join, dirname } from "path";
4
- import { fileURLToPath } from "url";
5
- import { homedir, platform } from "os";
6
- import { createRequire } from "node:module";
7
- import { AGENT_CLIENTS, SKILL_REGISTRY, } from "../lib/skills-registry.js";
8
- import { tildeify } from "../lib/format.js";
9
- import { writeSkillMarker } from "../lib/version-check.js";
10
- const requireFromHere = createRequire(import.meta.url);
11
- const { version: cliVersion } = requireFromHere("../../package.json");
12
- const __dirname = dirname(fileURLToPath(import.meta.url));
13
- // Resolve skills dir: from dist/commands/skills.js -> ../../skills
14
- const skillsDir = join(__dirname, "..", "..", "skills");
15
- // Resolve commands dir: same parent. Used by Claude Code installs to also copy
4
+ import { homedir } from "os";
5
+ import { AGENT_CLIENTS, getSkillRegistry, resolveSkillDir, selectSkillsForBulkInstall, } from "../../core/skills-registry.js";
6
+ import { tildeify } from "../../core/format.js";
7
+ import { writeSkillMarker } from "../../installer/version-check.js";
8
+ import { pruneRetiredSkills } from "../../installer/legacy-skills.js";
9
+ import { resolveInstallLocation, resolveSkillAgent, resolveSkillScope, } from "../../installer/skill-locations.js";
10
+ import { PACKAGE_ROOT } from "../../core/package-root.js";
11
+ import { agentLabel as tableAgentLabel, agentSpec, defaultPathContext, legacyRuleFiles } from "../../installer/agent-table.js";
12
+ import { TOOLKIT_VERSION as cliVersion } from "../../core/version.js";
13
+ // Skill files live in library/skills/<slug>/ and are resolved through the
14
+ // generated registry (registry/generated/skills-registry.json).
15
+ // Resolve commands dir: from dist/cli/commands/skills.js -> ../../../commands.
16
+ // Used by Claude Code installs to also copy
16
17
  // slash commands (e.g. /gameskill) to ~/.claude/commands/. Other agents don't
17
18
  // have an equivalent today, so the copy is gated to claude-code.
18
- const commandsDir = join(__dirname, "..", "..", "commands");
19
- const SKILL_SCOPES = ["user", "project"];
19
+ const commandsDir = join(PACKAGE_ROOT, "commands");
20
20
  function getBuiltinSkills() {
21
- const skills = [];
22
- for (const entry of SKILL_REGISTRY) {
23
- if (!entry.public)
24
- continue;
25
- const skillPath = join(skillsDir, entry.category, entry.name, "SKILL.md");
26
- if (!existsSync(skillPath))
27
- continue;
28
- const frontmatter = parseSkillFrontmatter(skillPath);
29
- if (!frontmatter)
30
- continue;
31
- skills.push({
32
- ...entry,
33
- name: entry.name,
34
- description: frontmatter.description,
35
- });
36
- }
37
- return skills;
38
- }
39
- function parseSkillFrontmatter(skillPath) {
40
- try {
41
- const content = readFileSync(skillPath, "utf-8");
42
- const match = content.match(/^---\s*\n([\s\S]*?)\n---/);
43
- if (!match)
44
- return null;
45
- const front = match[1];
46
- const name = front.match(/^name:\s*(.+)$/m)?.[1]?.trim();
47
- const description = front.match(/^description:\s*(.+)$/m)?.[1]?.trim();
48
- if (!name || !description)
49
- return null;
50
- return { name, description };
51
- }
52
- catch {
53
- return null;
54
- }
21
+ return getSkillRegistry().filter((entry) => existsSync(join(resolveSkillDir(entry), "SKILL.md")));
55
22
  }
56
23
  function getSkillMeta(name) {
57
24
  return getBuiltinSkills().find((skill) => skill.name === name) ?? null;
58
25
  }
59
26
  function getSkillPath(name) {
60
- const entry = SKILL_REGISTRY.find((s) => s.name === name);
27
+ const entry = getSkillRegistry().find((s) => s.name === name);
61
28
  if (!entry)
62
29
  return null;
63
- const path = join(skillsDir, entry.category, entry.name);
30
+ const path = resolveSkillDir(entry);
64
31
  if (!existsSync(path) || !existsSync(join(path, "SKILL.md")))
65
32
  return null;
66
33
  return path;
67
34
  }
68
35
  function getSkillBody(name) {
69
- const entry = SKILL_REGISTRY.find((s) => s.name === name);
70
- if (!entry)
36
+ const path = getSkillPath(name);
37
+ if (!path)
71
38
  throw new Error(`Unknown skill: ${name}`);
72
- const skillPath = join(skillsDir, entry.category, entry.name, "SKILL.md");
73
- const content = readFileSync(skillPath, "utf-8");
39
+ const content = readFileSync(join(path, "SKILL.md"), "utf-8");
74
40
  return content.replace(/^---\s*\n[\s\S]*?\n---\s*\n/, "").trim();
75
41
  }
76
42
  function die(message) {
77
43
  console.error(message);
78
44
  process.exit(1);
79
45
  }
80
- function isAgentClient(value) {
81
- return AGENT_CLIENTS.includes(value);
82
- }
83
- function isSkillScope(value) {
84
- return SKILL_SCOPES.includes(value);
85
- }
86
- function parseAgent(value) {
87
- if (isAgentClient(value))
88
- return value;
89
- die(`Unknown agent: ${value}. Use one of: ${AGENT_CLIENTS.join(", ")}.`);
90
- }
91
- function parseScope(value) {
92
- if (isSkillScope(value))
93
- return value;
94
- die(`Unknown scope: ${value}. Use user or project.`);
95
- }
96
- function resolveAgent(opts) {
97
- if (opts.asClaudeSkill && opts.asCursorSkill) {
98
- die("Use only one legacy alias: --as-claude-skill or --as-cursor-skill.");
99
- }
100
- const legacyAgent = opts.asClaudeSkill
101
- ? "claude-code"
102
- : opts.asCursorSkill
103
- ? "cursor"
104
- : undefined;
105
- if (opts.agent && legacyAgent && opts.agent !== legacyAgent) {
106
- die(`Conflicting agent options: --agent ${opts.agent} with legacy alias for ${legacyAgent}.`);
46
+ /** Run an installer-layer option parser; its Error message becomes the CLI's exit line. */
47
+ function orDie(parse) {
48
+ try {
49
+ return parse();
107
50
  }
108
- return parseAgent(opts.agent ?? legacyAgent ?? "summer");
109
- }
110
- function resolveScope(agent, opts) {
111
- if (opts.scope)
112
- return parseScope(opts.scope);
113
- if (agent === "cursor" ||
114
- agent === "windsurf" ||
115
- agent === "cline" ||
116
- agent === "roo-code" ||
117
- agent === "kilo-code") {
118
- return "project";
51
+ catch (error) {
52
+ die(error instanceof Error ? error.message : String(error));
119
53
  }
120
- return "user";
121
54
  }
122
55
  function agentLabel(agent) {
123
- switch (agent) {
124
- case "claude-code":
125
- return "Claude Code";
126
- case "codex":
127
- return "Codex";
128
- case "cursor":
129
- return "Cursor";
130
- case "windsurf":
131
- return "Devin Desktop (Windsurf)";
132
- case "cline":
133
- return "Cline";
134
- case "roo-code":
135
- return "Roo Code";
136
- case "kilo-code":
137
- return "Kilo Code";
138
- case "gemini":
139
- return "Gemini CLI";
140
- case "github-copilot":
141
- return "GitHub Copilot CLI";
142
- case "vscode-copilot":
143
- return "GitHub Copilot in VS Code";
144
- case "opencode":
145
- return "OpenCode";
146
- case "summer":
147
- return "Summer";
148
- }
56
+ return agent === "summer" ? "Summer" : tableAgentLabel(agent);
149
57
  }
150
- function resolveInstallLocation(agent, scope) {
151
- const overrideDir = process.env.SUMMER_SKILLS_DIR;
152
- if (overrideDir) {
153
- if (agent === "cursor")
154
- return { kind: "cursor-rule-dir", path: overrideDir };
155
- if (agent === "windsurf") {
156
- return { kind: "windsurf-rule-file", path: join(overrideDir, ".windsurfrules") };
157
- }
158
- if (agent === "cline" || agent === "roo-code" || agent === "kilo-code") {
159
- return { kind: "cline-rule-dir", path: overrideDir };
160
- }
161
- if (agent === "gemini") {
162
- return { kind: "gemini-skill-dir", path: overrideDir };
163
- }
164
- if (agent === "opencode") {
165
- return { kind: "opencode-skill-dir", path: overrideDir };
166
- }
167
- return { kind: "skill-dir", path: overrideDir };
168
- }
169
- const root = scope === "user" ? homedir() : process.cwd();
170
- switch (agent) {
171
- case "codex":
172
- return { kind: "skill-dir", path: join(root, ".agents", "skills") };
173
- case "claude-code":
174
- return { kind: "skill-dir", path: join(root, ".claude", "skills") };
175
- case "cursor":
176
- return { kind: "cursor-rule-dir", path: join(root, ".cursor", "rules") };
177
- case "windsurf":
178
- return { kind: "windsurf-rule-file", path: join(root, ".windsurfrules") };
179
- case "cline":
180
- return {
181
- kind: "cline-rule-dir",
182
- path: scope === "user"
183
- ? clineUserRulesDir()
184
- : join(process.cwd(), ".clinerules"),
185
- };
186
- case "roo-code":
187
- return {
188
- kind: "cline-rule-dir",
189
- path: scope === "user"
190
- ? rooCodeUserRulesDir()
191
- : join(process.cwd(), ".clinerules"),
192
- };
193
- case "kilo-code":
194
- return {
195
- kind: "cline-rule-dir",
196
- path: scope === "user"
197
- ? join(homedir(), ".kilocode", "rules")
198
- : join(process.cwd(), ".kilocode", "rules"),
199
- };
200
- case "gemini":
201
- return {
202
- kind: "gemini-skill-dir",
203
- path: join(homedir(), ".gemini", "extensions", "summer-engine", "skills"),
204
- };
205
- case "github-copilot":
206
- case "vscode-copilot":
207
- return {
208
- kind: "skill-dir",
209
- path: scope === "user"
210
- ? join(homedir(), ".copilot", "skills")
211
- : join(process.cwd(), ".github", "skills"),
212
- };
213
- case "opencode":
214
- return {
215
- kind: "opencode-skill-dir",
216
- path: scope === "user"
217
- ? opencodeUserAgentsDir()
218
- : join(process.cwd(), ".opencode", "agents", "summer"),
219
- };
220
- case "summer":
221
- return { kind: "skill-dir", path: join(root, ".summer", "skills") };
222
- }
58
+ function previewSkippedLine(count) {
59
+ return ` Skipped ${count} preview skill${count === 1 ? "" : "s"} (--stable-only).`;
223
60
  }
224
- function clineUserRulesDir() {
225
- // Cline reads global rules from the user's Documents/Cline/Rules folder.
226
- return join(homedir(), "Documents", "Cline", "Rules");
227
- }
228
- function rooCodeUserRulesDir() {
229
- // Roo Code reads global rules from the user's Documents/Roo/Rules folder.
230
- return join(homedir(), "Documents", "Roo", "Rules");
231
- }
232
- function opencodeUserAgentsDir() {
233
- // OpenCode's user-scope agent definition directory varies by OS.
234
- // On Windows, OpenCode reads from %APPDATA%/opencode/agents/summer.
235
- // On Linux/macOS, it reads from $XDG_CONFIG_HOME or ~/.config/opencode/agents/summer.
236
- if (platform() === "win32") {
237
- const appData = process.env.APPDATA ?? join(homedir(), "AppData", "Roaming");
238
- return join(appData, "opencode", "agents", "summer");
239
- }
240
- const xdg = process.env.XDG_CONFIG_HOME ?? join(homedir(), ".config");
241
- return join(xdg, "opencode", "agents", "summer");
61
+ function previewIncludedLine(count) {
62
+ return ` ${count} preview skill${count === 1 ? "" : "s"} included — labelled in ${count === 1 ? "its" : "each skill's"} guidance; add --stable-only to skip.`;
242
63
  }
243
64
  function selectSkills(name, opts) {
244
65
  if (opts.all && opts.recommended) {
@@ -248,10 +69,16 @@ function selectSkills(name, opts) {
248
69
  die("Specify either a skill name or a bulk option, not both.");
249
70
  }
250
71
  const skills = getBuiltinSkills();
251
- if (opts.all)
252
- return skills;
253
- if (opts.recommended)
254
- return skills.filter((skill) => skill.recommended);
72
+ if (opts.all || opts.recommended) {
73
+ // Bulk installs take stable and preview skills (preview is a label, not a
74
+ // gate); --stable-only skips preview. An explicit name below installs
75
+ // regardless of status.
76
+ const { selected, previewIncluded, previewSkipped } = selectSkillsForBulkInstall(skills, {
77
+ recommended: Boolean(opts.recommended),
78
+ stableOnly: Boolean(opts.stableOnly),
79
+ });
80
+ return { skills: selected, previewIncluded, previewSkipped };
81
+ }
255
82
  if (!name) {
256
83
  console.error("Specify a skill name, --recommended, or --all.");
257
84
  printAvailableSkillNames();
@@ -263,7 +90,7 @@ function selectSkills(name, opts) {
263
90
  printAvailableSkillNames();
264
91
  process.exit(1);
265
92
  }
266
- return [skill];
93
+ return { skills: [skill], previewIncluded: 0, previewSkipped: 0 };
267
94
  }
268
95
  function printAvailableSkillNames() {
269
96
  const skills = getBuiltinSkills();
@@ -275,9 +102,7 @@ function printAvailableSkillNames() {
275
102
  }
276
103
  }
277
104
  function installSkill(skill, agent, location, options) {
278
- if (!skill.clients.includes(agent)) {
279
- die(`${skill.name} does not support ${agentLabel(agent)}.`);
280
- }
105
+ // Every library skill supports every agent client (registry clients: "all").
281
106
  switch (location.kind) {
282
107
  case "skill-dir":
283
108
  return copySkillDirectory(skill, location.path, options);
@@ -287,8 +112,6 @@ function installSkill(skill, agent, location, options) {
287
112
  return upsertWindsurfRule(skill, location.path);
288
113
  case "cline-rule-dir":
289
114
  return writeClineRule(skill, location.path);
290
- case "gemini-skill-dir":
291
- return writeGeminiSkill(skill, location.path);
292
115
  case "opencode-skill-dir":
293
116
  return writeOpencodeSkill(skill, location.path);
294
117
  }
@@ -299,13 +122,14 @@ function copySkillDirectory(skill, targetDir, options) {
299
122
  die(`Skill files missing: ${skill.name}`);
300
123
  mkdirSync(targetDir, { recursive: true });
301
124
  const dest = join(targetDir, skill.name);
302
- if (options.force && existsSync(dest)) {
125
+ const existed = existsSync(dest);
126
+ if (options.force && existed) {
303
127
  // Wipe stale skill content so re-installs overwrite cleanly even if files
304
128
  // were renamed or removed upstream.
305
129
  rmSync(dest, { recursive: true, force: true });
306
130
  }
307
131
  cpSync(src, dest, { recursive: true, force: true });
308
- return { action: "Installed", path: dest };
132
+ return { action: existed ? "Updated" : "Installed", path: dest };
309
133
  }
310
134
  function writeCursorRule(skill, rulesDir) {
311
135
  mkdirSync(rulesDir, { recursive: true });
@@ -335,16 +159,6 @@ function writeClineRule(skill, rulesDir) {
335
159
  writeFileSync(rulePath, renderRuleBody(skill) + "\n", "utf-8");
336
160
  return { action: "Generated", path: rulePath };
337
161
  }
338
- function writeGeminiSkill(skill, skillsDir) {
339
- // Gemini extensions support a contextFileName, but skill discovery for
340
- // arbitrary markdown is not standardized. We drop each SKILL.md alongside
341
- // the extension so the agent can reference them by path; the install
342
- // summary surfaces this so the user knows where to point Gemini.
343
- mkdirSync(skillsDir, { recursive: true });
344
- const rulePath = join(skillsDir, `${skill.name}.md`);
345
- writeFileSync(rulePath, renderRuleBody(skill) + "\n", "utf-8");
346
- return { action: "Generated", path: rulePath };
347
- }
348
162
  function writeOpencodeSkill(skill, skillsDir) {
349
163
  // OpenCode supports agent markdown definitions; the exact discovery
350
164
  // convention for ad-hoc skills isn't fully documented. We write each skill
@@ -381,8 +195,11 @@ function printInstallSummary(count, agent, scope, location) {
381
195
  const label = agentLabel(agent);
382
196
  const tildeified = tildeify(location.path);
383
197
  console.log(`\n${count} skill${count === 1 ? "" : "s"} ready for ${label} (${scope} scope).`);
198
+ const reloadHint = agent === "summer" ? undefined : agentSpec(agent).skills?.reloadHint;
384
199
  if (location.kind === "skill-dir") {
385
200
  console.log(`${label} can read skills from ${tildeified}/<skill>/SKILL.md`);
201
+ if (reloadHint)
202
+ console.log(reloadHint);
386
203
  }
387
204
  else if (location.kind === "cursor-rule-dir") {
388
205
  console.log(`Cursor rules are in ${tildeified}/summer-<skill>.mdc`);
@@ -391,10 +208,6 @@ function printInstallSummary(count, agent, scope, location) {
391
208
  console.log(`${label} rules are in ${tildeified}/summer-<skill>.md`);
392
209
  console.log("Restart VS Code to pick up new rules.");
393
210
  }
394
- else if (location.kind === "gemini-skill-dir") {
395
- console.log(`Skill files are in ${tildeified}/<skill>.md`);
396
- console.log("Reference them from Gemini by path, or run `gemini extensions enable summer-engine` to load the bundled context.");
397
- }
398
211
  else if (location.kind === "opencode-skill-dir") {
399
212
  console.log(`Skill files are in ${tildeified}/<skill>.md`);
400
213
  console.log("Restart OpenCode so it picks up the new agent definitions.");
@@ -411,16 +224,40 @@ export const skillsCommand = new Command("skills")
411
224
  skillsCommand
412
225
  .command("list")
413
226
  .description("List available skills")
414
- .action(() => {
227
+ .option("--by-domain", "Group skills by their primary domain (same grouping as library/skills/README.md)")
228
+ .action((opts) => {
415
229
  const skills = getBuiltinSkills();
416
230
  if (skills.length === 0) {
417
231
  console.log("No skills found.");
418
232
  return;
419
233
  }
420
- console.log("Available public skills:\n");
421
- for (const s of skills) {
234
+ const line = (s) => {
422
235
  const badge = s.recommended ? "recommended" : "optional";
423
- console.log(` ${s.name.padEnd(20)} ${s.category.padEnd(10)} ${badge.padEnd(11)} ${s.description}`);
236
+ const tag = s.status === "preview" ? "[preview] " : "";
237
+ return ` ${s.name.padEnd(24)} ${badge.padEnd(11)} ${tag}${s.description}`;
238
+ };
239
+ if (opts.byDomain) {
240
+ const groups = new Map();
241
+ for (const s of skills) {
242
+ const primary = s.domains[0] ?? "uncategorised";
243
+ groups.set(primary, [...(groups.get(primary) ?? []), s]);
244
+ }
245
+ console.log(`${skills.length} skills by primary domain (full index: library/skills/README.md):`);
246
+ for (const domain of [...groups.keys()].sort()) {
247
+ const group = groups.get(domain);
248
+ console.log(`\n${domain} (${group.length})`);
249
+ for (const s of group)
250
+ console.log(line(s));
251
+ }
252
+ }
253
+ else {
254
+ console.log("Available public skills:\n");
255
+ for (const s of skills)
256
+ console.log(line(s));
257
+ }
258
+ const previewCount = skills.filter((s) => s.status === "preview").length;
259
+ if (previewCount > 0) {
260
+ console.log(`\n[preview] = not yet exercised in-engine by the Summer team (${previewCount}); labelled in the skill's guidance. --all / --recommended and summer setup install these like any other skill — add --stable-only to skip them.`);
424
261
  }
425
262
  console.log("\nInstall recommended: summer skills install --recommended");
426
263
  console.log("Install one: summer skills install <name>");
@@ -430,27 +267,61 @@ skillsCommand
430
267
  .command("install [name]")
431
268
  .description("Install Summer skills for a target agent")
432
269
  .option("--all", "Install all available skills")
433
- .option("--recommended", "Install recommended public skills (excludes make-game)")
270
+ .option("--recommended", "Install only the recommended skill subset (summer setup installs all by default)")
271
+ .option("--stable-only", "With --all / --recommended, skip preview skills (installed by default; labelled preview in their guidance)")
434
272
  .option("--agent <agent>", `Target agent: ${AGENT_CLIENTS.join("|")}`)
435
273
  .option("--scope <scope>", "Install scope: user or project")
436
- .option("--as-claude-skill", "Legacy alias for --agent claude-code")
437
- .option("--as-cursor-skill", "Legacy alias for --agent cursor")
274
+ // Legacy aliases: still accepted for old scripts, hidden from --help.
275
+ .addOption(new Option("--as-claude-skill", "Legacy alias for --agent claude-code").hideHelp())
276
+ .addOption(new Option("--as-cursor-skill", "Legacy alias for --agent cursor").hideHelp())
277
+ // Pre-reversal opt-in, kept one release as a hidden no-op so old scripts still parse.
278
+ .addOption(new Option("--include-preview", "No-op: preview skills install by default").hideHelp())
438
279
  .option("--force", "Overwrite existing skill files (wipe stale skill dirs before copying)")
439
280
  .action((name, opts) => {
440
- const agent = resolveAgent(opts);
441
- const scope = resolveScope(agent, opts);
281
+ const agent = orDie(() => resolveSkillAgent(opts));
282
+ const scope = orDie(() => resolveSkillScope(agent, opts));
442
283
  const location = resolveInstallLocation(agent, scope);
443
- const skills = selectSkills(name, opts);
284
+ const { skills, previewIncluded, previewSkipped } = selectSkills(name, opts);
444
285
  if (skills.length === 0) {
445
286
  console.log("No skills found.");
287
+ if (previewSkipped > 0)
288
+ console.log(previewSkippedLine(previewSkipped));
446
289
  return;
447
290
  }
448
291
  for (const skill of skills) {
449
292
  const result = installSkill(skill, agent, location, {
450
293
  force: Boolean(opts.force),
451
294
  });
295
+ // Keep this line's shape: setup tallies it (Installed|Updated|Generated <name> -> <path>).
452
296
  console.log(` ${result.action} ${skill.name} -> ${result.path}`);
453
297
  }
298
+ // Upgrades: with --force, remove the skills Summer installed in 2.8.x that
299
+ // v3 retired or renamed (summer-cloud, the un-prefixed vfx recipes, ...),
300
+ // so no host keeps a skill that points at removed tools.
301
+ if (opts.force && !name && (location.kind === "skill-dir" || location.kind === "opencode-skill-dir")) {
302
+ for (const pruned of pruneRetiredSkills(location.path, getSkillRegistry().map((entry) => entry.name))) {
303
+ console.log(` Removed ${pruned.name} -> ${pruned.path} (retired in 3.0.0)`);
304
+ }
305
+ // Agents that moved from generated rule files to SKILL.md skills in 3.1
306
+ // (Cursor, OpenCode): drop the rule files 3.0 wrote so the agent does not
307
+ // load both for the same slug. Only files with Summer's own naming go.
308
+ if (agent !== "summer" && !process.env.SUMMER_SKILLS_DIR) {
309
+ const legacy = legacyRuleFiles(agentSpec(agent), scope, defaultPathContext(), skills.map((skill) => skill.name)) ?? [];
310
+ for (const file of legacy) {
311
+ if (!existsSync(file))
312
+ continue;
313
+ rmSync(file, { force: true });
314
+ console.log(` Removed ${tildeify(file)} (rule file from Summer 3.0; now a skill)`);
315
+ }
316
+ }
317
+ }
318
+ if (name && skills[0]?.status === "preview") {
319
+ console.log(` Note: ${name} is a preview skill — not yet exercised in-engine by the Summer team; its guidance says so.`);
320
+ }
321
+ if (previewIncluded > 0)
322
+ console.log(previewIncludedLine(previewIncluded));
323
+ if (previewSkipped > 0)
324
+ console.log(previewSkippedLine(previewSkipped));
454
325
  // Claude Code: also install slash commands (`tools/summer-cli/commands/*.md`)
455
326
  // into `~/.claude/commands/`. Other agents don't have an equivalent today.
456
327
  if (agent === "claude-code") {
@@ -526,11 +397,10 @@ skillsCommand
526
397
  console.log(`\n${meta.name}`);
527
398
  console.log("-".repeat(40));
528
399
  console.log(meta.description);
529
- console.log(`Category: ${meta.category}`);
400
+ console.log(`Id: ${meta.id}`);
530
401
  console.log(`Recommended: ${meta.recommended ? "yes" : "no"}`);
531
- console.log(`Agents: ${meta.clients.join(", ")}`);
532
- console.log(`MCP tools: ${meta.requiresMcpTools.length > 0 ? meta.requiresMcpTools.join(", ") : "none"}`);
533
- console.log(`Test scenario: ${meta.testScenario}`);
402
+ console.log(`Status: ${meta.status}`);
403
+ console.log(`Agents: ${AGENT_CLIENTS.join(", ")}`);
534
404
  console.log("\n" + "-".repeat(40));
535
405
  const body = content.replace(/^---\s*\n[\s\S]*?\n---\s*\n/, "");
536
406
  const preview = body.split("\n").slice(0, 30).join("\n");