summer-engine 3.8.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 +23 -22
- package/.codex-plugin/plugin.json +4 -12
- package/.cursor-plugin/plugin.json +4 -12
- package/.factory-plugin/plugin.json +4 -12
- package/AGENTS.md +19 -12
- package/CHANGELOG.md +96 -0
- package/GEMINI.md +3 -3
- package/README.md +103 -33
- package/assets/icon.png +0 -0
- package/commands/start.md +71 -0
- package/commands/summer.md +3 -2
- 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 +25 -2
- package/dist/core/capabilities/apps.js +25 -12
- package/dist/core/capabilities/doctor.d.ts +3 -0
- package/dist/core/capabilities/doctor.js +20 -15
- 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 +81 -46
- 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 +53 -23
- 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 +234 -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.js +9 -2
- 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 +4 -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 +79 -51
- 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 +119 -117
- 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 +29 -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 +48 -32
- package/library/skills/summer-apps/manifest.md +1 -1
- package/library/skills/summer-apps/minimal-app.md +7 -7
- package/library/skills/summer-apps/resource.yaml +1 -1
- package/library/skills/summer-apps/sdk-reference.md +5 -5
- package/library/skills/summer-apps-design/SKILL.md +1 -1
- package/library/skills/summer-apps-design/resource.yaml +1 -1
- 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 +6 -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 +1 -1
- package/library/tools/app-guide/resource.yaml +2 -2
- package/library/tools/app-page/resource.yaml +1 -1
- package/library/tools/app-screenshot/resource.yaml +19 -1
- package/library/tools/app-tools/resource.yaml +1 -1
- 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/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/counts.json +2 -2
- package/registry/generated/gemini-extension.json +4 -12
- package/registry/generated/index.json +433 -339
- package/registry/generated/marketplace.claude.json +2 -13
- package/registry/generated/plugin.claude.json +23 -22
- package/registry/generated/plugin.codex.json +4 -12
- package/registry/generated/plugin.cursor.json +4 -12
- package/registry/generated/plugin.factory.json +4 -12
- package/registry/generated/server.json +34 -0
- package/registry/generated/skills-index.md +119 -117
- package/registry/generated/skills-registry.json +153 -115
- 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/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: adaptive-music
|
|
3
|
-
description: "Wire music stems to game state
|
|
3
|
+
description: "Wire music stems to game state: combat, explore, boss and tension crossfades on a shared bus."
|
|
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_run_script summer_add_node summer_set_prop summer_connect_signal summer_inspect_node summer_get_scene_tree summer_project_setting summer_call
|
|
9
9
|
paths: ["audio/music/**", "scripts/audio/**", "**/*.tscn", "default_bus_layout.tres"]
|
|
10
10
|
---
|
|
11
11
|
|
|
@@ -56,7 +56,7 @@ For most games, **horizontal sequencing** is right. It is cheaper to author and
|
|
|
56
56
|
### 3. Confirm stems exist (or generate them)
|
|
57
57
|
|
|
58
58
|
```
|
|
59
|
-
|
|
59
|
+
assets.search({ query: "music", assetType: "music", scope: "all" })
|
|
60
60
|
```
|
|
61
61
|
|
|
62
62
|
You need (typical case):
|
|
@@ -97,29 +97,25 @@ For ducking, add a sidechain compressor on the `Music` bus with the `Voice` bus
|
|
|
97
97
|
|
|
98
98
|
### 5. Build the player rig
|
|
99
99
|
|
|
100
|
-
For horizontal sequencing, instantiate one `AudioStreamPlayer` per state, all on the Music bus, all autoplay, all looping, all starting at `-60 dB` except the active state:
|
|
100
|
+
For horizontal sequencing, instantiate one `AudioStreamPlayer` per state, all on the Music bus, all autoplay, all looping, all starting at `-60 dB` except the active state. One script builds the whole rig (`scenePath` is the exact scene to change; `ctx.save_scene()` writes it):
|
|
101
101
|
|
|
102
102
|
```
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
summer_set_prop(scenePath="res://main.tscn", path="./Music/Combat", key="stream", value="res://audio/music/combat.mp3")
|
|
117
|
-
summer_set_prop(scenePath="res://main.tscn", path="./Music/Combat", key="bus", value="Music")
|
|
118
|
-
summer_set_prop(scenePath="res://main.tscn", path="./Music/Combat", key="volume_db", value=-60.0)
|
|
119
|
-
summer_set_prop(scenePath="res://main.tscn", path="./Music/Combat", key="autoplay", value=true)
|
|
103
|
+
summer_run_script(scenePath="res://main.tscn", source="""
|
|
104
|
+
func run(ctx):
|
|
105
|
+
var music = ctx.get_or_create("Node", "Music")
|
|
106
|
+
var states := {"Calm": 0.0, "Tension": -60.0, "Combat": -60.0} # only the active state is audible
|
|
107
|
+
for state in states:
|
|
108
|
+
ctx.add_node("AudioStreamPlayer", state, music, {
|
|
109
|
+
"stream": load("res://audio/music/%s.mp3" % state.to_lower()),
|
|
110
|
+
"bus": "Music",
|
|
111
|
+
"volume_db": states[state],
|
|
112
|
+
"autoplay": true,
|
|
113
|
+
})
|
|
114
|
+
ctx.save_scene()
|
|
115
|
+
""")
|
|
120
116
|
```
|
|
121
117
|
|
|
122
|
-
|
|
118
|
+
A fourth state (Boss) is one more entry in `states`, not five more calls. Loop the streams on the imported files (`loop` in the import settings, or `AudioStreamMP3.loop`), not on the player.
|
|
123
119
|
|
|
124
120
|
All three play simultaneously, in sync, but only one is audible. State transitions tween volumes — the music never restarts, only fades.
|
|
125
121
|
|
|
@@ -326,5 +322,5 @@ in Summer Engine.
|
|
|
326
322
|
- `audio-direction` — defines the dynamic music plan and bus layout
|
|
327
323
|
- `music-track` — generates the stems
|
|
328
324
|
- `voice-line` — the voice bus that triggers ducking
|
|
329
|
-
-
|
|
325
|
+
- `summer_docs_read` id `reference/godot-version` — Summer compatibility for AudioServer
|
|
330
326
|
and Tween APIs
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
id: skill/adaptive-music
|
|
2
2
|
kind: skill
|
|
3
3
|
version: 1.0.2
|
|
4
|
-
summary: Wire music stems to game state
|
|
4
|
+
summary: "Wire music stems to game state: combat, explore, boss and tension crossfades on a shared bus."
|
|
5
5
|
use_when:
|
|
6
6
|
- wiring music stems to game state — combat / explore / boss / tension crossfades on a shared bus
|
|
7
7
|
- layered or vertical music that changes when combat starts
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: agent-playtesting
|
|
3
|
-
description: "Playtest by driving the
|
|
3
|
+
description: "Playtest by driving the live game: deterministic launch, frame-stamped probes, scripted or recorded input."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Agent Playtesting
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
id: skill/agent-playtesting
|
|
2
2
|
kind: skill
|
|
3
3
|
version: 1.0.0
|
|
4
|
-
summary: Playtest by driving the
|
|
4
|
+
summary: "Playtest by driving the live game: deterministic launch, frame-stamped probes, scripted or recorded input."
|
|
5
5
|
use_when:
|
|
6
6
|
- proving a gameplay feature works by driving the running game frame by frame with the runtime tools (summer_game_probe, summer_game_input, summer_game_control, summer_runtime_set/call/spawn/animate)
|
|
7
7
|
- a bug repro or an A/B needs a deterministic launch (seed, fixed frame rate, offscreen instance), a recorded input replay, or two instances side by side
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: ai-characters-in-games
|
|
3
|
-
description: "Safe AI characters in published games: no keys in the build,
|
|
3
|
+
description: "Safe AI characters in published games: no keys in the build, Summer's player AI gateway, moderation, caps."
|
|
4
4
|
license: MIT
|
|
5
5
|
compatibility: [Cursor, Claude Code, Windsurf, Codex]
|
|
6
6
|
category: ai-and-npcs
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
id: skill/ai-characters-in-games
|
|
2
2
|
kind: skill
|
|
3
3
|
version: 0.3.0
|
|
4
|
-
summary: "Safe AI characters in published games: no keys in the build,
|
|
4
|
+
summary: "Safe AI characters in published games: no keys in the build, Summer's player AI gateway, moderation, caps."
|
|
5
5
|
use_when:
|
|
6
6
|
- a character, creature or object should answer free-form player text or speech in a published game (talking flowers, shopkeepers, companions)
|
|
7
7
|
- about to put a model name, a provider SDK or a provider key into a game project
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: ambient-bed
|
|
3
|
-
description: "Generate a long looping location ambience
|
|
3
|
+
description: "Generate a long looping location ambience (forest, dungeon, city, cave) on the Ambient bus."
|
|
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: ["audio/ambient/**", "**/*.tscn", "**/*.import"]
|
|
10
10
|
---
|
|
11
11
|
|
|
@@ -15,7 +15,7 @@ paths: ["audio/ambient/**", "**/*.tscn", "**/*.import"]
|
|
|
15
15
|
|
|
16
16
|
An ambient bed is the *air* of a place. Forest at dawn, dungeon corridor, spaceship hum, market street, ocean cave. It plays at low energy under everything else and is never melodic. Players rarely notice a bed, but they notice the silence when a level has none.
|
|
17
17
|
|
|
18
|
-
This is **not** music. Use `
|
|
18
|
+
This is **not** music. Use `assets.generate_audio({ capability: 'sound_effects' })`, not `{ capability: 'music' }`: the SFX model renders texture, the music model renders melody.
|
|
19
19
|
|
|
20
20
|
Generated at 15–22 seconds (the SFX duration ceiling) and looped with a Summer
|
|
21
21
|
Engine import loop point and optional crossfade.
|
|
@@ -101,17 +101,17 @@ If the user wants a busier bed (market, party), still prevent foreground events:
|
|
|
101
101
|
### 5. Generate at the duration ceiling
|
|
102
102
|
|
|
103
103
|
```
|
|
104
|
-
|
|
104
|
+
assets.generate_audio({
|
|
105
105
|
capability: "sound_effects",
|
|
106
106
|
modelId: "eleven_text_to_sound_v2",
|
|
107
107
|
loop: true,
|
|
108
108
|
text: "forest at dawn, gentle wind through leaves, distant bird calls every 6 seconds, soft creaking branches, no music, no human sound, 22s seamless loop",
|
|
109
109
|
durationSeconds: 22
|
|
110
|
-
)
|
|
111
|
-
// Then: summer_import_from_url(url: "<fileUrl>", path: "res://audio/ambient/forest_dawn.wav")
|
|
110
|
+
})
|
|
111
|
+
// Then: summer_import_from_url(url: "<asset.fileUrl>", path: "res://audio/ambient/forest_dawn.wav")
|
|
112
112
|
```
|
|
113
113
|
|
|
114
|
-
Name `modelId: "eleven_text_to_sound_v2"` with `loop: true`: it is the only sound-effect model that makes seamless loops, and without a `modelId` the person's default sound-effect model runs, which may not loop. `sound_effects` reads from **`text`**, not `prompt` —
|
|
114
|
+
Name `modelId: "eleven_text_to_sound_v2"` with `loop: true`: it is the only sound-effect model that makes seamless loops, and without a `modelId` the person's default sound-effect model runs, which may not loop. `sound_effects` reads from **`text`**, not `prompt` — without `text` the call is refused (`text_required`). (`prompt` is the `music` capability's field.) The clip comes back as WAV, so a `.wav` target path is correct.
|
|
115
115
|
|
|
116
116
|
22s is the SFX ceiling. Always generate at the ceiling for ambient — longer cycle means less recognized repetition.
|
|
117
117
|
|
|
@@ -196,11 +196,16 @@ This eliminates the click and adds variation through phase-overlap (the loop ove
|
|
|
196
196
|
For most beds, non-positional is correct (the player is *in* the place; the bed isn't an emitter):
|
|
197
197
|
|
|
198
198
|
```
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
199
|
+
summer_run_script(scenePath="res://levels/level_01.tscn", source="""
|
|
200
|
+
func run(ctx):
|
|
201
|
+
ctx.add_node("AudioStreamPlayer", "AmbientBed", ctx.find("Level"), {
|
|
202
|
+
"stream": load("res://audio/ambient/forest_dawn.wav"),
|
|
203
|
+
"bus": "Ambient",
|
|
204
|
+
"volume_db": -12.0,
|
|
205
|
+
"autoplay": true,
|
|
206
|
+
})
|
|
207
|
+
ctx.save_scene()
|
|
208
|
+
""")
|
|
204
209
|
```
|
|
205
210
|
|
|
206
211
|
Or attach the script in step 7 to a Node, set its `stream` to the imported audio, and skip the `AudioStreamPlayer` node — the script provides its own.
|
|
@@ -249,7 +254,7 @@ Boss arena: vast stone arena, low ominous drone, distant rumble,
|
|
|
249
254
|
|
|
250
255
|
## Anti-patterns
|
|
251
256
|
|
|
252
|
-
- **Using `
|
|
257
|
+
- **Using `assets.generate_audio({ capability: 'music' })` for an ambient bed.** Music model adds melody. You don't want melody.
|
|
253
258
|
- **Foreground events in the bed.** A wolf howl, an explosion, a clear word — these promote themselves and the bed becomes annoying.
|
|
254
259
|
- **Bed louder than `-10 dB` on its bus.** Beds belong under everything; default is `-12 dB` to `-15 dB`.
|
|
255
260
|
- **No loop point set.** The clip plays once and silence follows.
|
|
@@ -265,6 +270,10 @@ Boss arena: vast stone arena, low ominous drone, distant rumble,
|
|
|
265
270
|
- **Need positional bed (a campfire crackle).** Use `AudioStreamPlayer3D` with `max_distance` matching the campfire's reasonable hearing radius (4–8m typical).
|
|
266
271
|
- **Multi-room transitions.** Use Areas; on player enter, fade in destination bed and fade out source bed over 1.5s.
|
|
267
272
|
|
|
273
|
+
## Without Summer Engine
|
|
274
|
+
|
|
275
|
+
In a session without Summer Engine tools (the assets profile; the `summer-assets` skill has the whole loop), do steps 1-5 and stop when the bed exists. Skip steps 6-9: the loop point, the crossfade script and the `AudioStreamPlayer` are Summer Engine work. Save the file where the person asked with `out` (the `summer-assets` skill says how), and tell them the path and format. Tell the person it is a long bed made to loop: their engine either loops it with a short crossfade or plays two copies that overlap.
|
|
276
|
+
|
|
268
277
|
## Fallback (no MCP)
|
|
269
278
|
|
|
270
279
|
Print the SFX prompt and the import dock settings. User runs via the Summer dashboard and imports manually.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
id: skill/ambient-bed
|
|
2
2
|
kind: skill
|
|
3
3
|
version: 1.0.3
|
|
4
|
-
summary: Generate a long looping location ambience
|
|
4
|
+
summary: "Generate a long looping location ambience (forest, dungeon, city, cave) on the Ambient bus."
|
|
5
5
|
use_when:
|
|
6
6
|
- generating a long looping location ambience — forest at dawn, dungeon air, city street, spaceship hum, cave drip — non-melodic and low-energy
|
|
7
7
|
- a location feels silent and needs a continuous soundscape beneath the score and effects
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: animated-loop
|
|
3
|
-
description: "Generate a short
|
|
3
|
+
description: "Generate a short seamless video loop: splash background, animated logo backdrop, idle title screen."
|
|
4
4
|
license: MIT
|
|
5
5
|
compatibility: [Cursor, Claude Code, Windsurf, Codex]
|
|
6
6
|
category: video
|
|
7
7
|
user-invocable: true
|
|
8
|
-
allowed-tools: Read Grep Glob Write Edit
|
|
8
|
+
allowed-tools: Read Grep Glob Write Edit summer_assets_generate_video summer_jobs_wait summer_assets_generate_image summer_assets_search summer_import_from_url summer_add_node summer_set_prop summer_call
|
|
9
9
|
paths: ["assets/video/**", "menus/**", "ui/**"]
|
|
10
10
|
---
|
|
11
11
|
|
|
@@ -13,7 +13,7 @@ paths: ["assets/video/**", "menus/**", "ui/**"]
|
|
|
13
13
|
|
|
14
14
|
A loop is the only video format that has to *not have* a beginning or end. The viewer sees it on the title screen for 30 seconds; if the seam between loop iterations is visible, the whole thing reads as broken. This skill exists to force the constraints that make seams invisible: take the shortest duration available, keep the motion ambient (no narrative, no big camera moves), use the fast model (`ltx`), and prompt for a composition where the first and last frames are functionally identical.
|
|
15
15
|
|
|
16
|
-
**Duration is not a dial here.** `
|
|
16
|
+
**Duration is not a dial here.** On `ltx` and `kling`, `assets.generate_video` renders only `duration: 5` or `duration: 10`; every other value renders 5. So "drop to 3s to hide the seam" is not an option — 5s is the floor, and the seam has to be won in the prompt and the reference frame instead.
|
|
17
17
|
|
|
18
18
|
If the user wants a 5s punchy marketing shot, that's `trailer-shot`. If they want a 10s narrative cutscene, that's `cinematic-cutscene`. This skill is the one for video that has to *disappear* — atmosphere behind a logo, mood behind a menu, ambience behind a splash card.
|
|
19
19
|
|
|
@@ -46,13 +46,12 @@ If the user wants narrative motion (a character walking, a door opening), this i
|
|
|
46
46
|
|
|
47
47
|
For loops, `ltx` is almost always right. It takes ~30s, and short ambient motion is what it handles best. The premium models cost more credits and do not loop better.
|
|
48
48
|
|
|
49
|
-
This skill always passes `imageUrl` (step 3), which puts every call on the image-to-video route
|
|
49
|
+
This skill always passes `imageUrl` (step 3), which puts every call on the image-to-video route. `kling-turbo` and `veo3` are text-to-video only; pairing either with an `imageUrl` is a 400 `invalid_model`, not a silent downgrade.
|
|
50
50
|
|
|
51
51
|
| Model | i2v? | Speed | When |
|
|
52
52
|
|---|---|---|---|
|
|
53
53
|
| `ltx` | yes | ~30s | Default. Use this. |
|
|
54
54
|
| `kling` | yes | 2-4 min | Only if the loop is the centerpiece of a premium splash and quality is visibly lacking on `ltx` |
|
|
55
|
-
| `minimax` | yes | 2-3 min | Stylized / anime aesthetic loops |
|
|
56
55
|
| `kling-turbo` | **no** | 1-2 min | Not reachable from this skill — text-to-video only |
|
|
57
56
|
| `veo3` | **no** | 3-5 min | Not reachable from this skill, and pointless for ambient loops anyway |
|
|
58
57
|
|
|
@@ -61,15 +60,16 @@ This skill always passes `imageUrl` (step 3), which puts every call on the image
|
|
|
61
60
|
The reference still doubles as the *target* loop frame. Generate it deliberately — the video model's first and last frames will gravitate toward the reference, which is exactly what you want for a closing seam.
|
|
62
61
|
|
|
63
62
|
```
|
|
64
|
-
|
|
65
|
-
prompt
|
|
66
|
-
model
|
|
67
|
-
|
|
63
|
+
assets.generate_image({
|
|
64
|
+
prompt: "<subject>, ambient atmospheric scene, cinematic lighting, painterly, wide framing, balanced composition with no clear focal action",
|
|
65
|
+
model: "nano-banana-2",
|
|
66
|
+
aspectRatio: "16:9"
|
|
67
|
+
})
|
|
68
68
|
```
|
|
69
69
|
|
|
70
|
-
|
|
70
|
+
Set `aspectRatio` to the screen the loop fills (`16:9`, or `9:16` for a vertical mobile splash).
|
|
71
71
|
|
|
72
|
-
On the image-to-video route `aspectRatio` is **not applied at all** — the clip inherits the reference image's framing. So a vertical mobile splash needs a 9:16 reference image, and setting `aspectRatio
|
|
72
|
+
On the image-to-video route `aspectRatio` is **not applied at all** — the clip inherits the reference image's framing. So a vertical mobile splash needs a 9:16 reference image, and setting `aspectRatio: "9:16"` on the video call does nothing.
|
|
73
73
|
|
|
74
74
|
### 4. Prompt for loopable motion only
|
|
75
75
|
|
|
@@ -80,20 +80,20 @@ Loopable verbs: `drift`, `flicker`, `swirl`, `shimmer`, `sway`, `pulse`, `glow`,
|
|
|
80
80
|
Non-loopable verbs (avoid): `walks`, `enters`, `appears`, `emerges`, `transforms`, `attacks`, `falls down`, `opens`, `closes`.
|
|
81
81
|
|
|
82
82
|
```
|
|
83
|
-
|
|
84
|
-
prompt
|
|
85
|
-
model
|
|
86
|
-
imageUrl
|
|
87
|
-
duration
|
|
88
|
-
|
|
89
|
-
)
|
|
83
|
+
assets.generate_video({
|
|
84
|
+
prompt: "<subject from reference>, <ambient loopable motion>, slow continuous, looping, seamless, cinematic",
|
|
85
|
+
model: "ltx",
|
|
86
|
+
imageUrl: "<reference URL from step 3>",
|
|
87
|
+
duration: 5,
|
|
88
|
+
negativePrompt: "sudden movement, character action, narrative event, fade to black"
|
|
89
|
+
})
|
|
90
90
|
```
|
|
91
91
|
|
|
92
|
-
The phrase **"looping, seamless"** in the prompt biases the model toward stable first/last frames
|
|
92
|
+
The phrase **"looping, seamless"** in the prompt biases the model toward stable first/last frames, and `negativePrompt` rules out narrative drift. Images have no negative prompt: put negations in the image prompt text.
|
|
93
93
|
|
|
94
94
|
`aspectRatio` is omitted deliberately: it is applied on the text-to-video path only, and this call passes `imageUrl`.
|
|
95
95
|
|
|
96
|
-
The call
|
|
96
|
+
The call answers at once with `{ status: "running", job: { id } }` and **no URL**. Call `jobs.wait({ jobId: "<job.id>", timeoutSeconds: 50 })` until `finished` is true; only a `done` job's `result` holds the clip.
|
|
97
97
|
|
|
98
98
|
### 5. Inspect the seam
|
|
99
99
|
|
|
@@ -125,19 +125,24 @@ ffmpeg -i title_screen_bg.mp4 -c:v libtheora -q:v 8 -an title_screen_bg.ogv
|
|
|
125
125
|
summer_import_from_url(url="<hosted .ogv url>", path="res://assets/video/loops/title_screen_bg.ogv")
|
|
126
126
|
```
|
|
127
127
|
|
|
128
|
-
Then wire it
|
|
128
|
+
Then wire it in one script. `scenePath` is the exact scene to change:
|
|
129
129
|
|
|
130
130
|
```
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
131
|
+
summer_run_script(scenePath="res://ui/title_screen.tscn", source="""
|
|
132
|
+
func run(ctx):
|
|
133
|
+
var loop_player = ctx.add_node("VideoStreamPlayer", "BackgroundLoop", null, {
|
|
134
|
+
"stream": load("res://assets/video/loops/title_screen_bg.ogv"),
|
|
135
|
+
"autoplay": true,
|
|
136
|
+
"loop": true,
|
|
137
|
+
"expand": true,
|
|
138
|
+
})
|
|
139
|
+
loop_player.set_anchors_and_offsets_preset(Control.PRESET_FULL_RECT) # the loop fills the menu
|
|
140
|
+
ctx.get_scene_root().move_child(loop_player, 0) # drawn first: the menu draws on top
|
|
141
|
+
ctx.save_scene()
|
|
142
|
+
""")
|
|
138
143
|
```
|
|
139
144
|
|
|
140
|
-
|
|
145
|
+
Controls draw in tree order and later siblings render on top, so the logo and menu buttons come after the `VideoStreamPlayer` in the tree.
|
|
141
146
|
|
|
142
147
|
### 7. Mute the audio track
|
|
143
148
|
|
|
@@ -161,7 +166,7 @@ Pattern: `<subject> + <ambient loopable motion> + <constant lighting> + "looping
|
|
|
161
166
|
| Logo backdrop — magic runes | `ltx` | `dark surface with glowing blue runes pulsing softly in slow rhythm, faint shimmer, no narrative motion, looping, seamless` | 5s |
|
|
162
167
|
| Menu — underwater | `ltx` | `underwater scene with caustic light dancing on a sandy floor, slow drifting bubbles, gentle current sway on kelp, looping, seamless` | 5s |
|
|
163
168
|
| Pause screen — slow rain | `ltx` | `window pane with continuous gentle rain drops, blurred warm interior glow behind, looping, seamless, ambient` | 5s |
|
|
164
|
-
| Title — anime sky | `
|
|
169
|
+
| Title — anime sky | `ltx` | `anime style cumulus clouds drifting slowly across a pastel sunset sky, soft, painterly, looping, seamless, Ghibli` | 5s |
|
|
165
170
|
| Premium splash centerpiece | `kling` | `dragon silhouette breathing in profile against a vast sunset sky, only the chest rising and falling and clouds drifting, looping, seamless` | 5s |
|
|
166
171
|
|
|
167
172
|
### Bad prompts and why
|
|
@@ -177,7 +182,7 @@ Pattern: `<subject> + <ambient loopable motion> + <constant lighting> + "looping
|
|
|
177
182
|
## Anti-patterns
|
|
178
183
|
|
|
179
184
|
- **Asking the model for a 10s loop.** Past ~6s, identity drifts and the seam shows. `duration=5` is both the floor and the right answer; 10 is the only other value the API accepts.
|
|
180
|
-
- **Treating `
|
|
185
|
+
- **Treating `assets.generate_video` as finished.** It answers `{ status: "running", job }` and no URL. Wait with `jobs.wait` before claiming a clip exists.
|
|
181
186
|
- **Using `kling` for a loop.** `ltx` is almost always right; short ambient motion is what it does best.
|
|
182
187
|
- **Prompting narrative motion.** "Hero draws sword" doesn't loop. Use ambient verbs.
|
|
183
188
|
- **Forgetting `loop=true` on the `VideoStreamPlayer`.** The clip will play once and freeze on the last frame.
|
|
@@ -193,6 +198,10 @@ Pattern: `<subject> + <ambient loopable motion> + <constant lighting> + "looping
|
|
|
193
198
|
- **Loop is behind translucent UI.** Generate with extra contrast headroom — the model tends toward mid-grey, and translucent UI on mid-grey reads muddy. Push for `high contrast cinematic` in the prompt.
|
|
194
199
|
- **Loop seam still visible after 3 regens.** Set up two `VideoStreamPlayer` siblings and crossfade between them with a `Tween` on a 0.5s overlap. Costs an extra GPU decode but hides the seam.
|
|
195
200
|
|
|
201
|
+
## Without Summer Engine
|
|
202
|
+
|
|
203
|
+
In a session without Summer Engine tools (the assets profile; the `summer-assets` skill has the whole loop), do steps 1-5 and stop when the seam passes. Skip steps 6-7 (the `VideoStreamPlayer` and its audio). Save the file where the person asked with `out` (the `summer-assets` skill says how), and tell them the path and format. The file is MP4; tell the person to play it looped and muted.
|
|
204
|
+
|
|
196
205
|
## Fallback (no MCP)
|
|
197
206
|
|
|
198
207
|
If the MCP server isn't running, route the user to the Summer dashboard:
|
|
@@ -221,4 +230,4 @@ Once the loop is wired:
|
|
|
221
230
|
- `music-track` — score the menu.
|
|
222
231
|
- `ui-graphics` — logo, menu buttons, HUD that sits over the loop.
|
|
223
232
|
- `concept-art` — produce the reference still that anchors the loop.
|
|
224
|
-
-
|
|
233
|
+
- `summer_docs_read` id `reference/mcp-tools-reference` — how to call `assets.generate_video`; `summer_search` returns its exact input.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
id: skill/animated-loop
|
|
2
2
|
kind: skill
|
|
3
3
|
version: 1.0.4
|
|
4
|
-
summary: Generate a short
|
|
4
|
+
summary: "Generate a short seamless video loop: splash background, animated logo backdrop, idle title screen."
|
|
5
5
|
use_when:
|
|
6
6
|
- generating a short looping video clip — splash screen background, animated logo backdrop, idle title-screen footage, looping environment ambience
|
|
7
7
|
- an idle backdrop behind the UI needs subtle motion without a real-time animated scene
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: animation-tree
|
|
3
|
-
description: "
|
|
3
|
+
description: "Wire AnimationTree state machines and blend trees: locomotion blends, attack interrupts, hit reactions."
|
|
4
4
|
license: MIT
|
|
5
5
|
compatibility: [Cursor, Claude Code, Windsurf, Codex]
|
|
6
6
|
category: animation
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
id: skill/animation-tree
|
|
2
2
|
kind: skill
|
|
3
3
|
version: 1.0.1
|
|
4
|
-
summary:
|
|
4
|
+
summary: "Wire AnimationTree state machines and blend trees: locomotion blends, attack interrupts, hit reactions."
|
|
5
5
|
use_when:
|
|
6
6
|
- the character has clips that must play in response to gameplay — idle/walk/run blends, attacks that interrupt locomotion, hit reactions
|
|
7
7
|
- a character keeps T-posing
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: art-direction
|
|
3
|
-
description: "Define the game's visual style
|
|
3
|
+
description: "Define the game's visual style (palette, mood, lighting, post) as an art bible in .summer/art-bible.md."
|
|
4
4
|
license: MIT
|
|
5
5
|
compatibility: [Cursor, Claude Code, Windsurf, Codex]
|
|
6
6
|
category: rendering-and-lighting
|
|
@@ -185,7 +185,7 @@ If a `WorldEnvironment` node is in the main scene, set its environment defaults
|
|
|
185
185
|
|
|
186
186
|
```
|
|
187
187
|
summer_inspect_node(path="./World/WorldEnvironment")
|
|
188
|
-
summer_set_prop(path="./World/WorldEnvironment/...", key="...", value="...")
|
|
188
|
+
summer_set_prop(scenePath="res://main.tscn", path="./World/WorldEnvironment/...", key="...", value="...")
|
|
189
189
|
```
|
|
190
190
|
|
|
191
191
|
Ask before each:
|
|
@@ -247,7 +247,7 @@ End with:
|
|
|
247
247
|
> - `/audio-direction` to define the sonic identity that pairs with this look.
|
|
248
248
|
> - `/game-feel` to design particle / hit-feedback styles within the palette.
|
|
249
249
|
> - Open the project's `WorldEnvironment` node and dial in the lighting plan.
|
|
250
|
-
> - Or generate first-pass concept assets via `
|
|
250
|
+
> - Or generate first-pass concept assets via `assets.generate_image` using the palette + mood as the prompt prefix.
|
|
251
251
|
|
|
252
252
|
## Common mistakes
|
|
253
253
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
id: skill/art-direction
|
|
2
2
|
kind: skill
|
|
3
3
|
version: 1.0.2
|
|
4
|
-
summary: Define the game's visual style
|
|
4
|
+
summary: "Define the game's visual style (palette, mood, lighting, post) as an art bible in .summer/art-bible.md."
|
|
5
5
|
use_when:
|
|
6
6
|
- defining the visual style of the game — references, palette, mood, lighting plan, post-processing
|
|
7
7
|
- make it look like PS1, retro, low-poly, pixel art, cel-shaded, or a horror aesthetic
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: asset-strategy
|
|
3
|
-
description: "Route any 'I need a [thing]' asset request to the right
|
|
3
|
+
description: "Route any 'I need a [thing]' asset request to the right skill: 2D, 3D, audio, video, VFX or animation."
|
|
4
4
|
license: MIT
|
|
5
5
|
compatibility: [Cursor, Claude Code, Windsurf, Codex]
|
|
6
6
|
category: asset-pipeline
|
|
7
7
|
user-invocable: false
|
|
8
|
-
allowed-tools: Read Grep Skill
|
|
8
|
+
allowed-tools: Read Grep Skill summer_assets_search summer_assets_get summer_import_asset_by_id summer_call
|
|
9
9
|
---
|
|
10
10
|
|
|
11
11
|
# Asset Strategy — Meta-Router for Asset Creation
|
|
@@ -114,22 +114,39 @@ VFX is **code, not generative** — recipes are shader + GDScript + node setup,
|
|
|
114
114
|
| Magic glow / aura | `vfx-magic-glow` |
|
|
115
115
|
| Camera shake / hit-stop | `game-feel` |
|
|
116
116
|
|
|
117
|
+
## How the specialists call Summer
|
|
118
|
+
|
|
119
|
+
The specialists name Summer's asset work by operation. A call written `area.action({...})` is one operation: use the tool `summer_area_action` when your client lists it, else `summer_call({ op: "area.action", input: {...} })`. `summer_search` finds any operation and its exact input.
|
|
120
|
+
|
|
121
|
+
- **Find and read:** `assets.search({ query, scope })` (`scope`: `library` (default), `mine` for their own, `all`), then `assets.get({ assetId })` for the file, `downloadUrl` and `viewerUrl`. Reuse before generating.
|
|
122
|
+
- **Generate:** `assets.generate_image`, `assets.generate_3d`, `assets.generate_audio`, `assets.generate_video`, `assets.generate_motion`, `assets.generate_sfx_choices` (then `assets.choices` for the person's picks). They spend the person's credits; `dryRun: true` returns the estimate (`credits`, `balance`, `enough`) and makes nothing.
|
|
123
|
+
- **Wait:** 3D, video and animation answer at once with a job; `jobs.wait({ jobId, timeoutSeconds: 50 })` until `finished`, and the finished job's `result` holds the asset ids.
|
|
124
|
+
- **Save on this machine:** with the local Summer MCP or the CLI, `out` (a folder or a file path) on a generate call, `jobs.wait` or `assets.get` saves the file there, and the answer adds `localPath`.
|
|
125
|
+
- **Edit their assets:** `assets.remove_background`, `assets.slice_sheet`, `assets.update` (title, description, tags, private or team), `assets.make_public` (lists one for everyone in Summer's asset store), `assets.delete` (deletes for good; asks the person unless they let their agent delete, and then nothing is deleted until they confirm).
|
|
126
|
+
- **Permissions:** The person decides once what their agent may do: publishing (including `assets.make_public`), spending and building run at once by default, and deleting for good asks. An operation whose group they have not granted answers `needs_approval` with a link: give the link to the person, then `jobs.wait` on the `apr:` job.
|
|
127
|
+
- **Upload an image from disk:** `assets.upload_begin`, then `assets.upload_complete`.
|
|
128
|
+
- **One-shot makers:** `makers.<tool>` (for example `makers.npc_voice`, `makers.trailer_forge`); `summer_search` lists them.
|
|
129
|
+
|
|
117
130
|
## When NOT to use this skill
|
|
118
131
|
|
|
119
132
|
- The user already named the specific skill — go straight there.
|
|
120
133
|
- The user is debugging or running the game — route to `debug` or `play`.
|
|
121
|
-
- The asset is an existing Summer asset ID — call `
|
|
134
|
+
- The asset is an existing Summer asset ID — call `assets.get({ assetId })`, then `summer_import_asset_by_id`.
|
|
122
135
|
- The asset is being imported from a non-Summer URL (`.glb` / `.wav` from Sketchfab, Quaternius, AmbientCG) — call `summer_import_from_url` directly.
|
|
123
136
|
- The user wants to plan the whole game's asset list — `brainstorm-game` first, then this router on each item.
|
|
124
137
|
|
|
125
138
|
## Anti-patterns
|
|
126
139
|
|
|
127
|
-
- **Generating yourself instead of dispatching.** This file holds zero prompt patterns by design. If you're writing
|
|
140
|
+
- **Generating yourself instead of dispatching.** This file holds zero prompt patterns by design. If you're writing an `assets.generate_image` call from here, stop and invoke the specialist.
|
|
128
141
|
- **Skipping the disambiguation question.** Sends users to the wrong specialist and burns a paid generation. The verbatim phrasing in Step 2 is required.
|
|
129
142
|
- **Routing concept-art to character-portrait** (or the reverse). Different goals: concept-art produces 4 divergent variants for art direction; character-portrait produces 1 polished bust for dialogue UI.
|
|
130
143
|
- **Inventing skill names.** Only dispatch to skills listed above. If nothing fits, ask the user to clarify.
|
|
131
144
|
- **Routing rigged-humanoid requests to `prop-model`.** Anything that needs animation always goes to `character-model`.
|
|
132
145
|
|
|
146
|
+
## Without Summer Engine
|
|
147
|
+
|
|
148
|
+
In a session without Summer Engine tools (the assets profile; the `summer-assets` skill has the whole loop), the routing tables still pick the skill. Leave out every step that imports (`summer_import_asset_by_id`, `summer_import_from_url`): deliver the file with `out` instead (the `summer-assets` skill says how).
|
|
149
|
+
|
|
133
150
|
## Fallback (no MCP)
|
|
134
151
|
|
|
135
152
|
The router still works without MCP — classification is text-only. It hands off to the specialist, which surfaces its own no-MCP fallback (typically: run the same generation in the Summer dashboard, then `summer_import_from_url` once MCP is back).
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
id: skill/asset-strategy
|
|
2
2
|
kind: skill
|
|
3
3
|
version: 1.0.3
|
|
4
|
-
summary: Route any 'I need a [thing]' asset request to the right
|
|
4
|
+
summary: "Route any 'I need a [thing]' asset request to the right skill: 2D, 3D, audio, video, VFX or animation."
|
|
5
5
|
use_when:
|
|
6
6
|
- planning asset creation, picking an asset pipeline, or routing an 'I need a [thing]' request to the right specialist skill
|
|
7
7
|
- '"I need a sword / a forest / a boss theme / an explosion" and it is unclear which pipeline (2D, 3D, audio, video, VFX, animation) fits'
|
|
@@ -20,6 +20,7 @@ compatibility:
|
|
|
20
20
|
engine: ">=4.6"
|
|
21
21
|
related:
|
|
22
22
|
skills:
|
|
23
|
+
- skill/summer-assets
|
|
23
24
|
- skill/character-portrait
|
|
24
25
|
- skill/concept-art
|
|
25
26
|
- skill/pixel-art
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: audio-direction
|
|
3
|
-
description: "Define the game's
|
|
3
|
+
description: "Define the game's sound (music style, SFX vocabulary, dynamic music) as .summer/audio-bible.md."
|
|
4
4
|
license: MIT
|
|
5
5
|
compatibility: [Cursor, Claude Code, Windsurf, Codex]
|
|
6
6
|
category: audio
|
|
7
7
|
user-invocable: true
|
|
8
|
-
allowed-tools: Read Grep Glob Write Edit summer_get_project_context summer_get_scene_tree summer_inspect_node summer_add_node summer_project_setting
|
|
8
|
+
allowed-tools: Read Grep Glob Write Edit summer_get_project_context summer_get_scene_tree summer_inspect_node summer_add_node summer_project_setting summer_assets_generate_audio summer_call
|
|
9
9
|
paths: [".summer/**", "project.godot", "**/*.tscn", "audio/**"]
|
|
10
10
|
---
|
|
11
11
|
|
|
@@ -206,9 +206,9 @@ Ask:
|
|
|
206
206
|
If the user wants to start generating, propose 3-5 SFX seeds aligned with the vocabulary. These are starting points, not finals. Generate them with the `sound-effect` skill: the first sound effect in a chat starts with its question (three versions from three models, picked by ear in Summer Studio), and its prompt shape is the one that tested well.
|
|
207
207
|
|
|
208
208
|
```
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
209
|
+
assets.generate_audio({ capability: "sound_effects", text: "Foley one-shot: a fingertip taps a small wooden button, soft woody click, no tail, close-mic, dry, no reverb, no music, no voices.", durationSeconds: 0.5 })
|
|
210
|
+
assets.generate_audio({ capability: "sound_effects", text: "Foley one-shot: a small gold coin drops onto a wooden table, bright metallic ting with a short ring, close-mic, dry, no music, no voices.", durationSeconds: 0.5 })
|
|
211
|
+
assets.generate_audio({ capability: "sound_effects", text: "Foley one-shot: a fist hits a padded leather vest, low-mid thump, no tail, close-mic, dry, no reverb, no music, no voices.", durationSeconds: 0.5 })
|
|
212
212
|
```
|
|
213
213
|
|
|
214
214
|
`capability` is required; `sound_effects` reads from `text` (not `prompt`), and the length argument is `durationSeconds` (not `duration`) with a floor of 0.5 s (1 s for Stable Audio 3 SFX). Leave out `modelId` so the person's approved default model runs. Ask for the character you want inside the text and let the player only use the front of the clip — you cannot request 80 ms.
|
|
@@ -239,11 +239,11 @@ End with:
|
|
|
239
239
|
| Pure sine "ding" for pickup | Reads as cheap mobile game. Use a major-third interval with character. |
|
|
240
240
|
| Same footstep sample for all surfaces | Players hear footsteps constantly; material-aware steps carry much of the perceived audio quality. |
|
|
241
241
|
| No master ceiling / true peak | Audio clips on console builds without `-1 dBTP` ceiling. Always set it. |
|
|
242
|
-
| Assuming SetResourceProperty fails silently on inline sub_resources | It does not — inline targets work, and the structural failures (`node not found`, `property is not a resource`, `resource is null`) are explicit errors. What *is* silent on current engines is a bad value shape: a JSON object instead of an engine literal string, a misspelled `subProperty`, or a wrong-typed value returns `ok:true` yet no-ops or coerces destructively. Pass class names and literal strings, and confirm in the saved `.tres`/`.tscn`, never from `ok` alone. See
|
|
242
|
+
| Assuming SetResourceProperty fails silently on inline sub_resources | It does not — inline targets work, and the structural failures (`node not found`, `property is not a resource`, `resource is null`) are explicit errors. What *is* silent on current engines is a bad value shape: a JSON object instead of an engine literal string, a misspelled `subProperty`, or a wrong-typed value returns `ok:true` yet no-ops or coerces destructively. Pass class names and literal strings, and confirm in the saved `.tres`/`.tscn`, never from `ok` alone. See `summer_docs_read` id `reference/mcp-tools-reference`. |
|
|
243
243
|
|
|
244
244
|
## Collaborative protocol
|
|
245
245
|
|
|
246
|
-
This skill writes one bible (`.summer/audio-bible.md`), creates a bus layout (`audio/default_bus_layout.tres`), modifies `project.godot`, and may generate audio (metered). Always ask before writing or generating. See
|
|
246
|
+
This skill writes one bible (`.summer/audio-bible.md`), creates a bus layout (`audio/default_bus_layout.tres`), modifies `project.godot`, and may generate audio (metered). Always ask before writing or generating. See `summer_docs_read` id `reference/collaborative-protocol`.
|
|
247
247
|
|
|
248
248
|
## Want a working starter?
|
|
249
249
|
|
|
@@ -251,10 +251,10 @@ No template — this is a workflow that produces the bible the rest of the proje
|
|
|
251
251
|
|
|
252
252
|
## See also
|
|
253
253
|
|
|
254
|
-
-
|
|
255
|
-
-
|
|
254
|
+
- `summer_docs_read` id `reference/collaborative-protocol`
|
|
255
|
+
- `summer_docs_read` id `reference/godot-version` — Summer compatibility and
|
|
256
256
|
version-sensitive audio API notes
|
|
257
|
-
-
|
|
257
|
+
- `summer_docs_read` id `reference/mcp-tools-reference`
|
|
258
258
|
- `brainstorm-game` — produces the brief that anchors the bible
|
|
259
259
|
- `art-direction` — the visual counterpart; audio must rhyme with it
|
|
260
260
|
- `adaptive-music` — implements the dynamic music plan
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
id: skill/audio-direction
|
|
2
2
|
kind: skill
|
|
3
3
|
version: 1.0.7
|
|
4
|
-
summary: Define the game's
|
|
4
|
+
summary: "Define the game's sound (music style, SFX vocabulary, dynamic music) as .summer/audio-bible.md."
|
|
5
5
|
use_when:
|
|
6
6
|
- defining the sonic identity — music style, instruments, SFX vocabulary, dynamic music plan
|
|
7
7
|
- starting audio work with no audio bible, or soundtrack and SFX requests keep drifting in style
|