summer-engine 3.7.0 → 4.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 +2 -13
- package/.claude-plugin/plugin.json +25 -22
- package/.codex-plugin/plugin.json +8 -14
- package/.cursor-plugin/plugin.json +7 -13
- package/.factory-plugin/plugin.json +7 -13
- package/AGENTS.md +19 -12
- package/CHANGELOG.md +112 -0
- package/GEMINI.md +3 -3
- package/README.md +111 -31
- package/assets/icon.png +0 -0
- package/commands/start.md +71 -0
- package/commands/summer.md +5 -3
- package/dist/cli/banner.js +3 -0
- package/dist/cli/commands/login.d.ts +27 -0
- package/dist/cli/commands/login.js +58 -12
- package/dist/cli/commands/ops.d.ts +47 -0
- package/dist/cli/commands/ops.js +301 -0
- package/dist/cli/commands/setup.d.ts +2 -0
- package/dist/cli/commands/setup.js +37 -12
- package/dist/cli/commands/skills.js +11 -7
- package/dist/cli/index.js +7 -0
- package/dist/core/agent-host.d.ts +65 -0
- package/dist/core/agent-host.js +193 -0
- package/dist/core/capabilities/agent-playbook.d.ts +3 -0
- package/dist/core/capabilities/agent-playbook.js +54 -2
- package/dist/core/capabilities/apps.d.ts +341 -0
- package/dist/core/capabilities/apps.js +353 -0
- package/dist/core/capabilities/doctor.d.ts +3 -0
- package/dist/core/capabilities/doctor.js +20 -15
- package/dist/core/capabilities/enable-plugin.d.ts +27 -0
- package/dist/core/capabilities/enable-plugin.js +75 -0
- package/dist/core/capabilities/fabricate-mesh.d.ts +2 -2
- package/dist/core/capabilities/game-task-plan.d.ts +12 -6
- package/dist/core/capabilities/game-task-plan.js +80 -5
- package/dist/core/capabilities/motion-generation.js +2 -2
- package/dist/core/capabilities/navigation/open.d.ts +6 -2
- package/dist/core/capabilities/navigation/open.js +3 -0
- package/dist/core/capabilities/publish-build.js +2 -0
- package/dist/core/capabilities/runtime-control.d.ts +4 -4
- package/dist/core/capabilities/scene-script-target.d.ts +17 -0
- package/dist/core/capabilities/scene-script-target.js +70 -0
- package/dist/core/capabilities/sfx-choices.d.ts +4 -0
- package/dist/core/capabilities/sfx-choices.js +13 -6
- package/dist/core/capabilities/tool-dispatch.d.ts +12 -3
- package/dist/core/capabilities/tool-dispatch.js +130 -46
- package/dist/core/capability-skew.js +4 -0
- package/dist/core/embeddings.d.ts +2 -0
- package/dist/core/embeddings.js +1 -1
- package/dist/core/error-codes.d.ts +62 -0
- package/dist/core/error-codes.js +97 -0
- package/dist/core/format.d.ts +2 -0
- package/dist/core/format.js +2 -1
- package/dist/core/hosted-mcp.d.ts +22 -0
- package/dist/core/hosted-mcp.js +56 -1
- package/dist/core/library-read.js +5 -0
- package/dist/core/library-search.js +2 -1
- package/dist/core/oauth.js +4 -0
- package/dist/core/ops/catalog.d.ts +41 -0
- package/dist/core/ops/catalog.js +145 -0
- package/dist/core/ops/cloud.d.ts +56 -0
- package/dist/core/ops/cloud.js +175 -0
- package/dist/core/ops/contract.d.ts +119 -0
- package/dist/core/ops/contract.js +142 -0
- package/dist/core/ops/engine-answer.d.ts +25 -0
- package/dist/core/ops/engine-answer.js +117 -0
- package/dist/core/ops/engine.d.ts +55 -0
- package/dist/core/ops/engine.js +649 -0
- package/dist/core/ops/save-files.d.ts +78 -0
- package/dist/core/ops/save-files.js +419 -0
- package/dist/core/ops/search.d.ts +9 -0
- package/dist/core/ops/search.js +55 -0
- package/dist/core/skills-registry.d.ts +16 -1
- package/dist/core/skills-registry.js +35 -2
- package/dist/core/telemetry.d.ts +32 -0
- package/dist/core/telemetry.js +38 -10
- package/dist/core/tool-profiles.d.ts +25 -0
- package/dist/core/tool-profiles.js +41 -0
- package/dist/installer/agent-config.d.ts +17 -4
- package/dist/installer/agent-config.js +22 -6
- package/dist/installer/agent-table.d.ts +3 -0
- package/dist/installer/agent-table.js +10 -7
- package/dist/installer/setup.d.ts +2 -0
- package/dist/installer/setup.js +9 -4
- package/dist/installer/version-check.d.ts +29 -9
- package/dist/installer/version-check.js +81 -28
- package/dist/mcp/command.js +7 -0
- package/dist/mcp/hosted-mount.d.ts +27 -2
- package/dist/mcp/hosted-mount.js +66 -24
- package/dist/mcp/legacy-toolset.d.ts +27 -0
- package/dist/mcp/legacy-toolset.js +43 -0
- package/dist/mcp/ops-surface.d.ts +59 -0
- package/dist/mcp/ops-surface.js +443 -0
- package/dist/mcp/server.d.ts +35 -11
- package/dist/mcp/server.js +236 -89
- package/dist/mcp/tool-results.d.ts +26 -0
- package/dist/mcp/tool-results.js +81 -0
- package/dist/mcp/tool-surface.d.ts +65 -0
- package/dist/mcp/tool-surface.js +317 -0
- package/dist/mcp/tools/app-tools.d.ts +2 -0
- package/dist/mcp/tools/app-tools.js +71 -0
- package/dist/mcp/tools/asset-tools.js +55 -53
- package/dist/mcp/tools/audit-tools.js +21 -21
- package/dist/mcp/tools/debug-tools.js +6 -6
- package/dist/mcp/tools/fabricate-tools.js +6 -6
- package/dist/mcp/tools/generate-tools.js +76 -70
- package/dist/mcp/tools/project-tools.d.ts +9 -4
- package/dist/mcp/tools/project-tools.js +16 -10
- package/dist/mcp/tools/scene-tools.js +12 -23
- package/dist/mcp/tools/script-tools.js +9 -5
- package/dist/mcp/tools/with-engine.d.ts +6 -0
- package/dist/mcp/tools/with-engine.js +19 -0
- package/gemini-extension.json +6 -12
- package/hooks/pre-commit-doctor.sh +5 -4
- package/hooks/session-start.sh +24 -28
- package/integrations/claude-desktop/README.md +1 -1
- package/integrations/copilot-jetbrains/README.md +1 -1
- package/integrations/junie/README.md +1 -1
- package/integrations/lm-studio/README.md +1 -1
- package/integrations/trae/README.md +1 -1
- package/integrations/visual-studio/README.md +1 -1
- package/library/references/mcp-tools-reference/mcp-tools-reference.md +85 -35
- package/library/references/mcp-tools-reference/resource.yaml +1 -1
- package/library/references/product-map/resource.yaml +2 -2
- package/library/skills/3d-lighting/SKILL.md +53 -28
- package/library/skills/3d-lighting/resource.yaml +1 -1
- package/library/skills/README.md +126 -116
- package/library/skills/adaptive-music/SKILL.md +19 -23
- package/library/skills/adaptive-music/resource.yaml +1 -1
- package/library/skills/agent-playtesting/SKILL.md +1 -1
- package/library/skills/agent-playtesting/resource.yaml +1 -1
- package/library/skills/ai-characters-in-games/SKILL.md +1 -1
- package/library/skills/ai-characters-in-games/resource.yaml +1 -1
- package/library/skills/ambient-bed/SKILL.md +22 -13
- package/library/skills/ambient-bed/resource.yaml +1 -1
- package/library/skills/animated-loop/SKILL.md +41 -32
- package/library/skills/animated-loop/resource.yaml +1 -1
- package/library/skills/animation-tree/SKILL.md +1 -1
- package/library/skills/animation-tree/resource.yaml +1 -1
- package/library/skills/art-direction/SKILL.md +3 -3
- package/library/skills/art-direction/resource.yaml +1 -1
- package/library/skills/asset-strategy/SKILL.md +21 -4
- package/library/skills/asset-strategy/resource.yaml +2 -1
- package/library/skills/audio-direction/SKILL.md +10 -10
- package/library/skills/audio-direction/resource.yaml +1 -1
- package/library/skills/auto-fire-targeting/SKILL.md +1 -1
- package/library/skills/auto-fire-targeting/resource.yaml +1 -1
- package/library/skills/bounded-engine-runs/SKILL.md +1 -1
- package/library/skills/bounded-engine-runs/resource.yaml +1 -1
- package/library/skills/brainstorm-game/SKILL.md +1 -1
- package/library/skills/brainstorm-game/resource.yaml +1 -1
- package/library/skills/brainstorming/SKILL.md +1 -1
- package/library/skills/brainstorming/resource.yaml +1 -1
- package/library/skills/browse-templates/SKILL.md +1 -1
- package/library/skills/browse-templates/resource.yaml +1 -1
- package/library/skills/camera-rigs/SKILL.md +2 -2
- package/library/skills/camera-rigs/resource.yaml +1 -1
- package/library/skills/celeste-momentum-platforming/resource.yaml +1 -0
- package/library/skills/character-animation-wiring/SKILL.md +4 -4
- package/library/skills/character-animation-wiring/resource.yaml +1 -1
- package/library/skills/character-model/SKILL.md +55 -47
- package/library/skills/character-model/resource.yaml +1 -1
- package/library/skills/character-movement/SKILL.md +3 -3
- package/library/skills/character-movement/resource.yaml +1 -1
- package/library/skills/character-portrait/SKILL.md +24 -19
- package/library/skills/character-portrait/resource.yaml +1 -1
- package/library/skills/cinematic-cutscene/SKILL.md +58 -46
- package/library/skills/cinematic-cutscene/resource.yaml +1 -1
- package/library/skills/combat-basics/SKILL.md +1 -1
- package/library/skills/combat-basics/resource.yaml +1 -1
- package/library/skills/compatibility-renderer-traps/SKILL.md +1 -1
- package/library/skills/compatibility-renderer-traps/resource.yaml +1 -1
- package/library/skills/concept-art/SKILL.md +16 -12
- package/library/skills/concept-art/resource.yaml +1 -1
- package/library/skills/concept-to-level/SKILL.md +239 -0
- package/library/skills/concept-to-level/references/technical-rules.md +150 -0
- package/library/skills/concept-to-level/resource.yaml +44 -0
- package/library/skills/create-asset-sheet/SKILL.md +19 -13
- package/library/skills/create-asset-sheet/resource.yaml +1 -1
- package/library/skills/debug/SKILL.md +2 -2
- package/library/skills/debug/resource.yaml +1 -1
- package/library/skills/debugging-game-feel/SKILL.md +1 -1
- package/library/skills/debugging-game-feel/resource.yaml +1 -1
- package/library/skills/design-level/SKILL.md +23 -35
- package/library/skills/design-level/resource.yaml +1 -1
- package/library/skills/design-mechanic/SKILL.md +1 -1
- package/library/skills/design-mechanic/resource.yaml +1 -1
- package/library/skills/design-npc/SKILL.md +22 -24
- package/library/skills/design-npc/resource.yaml +1 -1
- package/library/skills/diagnosing-perf-regressions/SKILL.md +1 -1
- package/library/skills/diagnosing-perf-regressions/resource.yaml +1 -1
- package/library/skills/driving-the-editor-ui/SKILL.md +1 -1
- package/library/skills/driving-the-editor-ui/resource.yaml +1 -1
- package/library/skills/environment-kit/SKILL.md +20 -16
- package/library/skills/environment-kit/resource.yaml +1 -1
- package/library/skills/export-and-ship/SKILL.md +6 -6
- package/library/skills/export-and-ship/resource.yaml +1 -1
- package/library/skills/fabricating-assets/SKILL.md +7 -7
- package/library/skills/fabricating-assets/resource.yaml +3 -3
- package/library/skills/facial-and-lipsync/SKILL.md +14 -15
- package/library/skills/facial-and-lipsync/resource.yaml +1 -1
- package/library/skills/fps-controller/SKILL.md +33 -41
- package/library/skills/fps-controller/resource.yaml +1 -1
- package/library/skills/game-feel/SKILL.md +8 -8
- package/library/skills/game-feel/resource.yaml +1 -1
- package/library/skills/gameskill/SKILL.md +4 -4
- package/library/skills/gameskill/resource.yaml +1 -1
- package/library/skills/gdscript-patterns/SKILL.md +1 -1
- package/library/skills/gdscript-patterns/resource.yaml +1 -1
- package/library/skills/generate-motion/SKILL.md +30 -21
- package/library/skills/generate-motion/resource.yaml +1 -1
- package/library/skills/godogen-visual-proof-game-generation/SKILL.md +1 -1
- package/library/skills/godogen-visual-proof-game-generation/resource.yaml +1 -0
- package/library/skills/grow-analytics/SKILL.md +3 -3
- package/library/skills/grow-analytics/resource.yaml +1 -1
- package/library/skills/headless-scripting/SKILL.md +1 -1
- package/library/skills/headless-scripting/resource.yaml +1 -1
- package/library/skills/in-game-purchases/SKILL.md +1 -1
- package/library/skills/in-game-purchases/resource.yaml +1 -1
- package/library/skills/instantiate-asset-pack/SKILL.md +2 -2
- package/library/skills/instantiate-asset-pack/resource.yaml +1 -1
- package/library/skills/lumera-single-image-scene-reconstruction/resource.yaml +1 -0
- package/library/skills/make-game/SKILL.md +4 -4
- package/library/skills/make-game/references/2d-platformer.md +1 -1
- package/library/skills/make-game/references/3d-fps.md +1 -1
- package/library/skills/make-game/references/3d-horror.md +1 -1
- package/library/skills/make-game/references/3d-third-person.md +2 -2
- package/library/skills/make-game/resource.yaml +1 -1
- package/library/skills/multiplayer/SKILL.md +1 -1
- package/library/skills/multiplayer/resource.yaml +1 -1
- package/library/skills/multiplayer-movement/SKILL.md +1 -1
- package/library/skills/multiplayer-movement/resource.yaml +1 -1
- package/library/skills/multiplayer-project/SKILL.md +1 -1
- package/library/skills/multiplayer-project/resource.yaml +1 -1
- package/library/skills/multiplayer-publish/SKILL.md +8 -7
- package/library/skills/multiplayer-publish/resource.yaml +3 -3
- package/library/skills/multiplayer-state/SKILL.md +1 -1
- package/library/skills/multiplayer-state/resource.yaml +1 -1
- package/library/skills/multiplayer-testing/SKILL.md +1 -1
- package/library/skills/multiplayer-testing/resource.yaml +1 -1
- package/library/skills/music-track/SKILL.md +22 -13
- package/library/skills/music-track/resource.yaml +1 -1
- package/library/skills/navigate-summer/SKILL.md +11 -9
- package/library/skills/navigate-summer/resource.yaml +1 -1
- package/library/skills/new-project/SKILL.md +1 -1
- package/library/skills/new-project/resource.yaml +1 -1
- package/library/skills/organic-model/SKILL.md +24 -18
- package/library/skills/organic-model/resource.yaml +1 -1
- package/library/skills/pixel-art/SKILL.md +27 -23
- package/library/skills/pixel-art/resource.yaml +1 -1
- package/library/skills/play/SKILL.md +1 -1
- package/library/skills/play/resource.yaml +1 -1
- package/library/skills/playtesting-a-feature/SKILL.md +1 -1
- package/library/skills/playtesting-a-feature/resource.yaml +1 -1
- package/library/skills/procedural-animation/SKILL.md +20 -16
- package/library/skills/procedural-animation/resource.yaml +1 -1
- package/library/skills/prop-model/SKILL.md +25 -19
- package/library/skills/prop-model/resource.yaml +1 -1
- package/library/skills/psx-retro-rendering/resource.yaml +1 -0
- package/library/skills/publish-your-game/SKILL.md +16 -6
- package/library/skills/publish-your-game/resource.yaml +3 -3
- package/library/skills/realtime-wet-surfaces/resource.yaml +1 -0
- package/library/skills/release-readiness/SKILL.md +1 -1
- package/library/skills/release-readiness/resource.yaml +1 -1
- package/library/skills/remote-deploy/SKILL.md +1 -1
- package/library/skills/remote-deploy/resource.yaml +1 -1
- package/library/skills/retarget/SKILL.md +23 -20
- package/library/skills/retarget/resource.yaml +1 -1
- package/library/skills/running-in-the-cloud/SKILL.md +1 -1
- package/library/skills/running-in-the-cloud/resource.yaml +1 -1
- package/library/skills/save-load/SKILL.md +1 -1
- package/library/skills/save-load/resource.yaml +1 -1
- package/library/skills/scene-composition/SKILL.md +1 -1
- package/library/skills/scene-composition/resource.yaml +1 -1
- package/library/skills/scene-hierarchy-design/SKILL.md +2 -2
- package/library/skills/scene-hierarchy-design/resource.yaml +1 -1
- package/library/skills/scene-scripting/SKILL.md +66 -636
- package/library/skills/scene-scripting/references/ctx-api.md +184 -0
- package/library/skills/scene-scripting/references/recipes-2d-ui.md +193 -0
- package/library/skills/scene-scripting/references/recipes-3d.md +280 -0
- package/library/skills/scene-scripting/resource.yaml +4 -4
- package/library/skills/scene-to-level/SKILL.md +2 -2
- package/library/skills/scene-to-level/resource.yaml +1 -1
- package/library/skills/skill-create/resource.yaml +1 -0
- package/library/skills/skill-improve/resource.yaml +1 -0
- package/library/skills/skill-test/SKILL.md +2 -2
- package/library/skills/skill-test/resource.yaml +1 -0
- package/library/skills/skintokens-auto-rigging/resource.yaml +1 -0
- package/library/skills/skybox-panorama/SKILL.md +27 -21
- package/library/skills/skybox-panorama/resource.yaml +1 -1
- package/library/skills/sound-effect/SKILL.md +31 -20
- package/library/skills/sound-effect/resource.yaml +1 -1
- package/library/skills/spatial-placement/SKILL.md +14 -9
- package/library/skills/spatial-placement/resource.yaml +1 -1
- package/library/skills/sprite-sheet/SKILL.md +32 -27
- package/library/skills/sprite-sheet/resource.yaml +1 -1
- package/library/skills/store-art/SKILL.md +3 -3
- package/library/skills/store-art/resource.yaml +2 -2
- package/library/skills/store-listing/SKILL.md +3 -3
- package/library/skills/store-listing/resource.yaml +2 -2
- package/library/skills/summer-analytics/SKILL.md +7 -5
- package/library/skills/summer-analytics/resource.yaml +2 -2
- package/library/skills/summer-apps/SKILL.md +168 -0
- package/library/skills/summer-apps/manifest.md +57 -0
- package/library/skills/summer-apps/minimal-app.md +183 -0
- package/library/skills/summer-apps/resource.yaml +36 -0
- package/library/skills/summer-apps/sdk-reference.md +135 -0
- package/library/skills/summer-apps-design/SKILL.md +197 -0
- package/library/skills/summer-apps-design/resource.yaml +23 -0
- package/library/skills/summer-assets/SKILL.md +56 -0
- package/library/skills/summer-assets/resource.yaml +34 -0
- package/library/skills/summer-store/SKILL.md +1 -1
- package/library/skills/text-to-motion/SKILL.md +30 -23
- package/library/skills/text-to-motion/prompts-and-controls.md +5 -5
- package/library/skills/text-to-motion/resource.yaml +1 -1
- package/library/skills/text-to-motion/rigging-for-text-motion.md +2 -2
- package/library/skills/tileable-texture/SKILL.md +19 -15
- package/library/skills/tileable-texture/resource.yaml +1 -1
- package/library/skills/trailer-shot/SKILL.md +28 -24
- package/library/skills/trailer-shot/resource.yaml +1 -1
- package/library/skills/tune-performance/SKILL.md +6 -6
- package/library/skills/tune-performance/resource.yaml +1 -1
- package/library/skills/ui-basics/SKILL.md +41 -36
- package/library/skills/ui-basics/resource.yaml +1 -1
- package/library/skills/ui-graphics/SKILL.md +47 -38
- package/library/skills/ui-graphics/resource.yaml +1 -1
- package/library/skills/use-widget-asset/SKILL.md +1 -1
- package/library/skills/use-widget-asset/resource.yaml +1 -1
- package/library/skills/using-summer/SKILL.md +7 -5
- package/library/skills/using-summer/resource.yaml +1 -1
- package/library/skills/vehicle-model/SKILL.md +65 -57
- package/library/skills/vehicle-model/resource.yaml +1 -1
- package/library/skills/verification-before-completion/SKILL.md +1 -1
- package/library/skills/verification-before-completion/resource.yaml +1 -1
- package/library/skills/verifying-scenes/SKILL.md +2 -2
- package/library/skills/verifying-scenes/resource.yaml +1 -1
- package/library/skills/vfx-dissolve/SKILL.md +2 -2
- package/library/skills/vfx-dissolve/resource.yaml +1 -1
- package/library/skills/vfx-fire/SKILL.md +15 -41
- package/library/skills/vfx-fire/resource.yaml +1 -1
- package/library/skills/vfx-hit-spark/SKILL.md +1 -1
- package/library/skills/vfx-hit-spark/resource.yaml +1 -1
- package/library/skills/vfx-lightning/SKILL.md +7 -16
- package/library/skills/vfx-lightning/resource.yaml +1 -1
- package/library/skills/vfx-magic-glow/SKILL.md +23 -32
- package/library/skills/vfx-magic-glow/resource.yaml +1 -1
- package/library/skills/vfx-muzzle-flash/SKILL.md +20 -35
- package/library/skills/vfx-muzzle-flash/resource.yaml +1 -1
- package/library/skills/vfx-smoke/SKILL.md +13 -31
- package/library/skills/vfx-smoke/resource.yaml +1 -1
- package/library/skills/vfx-water-ripple/SKILL.md +12 -31
- package/library/skills/vfx-water-ripple/resource.yaml +1 -1
- package/library/skills/voice-line/SKILL.md +71 -40
- package/library/skills/voice-line/resource.yaml +1 -1
- package/library/skills/web-and-touch-input/SKILL.md +1 -1
- package/library/skills/web-and-touch-input/resource.yaml +1 -1
- package/library/skills/web-compatibility-look/SKILL.md +1 -1
- package/library/skills/web-compatibility-look/resource.yaml +1 -1
- package/library/skills/world-building-3d/SKILL.md +1 -1
- package/library/skills/world-building-3d/resource.yaml +1 -1
- package/library/skills/writing-skills/resource.yaml +1 -0
- package/library/tools/add-node/GUIDE.md +14 -0
- package/library/tools/align-distribute-3d/GUIDE.md +7 -0
- package/library/tools/app-call/resource.yaml +59 -0
- package/library/tools/app-create/resource.yaml +67 -0
- package/library/tools/app-data/resource.yaml +74 -0
- package/library/tools/app-dock/resource.yaml +59 -0
- package/library/tools/app-events/resource.yaml +68 -0
- package/library/tools/app-get/resource.yaml +46 -0
- package/library/tools/app-guide/resource.yaml +55 -0
- package/library/tools/app-list/resource.yaml +48 -0
- package/library/tools/app-page/resource.yaml +74 -0
- package/library/tools/app-publish/resource.yaml +90 -0
- package/library/tools/app-report-gap/resource.yaml +58 -0
- package/library/tools/app-screenshot/resource.yaml +103 -0
- package/library/tools/app-tools/resource.yaml +46 -0
- package/library/tools/app-update/resource.yaml +68 -0
- package/library/tools/attach-to-surface/GUIDE.md +15 -0
- package/library/tools/batch/GUIDE.md +27 -0
- package/library/tools/camera-bookmark/GUIDE.md +12 -0
- package/library/tools/capture-gameplay/GUIDE.md +3 -0
- package/library/tools/capture-gameplay/resource.yaml +3 -3
- package/library/tools/check-job/resource.yaml +1 -1
- package/library/tools/clear-console/GUIDE.md +3 -0
- package/library/tools/connect-ports/GUIDE.md +9 -0
- package/library/tools/connect-signal/GUIDE.md +14 -0
- package/library/tools/create-debug-report/GUIDE.md +10 -0
- package/library/tools/create-scene/GUIDE.md +10 -0
- package/library/tools/debug-views/GUIDE.md +7 -0
- package/library/tools/enable-plugin/GUIDE.md +3 -0
- package/library/tools/enable-plugin/resource.yaml +53 -0
- package/library/tools/export-game/GUIDE.md +3 -0
- package/library/tools/export-game/resource.yaml +3 -3
- package/library/tools/export-templates/GUIDE.md +3 -0
- package/library/tools/fabricate-3d/GUIDE.md +19 -0
- package/library/tools/frame-nodes/GUIDE.md +9 -0
- package/library/tools/frame-shot/GUIDE.md +9 -0
- package/library/tools/game-control/GUIDE.md +9 -0
- package/library/tools/game-input/GUIDE.md +9 -0
- package/library/tools/game-probe/GUIDE.md +9 -0
- package/library/tools/generate-3d/resource.yaml +3 -3
- package/library/tools/generate-motion/resource.yaml +2 -2
- package/library/tools/get-console/GUIDE.md +9 -0
- package/library/tools/get-console/resource.yaml +5 -0
- package/library/tools/get-debugger-errors/GUIDE.md +7 -0
- package/library/tools/get-debugger-errors/resource.yaml +5 -0
- package/library/tools/get-debugger-warnings/GUIDE.md +7 -0
- package/library/tools/get-debugger-warnings/resource.yaml +5 -0
- package/library/tools/get-diagnostics/GUIDE.md +13 -0
- package/library/tools/get-project-context/GUIDE.md +25 -0
- package/library/tools/get-runtime-tree/GUIDE.md +7 -0
- package/library/tools/get-runtime-tree/resource.yaml +5 -0
- package/library/tools/get-scene-tree/GUIDE.md +11 -0
- package/library/tools/get-scene-tree/resource.yaml +5 -0
- package/library/tools/get-script-errors/GUIDE.md +5 -0
- package/library/tools/grep/GUIDE.md +11 -0
- package/library/tools/import-asset/GUIDE.md +8 -0
- package/library/tools/import-asset-by-id/GUIDE.md +12 -0
- package/library/tools/import-from-url/GUIDE.md +10 -0
- package/library/tools/import-from-url-batch/GUIDE.md +3 -0
- package/library/tools/import-hdri/GUIDE.md +16 -0
- package/library/tools/input-map-bind/GUIDE.md +11 -0
- package/library/tools/inspect-asset/GUIDE.md +14 -0
- package/library/tools/inspect-asset/resource.yaml +5 -0
- package/library/tools/inspect-node/GUIDE.md +11 -0
- package/library/tools/inspect-node/resource.yaml +5 -0
- package/library/tools/inspect-resource/GUIDE.md +7 -0
- package/library/tools/inspect-resource/resource.yaml +5 -0
- package/library/tools/inspect-runtime-node/GUIDE.md +7 -0
- package/library/tools/inspect-runtime-node/resource.yaml +5 -0
- package/library/tools/instantiate-scene/GUIDE.md +12 -0
- package/library/tools/is-running/GUIDE.md +3 -0
- package/library/tools/measure/GUIDE.md +8 -0
- package/library/tools/navigation-probe/GUIDE.md +9 -0
- package/library/tools/open/resource.yaml +2 -2
- package/library/tools/open-main-scene/GUIDE.md +6 -0
- package/library/tools/open-scene/GUIDE.md +8 -0
- package/library/tools/place-adjacent/GUIDE.md +7 -0
- package/library/tools/play/GUIDE.md +13 -0
- package/library/tools/project-setting/GUIDE.md +9 -0
- package/library/tools/publish-build/resource.yaml +6 -6
- package/library/tools/raycast/GUIDE.md +7 -0
- package/library/tools/read-file/GUIDE.md +10 -0
- package/library/tools/read-library/resource.yaml +5 -0
- package/library/tools/recent-events/GUIDE.md +7 -0
- package/library/tools/remove-node/GUIDE.md +3 -0
- package/library/tools/repeat-along/GUIDE.md +5 -0
- package/library/tools/replace-node/GUIDE.md +9 -0
- package/library/tools/replace-text/GUIDE.md +5 -0
- package/library/tools/run-editor-script/GUIDE.md +16 -0
- package/library/tools/run-script/GUIDE.md +30 -0
- package/library/tools/run-script/resource.yaml +6 -3
- package/library/tools/runtime-animate/GUIDE.md +7 -0
- package/library/tools/runtime-call/GUIDE.md +7 -0
- package/library/tools/runtime-set/GUIDE.md +9 -0
- package/library/tools/runtime-spawn/GUIDE.md +9 -0
- package/library/tools/save-scene/GUIDE.md +3 -0
- package/library/tools/scene-audit/GUIDE.md +29 -0
- package/library/tools/screenshot/GUIDE.md +17 -0
- package/library/tools/select-node/GUIDE.md +3 -0
- package/library/tools/set-prop/GUIDE.md +23 -0
- package/library/tools/set-resource-property/GUIDE.md +8 -0
- package/library/tools/shot-sheet/GUIDE.md +7 -0
- package/library/tools/snap-to-surface/GUIDE.md +17 -0
- package/library/tools/snapshot-diff/GUIDE.md +7 -0
- package/library/tools/starcast/GUIDE.md +12 -0
- package/library/tools/stop/GUIDE.md +3 -0
- package/library/tools/test-placement/GUIDE.md +7 -0
- package/library/tools/ui-actions/GUIDE.md +12 -0
- package/library/tools/ui-activate/GUIDE.md +11 -0
- package/library/tools/ui-screenshot/GUIDE.md +9 -0
- package/library/tools/ui-tree/GUIDE.md +10 -0
- package/library/tools/wait-for-event/GUIDE.md +11 -0
- package/library/tools/world-snapshot/GUIDE.md +9 -0
- package/library/tools/write-file/GUIDE.md +5 -0
- package/library/tools/zoom/GUIDE.md +5 -0
- package/package.json +6 -4
- package/registry/generated/aliases.json +15 -0
- package/registry/generated/counts.json +3 -3
- package/registry/generated/gemini-extension.json +6 -12
- package/registry/generated/index.json +1155 -408
- package/registry/generated/marketplace.claude.json +2 -13
- package/registry/generated/plugin.claude.json +25 -22
- package/registry/generated/plugin.codex.json +8 -14
- package/registry/generated/plugin.cursor.json +7 -13
- package/registry/generated/plugin.factory.json +7 -13
- package/registry/generated/server.json +34 -0
- package/registry/generated/skills-index.md +126 -116
- package/registry/generated/skills-registry.json +178 -113
- package/registry/operations/fixtures/invalid-deprecated-without-replacement.json +60 -0
- package/registry/operations/fixtures/invalid-name.json +60 -0
- package/registry/operations/fixtures/invalid-publish-without-owner.json +82 -0
- package/registry/operations/fixtures/invalid-spend-without-estimate.json +42 -0
- package/registry/operations/fixtures/invalid-unknown-field.json +61 -0
- package/registry/operations/fixtures/valid-player-facing.json +82 -0
- package/registry/operations/fixtures/valid-read.json +60 -0
- package/registry/operations/fixtures/valid-spend.json +43 -0
- package/registry/operations/legacy-names.json +1206 -0
- package/registry/schemas/allowed-hosts.json +4 -2
- package/registry/schemas/operation.schema.json +318 -0
- package/registry/schemas/skill.schema.json +4 -0
- package/CLAUDE.md +0 -7
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: voice-line
|
|
3
|
-
description: "Generate
|
|
3
|
+
description: "Generate voice lines (NPC barks, narrator, dialogue) with a character-to-voice choice and multi-line support."
|
|
4
4
|
license: MIT
|
|
5
5
|
compatibility: [Cursor, Claude Code, Windsurf, Codex]
|
|
6
6
|
category: audio
|
|
7
7
|
user-invocable: true
|
|
8
|
-
allowed-tools: Read Grep Glob Write Edit
|
|
8
|
+
allowed-tools: Read Grep Glob Write Edit summer_assets_generate_audio summer_assets_search summer_import_from_url summer_add_node summer_set_prop summer_inspect_node summer_call
|
|
9
9
|
paths: [".summer/**", "audio/voice/**", "scripts/**", "**/*.tscn"]
|
|
10
10
|
---
|
|
11
11
|
|
|
@@ -13,7 +13,7 @@ paths: [".summer/**", "audio/voice/**", "scripts/**", "**/*.tscn"]
|
|
|
13
13
|
|
|
14
14
|
## Overview
|
|
15
15
|
|
|
16
|
-
The hardest part of TTS isn't the line — it's picking the right voice
|
|
16
|
+
The hardest part of TTS isn't the line — it's picking the right voice; pick wrong and a tough warlord NPC sounds like a podcast host. On the ElevenLabs models **only Summer's game cast may speak**: the `voiceId` of `assets.generate_audio` must be one of the cast voices below, and any other id is refused (`voice_not_allowed`). The fal speech models (`minimax-speech-2.8-hd`, `gemini-3.8-flash-tts`, ...) speak with their own prebuilt voices instead. So the pick comes from the cast (or the project's cast bible), and this skill's job is to make that pick deliberately and then lock it.
|
|
17
17
|
|
|
18
18
|
Then it generates one line (or a multi-turn dialogue) with the right stability / style / similarity / speed for the delivery — flat for narration, expressive for a bark, fast for an excited shout.
|
|
19
19
|
|
|
@@ -48,17 +48,39 @@ If a character bible exists, the voice should match the character's age / gender
|
|
|
48
48
|
|
|
49
49
|
Check the cast bible first (step 1). If the character already has a locked id, use it and skip to step 5.
|
|
50
50
|
|
|
51
|
-
If not,
|
|
51
|
+
If not, pick from Summer's game cast with the user. There is no preview-URL endpoint on this surface — do not claim you auditioned anything; the person listens to the generated line. The cast (name, role, id):
|
|
52
52
|
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
53
|
+
| Voice | Role | Id |
|
|
54
|
+
|---|---|---|
|
|
55
|
+
| George | Storyteller, warm | `JBFqnCBsd6RMkjVDRZzb` |
|
|
56
|
+
| Charlie | Hero, deep, energetic | `IKne3meq5aSn9XLyUdCD` |
|
|
57
|
+
| Jessica | Heroine, playful | `cgSgspJ2msm6clMCkdW9` |
|
|
58
|
+
| Harry | Warrior, fierce | `SOYHLrjzK2X1ezoPC6cr` |
|
|
59
|
+
| Callum | Trickster, husky | `N2lVS1w4EtoT3dr4eOWO` |
|
|
60
|
+
| Brian | Narrator, deep | `nPczCjzI2devNBz1zQrb` |
|
|
61
|
+
| Bill | Elder, wise | `pqHfZKP75CvOlQylNhV4` |
|
|
62
|
+
| Sarah | Mentor, reassuring | `EXAVITQu4vr4xnSDxMaL` |
|
|
63
|
+
| Adam | Villain, firm | `pNInz6obpgDQGcFmaJgB` |
|
|
64
|
+
| Roger | Captain, laid back | `CwhRBWXzGAHq8TQ4Fs17` |
|
|
65
|
+
| Lily | Actress, velvety | `pFZP5JQG7iQjIQuC4Bku` |
|
|
66
|
+
| Liam | Streamer, energetic | `TX3LPaxmHKxFdv7VOQHJ` |
|
|
67
|
+
| Matilda | Guide, knowledgeable | `XrExE9yKIg1WjnnlVkGX` |
|
|
68
|
+
| Daniel | Broadcaster, steady | `onwK4e9ZLuTAKqWW03F9` |
|
|
69
|
+
| River | Courier, relaxed | `SAz9YHcvj6GT2YYXdXww` |
|
|
70
|
+
| Bella | Healer, bright | `hpp4J3VqNfWAUOO0d1Us` |
|
|
71
|
+
| Laura | Sidekick, quirky | `FGY2WhTYpPnrIDTdsKH5` |
|
|
72
|
+
| Alice | Oracle, clear | `Xb7hH8MSUJpSbSDYk0k2` |
|
|
73
|
+
| Eric | Merchant, smooth | `cjVigY5qzO86Huf0OWal` |
|
|
74
|
+
| Chris | Companion, charming | `iP95p4xoKVk53GoZ742B` |
|
|
75
|
+
| Will | Adventurer, optimistic | `bIHbv24MWmeRgasZH58o` |
|
|
76
|
+
|
|
77
|
+
Ask:
|
|
58
78
|
|
|
59
|
-
|
|
79
|
+
> For `<character>` I suggest `<voice>` (<role>). OK, or another cast voice?
|
|
60
80
|
|
|
61
|
-
|
|
81
|
+
Omitting `voiceId` entirely is valid — `assets.generate_audio` falls back to the default voice (George, `JBFqnCBsd6RMkjVDRZzb`). That is fine for a throwaway read-through, never for a shipped cast.
|
|
82
|
+
|
|
83
|
+
Voice is the highest-stakes audio decision in the project. Do not guess ids — an id outside the cast is refused, not a different-sounding voice.
|
|
62
84
|
|
|
63
85
|
### 3. Character-to-voice decision tree (when the user wants a recommendation)
|
|
64
86
|
|
|
@@ -81,7 +103,7 @@ If the user says "you pick", lean on this tree:
|
|
|
81
103
|
|
|
82
104
|
After the pick:
|
|
83
105
|
|
|
84
|
-
> Locked voice: `
|
|
106
|
+
> Locked voice: `Roger` (id `CwhRBWXzGAHq8TQ4Fs17`). I'll use this for all `<character>` lines unless you say otherwise.
|
|
85
107
|
|
|
86
108
|
Ask before writing:
|
|
87
109
|
|
|
@@ -104,8 +126,8 @@ providers:
|
|
|
104
126
|
|
|
105
127
|
| Character | Voice name | Voice id | Notes |
|
|
106
128
|
|---|---|---|---|
|
|
107
|
-
| Captain Hodge |
|
|
108
|
-
| Bram the Smith |
|
|
129
|
+
| Captain Hodge | Roger | CwhRBWXzGAHq8TQ4Fs17 | Calm, weathered, low-mid |
|
|
130
|
+
| Bram the Smith | Harry | SOYHLrjzK2X1ezoPC6cr | Gruff, mid energy |
|
|
109
131
|
```
|
|
110
132
|
|
|
111
133
|
This is the cast bible. Every future voice line uses these ids — consistency is the point.
|
|
@@ -114,7 +136,7 @@ If legacy `.summer/voice-cast.md` already exists, read it first and either keep
|
|
|
114
136
|
|
|
115
137
|
### 5. Tune stability / similarity / style / speed for delivery
|
|
116
138
|
|
|
117
|
-
These
|
|
139
|
+
These go in the `voiceSettings` object of `assets.generate_audio`, in camelCase — `stability`, `similarityBoost`, `style`, `speed`, `useSpeakerBoost`. A snake_case key such as `similarity_boost` is not one of its fields and does nothing.
|
|
118
140
|
|
|
119
141
|
| Param | Range | Effect |
|
|
120
142
|
|---|---|---|
|
|
@@ -163,18 +185,18 @@ Example lines:
|
|
|
163
185
|
### 7. Confirm and call
|
|
164
186
|
|
|
165
187
|
```
|
|
166
|
-
|
|
167
|
-
capability
|
|
168
|
-
text
|
|
169
|
-
voiceId
|
|
170
|
-
modelId
|
|
171
|
-
|
|
172
|
-
)
|
|
188
|
+
assets.generate_audio({
|
|
189
|
+
capability: "text_to_speech",
|
|
190
|
+
text: "Hold the line. They're coming through the south gate. Ready arrows.",
|
|
191
|
+
voiceId: "CwhRBWXzGAHq8TQ4Fs17",
|
|
192
|
+
modelId: "eleven_multilingual_v2",
|
|
193
|
+
voiceSettings: { stability: 0.6, similarityBoost: 0.75, style: 0.2, speed: 1.0 }
|
|
194
|
+
})
|
|
173
195
|
```
|
|
174
196
|
|
|
175
|
-
`modelId` defaults to `eleven_multilingual_v2`. For very short / latency-sensitive in-game barks, `
|
|
197
|
+
`modelId` defaults to `eleven_multilingual_v2`. For very short / latency-sensitive in-game barks, `eleven_flash_v2_5` is faster; for highest fidelity, `eleven_multilingual_v2` is the default. A line spends the person's credits; `dryRun: true` returns its `estimate` first.
|
|
176
198
|
|
|
177
|
-
There is no `outputPath` — the
|
|
199
|
+
There is no `outputPath` — the answer is a hosted asset, `asset` (`assetId`, `fileUrl`, `durationSeconds`; MP3, `audio/mpeg`). Land it in the project explicitly:
|
|
178
200
|
|
|
179
201
|
```
|
|
180
202
|
summer_import_from_url(url="<fileUrl>", path="res://audio/voice/hodge_hold_the_line.mp3")
|
|
@@ -182,33 +204,38 @@ summer_import_from_url(url="<fileUrl>", path="res://audio/voice/hodge_hold_the_l
|
|
|
182
204
|
|
|
183
205
|
### 8. Multi-line dialogue (two or more speakers)
|
|
184
206
|
|
|
185
|
-
Use `
|
|
207
|
+
Use `assets.generate_audio` with `capability: "text_to_dialogue"`:
|
|
186
208
|
|
|
187
209
|
There is no `speakers` roster and no `script` array. The whole conversation is one flat `inputs` array of `{ text, voiceId }` objects, in turn order — the voice id is repeated on every line:
|
|
188
210
|
|
|
189
211
|
```
|
|
190
|
-
|
|
191
|
-
capability
|
|
192
|
-
inputs
|
|
193
|
-
{ text: "They're at the gate.", voiceId: "
|
|
194
|
-
{ text: "Aye. Let 'em come.", voiceId: "
|
|
195
|
-
{ text: "Steady. On my mark.", voiceId: "
|
|
212
|
+
assets.generate_audio({
|
|
213
|
+
capability: "text_to_dialogue",
|
|
214
|
+
inputs: [
|
|
215
|
+
{ text: "They're at the gate.", voiceId: "CwhRBWXzGAHq8TQ4Fs17" },
|
|
216
|
+
{ text: "Aye. Let 'em come.", voiceId: "SOYHLrjzK2X1ezoPC6cr" },
|
|
217
|
+
{ text: "Steady. On my mark.", voiceId: "CwhRBWXzGAHq8TQ4Fs17" }
|
|
196
218
|
]
|
|
197
|
-
)
|
|
219
|
+
})
|
|
198
220
|
```
|
|
199
221
|
|
|
200
|
-
`inputs` is required for this capability; omitting it is
|
|
222
|
+
`inputs` is required for this capability; omitting it is refused as invalid input (`inputs_required`). `modelId` defaults to `eleven_v3` here, not `eleven_multilingual_v2`. The result is a single MP3 with both voices and dialogue-aware pacing the model handles internally — import it with `summer_import_from_url` like any other clip. For very long scripts, split into chunks of ~6 turns and concatenate.
|
|
201
223
|
|
|
202
224
|
### 9. Wire the line as `AudioStreamPlayer` on the Voice bus
|
|
203
225
|
|
|
204
|
-
|
|
226
|
+
One script adds the player with its settings; `scenePath` is the exact scene to change:
|
|
205
227
|
|
|
206
228
|
```
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
229
|
+
summer_run_script(scenePath="res://main.tscn", source="""
|
|
230
|
+
func run(ctx):
|
|
231
|
+
ctx.add_node("AudioStreamPlayer", "VoiceLine", ctx.find("NPC"), {
|
|
232
|
+
"stream": load("res://audio/voice/hodge_hold_the_line.mp3"),
|
|
233
|
+
"bus": "Voice",
|
|
234
|
+
"volume_db": 0.0,
|
|
235
|
+
"autoplay": false,
|
|
236
|
+
})
|
|
237
|
+
ctx.save_scene()
|
|
238
|
+
""")
|
|
212
239
|
```
|
|
213
240
|
|
|
214
241
|
For positional NPCs, `AudioStreamPlayer3D` with `max_distance=15.0` so distant NPCs aren't audible.
|
|
@@ -238,7 +265,7 @@ Narrator intimate: warmer mid pitch, lower stability for breath
|
|
|
238
265
|
|
|
239
266
|
## Anti-patterns
|
|
240
267
|
|
|
241
|
-
- **Inventing
|
|
268
|
+
- **Inventing voices.** On the ElevenLabs models only the cast in step 2 may speak, and there are no preview URLs on this surface. Pick from the cast with the user.
|
|
242
269
|
- **Guessing a voice id.** A wrong id is a provider error, not a different voice.
|
|
243
270
|
- **Reusing a voice id across two characters.** Players notice instantly. Lock the cast.
|
|
244
271
|
- **Changing a locked voice without approval.** A cast voice is project memory, not a throwaway generation option.
|
|
@@ -257,6 +284,10 @@ Narrator intimate: warmer mid pitch, lower stability for breath
|
|
|
257
284
|
- **User wants the line shorter on regen.** Edit the text first; don't try to compress with `speed` past 1.15 (artifacts).
|
|
258
285
|
- **NPC bark variants.** Generate 3–5 variants of the same intent (`"They're at the gate!"`, `"Enemy approaching!"`, `"Look out!"`) and pick at random in code so the bark doesn't repeat.
|
|
259
286
|
|
|
287
|
+
## Without Summer Engine
|
|
288
|
+
|
|
289
|
+
In a session without Summer Engine tools (the assets profile; the `summer-assets` skill has the whole loop), do steps 1-8 and skip step 9 (`AudioStreamPlayer`). Step 10 still applies when the project has a `.summer/` folder; otherwise give the person the voice id with the files. Save the file where the person asked with `out` (the `summer-assets` skill says how), and tell them the path and format.
|
|
290
|
+
|
|
260
291
|
## Fallback (no MCP)
|
|
261
292
|
|
|
262
293
|
Print the call (text, voice id, params, target path). User runs via the Summer dashboard, then `summer_import_from_url` the result.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
id: skill/voice-line
|
|
2
2
|
kind: skill
|
|
3
3
|
version: 1.0.2
|
|
4
|
-
summary: Generate
|
|
4
|
+
summary: "Generate voice lines (NPC barks, narrator, dialogue) with a character-to-voice choice and multi-line support."
|
|
5
5
|
use_when:
|
|
6
6
|
- '"the NPC needs a greeting / a bark / a narrator intro read aloud"'
|
|
7
7
|
- giving a character a voice that fits their personality (gruff, cheerful, robotic)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: web-and-touch-input
|
|
3
|
-
description: "
|
|
3
|
+
description: "Browser and phone input: the first-click rule for sound and mouse capture, focus, touch buttons, a stick."
|
|
4
4
|
license: MIT
|
|
5
5
|
compatibility: [Cursor, Claude Code, Codex, Windsurf, Gemini, OpenCode]
|
|
6
6
|
category: scene-and-project
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
id: skill/web-and-touch-input
|
|
2
2
|
kind: skill
|
|
3
3
|
version: 1.0.0
|
|
4
|
-
summary: "
|
|
4
|
+
summary: "Browser and phone input: the first-click rule for sound and mouse capture, focus, touch buttons, a stick."
|
|
5
5
|
use_when:
|
|
6
6
|
- the game plays in the browser and sound, mouse capture or keys do not work until something is clicked
|
|
7
7
|
- the game should be playable on a phone or tablet with touch controls
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: web-compatibility-look
|
|
3
|
-
description: "Make a
|
|
3
|
+
description: "Make a browser game look high-end in the Compatibility renderer (WebGL 2): what works, recipes, speed."
|
|
4
4
|
license: MIT
|
|
5
5
|
compatibility: [Cursor, Claude Code, Codex, Windsurf, Gemini, OpenCode]
|
|
6
6
|
category: rendering-and-lighting
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
id: skill/web-compatibility-look
|
|
2
2
|
kind: skill
|
|
3
3
|
version: 1.0.0
|
|
4
|
-
summary: "Make a
|
|
4
|
+
summary: "Make a browser game look high-end in the Compatibility renderer (WebGL 2): what works, recipes, speed."
|
|
5
5
|
use_when:
|
|
6
6
|
- the game plays in the browser or is exported for the web and must look finished
|
|
7
7
|
- the look is flat, grey or default in the web preview, or a Forward+ feature does nothing there
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: world-building-3d
|
|
3
|
-
description: "Compose, ground
|
|
3
|
+
description: "Compose, ground and space 3D scenes with Summer's four spatial tools, one geometric decision at a time."
|
|
4
4
|
license: MIT
|
|
5
5
|
compatibility: [Cursor, Claude Code, Windsurf, Codex]
|
|
6
6
|
category: scene-and-project
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
id: skill/world-building-3d
|
|
2
2
|
kind: skill
|
|
3
3
|
version: 1.1.1
|
|
4
|
-
summary: Compose, ground
|
|
4
|
+
summary: "Compose, ground and space 3D scenes with Summer's four spatial tools, one geometric decision at a time."
|
|
5
5
|
use_when:
|
|
6
6
|
- placing or grounding props on floors, shelves, ramps, or tables without hand-tuning transforms
|
|
7
7
|
- aligning or evenly spacing a group of 3D objects along one world axis
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# summer_add_node
|
|
2
|
+
|
|
3
|
+
Add a new node to the scene tree.
|
|
4
|
+
|
|
5
|
+
Pass the exact res:// scenePath to mutate. The scene does not need to be the
|
|
6
|
+
active editor tab.
|
|
7
|
+
|
|
8
|
+
Common node types:
|
|
9
|
+
- 3D: Node3D, MeshInstance3D, CharacterBody3D, RigidBody3D, StaticBody3D, Camera3D, DirectionalLight3D, OmniLight3D, SpotLight3D, WorldEnvironment, CollisionShape3D, Area3D
|
|
10
|
+
- 2D: Node2D, Sprite2D, CharacterBody2D, RigidBody2D, StaticBody2D, Camera2D, CollisionShape2D, Area2D, TileMapLayer
|
|
11
|
+
- UI: Control, Label, Button, TextEdit, Panel, VBoxContainer, HBoxContainer, MarginContainer
|
|
12
|
+
- Audio: AudioStreamPlayer, AudioStreamPlayer3D
|
|
13
|
+
|
|
14
|
+
The parent path uses "./" prefix for relative paths from scene root. E.g., "./World" means the "World" child of the root node.
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
# summer_align_distribute_3d
|
|
2
|
+
|
|
3
|
+
Align or equal-space an explicit ordered list of 3D subjects along one world-space axis, then save the exact target scene.
|
|
4
|
+
|
|
5
|
+
Every anchor and extent comes from visible descendant GeometryInstance3D world AABBs (evidence: visual_aabb). The tool never uses editor selection and fails instead of fabricating bounds. It preserves each subject's authored basis and scale, translates only along the normalized axis, and records all changed transforms in one undoable editor operation.
|
|
6
|
+
|
|
7
|
+
Alignment modes use the first ordered subject's minimum, center, or maximum projected anchor. Distribution modes keep the first and last subjects fixed and honor caller order. distribute_gaps accounts for each subject's projected half-extent and fails if the endpoint span cannot fit non-overlapping equal gaps. The compact result returns ordered before/after origins, resolved spacing, and numeric residuals under 5 KB. On an engine build that predates AlignDistribute3D the result is a structured engine_lacks_op failure naming the fallback.
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
id: tool/app-call
|
|
2
|
+
kind: tool
|
|
3
|
+
version: 1.0.0
|
|
4
|
+
summary: Run one of a Summer App's agent tools inside the person's open app.
|
|
5
|
+
use_when:
|
|
6
|
+
- '"nerf the bow using the balance formula in our app"'
|
|
7
|
+
- using logic that lives in an app (a balance formula, an export) while the app is open
|
|
8
|
+
do_not_use_when:
|
|
9
|
+
- "plain reads and edits of app data: apps.read_data, apps.write_data"
|
|
10
|
+
facets:
|
|
11
|
+
lifecycle:
|
|
12
|
+
- build
|
|
13
|
+
domains:
|
|
14
|
+
- tools
|
|
15
|
+
- ui
|
|
16
|
+
compatibility:
|
|
17
|
+
engine: ">=4.6"
|
|
18
|
+
related:
|
|
19
|
+
skills:
|
|
20
|
+
- skill/summer-apps
|
|
21
|
+
source: official
|
|
22
|
+
license: MIT
|
|
23
|
+
status: preview
|
|
24
|
+
aliases:
|
|
25
|
+
- summer_app_call
|
|
26
|
+
implementation:
|
|
27
|
+
module: src/mcp/tools/app-tools.ts
|
|
28
|
+
export: registerAppTools
|
|
29
|
+
surfaces:
|
|
30
|
+
mcp:
|
|
31
|
+
tool_name: summer_app_call
|
|
32
|
+
remote: true
|
|
33
|
+
input_schema:
|
|
34
|
+
type: object
|
|
35
|
+
properties:
|
|
36
|
+
appId:
|
|
37
|
+
type: string
|
|
38
|
+
format: uuid
|
|
39
|
+
description: The app id from summer_app_create or summer_app_list
|
|
40
|
+
tool:
|
|
41
|
+
type: string
|
|
42
|
+
minLength: 1
|
|
43
|
+
maxLength: 64
|
|
44
|
+
description: The agent tool name from summer_app_tools
|
|
45
|
+
input:
|
|
46
|
+
type: object
|
|
47
|
+
additionalProperties: {}
|
|
48
|
+
default: {}
|
|
49
|
+
description: Input matching the tool's input schema
|
|
50
|
+
required:
|
|
51
|
+
- appId
|
|
52
|
+
- tool
|
|
53
|
+
additionalProperties: false
|
|
54
|
+
authority:
|
|
55
|
+
filesystem: false
|
|
56
|
+
editor_mutation: false
|
|
57
|
+
network: true
|
|
58
|
+
credentials: false
|
|
59
|
+
publish: false
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
id: tool/app-create
|
|
2
|
+
kind: tool
|
|
3
|
+
version: 1.0.0
|
|
4
|
+
summary: Create a new scratch Summer App (a tool for the person's team inside Summer Studio) and open it in their Studio tab.
|
|
5
|
+
use_when:
|
|
6
|
+
- '"build me a tool for…" / "make an app that…"'
|
|
7
|
+
- the person needs a UI to decide or edit something they will come back to
|
|
8
|
+
do_not_use_when:
|
|
9
|
+
- "a one-off answer: reply in chat"
|
|
10
|
+
facets:
|
|
11
|
+
lifecycle:
|
|
12
|
+
- build
|
|
13
|
+
domains:
|
|
14
|
+
- tools
|
|
15
|
+
- ui
|
|
16
|
+
compatibility:
|
|
17
|
+
engine: ">=4.6"
|
|
18
|
+
related:
|
|
19
|
+
skills:
|
|
20
|
+
- skill/summer-apps
|
|
21
|
+
source: official
|
|
22
|
+
license: MIT
|
|
23
|
+
status: preview
|
|
24
|
+
aliases:
|
|
25
|
+
- summer_app_create
|
|
26
|
+
implementation:
|
|
27
|
+
module: src/mcp/tools/app-tools.ts
|
|
28
|
+
export: registerAppTools
|
|
29
|
+
surfaces:
|
|
30
|
+
mcp:
|
|
31
|
+
tool_name: summer_app_create
|
|
32
|
+
remote: true
|
|
33
|
+
input_schema:
|
|
34
|
+
type: object
|
|
35
|
+
properties:
|
|
36
|
+
name:
|
|
37
|
+
type: string
|
|
38
|
+
minLength: 1
|
|
39
|
+
maxLength: 80
|
|
40
|
+
purpose:
|
|
41
|
+
type: string
|
|
42
|
+
maxLength: 280
|
|
43
|
+
description: "One line: what the tool does and where its data goes"
|
|
44
|
+
format:
|
|
45
|
+
type: string
|
|
46
|
+
enum:
|
|
47
|
+
- code
|
|
48
|
+
- layout
|
|
49
|
+
default: code
|
|
50
|
+
description: "code: index.html + JS/CSS (default). layout: a JSON layout of kit nodes, for quick decision UIs"
|
|
51
|
+
workspaceId:
|
|
52
|
+
type: string
|
|
53
|
+
format: uuid
|
|
54
|
+
description: "A workspace id. Default: the person's team (the one their Studio tab is on, else their latest team, else personal); the result's workspace says which"
|
|
55
|
+
folder:
|
|
56
|
+
type: string
|
|
57
|
+
minLength: 1
|
|
58
|
+
maxLength: 80
|
|
59
|
+
required:
|
|
60
|
+
- name
|
|
61
|
+
additionalProperties: false
|
|
62
|
+
authority:
|
|
63
|
+
filesystem: false
|
|
64
|
+
editor_mutation: false
|
|
65
|
+
network: true
|
|
66
|
+
credentials: false
|
|
67
|
+
publish: false
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
id: tool/app-data
|
|
2
|
+
kind: tool
|
|
3
|
+
version: 1.0.0
|
|
4
|
+
summary: Read or write a Summer App's shared data collections; works with no app open and the team sees writes live.
|
|
5
|
+
use_when:
|
|
6
|
+
- '"nerf the bow in our balance sheet"'
|
|
7
|
+
- seeding an app with data
|
|
8
|
+
- reading what the team entered in an app
|
|
9
|
+
facets:
|
|
10
|
+
lifecycle:
|
|
11
|
+
- build
|
|
12
|
+
domains:
|
|
13
|
+
- tools
|
|
14
|
+
- ui
|
|
15
|
+
compatibility:
|
|
16
|
+
engine: ">=4.6"
|
|
17
|
+
related:
|
|
18
|
+
skills:
|
|
19
|
+
- skill/summer-apps
|
|
20
|
+
source: official
|
|
21
|
+
license: MIT
|
|
22
|
+
status: preview
|
|
23
|
+
aliases:
|
|
24
|
+
- summer_app_data
|
|
25
|
+
implementation:
|
|
26
|
+
module: src/mcp/tools/app-tools.ts
|
|
27
|
+
export: registerAppTools
|
|
28
|
+
surfaces:
|
|
29
|
+
mcp:
|
|
30
|
+
tool_name: summer_app_data
|
|
31
|
+
remote: true
|
|
32
|
+
input_schema:
|
|
33
|
+
type: object
|
|
34
|
+
properties:
|
|
35
|
+
appId:
|
|
36
|
+
type: string
|
|
37
|
+
format: uuid
|
|
38
|
+
description: The app id from summer_app_create or summer_app_list
|
|
39
|
+
collection:
|
|
40
|
+
type: string
|
|
41
|
+
maxLength: 48
|
|
42
|
+
description: "Read: one collection. Default: all"
|
|
43
|
+
after:
|
|
44
|
+
type: string
|
|
45
|
+
maxLength: 200
|
|
46
|
+
description: "Read: the next cursor from the previous page"
|
|
47
|
+
limit:
|
|
48
|
+
type: integer
|
|
49
|
+
minimum: 1
|
|
50
|
+
maximum: 500
|
|
51
|
+
default: 200
|
|
52
|
+
ops:
|
|
53
|
+
type: array
|
|
54
|
+
items:
|
|
55
|
+
type: object
|
|
56
|
+
additionalProperties: {}
|
|
57
|
+
minItems: 1
|
|
58
|
+
maxItems: 100
|
|
59
|
+
description: "Write: [{op: put, collection, recordId, data}, {op: patch, collection, recordId, patch}, {op: remove, collection, recordId}]; ifRevision on an op applies it only at that record revision (0: must not exist)"
|
|
60
|
+
as:
|
|
61
|
+
type: string
|
|
62
|
+
enum:
|
|
63
|
+
- agent
|
|
64
|
+
- seed
|
|
65
|
+
description: "Write: seed for starter data that belongs to the team (no author). Default: agent"
|
|
66
|
+
required:
|
|
67
|
+
- appId
|
|
68
|
+
additionalProperties: false
|
|
69
|
+
authority:
|
|
70
|
+
filesystem: false
|
|
71
|
+
editor_mutation: false
|
|
72
|
+
network: true
|
|
73
|
+
credentials: false
|
|
74
|
+
publish: false
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
id: tool/app-dock
|
|
2
|
+
kind: tool
|
|
3
|
+
version: 1.0.0
|
|
4
|
+
summary: Dock a Summer App as a panel in the running Summer Engine editor, close it, or list docked apps.
|
|
5
|
+
use_when:
|
|
6
|
+
- '"put the quest editor next to my scene"'
|
|
7
|
+
- keeping a team tool open while editing
|
|
8
|
+
facets:
|
|
9
|
+
lifecycle:
|
|
10
|
+
- build
|
|
11
|
+
domains:
|
|
12
|
+
- tools
|
|
13
|
+
- ui
|
|
14
|
+
compatibility:
|
|
15
|
+
engine: ">=4.6"
|
|
16
|
+
related:
|
|
17
|
+
skills:
|
|
18
|
+
- skill/summer-apps
|
|
19
|
+
source: official
|
|
20
|
+
license: MIT
|
|
21
|
+
status: preview
|
|
22
|
+
aliases:
|
|
23
|
+
- summer_app_dock
|
|
24
|
+
implementation:
|
|
25
|
+
module: src/mcp/tools/app-tools.ts
|
|
26
|
+
export: registerAppTools
|
|
27
|
+
surfaces:
|
|
28
|
+
mcp:
|
|
29
|
+
tool_name: summer_app_dock
|
|
30
|
+
remote: false
|
|
31
|
+
input_schema:
|
|
32
|
+
type: object
|
|
33
|
+
properties:
|
|
34
|
+
action:
|
|
35
|
+
type: string
|
|
36
|
+
enum:
|
|
37
|
+
- open
|
|
38
|
+
- close
|
|
39
|
+
- list
|
|
40
|
+
default: open
|
|
41
|
+
appId:
|
|
42
|
+
type: string
|
|
43
|
+
format: uuid
|
|
44
|
+
description: "open, close: the app"
|
|
45
|
+
slot:
|
|
46
|
+
type: string
|
|
47
|
+
enum:
|
|
48
|
+
- left
|
|
49
|
+
- right
|
|
50
|
+
- bottom
|
|
51
|
+
default: right
|
|
52
|
+
description: "open: left, right or bottom"
|
|
53
|
+
additionalProperties: false
|
|
54
|
+
authority:
|
|
55
|
+
filesystem: false
|
|
56
|
+
editor_mutation: true
|
|
57
|
+
network: false
|
|
58
|
+
credentials: false
|
|
59
|
+
publish: false
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
id: tool/app-events
|
|
2
|
+
kind: tool
|
|
3
|
+
version: 1.0.0
|
|
4
|
+
summary: "Wait for what a Summer App sends to agents: summer.agent.send events, app errors, feedback and tool calls."
|
|
5
|
+
use_when:
|
|
6
|
+
- waiting for the person to act in an app you built
|
|
7
|
+
- checking an app for errors after publishing
|
|
8
|
+
facets:
|
|
9
|
+
lifecycle:
|
|
10
|
+
- build
|
|
11
|
+
domains:
|
|
12
|
+
- tools
|
|
13
|
+
- ui
|
|
14
|
+
compatibility:
|
|
15
|
+
engine: ">=4.6"
|
|
16
|
+
related:
|
|
17
|
+
skills:
|
|
18
|
+
- skill/summer-apps
|
|
19
|
+
source: official
|
|
20
|
+
license: MIT
|
|
21
|
+
status: preview
|
|
22
|
+
aliases:
|
|
23
|
+
- summer_app_events
|
|
24
|
+
implementation:
|
|
25
|
+
module: src/mcp/tools/app-tools.ts
|
|
26
|
+
export: registerAppTools
|
|
27
|
+
surfaces:
|
|
28
|
+
mcp:
|
|
29
|
+
tool_name: summer_app_events
|
|
30
|
+
remote: true
|
|
31
|
+
input_schema:
|
|
32
|
+
type: object
|
|
33
|
+
properties:
|
|
34
|
+
appId:
|
|
35
|
+
type: string
|
|
36
|
+
format: uuid
|
|
37
|
+
description: The app id from summer_app_create or summer_app_list
|
|
38
|
+
after:
|
|
39
|
+
type: integer
|
|
40
|
+
minimum: 0
|
|
41
|
+
default: 0
|
|
42
|
+
description: "Return events after this cursor (0: from the start). Pass the returned cursor next time"
|
|
43
|
+
timeoutSeconds:
|
|
44
|
+
type: integer
|
|
45
|
+
minimum: 0
|
|
46
|
+
maximum: 50
|
|
47
|
+
default: 25
|
|
48
|
+
description: Wait up to this long (max 50) for the first new event
|
|
49
|
+
kinds:
|
|
50
|
+
type: array
|
|
51
|
+
items:
|
|
52
|
+
type: string
|
|
53
|
+
enum:
|
|
54
|
+
- agent
|
|
55
|
+
- error
|
|
56
|
+
- feedback
|
|
57
|
+
- tool
|
|
58
|
+
maxItems: 4
|
|
59
|
+
description: "Default: agent, error, feedback"
|
|
60
|
+
required:
|
|
61
|
+
- appId
|
|
62
|
+
additionalProperties: false
|
|
63
|
+
authority:
|
|
64
|
+
filesystem: false
|
|
65
|
+
editor_mutation: false
|
|
66
|
+
network: true
|
|
67
|
+
credentials: false
|
|
68
|
+
publish: false
|