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: generate-motion
|
|
3
|
-
description: "Attach
|
|
3
|
+
description: "Attach a library animation clip (idle, walk, run, attack) to a rigged character via AnimationPlayer."
|
|
4
4
|
license: MIT
|
|
5
5
|
compatibility: [Cursor, Claude Code, Windsurf, Codex]
|
|
6
6
|
category: animation
|
|
7
7
|
user-invocable: false
|
|
8
|
-
allowed-tools: Read Grep
|
|
8
|
+
allowed-tools: Read Grep summer_assets_search summer_assets_get summer_assets_generate_motion summer_inspect_resource summer_get_scene_tree summer_add_node summer_set_prop summer_set_resource_property summer_save_scene summer_jobs_wait summer_call
|
|
9
9
|
paths: ["**/*.tscn", "**/*.tres", "**/*.gd"]
|
|
10
10
|
---
|
|
11
11
|
|
|
@@ -13,7 +13,7 @@ paths: ["**/*.tscn", "**/*.tres", "**/*.gd"]
|
|
|
13
13
|
|
|
14
14
|
Picks a clip from a **curated mocap library** by name and wires it onto a Meshy-rigged humanoid. Fast (~30s), and it looks good because it is real mocap. The five short aliases that always work are `idle`, `walk`, `run`, `jump`, `attack`; anything else must be an exact library name — see the Reference card before you invent one.
|
|
15
15
|
|
|
16
|
-
The target must be a **Meshy-rigged humanoid** — a `rigAssetId` from a prior `
|
|
16
|
+
The target must be a **Meshy-rigged humanoid** — a `rigAssetId` from a prior `assets.generate_3d({ kind: "image-to-3d", imageUrl: "...", rig: true })` call. The finished job's `result` includes `rigAssetId`. If the user points at a non-rigged mesh, stop and route to `asset-strategy` (or directly call `assets.generate_3d` with `rig: true`) before generating motion.
|
|
17
17
|
|
|
18
18
|
> **Custom or non-humanoid motion** (e.g. "drops to one knee, draws bow", a
|
|
19
19
|
> nodding flower, a creature) goes to the `text-to-motion` skill
|
|
@@ -32,7 +32,7 @@ The target must be a **Meshy-rigged humanoid** — a `rigAssetId` from a prior `
|
|
|
32
32
|
- The user wants to apply an *existing* animation to a *new* model — use `retarget` instead. Don't regenerate.
|
|
33
33
|
- The user wants state-machine wiring (idle → walk → run blend) — generate the clips here, then hand off to `animation-tree`.
|
|
34
34
|
- The user wants facial / lipsync animation — that's `facial-and-lipsync`.
|
|
35
|
-
- The mesh isn't rigged. Rig first; never call `
|
|
35
|
+
- The mesh isn't rigged. Rig first; never call `assets.generate_motion` on a static `.glb`.
|
|
36
36
|
- The user wants procedural look-at, IK, foot placement — that's `procedural-animation`.
|
|
37
37
|
- The user described a **custom signature move** that isn't on the curated list — use `text-to-motion`; if the server answers `backend_unavailable`, use the manual-authoring fallback below.
|
|
38
38
|
|
|
@@ -41,31 +41,36 @@ The target must be a **Meshy-rigged humanoid** — a `rigAssetId` from a prior `
|
|
|
41
41
|
### 1. Verify the target is a rigged humanoid
|
|
42
42
|
|
|
43
43
|
```
|
|
44
|
-
|
|
44
|
+
assets.search({ query: "<character name>", assetType: "3d_model", scope: "mine" })
|
|
45
45
|
```
|
|
46
46
|
|
|
47
|
-
The
|
|
47
|
+
The rigged model's `assetId` is its `rigAssetId` (the id the rig job's result named `rigAssetId`). Search results do not say whether a model is rigged: the dry run in step 2 checks it, and a model that is not rigged is refused there with `invalid_input` on `rigAssetId`. Then stop, propose `assets.generate_3d({ kind: "image-to-3d", imageUrl: "...", rig: true })` first (the finished job's result includes `rigAssetId`), or route to `asset-strategy`.
|
|
48
48
|
|
|
49
49
|
### 2. Confirm with the user before spending
|
|
50
50
|
|
|
51
51
|
> I'm about to generate a "run" animation on `goblin_rigged` via meshy-library — about 30s, and it uses credits. OK?
|
|
52
52
|
|
|
53
|
-
|
|
53
|
+
`dryRun: true` on the call below returns the credits (`estimate`) and checks the rig is the person's and rigged; clips the rig already has cost nothing, so the estimate is the most it can cost.
|
|
54
|
+
|
|
55
|
+
### 3. Call the operation
|
|
54
56
|
|
|
55
57
|
```
|
|
56
|
-
|
|
58
|
+
assets.generate_motion({
|
|
57
59
|
rigAssetId: "<id>",
|
|
58
60
|
backend: "meshy-library", // curated library (default)
|
|
59
|
-
|
|
60
|
-
)
|
|
61
|
+
motionNames: ["run"] // exact names from the curated list — see Reference card
|
|
62
|
+
})
|
|
63
|
+
jobs.wait({ jobId: "<job.id>", timeoutSeconds: 50 }) // again until finished
|
|
61
64
|
```
|
|
62
65
|
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
+
`assets.generate_motion` answers at once with a job; `jobs.wait` follows it until
|
|
67
|
+
`finished` is true, and the finished job's `result` has `animationAssetId` in it.
|
|
68
|
+
When the rig already has every clip asked for, the answer is `done` at once with
|
|
69
|
+
`reused` (nothing new was made or charged). Don't assume any other field is
|
|
70
|
+
present — resolve the asset to get stable file/download metadata:
|
|
66
71
|
|
|
67
72
|
```
|
|
68
|
-
|
|
73
|
+
assets.get({ assetId: "<animationAssetId>" })
|
|
69
74
|
```
|
|
70
75
|
|
|
71
76
|
### 4. Attach to the character's AnimationPlayer
|
|
@@ -97,7 +102,7 @@ If the character will use multiple clips, leave the AnimationPlayer in place —
|
|
|
97
102
|
|
|
98
103
|
## Reference card
|
|
99
104
|
|
|
100
|
-
### Curated motion library — what `
|
|
105
|
+
### Curated motion library — what `motionNames` actually accepts
|
|
101
106
|
|
|
102
107
|
There are **five** short canonical aliases, and only five:
|
|
103
108
|
|
|
@@ -113,7 +118,7 @@ nothing like a tidy snake_case scheme — real names look like `Walking_Woman`,
|
|
|
113
118
|
Plausible-looking names that do **not** resolve, verified against the resolver:
|
|
114
119
|
`attack_sword`, `hit_react`, `death`, `sprint`, `block`, `dodge_left`,
|
|
115
120
|
`crouch_idle`, `walk_back`, `run_strafe_left`, `jump_land`, `idle_combat`,
|
|
116
|
-
`wave`, `dance`, `sit_idle`. They
|
|
121
|
+
`wave`, `dance`, `sit_idle`. They resolve to nothing and the call errors. For a sword
|
|
117
122
|
attack, use `attack`.
|
|
118
123
|
|
|
119
124
|
So: if the user asks for something outside the five aliases, do not guess a
|
|
@@ -122,17 +127,17 @@ have actually seen, or route to the manual-authoring fallback.
|
|
|
122
127
|
|
|
123
128
|
### Pitfalls
|
|
124
129
|
|
|
125
|
-
- **Invented `
|
|
130
|
+
- **Invented `motionNames` entries fail.** `"run_fast"`, `"attack_sword"`, `"death"` all resolve to nothing and the call errors. Name resolution is exact — five aliases, or a real library name / display name / numeric id. Do not extrapolate a naming scheme.
|
|
126
131
|
- **Locomotion clips have a forward bias.** Meshy's `run` translates the root forward by ~5m. Either the code drives movement (then the baked root translation causes a lunge-and-snap every loop — strip it) or the clip does via `root_motion_track` + `get_root_motion_position()` — never both. The full root-motion setup and its playtest verification live in `character-animation-wiring`.
|
|
127
132
|
- **Rig pose mismatch.** If your rig was rigged with a non-T-pose reference image, the limbs may bend wrong. Re-rig from a T-pose mannequin (see `asset-strategy`) before re-generating.
|
|
128
|
-
- **Rig still preparing.** New rigs need ~3 minutes after the rig job completes before the animation library is ready.
|
|
133
|
+
- **Rig still preparing.** New rigs need ~3 minutes after the rig job completes before the animation library is ready. Called too early, `assets.generate_motion` answers `in_progress` with `retry: "after"` and `details.retryAfterSeconds` (about 180). Wait and retry.
|
|
129
134
|
|
|
130
135
|
## Anti-patterns
|
|
131
136
|
|
|
132
|
-
- Calling `
|
|
133
|
-
- Generating the same clip twice because you forgot to save the `animationAssetId` from the first call. Search the asset library first: `
|
|
137
|
+
- Calling `assets.generate_motion` on a `.glb` that wasn't rigged — the call is refused; a dry run says so first.
|
|
138
|
+
- Generating the same clip twice because you forgot to save the `animationAssetId` from the first call. Search the asset library first: `assets.search({ query: "goblin run", assetType: "animation", scope: "mine" })`.
|
|
134
139
|
- Wiring clips into an AnimationTree inside this skill. That's the next skill's job. Generate, attach, hand off.
|
|
135
|
-
- Asking the model to invent a
|
|
140
|
+
- Asking the model to invent a motion name that isn't on the list. Quote from the list verbatim, or fall back to manual authoring.
|
|
136
141
|
|
|
137
142
|
## Edge cases
|
|
138
143
|
|
|
@@ -145,6 +150,10 @@ have actually seen, or route to the manual-authoring fallback.
|
|
|
145
150
|
- **Character is < 1m tall (child / dwarf).** Library clips assume a ~1.8m humanoid. Apply the clip; the proportions retarget but stride length looks long. Either accept it or tune `playback_speed` on the AnimationPlayer track.
|
|
146
151
|
- **Character has wings / tail.** The library ignores the extra bones — they sag. Hand-author additive overlays for the extra bones, or accept the visual hit.
|
|
147
152
|
|
|
153
|
+
## Without Summer Engine
|
|
154
|
+
|
|
155
|
+
In a session without Summer Engine tools (the assets profile; the `summer-assets` skill has the whole loop), do steps 1-3 and skip step 4 (the `AnimationPlayer`). Save the clip where the person asked with `out` on `jobs.wait` (the `summer-assets` skill says how), and tell them the path and format.
|
|
156
|
+
|
|
148
157
|
## Fallback (no MCP)
|
|
149
158
|
|
|
150
159
|
The user can upload to Meshy directly at meshy.ai, generate through the
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
id: skill/generate-motion
|
|
2
2
|
kind: skill
|
|
3
3
|
version: 1.0.4
|
|
4
|
-
summary: Attach
|
|
4
|
+
summary: "Attach a library animation clip (idle, walk, run, attack) to a rigged character via AnimationPlayer."
|
|
5
5
|
use_when:
|
|
6
6
|
- the user needs an animation clip on a rigged character — idle/walk/run/attack from the curated Meshy library
|
|
7
7
|
- a rigged character has no idle, walk, run, or attack animation yet
|
|
@@ -157,7 +157,7 @@ Rules that make it work:
|
|
|
157
157
|
|
|
158
158
|
## Asset Generation
|
|
159
159
|
|
|
160
|
-
Godogen calls external image, video and image-to-3D providers with their own API keys, then cuts animated sprites from generated video (frame extraction, loop detection, background removal, imagemagick for resize and crop). In Summer, route asset work through `asset-strategy` and the Summer generation
|
|
160
|
+
Godogen calls external image, video and image-to-3D providers with their own API keys, then cuts animated sprites from generated video (frame extraction, loop detection, background removal, imagemagick for resize and crop). In Summer, route asset work through `asset-strategy` and the Summer generation operations (`assets.generate_image`, `assets.generate_3d`, `assets.generate_video`) instead of wiring provider keys into the project.
|
|
161
161
|
|
|
162
162
|
## Implementation Steps
|
|
163
163
|
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: grow-analytics
|
|
3
|
-
description: "Read
|
|
3
|
+
description: "Read a creator's Summer Grow numbers (page views, launches, sessions, play time), compare windows."
|
|
4
4
|
license: MIT
|
|
5
5
|
compatibility: [Cursor, Claude Code, Windsurf, Codex]
|
|
6
6
|
category: deployment
|
|
7
7
|
user-invocable: true
|
|
8
|
-
allowed-tools:
|
|
8
|
+
allowed-tools: summer_docs_read
|
|
9
9
|
---
|
|
10
10
|
|
|
11
11
|
# /grow-analytics — grow analytics
|
|
@@ -14,7 +14,7 @@ This skill covers how to read a creator's Summer Grow numbers (store page views,
|
|
|
14
14
|
|
|
15
15
|
Its current text lives on the hosted Summer Engine MCP, the same text the Studio agent reads, so it changes with the store and is never stale here. Load it before you act:
|
|
16
16
|
|
|
17
|
-
1. `
|
|
17
|
+
1. `summer_docs_read` with id `skill/grow-analytics` returns the current text when this machine is signed in (`summer login`).
|
|
18
18
|
2. A host that shows MCP prompts or resources has it as the `grow-analytics` prompt and the resource `summer://skills/grow-analytics`.
|
|
19
19
|
3. Without a store sign-in: https://docs.summerengine.com/llms.txt lists every docs page; fetch any page as .md.
|
|
20
20
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
id: skill/grow-analytics
|
|
2
2
|
kind: skill
|
|
3
3
|
version: 1.0.0
|
|
4
|
-
summary: "Read
|
|
4
|
+
summary: "Read a creator's Summer Grow numbers (page views, launches, sessions, play time), compare windows."
|
|
5
5
|
use_when:
|
|
6
6
|
- "the user asks how their game is doing on Summer Games: views, launches, players, play time"
|
|
7
7
|
- "reading summer_grow_overview or summer_grow_analytics and turning the numbers into one next step"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: headless-scripting
|
|
3
|
-
description: "Run a GDScript file against Summer Engine from the shell for
|
|
3
|
+
description: "Run a GDScript file against Summer Engine from the shell for what no MCP tool does: navmesh, TileSets."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Headless Scripting
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
id: skill/headless-scripting
|
|
2
2
|
kind: skill
|
|
3
3
|
version: 1.1.3
|
|
4
|
-
summary: Run a GDScript file against Summer Engine from the shell for
|
|
4
|
+
summary: "Run a GDScript file against Summer Engine from the shell for what no MCP tool does: navmesh, TileSets."
|
|
5
5
|
use_when:
|
|
6
6
|
- a Summer project needs an operation no MCP tool exposes — baking a navmesh, generating collision shapes, authoring an Animation, building a TileSet, re-importing assets
|
|
7
7
|
- a plan involves 'run it headless and screenshot it' (which does not work — this skill explains why)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: in-game-purchases
|
|
3
|
-
description: "Sell items for Sparks
|
|
3
|
+
description: "Sell items for Sparks via the Summer purchase sheet: checkout, not enough Sparks, unlocks, grants."
|
|
4
4
|
license: MIT
|
|
5
5
|
compatibility: [Cursor, Claude Code, Windsurf, Codex]
|
|
6
6
|
category: gameplay
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
id: skill/in-game-purchases
|
|
2
2
|
kind: skill
|
|
3
3
|
version: 1.0.0
|
|
4
|
-
summary: "Sell items for Sparks
|
|
4
|
+
summary: "Sell items for Sparks via the Summer purchase sheet: checkout, not enough Sparks, unlocks, grants."
|
|
5
5
|
use_when:
|
|
6
6
|
- "adding a shop, buy button or paid item to a Summer game and wiring request_checkout"
|
|
7
7
|
- "the player does not have enough Sparks (checkout rejected with insufficient_funds) and the game should tell them how to buy more Sparks"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: instantiate-asset-pack
|
|
3
|
-
description: "
|
|
3
|
+
description: "Lay out a whole create-asset-sheet pack in the scene: composites, paint order, Sprite2D and NinePatch."
|
|
4
4
|
license: MIT
|
|
5
5
|
compatibility: [Cursor, Claude Code, Windsurf, Codex]
|
|
6
6
|
category: 2d-assets
|
|
@@ -228,7 +228,7 @@ Pack has a composite parent `settings_panel` (filtered out) plus three children:
|
|
|
228
228
|
|
|
229
229
|
After this, hand `panel_bg` and `apply_button` to `use-widget-asset` to set `patch_margin_*` from their `widget.frameMargins`.
|
|
230
230
|
|
|
231
|
-
Note the ops format: `position` is the **engine variant string** `"Vector2(0, 0)"`, not a JSON object. `z_index` is a bare integer. This is the format Summer Engine expects — see
|
|
231
|
+
Note the ops format: `position` is the **engine variant string** `"Vector2(0, 0)"`, not a JSON object. `z_index` is a bare integer. This is the format Summer Engine expects — see `summer_docs_read` id `reference/mcp-tools-reference`.
|
|
232
232
|
|
|
233
233
|
## Failure modes
|
|
234
234
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
id: skill/instantiate-asset-pack
|
|
2
2
|
kind: skill
|
|
3
3
|
version: 1.0.3
|
|
4
|
-
summary: "
|
|
4
|
+
summary: "Lay out a whole create-asset-sheet pack in the scene: composites, paint order, Sprite2D and NinePatch."
|
|
5
5
|
use_when:
|
|
6
6
|
- importing or spawning an entire asset pack (multi-slice ArtAsset from create-asset-sheet) into the current scene
|
|
7
7
|
- laying out a generated tile sheet, UI kit, or biome pack as placed Sprite2D and NinePatchRect nodes in one pass
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: make-game
|
|
3
|
-
description: "
|
|
3
|
+
description: "Orchestrate 'make me a game': brainstorm, plan, scaffold, mechanics, art, audio, polish, verify, ship."
|
|
4
4
|
license: MIT
|
|
5
5
|
compatibility: [Cursor, Claude Code, Codex, Windsurf, Gemini, OpenCode]
|
|
6
6
|
category: scene-and-project
|
|
7
7
|
user-invocable: true
|
|
8
|
-
allowed-tools: Read Edit Write Bash Skill summer_get_project_context summer_get_scene_tree summer_create_scene summer_add_node summer_set_prop summer_save_scene summer_play summer_stop summer_get_diagnostics summer_get_script_errors
|
|
8
|
+
allowed-tools: Read Edit Write Bash Skill summer_get_project_context summer_get_scene_tree summer_create_scene summer_run_script summer_add_node summer_set_prop summer_save_scene summer_play summer_stop summer_get_diagnostics summer_get_script_errors
|
|
9
9
|
paths: [".summer/**", "project.godot", "**/*.gd", "**/*.tscn"]
|
|
10
10
|
---
|
|
11
11
|
|
|
@@ -162,7 +162,7 @@ World (Node3D)
|
|
|
162
162
|
└── GameManager (Node) # autoload-style, holds win/lose state
|
|
163
163
|
```
|
|
164
164
|
|
|
165
|
-
|
|
165
|
+
Build that hierarchy in one `summer_run_script` with the scene's `scenePath` (see `scene-scripting`), not node by node, and end the script with `ctx.save_scene()`. Run `summer_play` once to verify the empty scaffold opens cleanly. If it crashes, run `debug` immediately — do NOT continue building on a broken base.
|
|
166
166
|
|
|
167
167
|
**Checkpoint before continuing:**
|
|
168
168
|
|
|
@@ -181,7 +181,7 @@ For each mechanic in the plan, **in order**:
|
|
|
181
181
|
Outputs the mechanic spec: input, response, feedback, failure modes, depth, tunables, GDScript stub.
|
|
182
182
|
|
|
183
183
|
2. **Implement**:
|
|
184
|
-
- Add the nodes
|
|
184
|
+
- Add the nodes: 3 or more scene edits are one `summer_run_script` with `scenePath` (snapshot, script, diff, screenshot); a single tweak is one `summer_set_prop`. Use `scene-composition` if the structure is non-trivial.
|
|
185
185
|
- For movement-class mechanics, prefer the matching pre-built skill: `character-movement`, `fps-controller`, `multiplayer-movement`, etc. Follow the genre playbook's build order when one applies.
|
|
186
186
|
- Write GDScript with `gdscript-patterns` open.
|
|
187
187
|
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Side-scrolling platformer blueprint: architecture, the level, and the core loop.
|
|
4
4
|
Movement itself lives in the `character-movement` skill (base controller) and its
|
|
5
|
-
|
|
5
|
+
platformer-feel reference (`summer_docs_read` id `skill/character-movement/references/platformer-feel.md`: coyote time, jump buffer, variable height) - do
|
|
6
6
|
not rewrite it here; wire it in. For Celeste-grade precision movement (dash, wall
|
|
7
7
|
jump, climb) use `celeste-momentum-platforming` instead.
|
|
8
8
|
|
|
@@ -135,7 +135,7 @@ for free.
|
|
|
135
135
|
## Level scene
|
|
136
136
|
|
|
137
137
|
The real level comes from real assets, not primitives: route the need through
|
|
138
|
-
the `asset-strategy` skill (`
|
|
138
|
+
the `asset-strategy` skill (`assets.search`, then `summer_import_asset` /
|
|
139
139
|
`summer_import_asset_by_id`), import a ready location or kit that fits, and build
|
|
140
140
|
gameplay inside it; weapons and props should share its style. A PlaneMesh ground
|
|
141
141
|
is only the walk-test blockout and for pieces no asset covers — never the
|
|
@@ -116,7 +116,7 @@ resist cranking them.
|
|
|
116
116
|
## Level building (library first, primitives last)
|
|
117
117
|
|
|
118
118
|
The level comes from real assets: route it through the `asset-strategy` skill
|
|
119
|
-
(`
|
|
119
|
+
(`assets.search`, then `summer_import_asset` / `summer_import_asset_by_id`)
|
|
120
120
|
and look for a ready horror location (an abandoned house, a haunted forest, a
|
|
121
121
|
modular horror-house kit) plus period props, keeping one coherent style. Import
|
|
122
122
|
the location that fits and build gameplay inside it. Do NOT grey-box a level a
|
|
@@ -128,7 +128,7 @@ global transform and zeroes `rotation.z`.
|
|
|
128
128
|
If the visual is a Summer humanoid package, do not use the generic setup below.
|
|
129
129
|
Instantiate its `character.tscn` under `CharacterRotationRoot`, preserve the package's
|
|
130
130
|
normalized `-Z` forward axis, then install the `character-movement` skill's
|
|
131
|
-
|
|
131
|
+
default third-person controller (`summer_docs_read` id `skill/character-movement/references/default-third-person-controller.gd`) unchanged for the standard
|
|
132
132
|
playable controller (that skill has the byte-exact install steps and the
|
|
133
133
|
verification probe). Do not hand-write an equivalent controller. Never rebuild package clips
|
|
134
134
|
into a second AnimationTree.
|
|
@@ -163,7 +163,7 @@ and set `loop_mode = Animation.LOOP_LINEAR` on those at runtime.
|
|
|
163
163
|
|
|
164
164
|
## Level assembly
|
|
165
165
|
|
|
166
|
-
Check for real assets first (`asset-strategy`: `
|
|
166
|
+
Check for real assets first (`asset-strategy`: `assets.search`, then
|
|
167
167
|
`summer_import_asset`): a ready location or kit beats CSG. Keep CSG for the
|
|
168
168
|
first-motion blockout, invisible glue (death planes, triggers) and pieces no
|
|
169
169
|
asset covers — do not ship a grey-box level when a real one is available.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
id: skill/make-game
|
|
2
2
|
kind: skill
|
|
3
3
|
version: 1.1.0
|
|
4
|
-
summary: "
|
|
4
|
+
summary: "Orchestrate 'make me a game': brainstorm, plan, scaffold, mechanics, art, audio, polish, verify, ship."
|
|
5
5
|
use_when:
|
|
6
6
|
- the user says 'make me a game', 'build me a game', 'I want to make a [genre] game', or 'let's build something' — running the full game-dev pipeline
|
|
7
7
|
- the user wants a complete playable game end to end, from brainstorm through shipping
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: multiplayer
|
|
3
|
-
description: "Start here for Summer multiplayer: how
|
|
3
|
+
description: "Start here for Summer multiplayer: how authority, clients, Worlds and Sessions fit, and what comes next."
|
|
4
4
|
license: MIT
|
|
5
5
|
compatibility: [Cursor, Claude Code, Windsurf, Codex]
|
|
6
6
|
category: multiplayer-and-networking
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
id: skill/multiplayer
|
|
2
2
|
kind: skill
|
|
3
3
|
version: 1.0.0
|
|
4
|
-
summary: "Start here for Summer multiplayer: how
|
|
4
|
+
summary: "Start here for Summer multiplayer: how authority, clients, Worlds and Sessions fit, and what comes next."
|
|
5
5
|
use_when:
|
|
6
6
|
- "the user wants multiplayer, co-op, PvP, online play over the internet, or to play with friends in a Summer game"
|
|
7
7
|
- "the user asks for peer-to-peer, a player-hosted server, host migration, join-by-IP or a lobby"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: multiplayer-movement
|
|
3
|
-
description: "
|
|
3
|
+
description: "Movement in Summer multiplayer: owners move instantly, others glide, the authority checks each pose."
|
|
4
4
|
license: MIT
|
|
5
5
|
compatibility: [Cursor, Claude Code, Windsurf, Codex]
|
|
6
6
|
category: multiplayer-and-networking
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
id: skill/multiplayer-movement
|
|
2
2
|
kind: skill
|
|
3
3
|
version: 1.0.0
|
|
4
|
-
summary: "
|
|
4
|
+
summary: "Movement in Summer multiplayer: owners move instantly, others glide, the authority checks each pose."
|
|
5
5
|
use_when:
|
|
6
6
|
- "moving players in a Summer multiplayer game: each player's own character, other players drawn smoothly"
|
|
7
7
|
- "remote players stutter, jitter, teleport or rubberband in a Summer multiplayer game"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: multiplayer-project
|
|
3
|
-
description: "Set up a Summer multiplayer project:
|
|
3
|
+
description: "Set up a Summer multiplayer project: entry scenes, World and queue files, joining, a first Local Play."
|
|
4
4
|
license: MIT
|
|
5
5
|
compatibility: [Cursor, Claude Code, Windsurf, Codex]
|
|
6
6
|
category: multiplayer-and-networking
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
id: skill/multiplayer-project
|
|
2
2
|
kind: skill
|
|
3
3
|
version: 1.0.0
|
|
4
|
-
summary: "Set up a Summer multiplayer project:
|
|
4
|
+
summary: "Set up a Summer multiplayer project: entry scenes, World and queue files, joining, a first Local Play."
|
|
5
5
|
use_when:
|
|
6
6
|
- "making a Summer game playable online or co-op: the first multiplayer setup"
|
|
7
7
|
- "adding multiplayer to a Summer game: the client and authority scenes, summer.build.json, world.json and joining a queue"
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: multiplayer-publish
|
|
3
|
-
description: "Ship a hosted Summer multiplayer game: the
|
|
3
|
+
description: "Ship a hosted Summer multiplayer game: the bundle, server preset, pre-upload checks, a new Build."
|
|
4
4
|
license: MIT
|
|
5
5
|
compatibility: [Cursor, Claude Code, Windsurf, Codex]
|
|
6
6
|
category: multiplayer-and-networking
|
|
7
7
|
user-invocable: true
|
|
8
|
-
allowed-tools: Read Grep Glob Edit Write summer_read_file summer_write_file summer_project_setting
|
|
8
|
+
allowed-tools: Read Grep Glob Edit Write summer_read_file summer_write_file summer_project_setting summer_call
|
|
9
9
|
paths: ["export_presets.cfg", "summer.build.json", "world.json", "source-domains.json", "runtime-manifest.json", "project.godot"]
|
|
10
10
|
---
|
|
11
11
|
|
|
@@ -246,16 +246,17 @@ empty window. Re-export with the current Summer release.
|
|
|
246
246
|
`summer.build.json` must be its id. The export leaves `gameId` out of the
|
|
247
247
|
bundle, and the game code calls `Summer.initialize()` with no ID: a
|
|
248
248
|
literal or fallback ID fails hosted with `game_identity_mismatch`.
|
|
249
|
-
2. Open the game's Builds page: `
|
|
249
|
+
2. Open the game's Builds page: `studio.open` with target `game`,
|
|
250
250
|
`gameId` and section `builds`, or summerengine.com → Studio → your game →
|
|
251
251
|
Builds.
|
|
252
252
|
3. Upload the `.zip` as a new Build. Summer checks it again: unknown fields,
|
|
253
253
|
queue rules, both packs, and the composition match. From an agent:
|
|
254
|
-
`summer_export_game`, then `
|
|
254
|
+
`summer_export_game`, then `store.upload_file` with `gameId` and
|
|
255
255
|
`clientVersion`; it asks for confirmation first and needs
|
|
256
|
-
`summer login --store`. If
|
|
257
|
-
Studio.
|
|
258
|
-
4. Release the Build to an environment.
|
|
256
|
+
`summer login --store`. If the store refuses this machine's sign-in,
|
|
257
|
+
upload in Studio.
|
|
258
|
+
4. Release the Build to an environment (`store.release` releases the Build
|
|
259
|
+
the owner approved with `store.publish`). Its queues go live there, and
|
|
259
260
|
clients join them with `Summer.client.join(SummerJoinTarget.queue(...))`.
|
|
260
261
|
The code is the same as in Local Play.
|
|
261
262
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
id: skill/multiplayer-publish
|
|
2
2
|
kind: skill
|
|
3
|
-
version: 1.0.
|
|
4
|
-
summary: "Ship a hosted Summer multiplayer game: the
|
|
3
|
+
version: 1.0.1
|
|
4
|
+
summary: "Ship a hosted Summer multiplayer game: the bundle, server preset, pre-upload checks, a new Build."
|
|
5
5
|
use_when:
|
|
6
6
|
- "publishing a hosted Summer multiplayer game online so other players can join it"
|
|
7
7
|
- "making the summer.games bundle of a hosted game: client.pck, server.pck and the Linux server preset"
|
|
@@ -25,5 +25,5 @@ related:
|
|
|
25
25
|
- skill/release-readiness
|
|
26
26
|
source: official
|
|
27
27
|
license: MIT
|
|
28
|
-
status:
|
|
28
|
+
status: stable
|
|
29
29
|
recommended: false
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: multiplayer-state
|
|
3
|
-
description: "Authority-owned
|
|
3
|
+
description: "Authority-owned state in Summer multiplayer: shared and private State groups, Commands, Events."
|
|
4
4
|
license: MIT
|
|
5
5
|
compatibility: [Cursor, Claude Code, Windsurf, Codex]
|
|
6
6
|
category: multiplayer-and-networking
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
id: skill/multiplayer-state
|
|
2
2
|
kind: skill
|
|
3
3
|
version: 1.0.0
|
|
4
|
-
summary: "Authority-owned
|
|
4
|
+
summary: "Authority-owned state in Summer multiplayer: shared and private State groups, Commands, Events."
|
|
5
5
|
use_when:
|
|
6
6
|
- "score, health, doors, rounds, inventories or wallets in a Summer multiplayer game, and who owns them"
|
|
7
7
|
- "players need to collect, buy, use, open or trade things and the authority must validate it"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: multiplayer-testing
|
|
3
|
-
description: "Test a Summer multiplayer game with Local Play: several players,
|
|
3
|
+
description: "Test a Summer multiplayer game with Local Play: several players, bad network, bots, a passing run."
|
|
4
4
|
license: MIT
|
|
5
5
|
compatibility: [Cursor, Claude Code, Windsurf, Codex]
|
|
6
6
|
category: multiplayer-and-networking
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
id: skill/multiplayer-testing
|
|
2
2
|
kind: skill
|
|
3
3
|
version: 1.0.0
|
|
4
|
-
summary: "Test a Summer multiplayer game with Local Play: several players,
|
|
4
|
+
summary: "Test a Summer multiplayer game with Local Play: several players, bad network, bots, a passing run."
|
|
5
5
|
use_when:
|
|
6
6
|
- "running or testing a Summer multiplayer game locally with several players (Local Play)"
|
|
7
7
|
- "testing multiplayer under latency, jitter or packet loss, or with bots"
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: music-track
|
|
3
|
-
description: "Generate a
|
|
3
|
+
description: "Generate a music track: game loops of 30s or more with a loop point, or linear cinematic cues."
|
|
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/music/**", "scripts/**", "**/*.tscn"]
|
|
10
10
|
---
|
|
11
11
|
|
|
@@ -126,18 +126,18 @@ Show the prompt:
|
|
|
126
126
|
> `85 BPM, D minor, 4/4, solo cello and detuned upright piano, sparse, melancholic exploration loop, no drums, gentle reverb, 60s loop`
|
|
127
127
|
> Duration 60s. This uses credits. Generate?
|
|
128
128
|
|
|
129
|
-
The `music` capability reads the description from **`prompt`**, not `text` — the mirror image of `sound_effects`.
|
|
129
|
+
The `music` capability reads the description from **`prompt`**, not `text` — the mirror image of `sound_effects`. Without `prompt` the call is refused (`prompt_required`).
|
|
130
130
|
|
|
131
131
|
```
|
|
132
|
-
|
|
132
|
+
assets.generate_audio({
|
|
133
133
|
capability: "music",
|
|
134
134
|
prompt: "85 BPM, D minor, 4/4, solo cello and detuned upright piano, sparse, melancholic exploration loop, no drums, gentle reverb, 60s loop",
|
|
135
135
|
durationSeconds: 60
|
|
136
|
-
)
|
|
137
|
-
// Then: summer_import_from_url(url: "<fileUrl>", path: "res://audio/music/calm_exploration.mp3")
|
|
136
|
+
})
|
|
137
|
+
// Then: summer_import_from_url(url: "<asset.fileUrl>", path: "res://audio/music/calm_exploration.mp3")
|
|
138
138
|
```
|
|
139
139
|
|
|
140
|
-
`durationSeconds` is clamped to 3–600. Music comes back as MP3 (`audio/mpeg`), so a `.mp3` target path is correct.
|
|
140
|
+
`durationSeconds` is clamped to 3–600, and a longer track costs more: `dryRun: true` returns the `estimate` in credits first. Music comes back as MP3 (`audio/mpeg`), so a `.mp3` target path is correct.
|
|
141
141
|
|
|
142
142
|
### 7. Mark the loop point in Summer Engine
|
|
143
143
|
|
|
@@ -161,14 +161,19 @@ For seamless looping, the cleaner option is to ask the model to generate a cell
|
|
|
161
161
|
|
|
162
162
|
### 8. Wire it as `AudioStreamPlayer` on the `Music` bus
|
|
163
163
|
|
|
164
|
-
|
|
164
|
+
One script adds the player with its settings; `scenePath` is the exact scene to change:
|
|
165
165
|
|
|
166
166
|
```
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
167
|
+
summer_run_script(scenePath="res://main.tscn", source="""
|
|
168
|
+
func run(ctx):
|
|
169
|
+
ctx.add_node("AudioStreamPlayer", "MusicCalm", null, {
|
|
170
|
+
"stream": load("res://audio/music/calm_exploration.mp3"),
|
|
171
|
+
"bus": "Music",
|
|
172
|
+
"volume_db": -8.0,
|
|
173
|
+
"autoplay": true,
|
|
174
|
+
})
|
|
175
|
+
ctx.save_scene()
|
|
176
|
+
""")
|
|
172
177
|
```
|
|
173
178
|
|
|
174
179
|
Music is `AudioStreamPlayer` (not 2D / 3D) — non-positional. The bible's `Music -8 dB` mix sits the music behind SFX where it belongs.
|
|
@@ -257,6 +262,10 @@ Cutscene (cinematic): varies tempo, D minor, 4/4, solo piano opens,
|
|
|
257
262
|
- **Track sounds nothing like the references.** Re-read the bible; the prompt may be missing the anchor instrument. Add it explicitly.
|
|
258
263
|
- **Track has unexpected vocals.** Add `no vocals, instrumental only` to the prompt.
|
|
259
264
|
|
|
265
|
+
## Without Summer Engine
|
|
266
|
+
|
|
267
|
+
In a session without Summer Engine tools (the assets profile; the `summer-assets` skill has the whole loop), do steps 1-6 and skip steps 7-9 (loop point, `AudioStreamPlayer`, crossfade script). Save the file where the person asked with `out` (the `summer-assets` skill says how), and tell them the path and format. For a loop track, tell them it is made to loop.
|
|
268
|
+
|
|
260
269
|
## Fallback (no MCP)
|
|
261
270
|
|
|
262
271
|
Print the prompt and instruct the user to run via the Summer dashboard, then `summer_import_from_url` the rendered MP3.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
id: skill/music-track
|
|
2
2
|
kind: skill
|
|
3
3
|
version: 1.0.2
|
|
4
|
-
summary: Generate a
|
|
4
|
+
summary: "Generate a music track: game loops of 30s or more with a loop point, or linear cinematic cues."
|
|
5
5
|
use_when:
|
|
6
6
|
- generating a looped or cinematic music track — main theme, boss music, title screen, exploration loop, combat track
|
|
7
7
|
- a game has no music yet or needs a new track for a level, a cutscene, or the credits
|