summer-engine 2.8.2 → 3.0.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.
- package/.claude-plugin/marketplace.json +27 -7
- package/.claude-plugin/plugin.json +99 -83
- package/.codex-plugin/plugin.json +112 -82
- package/.cursor-plugin/plugin.json +119 -83
- package/.factory-plugin/plugin.json +100 -3
- package/.mcp.json +6 -1
- package/.opencode/INSTALL.md +7 -4
- package/.opencode/plugins/summer.js +31 -18
- package/AGENTS.md +107 -34
- package/CHANGELOG.md +131 -44
- package/CLAUDE.md +4 -2
- package/GEMINI.md +7 -53
- package/NOTICE +31 -0
- package/README.md +159 -391
- package/assets/api-docs.json.gz +0 -0
- package/assets/autopilot/README.md +20 -6
- package/assets/autopilot/autopilot.gd +80 -26
- package/assets/autopilot/run.sh +132 -7
- package/assets/navigation/web-routes.json +719 -0
- package/commands/gameskill.md +10 -108
- package/commands/summer.md +72 -4
- package/dist/bin/summer.js +6 -87
- package/dist/cli/banner.d.ts +1 -0
- package/dist/cli/banner.js +33 -0
- package/dist/{commands → cli/commands}/config.js +1 -1
- package/dist/cli/commands/create.d.ts +30 -0
- package/dist/cli/commands/create.js +212 -0
- package/dist/{commands → cli/commands}/debug.js +2 -2
- package/dist/cli/commands/doctor.d.ts +2 -0
- package/dist/cli/commands/doctor.js +18 -0
- package/dist/cli/commands/events.d.ts +57 -0
- package/dist/cli/commands/events.js +158 -0
- package/dist/cli/commands/install.d.ts +50 -0
- package/dist/cli/commands/install.js +447 -0
- package/dist/cli/commands/list.js +72 -0
- package/dist/{commands → cli/commands}/login.js +33 -17
- package/dist/{commands → cli/commands}/logout.d.ts +1 -0
- package/dist/cli/commands/logout.js +19 -0
- package/dist/{commands → cli/commands}/memory.d.ts +1 -8
- package/dist/{commands → cli/commands}/memory.js +20 -11
- package/dist/cli/commands/open.d.ts +45 -0
- package/dist/cli/commands/open.js +216 -0
- package/dist/{commands → cli/commands}/plan.js +2 -2
- package/dist/{commands → cli/commands}/publish.js +1 -1
- package/dist/{commands → cli/commands}/releases.js +1 -1
- package/dist/cli/commands/run.d.ts +19 -0
- package/dist/cli/commands/run.js +255 -0
- package/dist/{commands → cli/commands}/setup.js +43 -89
- package/dist/{commands → cli/commands}/skills.js +85 -222
- package/dist/{commands → cli/commands}/status.d.ts +1 -0
- package/dist/cli/commands/status.js +62 -0
- package/dist/cli/commands/tool.d.ts +11 -0
- package/dist/cli/commands/tool.js +121 -0
- package/dist/cli/index.d.ts +6 -0
- package/dist/cli/index.js +89 -0
- package/dist/cli/root-action.d.ts +7 -0
- package/dist/cli/root-action.js +15 -0
- package/dist/{lib → core}/api-client.d.ts +106 -15
- package/dist/{lib → core}/api-client.js +267 -75
- package/dist/{lib → core}/async-op-lifecycle.d.ts +3 -4
- package/dist/{lib → core}/async-op-lifecycle.js +3 -4
- package/dist/{lib → core}/auth.d.ts +14 -6
- package/dist/{lib → core}/auth.js +56 -40
- package/dist/core/capabilities/agent-playbook.d.ts +20 -0
- package/dist/core/capabilities/agent-playbook.js +218 -0
- package/dist/core/capabilities/api-docs.d.ts +36 -0
- package/dist/core/capabilities/api-docs.js +118 -0
- package/dist/core/capabilities/asset-import.d.ts +49 -0
- package/dist/core/capabilities/asset-import.js +134 -0
- package/dist/core/capabilities/camera-view.d.ts +98 -0
- package/dist/core/capabilities/camera-view.js +222 -0
- package/dist/core/capabilities/capture.d.ts +63 -0
- package/dist/core/capabilities/capture.js +67 -0
- package/dist/core/capabilities/console-read.d.ts +17 -0
- package/dist/core/capabilities/console-read.js +21 -0
- package/dist/{lib → core/capabilities}/creator.d.ts +1 -29
- package/dist/{lib → core/capabilities}/creator.js +14 -33
- package/dist/{lib → core/capabilities}/debug-report.d.ts +1 -1
- package/dist/{lib → core/capabilities}/debug-report.js +12 -31
- package/dist/{commands → core/capabilities}/doctor.d.ts +7 -2
- package/dist/{commands → core/capabilities}/doctor.js +47 -73
- package/dist/core/capabilities/engine-fallbacks.d.ts +26 -0
- package/dist/core/capabilities/engine-fallbacks.js +36 -0
- package/dist/core/capabilities/engine-ops.d.ts +33 -0
- package/dist/core/capabilities/engine-ops.js +145 -0
- package/dist/core/capabilities/engine-receipt.d.ts +53 -0
- package/dist/core/capabilities/engine-receipt.js +134 -0
- package/dist/core/capabilities/events.d.ts +200 -0
- package/dist/core/capabilities/events.js +383 -0
- package/dist/core/capabilities/fabricate-mesh.d.ts +111 -0
- package/dist/core/capabilities/fabricate-mesh.js +165 -0
- package/dist/core/capabilities/frame-quality.d.ts +71 -0
- package/dist/core/capabilities/frame-quality.js +449 -0
- package/dist/core/capabilities/game-task-plan.d.ts +66 -0
- package/dist/{lib → core/capabilities}/game-task-plan.js +59 -8
- package/dist/core/capabilities/hdri-import.d.ts +90 -0
- package/dist/core/capabilities/hdri-import.js +250 -0
- package/dist/core/capabilities/image-generation.d.ts +24 -0
- package/dist/core/capabilities/image-generation.js +22 -0
- package/dist/core/capabilities/navigation/open.d.ts +156 -0
- package/dist/core/capabilities/navigation/open.js +567 -0
- package/dist/core/capabilities/navigation/render-product-map.d.ts +1 -0
- package/dist/core/capabilities/navigation/render-product-map.js +84 -0
- package/dist/core/capabilities/navigation/targets.d.ts +87 -0
- package/dist/core/capabilities/navigation/targets.js +250 -0
- package/dist/core/capabilities/play-determinism.d.ts +35 -0
- package/dist/core/capabilities/play-determinism.js +86 -0
- package/dist/core/capabilities/project-context.d.ts +114 -0
- package/dist/core/capabilities/project-context.js +249 -0
- package/dist/core/capabilities/runtime-control.d.ts +540 -0
- package/dist/core/capabilities/runtime-control.js +1011 -0
- package/dist/core/capabilities/scene-kind.d.ts +19 -0
- package/dist/core/capabilities/scene-kind.js +137 -0
- package/dist/core/capabilities/scene-script.d.ts +38 -0
- package/dist/core/capabilities/scene-script.js +45 -0
- package/dist/core/capabilities/tool-dispatch.d.ts +42 -0
- package/dist/core/capabilities/tool-dispatch.js +1490 -0
- package/dist/core/capabilities/ui-control.d.ts +179 -0
- package/dist/core/capabilities/ui-control.js +423 -0
- package/dist/core/capabilities/variant-types.d.ts +22 -0
- package/dist/core/capabilities/variant-types.js +101 -0
- package/dist/core/capability-skew.d.ts +205 -0
- package/dist/core/capability-skew.js +386 -0
- package/dist/{lib → core}/config.d.ts +11 -1
- package/dist/{lib → core}/config.js +13 -2
- package/dist/core/embeddings.d.ts +78 -0
- package/dist/core/embeddings.js +166 -0
- package/dist/core/engine-install.d.ts +105 -0
- package/dist/core/engine-install.js +190 -0
- package/dist/core/engine.d.ts +94 -0
- package/dist/{lib → core}/engine.js +74 -28
- package/dist/core/feedback/client.d.ts +88 -0
- package/dist/core/feedback/client.js +182 -0
- package/dist/{lib → core}/format.d.ts +0 -1
- package/dist/{lib → core}/format.js +1 -1
- package/dist/core/headless/connection.d.ts +86 -0
- package/dist/core/headless/connection.js +97 -0
- package/dist/core/headless/editor-connection.d.ts +26 -0
- package/dist/core/headless/editor-connection.js +81 -0
- package/dist/core/headless/mcp-routing.d.ts +38 -0
- package/dist/core/headless/mcp-routing.js +83 -0
- package/dist/core/headless/registry.d.ts +91 -0
- package/dist/core/headless/registry.js +226 -0
- package/dist/core/headless/resolve.d.ts +46 -0
- package/dist/core/headless/resolve.js +75 -0
- package/dist/core/headless/spawn.d.ts +46 -0
- package/dist/core/headless/spawn.js +205 -0
- package/dist/core/headless/worker-connection.d.ts +96 -0
- package/dist/core/headless/worker-connection.js +353 -0
- package/dist/core/headless/worker-engine-client.d.ts +58 -0
- package/dist/core/headless/worker-engine-client.js +246 -0
- package/dist/core/launch-posture.d.ts +170 -0
- package/dist/core/launch-posture.js +317 -0
- package/dist/core/library-read.d.ts +73 -0
- package/dist/core/library-read.js +279 -0
- package/dist/core/library-search.d.ts +143 -0
- package/dist/core/library-search.js +301 -0
- package/dist/{lib → core}/log-filters.js +4 -2
- package/dist/{lib → core}/mcp-log.js +2 -17
- package/dist/core/package-root.d.ts +9 -0
- package/dist/core/package-root.js +11 -0
- package/dist/core/redact.d.ts +20 -0
- package/dist/core/redact.js +64 -0
- package/dist/core/registry-search.d.ts +167 -0
- package/dist/core/registry-search.js +358 -0
- package/dist/core/skills-registry.d.ts +47 -0
- package/dist/core/skills-registry.js +83 -0
- package/dist/{lib → core}/store.js +11 -7
- package/dist/{lib → core}/summer-compatibility.js +3 -3
- package/dist/{lib → core}/telemetry.js +5 -2
- package/dist/core/templates.d.ts +98 -0
- package/dist/core/templates.js +241 -0
- package/dist/core/tool-errors.d.ts +30 -0
- package/dist/core/tool-errors.js +40 -0
- package/dist/core/trajectory.d.ts +80 -0
- package/dist/core/trajectory.js +307 -0
- package/dist/core/util/http.d.ts +13 -0
- package/dist/core/util/http.js +28 -0
- package/dist/core/util/json.d.ts +12 -0
- package/dist/core/util/json.js +21 -0
- package/dist/core/util/process.d.ts +3 -0
- package/dist/core/util/process.js +13 -0
- package/dist/core/util/sleep.d.ts +1 -0
- package/dist/core/util/sleep.js +3 -0
- package/dist/core/version.d.ts +3 -0
- package/dist/core/version.js +5 -0
- package/dist/{lib → installer}/agent-config.d.ts +20 -1
- package/dist/{lib → installer}/agent-config.js +138 -24
- package/dist/installer/legacy-skills.d.ts +26 -0
- package/dist/installer/legacy-skills.js +53 -0
- package/dist/installer/setup.d.ts +76 -0
- package/dist/installer/setup.js +146 -0
- package/dist/installer/skill-locations.d.ts +45 -0
- package/dist/installer/skill-locations.js +170 -0
- package/dist/installer/version-check.d.ts +174 -0
- package/dist/{lib → installer}/version-check.js +173 -42
- package/dist/{lib/mcp-boot-notice.d.ts → mcp/boot-notice.d.ts} +1 -1
- package/dist/{commands/mcp.js → mcp/command.js} +18 -6
- package/dist/mcp/server.d.ts +23 -3
- package/dist/mcp/server.js +122 -28
- package/dist/mcp/tools/asset-tools.js +62 -142
- package/dist/mcp/tools/creator-tools.js +5 -23
- package/dist/mcp/tools/debug-tools.js +61 -18
- package/dist/mcp/tools/event-tools.d.ts +14 -0
- package/dist/mcp/tools/event-tools.js +41 -0
- package/dist/mcp/tools/fabricate-tools.d.ts +2 -0
- package/dist/mcp/tools/fabricate-tools.js +28 -0
- package/dist/mcp/tools/feedback-tools.d.ts +77 -0
- package/dist/mcp/tools/feedback-tools.js +88 -0
- package/dist/mcp/tools/file-tools.js +6 -53
- package/dist/mcp/tools/generate-tools.js +37 -63
- package/dist/mcp/tools/library-tools.d.ts +11 -0
- package/dist/mcp/tools/library-tools.js +42 -0
- package/dist/mcp/tools/navigation-tools.d.ts +7 -0
- package/dist/mcp/tools/navigation-tools.js +37 -0
- package/dist/mcp/tools/perception-tools.d.ts +20 -0
- package/dist/mcp/tools/perception-tools.js +146 -0
- package/dist/mcp/tools/project-tools.d.ts +14 -0
- package/dist/mcp/tools/project-tools.js +72 -281
- package/dist/mcp/tools/runtime-tools.d.ts +2 -0
- package/dist/mcp/tools/runtime-tools.js +92 -0
- package/dist/mcp/tools/scene-tools.d.ts +3 -0
- package/dist/mcp/tools/scene-tools.js +68 -119
- package/dist/mcp/tools/script-tools.d.ts +3 -0
- package/dist/mcp/tools/script-tools.js +118 -0
- package/dist/mcp/tools/spatial-tools.d.ts +2 -0
- package/dist/mcp/tools/spatial-tools.js +485 -0
- package/dist/mcp/tools/text-json.d.ts +8 -0
- package/dist/mcp/tools/text-json.js +12 -0
- package/dist/mcp/tools/{cloud-tools.d.ts → ui-tools.d.ts} +1 -1
- package/dist/mcp/tools/ui-tools.js +82 -0
- package/dist/mcp/tools/visual-tools.d.ts +2 -7
- package/dist/mcp/tools/visual-tools.js +383 -101
- package/dist/mcp/tools/with-engine.d.ts +9 -15
- package/dist/mcp/tools/with-engine.js +60 -96
- package/dist/project-memory/project-manifest.d.ts +36 -0
- package/dist/project-memory/project-manifest.js +50 -0
- package/dist/project-memory/project-memory.d.ts +57 -0
- package/dist/{lib → project-memory}/project-memory.js +46 -0
- package/gemini-extension.json +103 -2
- package/hooks/hooks-cursor.json +2 -2
- package/hooks/hooks.json +2 -1
- package/hooks/pre-commit-doctor.sh +45 -39
- package/hooks/run-hook.cmd +30 -23
- package/hooks/run-hook.sh +20 -0
- package/hooks/session-start.sh +18 -7
- package/integrations/README.md +70 -0
- package/integrations/claude/README.md +19 -0
- package/integrations/claude/manifest-target.json +16 -0
- package/integrations/cline/README.md +13 -0
- package/integrations/cline/manifest-target.json +3 -0
- package/integrations/codex/README.md +15 -0
- package/integrations/codex/manifest-target.json +5 -0
- package/integrations/cursor/README.md +16 -0
- package/integrations/cursor/manifest-target.json +5 -0
- package/integrations/factory/README.md +26 -0
- package/integrations/factory/manifest-target.json +5 -0
- package/integrations/gemini/README.md +26 -0
- package/integrations/gemini/manifest-target.json +5 -0
- package/integrations/github-copilot/README.md +12 -0
- package/integrations/github-copilot/manifest-target.json +3 -0
- package/integrations/kilo-code/README.md +16 -0
- package/integrations/kilo-code/manifest-target.json +3 -0
- package/integrations/lm-studio/README.md +12 -0
- package/integrations/lm-studio/manifest-target.json +3 -0
- package/integrations/opencode/README.md +15 -0
- package/integrations/opencode/manifest-target.json +3 -0
- package/integrations/roo-code/README.md +13 -0
- package/integrations/roo-code/manifest-target.json +3 -0
- package/integrations/vscode-copilot/README.md +12 -0
- package/integrations/vscode-copilot/manifest-target.json +3 -0
- package/integrations/windsurf/README.md +13 -0
- package/integrations/windsurf/manifest-target.json +3 -0
- package/library/references/collaborative-protocol/resource.yaml +24 -0
- package/library/references/gd-style/resource.yaml +24 -0
- package/{references → library/references/godot-version}/godot-version.md +6 -6
- package/library/references/godot-version/resource.yaml +22 -0
- package/library/references/headless-routing/headless-routing.md +46 -0
- package/library/references/headless-routing/resource.yaml +24 -0
- package/library/references/mcp-fresh-chat-playbook/mcp-fresh-chat-playbook.md +49 -0
- package/library/references/mcp-fresh-chat-playbook/resource.yaml +23 -0
- package/library/references/mcp-tools-reference/mcp-tools-reference.md +271 -0
- package/library/references/mcp-tools-reference/resource.yaml +17 -0
- package/library/references/product-map/product-map.md +103 -0
- package/library/references/product-map/resource.yaml +33 -0
- package/{references → library/references/public-surface-language}/public-surface-language.md +5 -7
- package/library/references/public-surface-language/resource.yaml +17 -0
- package/library/references/summer-folder/resource.yaml +20 -0
- package/{references → library/references/summer-folder}/summer-folder.md +22 -21
- package/{skills/rendering-and-lighting → library/skills}/3d-lighting/SKILL.md +15 -11
- package/library/skills/3d-lighting/resource.yaml +27 -0
- package/{skills/audio → library/skills}/adaptive-music/SKILL.md +1 -1
- package/library/skills/adaptive-music/resource.yaml +28 -0
- package/library/skills/agent-playtesting/SKILL.md +148 -0
- package/library/skills/agent-playtesting/resource.yaml +52 -0
- package/library/skills/ambient-bed/resource.yaml +24 -0
- package/{skills/video → library/skills}/animated-loop/SKILL.md +1 -1
- package/library/skills/animated-loop/resource.yaml +27 -0
- package/{skills/animation → library/skills}/animation-tree/SKILL.md +29 -14
- package/library/skills/animation-tree/resource.yaml +33 -0
- package/{skills/rendering-and-lighting → library/skills}/art-direction/SKILL.md +3 -3
- package/library/skills/art-direction/resource.yaml +29 -0
- package/{skills/asset-pipeline → library/skills}/asset-strategy/SKILL.md +44 -44
- package/library/skills/asset-strategy/resource.yaml +63 -0
- package/{skills/audio → library/skills}/audio-direction/SKILL.md +7 -7
- package/library/skills/audio-direction/resource.yaml +32 -0
- package/library/skills/auto-fire-targeting/resource.yaml +22 -0
- package/{skills/scene-and-project → library/skills}/brainstorm-game/SKILL.md +8 -8
- package/library/skills/brainstorm-game/resource.yaml +30 -0
- package/{skills/workflow → library/skills}/brainstorming/SKILL.md +2 -22
- package/library/skills/brainstorming/resource.yaml +23 -0
- package/{skills/workflow → library/skills}/brainstorming/spec-document-reviewer-prompt.md +1 -1
- package/{skills/scene-and-project → library/skills}/browse-templates/SKILL.md +18 -18
- package/library/skills/browse-templates/resource.yaml +23 -0
- package/library/skills/celeste-momentum-platforming/SKILL.md +366 -0
- package/library/skills/celeste-momentum-platforming/resource.yaml +33 -0
- package/library/skills/character-animation-wiring/SKILL.md +249 -0
- package/library/skills/character-animation-wiring/resource.yaml +39 -0
- package/{skills/3d-assets → library/skills}/character-model/SKILL.md +25 -25
- package/library/skills/character-model/resource.yaml +36 -0
- package/{skills/2d-assets → library/skills}/character-portrait/SKILL.md +14 -14
- package/library/skills/character-portrait/resource.yaml +30 -0
- package/{skills/video → library/skills}/cinematic-cutscene/SKILL.md +2 -2
- package/library/skills/cinematic-cutscene/resource.yaml +29 -0
- package/{skills/2d-assets → library/skills}/concept-art/SKILL.md +15 -15
- package/library/skills/concept-art/resource.yaml +34 -0
- package/{skills/2d-assets → library/skills}/create-asset-sheet/SKILL.md +8 -8
- package/library/skills/create-asset-sheet/resource.yaml +33 -0
- package/{skills/debugging → library/skills}/debug/SKILL.md +3 -3
- package/library/skills/debug/resource.yaml +31 -0
- package/{skills/workflow → library/skills}/debugging-game-feel/SKILL.md +11 -11
- package/library/skills/debugging-game-feel/resource.yaml +25 -0
- package/{skills/level-design → library/skills}/design-level/SKILL.md +6 -6
- package/library/skills/design-level/resource.yaml +31 -0
- package/{skills/gameplay-mechanics → library/skills}/design-mechanic/SKILL.md +3 -3
- package/library/skills/design-mechanic/resource.yaml +31 -0
- package/{skills/ai-and-npcs → library/skills}/design-npc/SKILL.md +7 -3
- package/library/skills/design-npc/resource.yaml +29 -0
- package/{skills/workflow → library/skills}/diagnosing-perf-regressions/SKILL.md +10 -10
- package/library/skills/diagnosing-perf-regressions/resource.yaml +25 -0
- package/{skills/workflow → library/skills}/dispatching-parallel-agents/SKILL.md +8 -8
- package/library/skills/dispatching-parallel-agents/resource.yaml +23 -0
- package/library/skills/driving-the-editor-ui/SKILL.md +85 -0
- package/library/skills/driving-the-editor-ui/resource.yaml +46 -0
- package/{skills/3d-assets → library/skills}/environment-kit/SKILL.md +11 -11
- package/library/skills/environment-kit/resource.yaml +29 -0
- package/{skills/deployment → library/skills}/export-and-ship/SKILL.md +5 -5
- package/library/skills/export-and-ship/resource.yaml +32 -0
- package/library/skills/fabricating-assets/SKILL.md +195 -0
- package/library/skills/fabricating-assets/resource.yaml +52 -0
- package/{skills/animation → library/skills}/facial-and-lipsync/SKILL.md +23 -11
- package/library/skills/facial-and-lipsync/resource.yaml +36 -0
- package/{skills/character-controllers → library/skills}/fps-controller/SKILL.md +8 -4
- package/library/skills/fps-controller/resource.yaml +29 -0
- package/{skills/visual-effects → library/skills}/game-feel/SKILL.md +7 -7
- package/library/skills/game-feel/resource.yaml +27 -0
- package/library/skills/gameskill/SKILL.md +64 -0
- package/library/skills/gameskill/resource.yaml +22 -0
- package/library/skills/gdscript-patterns/resource.yaml +23 -0
- package/{skills/animation → library/skills}/generate-motion/SKILL.md +16 -16
- package/library/skills/generate-motion/resource.yaml +34 -0
- package/library/skills/godogen-visual-proof-game-generation/SKILL.md +223 -0
- package/library/skills/godogen-visual-proof-game-generation/resource.yaml +33 -0
- package/{skills/workflow → library/skills}/headless-scripting/SKILL.md +14 -7
- package/library/skills/headless-scripting/resource.yaml +26 -0
- package/library/skills/host-authoritative-state/resource.yaml +28 -0
- package/{skills/2d-assets → library/skills}/instantiate-asset-pack/SKILL.md +10 -12
- package/library/skills/instantiate-asset-pack/resource.yaml +29 -0
- package/{skills/workflow → library/skills}/investigating-bugs/SKILL.md +4 -4
- package/{skills/workflow → library/skills}/investigating-bugs/condition-based-waiting.md +8 -8
- package/library/skills/investigating-bugs/resource.yaml +24 -0
- package/{skills/workflow → library/skills}/investigating-bugs/root-cause-tracing.md +1 -7
- package/library/skills/lumera-single-image-scene-reconstruction/SKILL.md +164 -0
- package/library/skills/lumera-single-image-scene-reconstruction/resource.yaml +35 -0
- package/{skills/scene-and-project → library/skills}/make-game/SKILL.md +22 -22
- package/library/skills/make-game/resource.yaml +35 -0
- package/library/skills/music-track/resource.yaml +28 -0
- package/library/skills/navigate-summer/SKILL.md +61 -0
- package/library/skills/navigate-summer/resource.yaml +35 -0
- package/{skills/scene-and-project → library/skills}/new-project/SKILL.md +10 -10
- package/library/skills/new-project/resource.yaml +28 -0
- package/{skills/3d-assets → library/skills}/organic-model/SKILL.md +16 -16
- package/library/skills/organic-model/resource.yaml +32 -0
- package/{skills/multiplayer-and-networking → library/skills}/peer-to-peer-multiplayer/SKILL.md +2 -2
- package/library/skills/peer-to-peer-multiplayer/resource.yaml +28 -0
- package/{skills/2d-assets → library/skills}/pixel-art/SKILL.md +13 -13
- package/library/skills/pixel-art/resource.yaml +31 -0
- package/library/skills/play/resource.yaml +26 -0
- package/{skills/workflow → library/skills}/playtesting-a-feature/SKILL.md +41 -22
- package/library/skills/playtesting-a-feature/resource.yaml +31 -0
- package/{skills/animation → library/skills}/procedural-animation/SKILL.md +25 -10
- package/library/skills/procedural-animation/resource.yaml +33 -0
- package/{skills/3d-assets → library/skills}/prop-model/SKILL.md +13 -13
- package/library/skills/prop-model/resource.yaml +33 -0
- package/library/skills/psx-retro-rendering/SKILL.md +416 -0
- package/library/skills/psx-retro-rendering/resource.yaml +36 -0
- package/library/skills/realtime-wet-surfaces/SKILL.md +189 -0
- package/library/skills/realtime-wet-surfaces/resource.yaml +31 -0
- package/{skills/deployment → library/skills}/remote-deploy/SKILL.md +3 -3
- package/library/skills/remote-deploy/resource.yaml +23 -0
- package/{skills/animation → library/skills}/retarget/SKILL.md +15 -14
- package/library/skills/retarget/resource.yaml +33 -0
- package/library/skills/running-in-the-cloud/SKILL.md +103 -0
- package/library/skills/running-in-the-cloud/resource.yaml +33 -0
- package/{skills/scene-and-project → library/skills}/scene-composition/SKILL.md +8 -0
- package/library/skills/scene-composition/resource.yaml +27 -0
- package/library/skills/scene-hierarchy-design/SKILL.md +102 -0
- package/library/skills/scene-hierarchy-design/resource.yaml +31 -0
- package/library/skills/scene-scripting/SKILL.md +764 -0
- package/library/skills/scene-scripting/resource.yaml +58 -0
- package/{skills/level-design → library/skills}/scene-to-level/SKILL.md +16 -17
- package/library/skills/scene-to-level/resource.yaml +33 -0
- package/library/skills/setup-multiplayer/resource.yaml +28 -0
- package/library/skills/skill-create/SKILL.md +138 -0
- package/library/skills/skill-create/resource.yaml +25 -0
- package/{skills/workflow → library/skills}/skill-improve/SKILL.md +2 -2
- package/library/skills/skill-improve/resource.yaml +25 -0
- package/{skills/workflow → library/skills}/skill-test/SKILL.md +4 -4
- package/library/skills/skill-test/resource.yaml +26 -0
- package/library/skills/skintokens-auto-rigging/SKILL.md +200 -0
- package/library/skills/skintokens-auto-rigging/resource.yaml +38 -0
- package/{skills/2d-assets → library/skills}/skybox-panorama/SKILL.md +8 -8
- package/library/skills/skybox-panorama/resource.yaml +28 -0
- package/{skills/audio → library/skills}/sound-effect/SKILL.md +2 -2
- package/library/skills/sound-effect/resource.yaml +27 -0
- package/library/skills/spatial-placement/SKILL.md +74 -0
- package/library/skills/spatial-placement/resource.yaml +42 -0
- package/library/skills/spatial-placement/tests/spec.md +65 -0
- package/{skills/2d-assets → library/skills}/sprite-sheet/SKILL.md +12 -12
- package/library/skills/sprite-sheet/resource.yaml +32 -0
- package/{skills/2d-assets → library/skills}/tileable-texture/SKILL.md +9 -9
- package/library/skills/tileable-texture/resource.yaml +31 -0
- package/{skills/video → library/skills}/trailer-shot/SKILL.md +1 -1
- package/library/skills/trailer-shot/resource.yaml +27 -0
- package/{skills/performance → library/skills}/tune-performance/SKILL.md +6 -6
- package/library/skills/tune-performance/resource.yaml +31 -0
- package/library/skills/ui-basics/resource.yaml +25 -0
- package/{skills/2d-assets → library/skills}/ui-graphics/SKILL.md +11 -11
- package/library/skills/ui-graphics/resource.yaml +29 -0
- package/{skills/2d-assets → library/skills}/use-widget-asset/SKILL.md +4 -4
- package/library/skills/use-widget-asset/resource.yaml +29 -0
- package/{skills/workflow → library/skills}/using-summer/SKILL.md +12 -9
- package/library/skills/using-summer/resource.yaml +41 -0
- package/{skills/3d-assets → library/skills}/vehicle-model/SKILL.md +18 -18
- package/library/skills/vehicle-model/resource.yaml +34 -0
- package/{skills/workflow → library/skills}/verification-before-completion/SKILL.md +10 -10
- package/library/skills/verification-before-completion/resource.yaml +23 -0
- package/library/skills/verifying-scenes/SKILL.md +98 -0
- package/library/skills/verifying-scenes/resource.yaml +42 -0
- package/{skills/visual-effects/recipes/dissolve → library/skills/vfx-dissolve}/SKILL.md +31 -11
- package/library/skills/vfx-dissolve/resource.yaml +33 -0
- package/{skills/visual-effects/recipes/fire → library/skills/vfx-fire}/SKILL.md +43 -12
- package/library/skills/vfx-fire/_building-blocks/noise-3d-fbm.gdshaderinc +45 -0
- package/library/skills/vfx-fire/resource.yaml +35 -0
- package/{skills/visual-effects/recipes/hit-spark → library/skills/vfx-hit-spark}/SKILL.md +16 -10
- package/library/skills/vfx-hit-spark/_building-blocks/additive-billboard-particles.md +37 -0
- package/library/skills/vfx-hit-spark/resource.yaml +34 -0
- package/{skills/visual-effects/recipes/lightning → library/skills/vfx-lightning}/SKILL.md +24 -11
- package/library/skills/vfx-lightning/_building-blocks/additive-billboard-particles.md +37 -0
- package/library/skills/vfx-lightning/resource.yaml +33 -0
- package/{skills/visual-effects/recipes/magic-glow → library/skills/vfx-magic-glow}/SKILL.md +31 -11
- package/library/skills/vfx-magic-glow/_building-blocks/additive-billboard-particles.md +37 -0
- package/library/skills/vfx-magic-glow/resource.yaml +34 -0
- package/{skills/visual-effects/recipes/muzzle-flash → library/skills/vfx-muzzle-flash}/SKILL.md +29 -9
- package/library/skills/vfx-muzzle-flash/_building-blocks/additive-billboard-particles.md +37 -0
- package/library/skills/vfx-muzzle-flash/_building-blocks/trauma-shake-snippet.md +53 -0
- package/library/skills/vfx-muzzle-flash/resource.yaml +35 -0
- package/{skills/visual-effects/recipes/smoke → library/skills/vfx-smoke}/SKILL.md +35 -9
- package/library/skills/vfx-smoke/_building-blocks/noise-3d-fbm.gdshaderinc +45 -0
- package/library/skills/vfx-smoke/resource.yaml +32 -0
- package/{skills/visual-effects/recipes/water-ripple → library/skills/vfx-water-ripple}/SKILL.md +31 -9
- package/library/skills/vfx-water-ripple/_building-blocks/additive-billboard-particles.md +37 -0
- package/library/skills/vfx-water-ripple/resource.yaml +31 -0
- package/library/skills/voice-line/resource.yaml +27 -0
- package/library/skills/world-building-3d/SKILL.md +105 -0
- package/library/skills/world-building-3d/references/spatial-tools.md +50 -0
- package/library/skills/world-building-3d/resource.yaml +44 -0
- package/library/skills/world-building-3d/tests/spec.md +48 -0
- package/{skills/workflow → library/skills}/writing-plans/SKILL.md +19 -14
- package/library/skills/writing-plans/resource.yaml +23 -0
- package/{skills/workflow → library/skills}/writing-skills/SKILL.md +38 -44
- package/library/skills/writing-skills/resource.yaml +29 -0
- package/{skills/workflow → library/skills}/writing-skills/testing-skills-with-subagents.md +13 -14
- package/library/templates/2d-brario-platformer/resource.yaml +21 -0
- package/library/templates/2d-dungeon-roguelike/resource.yaml +23 -0
- package/library/templates/2d-grid-puzzle/resource.yaml +21 -0
- package/library/templates/2d-plants-and-zombies-tower-defense/resource.yaml +21 -0
- package/library/templates/2d-platformer/resource.yaml +24 -0
- package/library/templates/2d-rpg/resource.yaml +21 -0
- package/library/templates/2d-vampire-survivor-roguelike/resource.yaml +21 -0
- package/library/templates/3d-basic/resource.yaml +16 -0
- package/library/templates/3d-city-kit/resource.yaml +24 -0
- package/library/templates/3d-fps-old-school/resource.yaml +21 -0
- package/library/templates/3d-fps-simple-animated-npc/resource.yaml +21 -0
- package/library/templates/3d-lan-multiplayer-starter/resource.yaml +22 -0
- package/library/templates/3d-open-world-explore-tps/resource.yaml +21 -0
- package/library/templates/3d-procedural-road-world/resource.yaml +21 -0
- package/library/templates/3d-racing-game/resource.yaml +21 -0
- package/library/templates/3d-royale-clash-type/resource.yaml +21 -0
- package/library/templates/3d-third-person-controller/resource.yaml +21 -0
- package/library/templates/3d-voxel-sandbox/resource.yaml +24 -0
- package/library/templates/README.md +94 -0
- package/library/templates/empty/resource.yaml +16 -0
- package/library/tools/add-node/resource.yaml +60 -0
- package/library/tools/align-distribute-3d/resource.yaml +87 -0
- package/library/tools/api-docs/resource.yaml +57 -0
- package/library/tools/batch/resource.yaml +52 -0
- package/library/tools/camera-bookmark/resource.yaml +73 -0
- package/library/tools/check-job/resource.yaml +45 -0
- package/library/tools/clear-console/resource.yaml +40 -0
- package/library/tools/connect-signal/resource.yaml +63 -0
- package/library/tools/create-debug-report/resource.yaml +67 -0
- package/library/tools/create-scene/resource.yaml +59 -0
- package/library/tools/creator-config/resource.yaml +63 -0
- package/library/tools/creator-publish/resource.yaml +73 -0
- package/library/tools/creator-releases/resource.yaml +53 -0
- package/library/tools/fabricate-3d/resource.yaml +108 -0
- package/library/tools/game-control/resource.yaml +84 -0
- package/library/tools/game-input/resource.yaml +159 -0
- package/library/tools/game-probe/resource.yaml +90 -0
- package/library/tools/generate-3d/resource.yaml +112 -0
- package/library/tools/generate-audio/resource.yaml +80 -0
- package/library/tools/generate-image/resource.yaml +62 -0
- package/library/tools/generate-motion/resource.yaml +66 -0
- package/library/tools/generate-video/resource.yaml +66 -0
- package/library/tools/get-agent-playbook/resource.yaml +40 -0
- package/library/tools/get-asset/resource.yaml +42 -0
- package/library/tools/get-asset-download-url/resource.yaml +52 -0
- package/library/tools/get-console/resource.yaml +69 -0
- package/library/tools/get-debugger-errors/resource.yaml +56 -0
- package/library/tools/get-debugger-warnings/resource.yaml +52 -0
- package/library/tools/get-diagnostics/resource.yaml +42 -0
- package/library/tools/get-project-context/resource.yaml +45 -0
- package/library/tools/get-runtime-tree/resource.yaml +62 -0
- package/library/tools/get-scene-tree/resource.yaml +52 -0
- package/library/tools/get-script-errors/resource.yaml +45 -0
- package/library/tools/get-studio-workflow/resource.yaml +43 -0
- package/library/tools/import-asset/resource.yaml +73 -0
- package/library/tools/import-asset-by-id/resource.yaml +56 -0
- package/library/tools/import-from-url/resource.yaml +51 -0
- package/library/tools/import-from-url-batch/resource.yaml +60 -0
- package/library/tools/import-hdri/resource.yaml +69 -0
- package/library/tools/input-map-bind/resource.yaml +52 -0
- package/library/tools/inspect-node/resource.yaml +46 -0
- package/library/tools/inspect-resource/resource.yaml +45 -0
- package/library/tools/inspect-runtime-node/resource.yaml +54 -0
- package/library/tools/instantiate-scene/resource.yaml +62 -0
- package/library/tools/is-running/resource.yaml +40 -0
- package/library/tools/library-feedback/resource.yaml +89 -0
- package/library/tools/list-my-assets/resource.yaml +56 -0
- package/library/tools/navigation-probe/resource.yaml +85 -0
- package/library/tools/open/resource.yaml +80 -0
- package/library/tools/open-main-scene/resource.yaml +40 -0
- package/library/tools/open-scene/resource.yaml +46 -0
- package/library/tools/play/resource.yaml +91 -0
- package/library/tools/project-setting/resource.yaml +53 -0
- package/library/tools/read-file/resource.yaml +47 -0
- package/library/tools/read-library/resource.yaml +67 -0
- package/library/tools/recent-events/resource.yaml +71 -0
- package/library/tools/remove-node/resource.yaml +51 -0
- package/library/tools/replace-node/resource.yaml +57 -0
- package/library/tools/replace-text/resource.yaml +61 -0
- package/library/tools/run-editor-script/resource.yaml +61 -0
- package/library/tools/run-script/resource.yaml +73 -0
- package/library/tools/runtime-animate/resource.yaml +140 -0
- package/library/tools/runtime-call/resource.yaml +74 -0
- package/library/tools/runtime-set/resource.yaml +80 -0
- package/library/tools/runtime-spawn/resource.yaml +95 -0
- package/library/tools/save-scene/resource.yaml +50 -0
- package/library/tools/screenshot/resource.yaml +112 -0
- package/library/tools/search-assets/resource.yaml +67 -0
- package/library/tools/search-library/resource.yaml +81 -0
- package/library/tools/select-node/resource.yaml +48 -0
- package/library/tools/set-prop/resource.yaml +64 -0
- package/library/tools/set-resource-property/resource.yaml +66 -0
- package/library/tools/slice-asset-sheet/resource.yaml +47 -0
- package/library/tools/snap-to-surface/resource.yaml +90 -0
- package/library/tools/snapshot-diff/resource.yaml +58 -0
- package/library/tools/starcast/resource.yaml +120 -0
- package/library/tools/start-game-task/resource.yaml +91 -0
- package/library/tools/stop/resource.yaml +51 -0
- package/library/tools/test-placement/resource.yaml +109 -0
- package/library/tools/ui-actions/resource.yaml +77 -0
- package/library/tools/ui-activate/resource.yaml +88 -0
- package/library/tools/ui-screenshot/resource.yaml +63 -0
- package/library/tools/ui-tree/resource.yaml +69 -0
- package/library/tools/wait-for-event/resource.yaml +84 -0
- package/library/tools/world-snapshot/resource.yaml +60 -0
- package/library/tools/write-file/resource.yaml +54 -0
- package/package.json +22 -16
- package/registry/generated/aliases.json +207 -0
- package/registry/generated/counts.json +12 -0
- package/registry/generated/gemini-extension.json +122 -0
- package/registry/generated/index.json +7709 -0
- package/registry/generated/marketplace.claude.json +44 -0
- package/registry/generated/mcp.json +13 -0
- package/registry/generated/plugin.claude.json +135 -0
- package/registry/generated/plugin.codex.json +144 -0
- package/registry/generated/plugin.cursor.json +134 -0
- package/registry/generated/plugin.factory.json +117 -0
- package/registry/generated/skills-registry.json +851 -0
- package/registry/generated/templates-registry.json +455 -0
- package/registry/schemas/allowed-hosts.json +19 -0
- package/registry/schemas/collection.schema.json +68 -0
- package/registry/schemas/domains.json +96 -0
- package/registry/schemas/example.schema.json +11 -0
- package/registry/schemas/reference.schema.json +10 -0
- package/registry/schemas/resource.schema.json +154 -0
- package/registry/schemas/skill.schema.json +14 -0
- package/registry/schemas/template.schema.json +46 -0
- package/registry/schemas/tool.schema.json +61 -0
- package/_persona/summer/SKILL.md +0 -113
- package/dist/bin/postinstall.d.ts +0 -2
- package/dist/bin/postinstall.js +0 -3
- package/dist/commands/cloud.d.ts +0 -2
- package/dist/commands/cloud.js +0 -80
- package/dist/commands/create.d.ts +0 -3
- package/dist/commands/create.js +0 -171
- package/dist/commands/install.d.ts +0 -19
- package/dist/commands/install.js +0 -194
- package/dist/commands/list.js +0 -67
- package/dist/commands/logout.js +0 -13
- package/dist/commands/logs.d.ts +0 -2
- package/dist/commands/logs.js +0 -19
- package/dist/commands/open.d.ts +0 -2
- package/dist/commands/open.js +0 -32
- package/dist/commands/orchestrator.d.ts +0 -8
- package/dist/commands/orchestrator.js +0 -143
- package/dist/commands/run.d.ts +0 -2
- package/dist/commands/run.js +0 -167
- package/dist/commands/status.js +0 -46
- package/dist/lib/banner.d.ts +0 -4
- package/dist/lib/banner.js +0 -122
- package/dist/lib/cloud/api.d.ts +0 -79
- package/dist/lib/cloud/api.js +0 -107
- package/dist/lib/cloud/apply.d.ts +0 -32
- package/dist/lib/cloud/apply.js +0 -294
- package/dist/lib/cloud/checkpoint.d.ts +0 -26
- package/dist/lib/cloud/checkpoint.js +0 -142
- package/dist/lib/cloud/conflicts.d.ts +0 -55
- package/dist/lib/cloud/conflicts.js +0 -131
- package/dist/lib/cloud/containment.d.ts +0 -8
- package/dist/lib/cloud/containment.js +0 -52
- package/dist/lib/cloud/diff.d.ts +0 -39
- package/dist/lib/cloud/diff.js +0 -138
- package/dist/lib/cloud/engine-bridge.d.ts +0 -34
- package/dist/lib/cloud/engine-bridge.js +0 -139
- package/dist/lib/cloud/hash-cache.d.ts +0 -23
- package/dist/lib/cloud/hash-cache.js +0 -44
- package/dist/lib/cloud/hash.d.ts +0 -10
- package/dist/lib/cloud/hash.js +0 -111
- package/dist/lib/cloud/http.d.ts +0 -17
- package/dist/lib/cloud/http.js +0 -47
- package/dist/lib/cloud/lock-path.d.ts +0 -1
- package/dist/lib/cloud/lock-path.js +0 -5
- package/dist/lib/cloud/lock.d.ts +0 -14
- package/dist/lib/cloud/lock.js +0 -143
- package/dist/lib/cloud/manifest.d.ts +0 -6
- package/dist/lib/cloud/manifest.js +0 -41
- package/dist/lib/cloud/paths.d.ts +0 -20
- package/dist/lib/cloud/paths.js +0 -90
- package/dist/lib/cloud/project-godot-merge.d.ts +0 -32
- package/dist/lib/cloud/project-godot-merge.js +0 -185
- package/dist/lib/cloud/rules.d.ts +0 -39
- package/dist/lib/cloud/rules.js +0 -159
- package/dist/lib/cloud/sync.d.ts +0 -21
- package/dist/lib/cloud/sync.js +0 -518
- package/dist/lib/cloud/transfer.d.ts +0 -23
- package/dist/lib/cloud/transfer.js +0 -184
- package/dist/lib/cloud/types.d.ts +0 -62
- package/dist/lib/cloud/types.js +0 -1
- package/dist/lib/cloud/validate-path.d.ts +0 -23
- package/dist/lib/cloud/validate-path.js +0 -103
- package/dist/lib/engine.d.ts +0 -51
- package/dist/lib/game-task-plan.d.ts +0 -42
- package/dist/lib/project-memory.d.ts +0 -33
- package/dist/lib/public-surface-paths.d.ts +0 -13
- package/dist/lib/public-surface-paths.js +0 -42
- package/dist/lib/remote-templates.d.ts +0 -25
- package/dist/lib/remote-templates.js +0 -86
- package/dist/lib/skills-registry.d.ts +0 -572
- package/dist/lib/skills-registry.js +0 -1061
- package/dist/lib/version-check.d.ts +0 -106
- package/dist/mcp/tools/cloud-tools.js +0 -42
- package/references/mcp-tools-reference.md +0 -199
- package/references/template-registry.md +0 -73
- package/skills/README.md +0 -103
- package/skills/scene-and-project/summer-cloud/SKILL.md +0 -92
- package/skills/workflow/brainstorming/scripts/frame-template.html +0 -214
- package/skills/workflow/brainstorming/scripts/helper.js +0 -88
- package/skills/workflow/brainstorming/scripts/server.cjs +0 -354
- package/skills/workflow/brainstorming/scripts/start-server.sh +0 -148
- package/skills/workflow/brainstorming/scripts/stop-server.sh +0 -56
- package/skills/workflow/brainstorming/visual-companion.md +0 -287
- package/skills/workflow/gameskill/SKILL.md +0 -120
- package/skills/workflow/investigating-bugs/CREATION-LOG.md +0 -119
- package/skills/workflow/investigating-bugs/condition-based-waiting-example.ts +0 -158
- package/skills/workflow/investigating-bugs/find-polluter.sh +0 -63
- package/skills/workflow/investigating-bugs/test-academic.md +0 -14
- package/skills/workflow/investigating-bugs/test-pressure-1.md +0 -58
- package/skills/workflow/investigating-bugs/test-pressure-2.md +0 -68
- package/skills/workflow/investigating-bugs/test-pressure-3.md +0 -69
- package/skills/workflow/mcpupdate/SKILL.md +0 -134
- package/skills/workflow/skill-create/SKILL.md +0 -153
- package/skills/workflow/writing-skills/anthropic-best-practices.md +0 -1150
- package/skills/workflow/writing-skills/examples/CLAUDE_MD_TESTING.md +0 -189
- package/skills/workflow/writing-skills/graphviz-conventions.dot +0 -172
- package/skills/workflow/writing-skills/persuasion-principles.md +0 -187
- package/skills/workflow/writing-skills/render-graphs.js +0 -168
- /package/dist/{commands → cli/commands}/config.d.ts +0 -0
- /package/dist/{commands → cli/commands}/debug.d.ts +0 -0
- /package/dist/{commands → cli/commands}/list.d.ts +0 -0
- /package/dist/{commands → cli/commands}/login.d.ts +0 -0
- /package/dist/{commands → cli/commands}/plan.d.ts +0 -0
- /package/dist/{commands → cli/commands}/publish.d.ts +0 -0
- /package/dist/{commands → cli/commands}/releases.d.ts +0 -0
- /package/dist/{commands → cli/commands}/setup.d.ts +0 -0
- /package/dist/{commands → cli/commands}/skills.d.ts +0 -0
- /package/dist/{lib → core}/log-filters.d.ts +0 -0
- /package/dist/{lib → core}/mcp-log.d.ts +0 -0
- /package/dist/{lib → core}/store.d.ts +0 -0
- /package/dist/{lib → core}/summer-compatibility.d.ts +0 -0
- /package/dist/{lib → core}/telemetry.d.ts +0 -0
- /package/dist/{lib/mcp-boot-notice.js → mcp/boot-notice.js} +0 -0
- /package/dist/{commands/mcp.d.ts → mcp/command.d.ts} +0 -0
- /package/{references → library/references/collaborative-protocol}/collaborative-protocol.md +0 -0
- /package/{references → library/references/gd-style}/gd-style.md +0 -0
- /package/{skills/audio → library/skills}/ambient-bed/SKILL.md +0 -0
- /package/{skills/gameplay-mechanics → library/skills}/auto-fire-targeting/SKILL.md +0 -0
- /package/{skills/scripting-patterns → library/skills}/gdscript-patterns/SKILL.md +0 -0
- /package/{skills/scripting-patterns → library/skills}/gdscript-patterns/reference.md +0 -0
- /package/{skills/multiplayer-and-networking → library/skills}/host-authoritative-state/SKILL.md +0 -0
- /package/{skills/workflow → library/skills}/investigating-bugs/defense-in-depth.md +0 -0
- /package/{skills/audio → library/skills}/music-track/SKILL.md +0 -0
- /package/{skills/scene-and-project → library/skills}/play/SKILL.md +0 -0
- /package/{skills/multiplayer-and-networking → library/skills}/setup-multiplayer/SKILL.md +0 -0
- /package/{skills/ui-and-ux → library/skills}/ui-basics/SKILL.md +0 -0
- /package/{skills/visual-effects → library/skills/vfx-dissolve}/_building-blocks/noise-3d-fbm.gdshaderinc +0 -0
- /package/{skills/visual-effects → library/skills/vfx-fire}/_building-blocks/additive-billboard-particles.md +0 -0
- /package/{skills/visual-effects → library/skills/vfx-lightning}/_building-blocks/trauma-shake-snippet.md +0 -0
- /package/{skills/audio → library/skills}/voice-line/SKILL.md +0 -0
- /package/{skills/workflow → library/skills}/writing-plans/plan-document-reviewer-prompt.md +0 -0
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
import { getClient, resetClient } from "../server.js";
|
|
2
|
-
import { recordMcpSession } from "../../
|
|
2
|
+
import { recordMcpSession } from "../../core/telemetry.js";
|
|
3
|
+
import { thrownErrorClass } from "../../core/tool-errors.js";
|
|
4
|
+
import { extractOpError, getFailureReason, withOldEngineHint, } from "../../core/capabilities/engine-receipt.js";
|
|
5
|
+
export { extractOpError, withOldEngineHint };
|
|
6
|
+
export { missingEngineOpResult, } from "../../core/capability-skew.js";
|
|
7
|
+
export { ToolInputError, UnsupportedOperationError } from "../../core/tool-errors.js";
|
|
3
8
|
export const WITH_ENGINE_META = Symbol("summerWithEngineMeta");
|
|
4
9
|
function attachMeta(result, meta) {
|
|
5
10
|
Object.defineProperty(result, WITH_ENGINE_META, {
|
|
@@ -9,33 +14,6 @@ function attachMeta(result, meta) {
|
|
|
9
14
|
});
|
|
10
15
|
return result;
|
|
11
16
|
}
|
|
12
|
-
function getFailureReason(value) {
|
|
13
|
-
return typeof value.failureReason === "string"
|
|
14
|
-
? value.failureReason
|
|
15
|
-
: typeof value.failure_reason === "string"
|
|
16
|
-
? value.failure_reason
|
|
17
|
-
: undefined;
|
|
18
|
-
}
|
|
19
|
-
// 0.5.34 Block E contract (publicsummerengine src/lib/tools/contract.ts §0.1).
|
|
20
|
-
// The async lifecycle (async-op-lifecycle.ts pollOpToTerminal) merges
|
|
21
|
-
// terminalState/errorClass onto the apply dict it returns. ONLY these two are
|
|
22
|
-
// "applied something / applied nothing-on-purpose" — every other terminal state
|
|
23
|
-
// means the op did NOT land and must be surfaced as a failure, not masked.
|
|
24
|
-
const SUCCESS_TERMINAL_STATES = new Set(["applied", "no_op"]);
|
|
25
|
-
// Human-readable fallback when the engine reports a failure terminalState but no
|
|
26
|
-
// `error` string (queue-full / lease-reject / identity-mismatch / no-progress
|
|
27
|
-
// timeout frequently arrive with terminalState set and results[] absent).
|
|
28
|
-
const TERMINAL_STATE_MESSAGES = {
|
|
29
|
-
timed_out: "Engine operation timed out. Its final state is unknown; inspect the target before retrying.",
|
|
30
|
-
still_queued: "Summer Engine accepted the operation, but it was still queued when the client stopped waiting. It may still run; do not retry blindly.",
|
|
31
|
-
still_running: "Summer Engine accepted and started the operation, but no final receipt arrived. It may still be running or may already have applied; inspect the target before retrying.",
|
|
32
|
-
uncertain: "Summer Engine did not provide a final operation receipt. The current state is uncertain; inspect the target before retrying.",
|
|
33
|
-
not_connected: "Summer Engine is not connected (terminalState: not_connected). Nothing was applied.",
|
|
34
|
-
identity_mismatch: "Operation rejected — wrong project/instance (terminalState: identity_mismatch). Nothing was mutated.",
|
|
35
|
-
content_mismatch: "Operation rejected — content changed since last read (terminalState: content_mismatch). Nothing was applied.",
|
|
36
|
-
denied: "Operation denied (terminalState: denied). Nothing was applied.",
|
|
37
|
-
canceled: "Operation canceled (terminalState: canceled). Nothing was applied.",
|
|
38
|
-
};
|
|
39
17
|
/** Pull the failure classifiers off an engine envelope for logging (best-effort,
|
|
40
18
|
* shape-tolerant). Does not decide success/failure — that stays in
|
|
41
19
|
* extractOpError. */
|
|
@@ -50,73 +28,6 @@ function readClassifiers(result) {
|
|
|
50
28
|
failureReason: getFailureReason(op) ?? (failed ? getFailureReason(failed) : undefined),
|
|
51
29
|
};
|
|
52
30
|
}
|
|
53
|
-
/**
|
|
54
|
-
* Decide whether an engine result envelope represents a FAILURE, and if so
|
|
55
|
-
* return a model-visible message. Returns null only for genuine success.
|
|
56
|
-
*
|
|
57
|
-
* Guards the two web bug classes (publicsummerengine cf17134f + contract.ts
|
|
58
|
-
* `isFailureSignal`):
|
|
59
|
-
* - a failure `terminalState` (anything other than applied/no_op) is a failure
|
|
60
|
-
* even when results[] is absent — the cf17134f "no-results envelope looked
|
|
61
|
-
* applied" masking. The poll loop surfaces timed_out/etc. here.
|
|
62
|
-
* - an explicit ok:false / status:"error" / failed op inside results[].
|
|
63
|
-
*
|
|
64
|
-
* Exported for unit tests.
|
|
65
|
-
*/
|
|
66
|
-
export function extractOpError(result) {
|
|
67
|
-
if (!result || typeof result !== "object")
|
|
68
|
-
return null;
|
|
69
|
-
const op = result;
|
|
70
|
-
const firstFailed = op.results?.find((r) => r.ok === false);
|
|
71
|
-
// The engine stamps failure classifiers on the envelope OR per-op inside
|
|
72
|
-
// results[] (the batch gate does the latter) — read both.
|
|
73
|
-
const failureReason = getFailureReason(op) ?? (firstFailed ? getFailureReason(firstFailed) : undefined);
|
|
74
|
-
// Classified failures are rendered as JSON so callers can reliably read
|
|
75
|
-
// failure_reason instead of scraping a sentence. A plain-text "Hint:" line may
|
|
76
|
-
// follow the JSON in the final tool text. Unclassified failures stay plain.
|
|
77
|
-
const classify = (message) => {
|
|
78
|
-
if (!failureReason)
|
|
79
|
-
return message;
|
|
80
|
-
return JSON.stringify({
|
|
81
|
-
error: message,
|
|
82
|
-
failure_reason: failureReason,
|
|
83
|
-
...(typeof firstFailed?.error === "string" && firstFailed.error.length > 0 && firstFailed.error !== message
|
|
84
|
-
? { op_error: firstFailed.error }
|
|
85
|
-
: {}),
|
|
86
|
-
...(typeof firstFailed?.op === "string" ? { op: firstFailed.op } : {}),
|
|
87
|
-
...(typeof op.terminalState === "string" ? { terminalState: op.terminalState } : {}),
|
|
88
|
-
...(typeof op.errorClass === "string" ? { errorClass: op.errorClass } : {}),
|
|
89
|
-
}, null, 2);
|
|
90
|
-
};
|
|
91
|
-
// Failure terminalState takes precedence — it is set by the async lifecycle
|
|
92
|
-
// exactly when the op did not land (timeout, backpressure, lease/identity
|
|
93
|
-
// rejection, cancellation), sometimes with NO results[] to inspect. Prefer the
|
|
94
|
-
// precise engine rejection (envelope error, then the failed op's error) over
|
|
95
|
-
// the generic terminal-state sentence.
|
|
96
|
-
const ts = op.terminalState;
|
|
97
|
-
if (typeof ts === "string" && ts.length > 0 && !SUCCESS_TERMINAL_STATES.has(ts)) {
|
|
98
|
-
const message = (typeof op.error === "string" && op.error.length > 0 && op.error) ||
|
|
99
|
-
(typeof firstFailed?.error === "string" && firstFailed.error.length > 0 && firstFailed.error) ||
|
|
100
|
-
TERMINAL_STATE_MESSAGES[ts] ||
|
|
101
|
-
`Engine operation failed (terminalState: ${ts}).`;
|
|
102
|
-
return classify(message);
|
|
103
|
-
}
|
|
104
|
-
// An explicit ok:false / status:"error" / failed op inside results[] is a
|
|
105
|
-
// failure even when the engine omitted an error string — surface it rather
|
|
106
|
-
// than mask it (matches the web contract `isFailureSignal`). The envelope
|
|
107
|
-
// error is kept when present; the failed op's own error backs it up.
|
|
108
|
-
if (op.ok === false || op.status === "error" || firstFailed) {
|
|
109
|
-
const message = (typeof op.error === "string" && op.error.length > 0 && op.error) ||
|
|
110
|
-
(typeof firstFailed?.error === "string" && firstFailed.error.length > 0 && firstFailed.error) ||
|
|
111
|
-
(firstFailed
|
|
112
|
-
? `Engine op failed${firstFailed.op ? ` (${firstFailed.op})` : ""}.`
|
|
113
|
-
: op.ok === false
|
|
114
|
-
? "Engine operation failed (ok: false)."
|
|
115
|
-
: "Engine operation failed (status: error).");
|
|
116
|
-
return classify(message);
|
|
117
|
-
}
|
|
118
|
-
return null;
|
|
119
|
-
}
|
|
120
31
|
/**
|
|
121
32
|
* An auth failure is the ONE class of thrown error that is provably pre-apply:
|
|
122
33
|
* the engine rejects on the Bearer-token check (tool_net_thread.cpp::_validate_auth)
|
|
@@ -212,6 +123,18 @@ export async function withEngine(fn, opts) {
|
|
|
212
123
|
return attachMeta({ content: [{ type: "text", text: JSON.stringify(result, null, 2) }] }, meta);
|
|
213
124
|
}
|
|
214
125
|
catch (err) {
|
|
126
|
+
// A tagged pre-apply throw (argument validation, or a client that cannot
|
|
127
|
+
// perform the op at all) never reached the engine: keep the cached
|
|
128
|
+
// client, skip the transport recovery recipe, and say so.
|
|
129
|
+
const preApply = thrownErrorClass(err);
|
|
130
|
+
if (preApply) {
|
|
131
|
+
return attachMeta(preApplyFailureResult(preApply, err), {
|
|
132
|
+
errorClass: preApply,
|
|
133
|
+
failureReason: PRE_APPLY_FAILURE_REASON[preApply],
|
|
134
|
+
retried,
|
|
135
|
+
boundProjectIdHash,
|
|
136
|
+
});
|
|
137
|
+
}
|
|
215
138
|
// Drop the cached client (it may point at a dead/rotated engine). Retry
|
|
216
139
|
// once only for a provably pre-apply auth failure; anything else surfaces.
|
|
217
140
|
resetClient();
|
|
@@ -222,5 +145,46 @@ export async function withEngine(fn, opts) {
|
|
|
222
145
|
}
|
|
223
146
|
}
|
|
224
147
|
const msg = lastError instanceof Error ? lastError.message : String(lastError);
|
|
225
|
-
return attachMeta({ content: [{ type: "text", text: msg }], isError: true }, { errorClass: "transport", retried, boundProjectIdHash });
|
|
148
|
+
return attachMeta({ content: [{ type: "text", text: withTransportRecovery(msg) }], isError: true }, { errorClass: "transport", retried, boundProjectIdHash });
|
|
149
|
+
}
|
|
150
|
+
const PRE_APPLY_FAILURE_REASON = {
|
|
151
|
+
input: "invalid_input",
|
|
152
|
+
unsupported: "unsupported_operation",
|
|
153
|
+
};
|
|
154
|
+
/** Model-visible result for a throw that is provably pre-apply. Rendered as
|
|
155
|
+
* JSON like every other classified failure (callers read failure_reason
|
|
156
|
+
* instead of scraping a sentence); `sent:false` is the load-bearing bit —
|
|
157
|
+
* no mutation could have landed, so the model may fix the call and retry. */
|
|
158
|
+
function preApplyFailureResult(errorClass, err) {
|
|
159
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
160
|
+
return {
|
|
161
|
+
isError: true,
|
|
162
|
+
content: [{
|
|
163
|
+
type: "text",
|
|
164
|
+
text: JSON.stringify({
|
|
165
|
+
error: message,
|
|
166
|
+
failure_reason: PRE_APPLY_FAILURE_REASON[errorClass],
|
|
167
|
+
errorClass,
|
|
168
|
+
sent: false,
|
|
169
|
+
hint: errorClass === "input"
|
|
170
|
+
? "Nothing was sent to the engine. Fix the argument named in the error and call again — no inspection needed."
|
|
171
|
+
: "Nothing was sent or applied. This client cannot perform the operation; use the alternative named in the error.",
|
|
172
|
+
}, null, 2),
|
|
173
|
+
}],
|
|
174
|
+
};
|
|
175
|
+
}
|
|
176
|
+
/** Every transport-level failure must TEACH recovery, not just name the error.
|
|
177
|
+
* getClient()'s connect failure already carries its own instructions; anything
|
|
178
|
+
* else (fetch failed / abort / HTTP status thrown mid-call) gets the generic
|
|
179
|
+
* recovery recipe appended. Exported for unit tests. */
|
|
180
|
+
export function withTransportRecovery(message) {
|
|
181
|
+
// Connect-path failures already prescribe (server.ts getClient appends the
|
|
182
|
+
// "Open the intended project…" instructions). Don't stack a second recipe.
|
|
183
|
+
if (message.includes("summer-engine run") || message.includes("summer-engine@latest run"))
|
|
184
|
+
return message;
|
|
185
|
+
return (message +
|
|
186
|
+
"\n\nRecovery: (1) check the engine is running and responsive — summer_get_project_context here, or `summer doctor` in a shell; " +
|
|
187
|
+
"(2) if this was a MUTATION, do NOT blind-retry — it may have partially applied; inspect the target first (summer_get_scene_tree / summer_world_snapshot / summer_read_file); " +
|
|
188
|
+
"(3) if the call was large or long-running, break it into smaller scripts/batches and re-run piece by piece; " +
|
|
189
|
+
"(4) if the engine restarted, the next tool call reconnects automatically — just retry a READ to confirm.");
|
|
226
190
|
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
export declare const PROJECT_MANIFEST_RELPATH = ".summer/project.json";
|
|
2
|
+
export type ProjectTemplateRecord = {
|
|
3
|
+
id: string;
|
|
4
|
+
version: string;
|
|
5
|
+
builtin: true;
|
|
6
|
+
} | {
|
|
7
|
+
id: string;
|
|
8
|
+
version: string;
|
|
9
|
+
repo: string;
|
|
10
|
+
commit: string;
|
|
11
|
+
tree_digest: string;
|
|
12
|
+
};
|
|
13
|
+
export interface ProjectManifest {
|
|
14
|
+
template?: ProjectTemplateRecord;
|
|
15
|
+
toolkit_version?: string;
|
|
16
|
+
/** Summer Engine version seen at create time; absent when no engine was reachable. */
|
|
17
|
+
engine_version?: string;
|
|
18
|
+
created_at?: string;
|
|
19
|
+
[key: string]: unknown;
|
|
20
|
+
}
|
|
21
|
+
export declare function projectManifestPath(projectDir: string): string;
|
|
22
|
+
export declare function readProjectManifest(projectDir: string): ProjectManifest | null;
|
|
23
|
+
export interface ProjectManifestPatch {
|
|
24
|
+
template: ProjectTemplateRecord;
|
|
25
|
+
toolkit_version: string;
|
|
26
|
+
/** Recorded when given; an existing value survives a patch without one. */
|
|
27
|
+
engine_version?: string;
|
|
28
|
+
/** Override for tests; defaults to now. Only used when the file has no created_at yet. */
|
|
29
|
+
now?: () => Date;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Write (or merge into) `.summer/project.json`. Existing keys are preserved;
|
|
33
|
+
* `template` and `toolkit_version` (and `engine_version` when given) are
|
|
34
|
+
* replaced; `created_at` is set once.
|
|
35
|
+
*/
|
|
36
|
+
export declare function writeProjectManifest(projectDir: string, patch: ProjectManifestPatch): ProjectManifest;
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `.summer/project.json` — the project manifest (CONTRACT.md §8).
|
|
3
|
+
*
|
|
4
|
+
* Written by `summer create` so a fresh agent can answer "exactly which
|
|
5
|
+
* template, at which commit, built this project" without the original
|
|
6
|
+
* conversation. Merged, never clobbered: any other keys already in the file
|
|
7
|
+
* survive a rewrite.
|
|
8
|
+
*/
|
|
9
|
+
import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
|
|
10
|
+
import { dirname, join } from "node:path";
|
|
11
|
+
export const PROJECT_MANIFEST_RELPATH = ".summer/project.json";
|
|
12
|
+
export function projectManifestPath(projectDir) {
|
|
13
|
+
return join(projectDir, PROJECT_MANIFEST_RELPATH);
|
|
14
|
+
}
|
|
15
|
+
export function readProjectManifest(projectDir) {
|
|
16
|
+
const file = projectManifestPath(projectDir);
|
|
17
|
+
if (!existsSync(file))
|
|
18
|
+
return null;
|
|
19
|
+
let parsed;
|
|
20
|
+
try {
|
|
21
|
+
parsed = JSON.parse(readFileSync(file, "utf-8"));
|
|
22
|
+
}
|
|
23
|
+
catch (err) {
|
|
24
|
+
throw new Error(`${file} exists but is not valid JSON: ${err.message}`);
|
|
25
|
+
}
|
|
26
|
+
if (typeof parsed !== "object" || parsed === null || Array.isArray(parsed)) {
|
|
27
|
+
throw new Error(`${file} exists but is not a JSON object`);
|
|
28
|
+
}
|
|
29
|
+
return parsed;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Write (or merge into) `.summer/project.json`. Existing keys are preserved;
|
|
33
|
+
* `template` and `toolkit_version` (and `engine_version` when given) are
|
|
34
|
+
* replaced; `created_at` is set once.
|
|
35
|
+
*/
|
|
36
|
+
export function writeProjectManifest(projectDir, patch) {
|
|
37
|
+
const existing = readProjectManifest(projectDir) ?? {};
|
|
38
|
+
const now = patch.now ?? (() => new Date());
|
|
39
|
+
const manifest = {
|
|
40
|
+
...existing,
|
|
41
|
+
template: patch.template,
|
|
42
|
+
toolkit_version: patch.toolkit_version,
|
|
43
|
+
...(patch.engine_version ? { engine_version: patch.engine_version } : {}),
|
|
44
|
+
created_at: typeof existing.created_at === "string" ? existing.created_at : now().toISOString(),
|
|
45
|
+
};
|
|
46
|
+
const file = projectManifestPath(projectDir);
|
|
47
|
+
mkdirSync(dirname(file), { recursive: true });
|
|
48
|
+
writeFileSync(file, `${JSON.stringify(manifest, null, 2)}\n`, "utf-8");
|
|
49
|
+
return manifest;
|
|
50
|
+
}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { type ProjectTemplateRecord } from "./project-manifest.js";
|
|
2
|
+
export interface ProjectMemoryFileSummary {
|
|
3
|
+
path: string;
|
|
4
|
+
kind: string;
|
|
5
|
+
title: string | null;
|
|
6
|
+
modifiedTime: string;
|
|
7
|
+
bytes: number;
|
|
8
|
+
locked: boolean;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* The template pin `summer create` records in `.summer/project.json`
|
|
12
|
+
* (CONTRACT.md §8): which template, at which commit, started this project,
|
|
13
|
+
* plus the toolkit (and, when known, engine) version that created it. It is
|
|
14
|
+
* project memory — the first fact a fresh agent needs — so it is surfaced
|
|
15
|
+
* next to GameSoul/build-plan instead of being a file nobody reads.
|
|
16
|
+
*/
|
|
17
|
+
export interface ProjectPinSummary {
|
|
18
|
+
/** Project-relative path of the manifest. */
|
|
19
|
+
path: string;
|
|
20
|
+
template: ProjectTemplateRecord | null;
|
|
21
|
+
toolkit_version: string | null;
|
|
22
|
+
engine_version: string | null;
|
|
23
|
+
created_at: string | null;
|
|
24
|
+
}
|
|
25
|
+
export interface ProjectMemorySummary {
|
|
26
|
+
present: boolean;
|
|
27
|
+
root: ".summer";
|
|
28
|
+
reason?: string;
|
|
29
|
+
/** `.summer/project.json`, or null when the project has no pin (created
|
|
30
|
+
* outside `summer create`). */
|
|
31
|
+
pin: ProjectPinSummary | null;
|
|
32
|
+
/** Set when project.json exists but could not be read as a JSON object. */
|
|
33
|
+
pinError?: string;
|
|
34
|
+
canonical: {
|
|
35
|
+
gameSoul: ProjectMemoryFileSummary | null;
|
|
36
|
+
artBible: ProjectMemoryFileSummary | null;
|
|
37
|
+
audioBible: ProjectMemoryFileSummary | null;
|
|
38
|
+
buildPlan: ProjectMemoryFileSummary | null;
|
|
39
|
+
legacyVoiceCast: ProjectMemoryFileSummary | null;
|
|
40
|
+
};
|
|
41
|
+
structured: {
|
|
42
|
+
present: boolean;
|
|
43
|
+
indexPresent: boolean;
|
|
44
|
+
fileCount: number;
|
|
45
|
+
lockedCount: number;
|
|
46
|
+
files: ProjectMemoryFileSummary[];
|
|
47
|
+
truncated: boolean;
|
|
48
|
+
};
|
|
49
|
+
files: ProjectMemoryFileSummary[];
|
|
50
|
+
guidance: string;
|
|
51
|
+
}
|
|
52
|
+
export declare function getProjectMemorySummary(projectPath: string | null | undefined, options?: {
|
|
53
|
+
maxFiles?: number;
|
|
54
|
+
}): ProjectMemorySummary;
|
|
55
|
+
/** One line for status/doctor output: `template/<id>@<version>` (+ `builtin`
|
|
56
|
+
* or the short commit), or null when the project has no pin. */
|
|
57
|
+
export declare function formatProjectPin(pin: ProjectPinSummary | null): string | null;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { closeSync, existsSync, openSync, readSync, readdirSync, statSync, } from "node:fs";
|
|
2
2
|
import { join, relative, sep } from "node:path";
|
|
3
|
+
import { PROJECT_MANIFEST_RELPATH, readProjectManifest, } from "./project-manifest.js";
|
|
3
4
|
const CANONICAL_FILES = [
|
|
4
5
|
{ key: "gameSoul", relativePath: ".summer/GameSoul.md", kind: "brief" },
|
|
5
6
|
{ key: "artBible", relativePath: ".summer/art-bible.md", kind: "art" },
|
|
@@ -33,9 +34,12 @@ export function getProjectMemorySummary(projectPath, options = {}) {
|
|
|
33
34
|
? scanMarkdownFiles(projectPath, memoryDir, maxFiles)
|
|
34
35
|
: [];
|
|
35
36
|
const indexPath = join(projectPath, ".summer", "memory", "index.json");
|
|
37
|
+
const { pin, pinError } = readProjectPin(projectPath);
|
|
36
38
|
return {
|
|
37
39
|
present: true,
|
|
38
40
|
root: ".summer",
|
|
41
|
+
pin,
|
|
42
|
+
...(pinError ? { pinError } : {}),
|
|
39
43
|
canonical,
|
|
40
44
|
structured: {
|
|
41
45
|
present: existsSync(memoryDir),
|
|
@@ -49,10 +53,52 @@ export function getProjectMemorySummary(projectPath, options = {}) {
|
|
|
49
53
|
guidance: "Read relevant .summer Markdown before creative, audio, dialogue, level, or character work. Ask before writing .summer files. Changing priority: locked memory requires explicit user confirmation.",
|
|
50
54
|
};
|
|
51
55
|
}
|
|
56
|
+
/** The manifest as memory. A missing file is a null pin (not an error); an
|
|
57
|
+
* unreadable one is reported, never thrown — a summary must not fail
|
|
58
|
+
* because one file is corrupt. */
|
|
59
|
+
function readProjectPin(projectPath) {
|
|
60
|
+
let manifest;
|
|
61
|
+
try {
|
|
62
|
+
manifest = readProjectManifest(projectPath);
|
|
63
|
+
}
|
|
64
|
+
catch (error) {
|
|
65
|
+
return {
|
|
66
|
+
pin: null,
|
|
67
|
+
pinError: error instanceof Error ? error.message : String(error),
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
if (!manifest)
|
|
71
|
+
return { pin: null };
|
|
72
|
+
const template = manifest.template;
|
|
73
|
+
const templateRecord = template && typeof template === "object" && typeof template.id === "string"
|
|
74
|
+
? template
|
|
75
|
+
: null;
|
|
76
|
+
return {
|
|
77
|
+
pin: {
|
|
78
|
+
path: PROJECT_MANIFEST_RELPATH,
|
|
79
|
+
template: templateRecord,
|
|
80
|
+
toolkit_version: typeof manifest.toolkit_version === "string" ? manifest.toolkit_version : null,
|
|
81
|
+
engine_version: typeof manifest.engine_version === "string" ? manifest.engine_version : null,
|
|
82
|
+
created_at: typeof manifest.created_at === "string" ? manifest.created_at : null,
|
|
83
|
+
},
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
/** One line for status/doctor output: `template/<id>@<version>` (+ `builtin`
|
|
87
|
+
* or the short commit), or null when the project has no pin. */
|
|
88
|
+
export function formatProjectPin(pin) {
|
|
89
|
+
if (!pin)
|
|
90
|
+
return null;
|
|
91
|
+
if (!pin.template)
|
|
92
|
+
return `pin without template (${pin.path})`;
|
|
93
|
+
const template = pin.template;
|
|
94
|
+
const origin = "builtin" in template ? "builtin" : template.commit.slice(0, 12);
|
|
95
|
+
return `${template.id}@${template.version} (${origin})`;
|
|
96
|
+
}
|
|
52
97
|
function createEmptySummary() {
|
|
53
98
|
return {
|
|
54
99
|
present: false,
|
|
55
100
|
root: ".summer",
|
|
101
|
+
pin: null,
|
|
56
102
|
canonical: {
|
|
57
103
|
gameSoul: null,
|
|
58
104
|
artBible: null,
|
package/gemini-extension.json
CHANGED
|
@@ -1,12 +1,17 @@
|
|
|
1
1
|
{
|
|
2
|
+
"_generated": "GENERATED from integrations/gemini — do not edit; npm run generate:registry",
|
|
2
3
|
"name": "summer",
|
|
3
|
-
"version": "
|
|
4
|
+
"version": "3.0.0",
|
|
4
5
|
"description": "Agent tooling for Summer Engine: MCP bridge, context primer, and game-dev skills. Use with the npm CLI for skill files on disk.",
|
|
5
6
|
"contextFileName": "GEMINI.md",
|
|
6
7
|
"mcpServers": {
|
|
7
8
|
"summer-engine": {
|
|
8
9
|
"command": "npx",
|
|
9
|
-
"args": [
|
|
10
|
+
"args": [
|
|
11
|
+
"-y",
|
|
12
|
+
"summer-engine@latest",
|
|
13
|
+
"mcp"
|
|
14
|
+
],
|
|
10
15
|
"cwd": "${extensionPath}"
|
|
11
16
|
}
|
|
12
17
|
},
|
|
@@ -17,5 +22,101 @@
|
|
|
17
22
|
"envVar": "SUMMER_PRE_COMMIT_DOCTOR",
|
|
18
23
|
"sensitive": false
|
|
19
24
|
}
|
|
25
|
+
],
|
|
26
|
+
"skills": [
|
|
27
|
+
"./library/skills/3d-lighting/",
|
|
28
|
+
"./library/skills/adaptive-music/",
|
|
29
|
+
"./library/skills/agent-playtesting/",
|
|
30
|
+
"./library/skills/ambient-bed/",
|
|
31
|
+
"./library/skills/animated-loop/",
|
|
32
|
+
"./library/skills/animation-tree/",
|
|
33
|
+
"./library/skills/art-direction/",
|
|
34
|
+
"./library/skills/asset-strategy/",
|
|
35
|
+
"./library/skills/audio-direction/",
|
|
36
|
+
"./library/skills/auto-fire-targeting/",
|
|
37
|
+
"./library/skills/brainstorm-game/",
|
|
38
|
+
"./library/skills/brainstorming/",
|
|
39
|
+
"./library/skills/browse-templates/",
|
|
40
|
+
"./library/skills/celeste-momentum-platforming/",
|
|
41
|
+
"./library/skills/character-animation-wiring/",
|
|
42
|
+
"./library/skills/character-model/",
|
|
43
|
+
"./library/skills/character-portrait/",
|
|
44
|
+
"./library/skills/cinematic-cutscene/",
|
|
45
|
+
"./library/skills/concept-art/",
|
|
46
|
+
"./library/skills/create-asset-sheet/",
|
|
47
|
+
"./library/skills/debug/",
|
|
48
|
+
"./library/skills/debugging-game-feel/",
|
|
49
|
+
"./library/skills/design-level/",
|
|
50
|
+
"./library/skills/design-mechanic/",
|
|
51
|
+
"./library/skills/design-npc/",
|
|
52
|
+
"./library/skills/diagnosing-perf-regressions/",
|
|
53
|
+
"./library/skills/dispatching-parallel-agents/",
|
|
54
|
+
"./library/skills/driving-the-editor-ui/",
|
|
55
|
+
"./library/skills/environment-kit/",
|
|
56
|
+
"./library/skills/export-and-ship/",
|
|
57
|
+
"./library/skills/fabricating-assets/",
|
|
58
|
+
"./library/skills/facial-and-lipsync/",
|
|
59
|
+
"./library/skills/fps-controller/",
|
|
60
|
+
"./library/skills/game-feel/",
|
|
61
|
+
"./library/skills/gameskill/",
|
|
62
|
+
"./library/skills/gdscript-patterns/",
|
|
63
|
+
"./library/skills/generate-motion/",
|
|
64
|
+
"./library/skills/godogen-visual-proof-game-generation/",
|
|
65
|
+
"./library/skills/headless-scripting/",
|
|
66
|
+
"./library/skills/host-authoritative-state/",
|
|
67
|
+
"./library/skills/instantiate-asset-pack/",
|
|
68
|
+
"./library/skills/investigating-bugs/",
|
|
69
|
+
"./library/skills/lumera-single-image-scene-reconstruction/",
|
|
70
|
+
"./library/skills/make-game/",
|
|
71
|
+
"./library/skills/music-track/",
|
|
72
|
+
"./library/skills/navigate-summer/",
|
|
73
|
+
"./library/skills/new-project/",
|
|
74
|
+
"./library/skills/organic-model/",
|
|
75
|
+
"./library/skills/peer-to-peer-multiplayer/",
|
|
76
|
+
"./library/skills/pixel-art/",
|
|
77
|
+
"./library/skills/play/",
|
|
78
|
+
"./library/skills/playtesting-a-feature/",
|
|
79
|
+
"./library/skills/procedural-animation/",
|
|
80
|
+
"./library/skills/prop-model/",
|
|
81
|
+
"./library/skills/psx-retro-rendering/",
|
|
82
|
+
"./library/skills/realtime-wet-surfaces/",
|
|
83
|
+
"./library/skills/remote-deploy/",
|
|
84
|
+
"./library/skills/retarget/",
|
|
85
|
+
"./library/skills/running-in-the-cloud/",
|
|
86
|
+
"./library/skills/scene-composition/",
|
|
87
|
+
"./library/skills/scene-hierarchy-design/",
|
|
88
|
+
"./library/skills/scene-scripting/",
|
|
89
|
+
"./library/skills/scene-to-level/",
|
|
90
|
+
"./library/skills/setup-multiplayer/",
|
|
91
|
+
"./library/skills/skill-create/",
|
|
92
|
+
"./library/skills/skill-improve/",
|
|
93
|
+
"./library/skills/skill-test/",
|
|
94
|
+
"./library/skills/skintokens-auto-rigging/",
|
|
95
|
+
"./library/skills/skybox-panorama/",
|
|
96
|
+
"./library/skills/sound-effect/",
|
|
97
|
+
"./library/skills/spatial-placement/",
|
|
98
|
+
"./library/skills/sprite-sheet/",
|
|
99
|
+
"./library/skills/tileable-texture/",
|
|
100
|
+
"./library/skills/trailer-shot/",
|
|
101
|
+
"./library/skills/tune-performance/",
|
|
102
|
+
"./library/skills/ui-basics/",
|
|
103
|
+
"./library/skills/ui-graphics/",
|
|
104
|
+
"./library/skills/use-widget-asset/",
|
|
105
|
+
"./library/skills/using-summer/",
|
|
106
|
+
"./library/skills/vehicle-model/",
|
|
107
|
+
"./library/skills/verification-before-completion/",
|
|
108
|
+
"./library/skills/verifying-scenes/",
|
|
109
|
+
"./library/skills/vfx-dissolve/",
|
|
110
|
+
"./library/skills/vfx-fire/",
|
|
111
|
+
"./library/skills/vfx-hit-spark/",
|
|
112
|
+
"./library/skills/vfx-lightning/",
|
|
113
|
+
"./library/skills/vfx-magic-glow/",
|
|
114
|
+
"./library/skills/vfx-muzzle-flash/",
|
|
115
|
+
"./library/skills/vfx-smoke/",
|
|
116
|
+
"./library/skills/vfx-water-ripple/",
|
|
117
|
+
"./library/skills/voice-line/",
|
|
118
|
+
"./library/skills/world-building-3d/",
|
|
119
|
+
"./library/skills/writing-plans/",
|
|
120
|
+
"./library/skills/writing-skills/"
|
|
20
121
|
]
|
|
21
122
|
}
|
package/hooks/hooks-cursor.json
CHANGED
package/hooks/hooks.json
CHANGED
|
@@ -16,11 +16,12 @@
|
|
|
16
16
|
],
|
|
17
17
|
"PreToolUse": [
|
|
18
18
|
{
|
|
19
|
-
"matcher": "Bash
|
|
19
|
+
"matcher": "Bash",
|
|
20
20
|
"hooks": [
|
|
21
21
|
{
|
|
22
22
|
"type": "command",
|
|
23
23
|
"command": "\"${CLAUDE_PLUGIN_ROOT}/hooks/run-hook.cmd\" pre-commit-doctor",
|
|
24
|
+
"if": "Bash(git commit*)",
|
|
24
25
|
"async": false,
|
|
25
26
|
"timeout": 30
|
|
26
27
|
}
|