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,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: verification-before-completion
|
|
3
|
-
description: "Run verification
|
|
3
|
+
description: "Run verification and read its output before claiming work done, fixed or passing: evidence first."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Verification Before Completion
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
id: skill/verification-before-completion
|
|
2
2
|
kind: skill
|
|
3
3
|
version: 1.0.3
|
|
4
|
-
summary: Run verification
|
|
4
|
+
summary: "Run verification and read its output before claiming work done, fixed or passing: evidence first."
|
|
5
5
|
use_when:
|
|
6
6
|
- about to claim work is complete, fixed, or passing, before committing or creating PRs
|
|
7
7
|
- about to report a test, build, or fix as passing without having run the command and read its output
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: verifying-scenes
|
|
3
|
-
description: "Prove scene work landed
|
|
3
|
+
description: "Prove scene work landed: snapshot, diff, screenshots, runtime reads, 3D audits, shot sheets and zooms."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Verifying Scenes
|
|
@@ -153,7 +153,7 @@ When the next step depends on the engine reaching a moment — the game booting
|
|
|
153
153
|
- NEVER describe an image you did not receive. A failed capture is a result — report it and climb down (scene → viewport) or ask the user.
|
|
154
154
|
- Preset-framing scene renders are static (t=0), synthetic-camera, flat-environment: no claims about animation, particles, lighting, or mood from them.
|
|
155
155
|
- Pass structured failures (`failure_reason`, `terminalState`) through verbatim — never soften them into "it didn't work".
|
|
156
|
-
- After the result is verified, record the outcome with `
|
|
156
|
+
- After the result is verified, record the outcome with `summer_call` `{"op":"docs.feedback"}` (worked / worked with fixes / wrong / outdated / incomplete + a short note). Optional and fire-and-forget; if telemetry is off, move on.
|
|
157
157
|
|
|
158
158
|
## Red Flags — STOP
|
|
159
159
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
id: skill/verifying-scenes
|
|
2
2
|
kind: skill
|
|
3
3
|
version: 1.5.0
|
|
4
|
-
summary:
|
|
4
|
+
summary: "Prove scene work landed: snapshot, diff, screenshots, runtime reads, 3D audits, shot sheets and zooms."
|
|
5
5
|
use_when:
|
|
6
6
|
- after any mutation batch, asset import, or lighting change, before claiming it worked
|
|
7
7
|
- during a playtest, to read live runtime state (spawned nodes, actual stats) without stopping the game
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: vfx-dissolve
|
|
3
|
-
description: "Dissolve effect
|
|
3
|
+
description: "Dissolve effect: a mesh burns away with a glowing edge, from a noise-threshold ShaderMaterial."
|
|
4
4
|
license: MIT
|
|
5
5
|
compatibility: [Cursor, Claude Code, Windsurf, Codex]
|
|
6
6
|
category: visual-effects
|
|
@@ -256,7 +256,7 @@ material, no play-mode round-trip:
|
|
|
256
256
|
|
|
257
257
|
```gdscript
|
|
258
258
|
func run(ctx):
|
|
259
|
-
var mat
|
|
259
|
+
var mat = ctx.make_shader("<section 2 source>", {"threshold": 0.4})
|
|
260
260
|
ctx.apply_material(ctx.find("TestDummy"), mat) # eyeball it with summer_screenshot
|
|
261
261
|
```
|
|
262
262
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
id: skill/vfx-dissolve
|
|
2
2
|
kind: skill
|
|
3
3
|
version: 1.0.3
|
|
4
|
-
summary: Dissolve effect
|
|
4
|
+
summary: "Dissolve effect: a mesh burns away with a glowing edge, from a noise-threshold ShaderMaterial."
|
|
5
5
|
use_when:
|
|
6
6
|
- authoring a dissolve effect — an object disintegrating with a glowing burning edge (disintegrate, burn away, vanish into ash)
|
|
7
7
|
- a defeated unit, teleport exit, or removed object should burn away with a glowing edge instead of vanishing
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: vfx-fire
|
|
3
|
-
description: "Fire effect
|
|
3
|
+
description: "Fire effect: animated flames from GPUParticles3D, a particle shader and a noise color ramp."
|
|
4
4
|
license: MIT
|
|
5
5
|
compatibility: [Cursor, Claude Code, Windsurf, Codex]
|
|
6
6
|
category: visual-effects
|
|
@@ -285,50 +285,21 @@ apply here — a draw pass mesh carries its material in `Mesh.material`.
|
|
|
285
285
|
|
|
286
286
|
Add an OmniLight3D as a sibling (parented to the same anchor as the GPUParticles3D, NOT under it) for proper light cast. Recommended: `light_color = Color(1.0, 0.6, 0.25)`, `light_energy = 1.6`, `omni_range = 6.0`. Pulse it lightly via the controller for free atmosphere.
|
|
287
287
|
|
|
288
|
-
### 6. Wire it in
|
|
288
|
+
### 6. Wire it in
|
|
289
289
|
|
|
290
|
-
|
|
291
|
-
|
|
290
|
+
Write the three files, then wire everything in ONE `summer_run_script` call with
|
|
291
|
+
an explicit `scenePath` — transactional (rollback on a mid-script error), no
|
|
292
|
+
`.tres` sidecar files needed because the script builds the resources directly:
|
|
292
293
|
|
|
293
294
|
```
|
|
294
295
|
summer_write_file(path="res://addons/vfx/_building-blocks/noise-3d-fbm.gdshaderinc", content="<from this skill>", create_only=true)
|
|
295
296
|
summer_write_file(path="res://addons/vfx/fire/fire.gdshader", content="<section 2>", create_only=true)
|
|
296
297
|
summer_write_file(path="res://addons/vfx/fire/fire_controller.gd", content="<section 4>", create_only=true)
|
|
297
298
|
|
|
298
|
-
|
|
299
|
-
summer_set_prop(scenePath="res://main.tscn", path="./World/Torch/Fire", key="script", value="res://addons/vfx/fire/fire_controller.gd")
|
|
300
|
-
|
|
301
|
-
# ParticleProcessMaterial is a Material, not a Node — you cannot summer_add_node it.
|
|
302
|
-
# Assign the resource by path; the controller configures it on _ready().
|
|
303
|
-
summer_set_prop(scenePath="res://main.tscn", path="./World/Torch/Fire", key="process_material", value="res://addons/vfx/fire/process_mat.tres")
|
|
304
|
-
|
|
305
|
-
summer_set_prop(scenePath="res://main.tscn", path="./World/Torch/Fire", key="draw_pass_1", value="res://addons/vfx/fire/quad.tres")
|
|
306
|
-
# quad.tres is a QuadMesh with size (1,1) and material = fire_material.tres (ShaderMaterial wrapping fire.gdshader)
|
|
307
|
-
summer_set_resource_property(scenePath="res://main.tscn", nodePath="./World/Torch/Fire", resourceProperty="draw_pass_1", subProperty="size", value="Vector2(1, 1)")
|
|
308
|
-
|
|
309
|
-
summer_set_prop(scenePath="res://main.tscn", path="./World/Torch/Fire", key="flame_height", value=1.2)
|
|
310
|
-
summer_set_prop(scenePath="res://main.tscn", path="./World/Torch/Fire", key="flame_radius", value=0.35)
|
|
311
|
-
summer_set_prop(scenePath="res://main.tscn", path="./World/Torch/Fire", key="particle_count", value=96)
|
|
312
|
-
|
|
313
|
-
summer_add_node(scenePath="res://main.tscn", parent="./World/Torch", type="OmniLight3D", name="FireLight")
|
|
314
|
-
summer_set_prop(scenePath="res://main.tscn", path="./World/Torch/FireLight", key="light_color", value="Color(1.0, 0.6, 0.25)")
|
|
315
|
-
summer_set_prop(scenePath="res://main.tscn", path="./World/Torch/FireLight", key="light_energy", value=1.6)
|
|
316
|
-
summer_set_prop(scenePath="res://main.tscn", path="./World/Torch/FireLight", key="omni_range", value=6.0)
|
|
317
|
-
|
|
318
|
-
summer_save_scene(scenePath="res://main.tscn")
|
|
319
|
-
```
|
|
320
|
-
|
|
321
|
-
### 6a. One-script wiring (summer_run_script)
|
|
322
|
-
|
|
323
|
-
On engines with `summer_run_script` (see `scene-scripting`), everything after
|
|
324
|
-
the `summer_write_file` calls above is ONE ctx script — transactional (rollback on a
|
|
325
|
-
mid-script error), no `.tres` sidecar files needed because the script builds the
|
|
326
|
-
resources directly:
|
|
327
|
-
|
|
328
|
-
```gdscript
|
|
299
|
+
summer_run_script(scenePath="res://main.tscn", source="""
|
|
329
300
|
func run(ctx):
|
|
330
|
-
var anchor
|
|
331
|
-
var fire
|
|
301
|
+
var anchor = ctx.find("Torch")
|
|
302
|
+
var fire = ctx.add_node("GPUParticles3D", "Fire", anchor)
|
|
332
303
|
fire.set_script(load("res://addons/vfx/fire/fire_controller.gd"))
|
|
333
304
|
fire.process_material = ParticleProcessMaterial.new() # controller configures it on _ready
|
|
334
305
|
var quad := QuadMesh.new()
|
|
@@ -343,13 +314,16 @@ func run(ctx):
|
|
|
343
314
|
ctx.add_node("OmniLight3D", "FireLight", anchor, {
|
|
344
315
|
"light_color": Color(1.0, 0.6, 0.25), "light_energy": 1.6, "omni_range": 6.0})
|
|
345
316
|
ctx.save_scene()
|
|
317
|
+
""")
|
|
346
318
|
```
|
|
347
319
|
|
|
348
|
-
`
|
|
349
|
-
|
|
350
|
-
`
|
|
320
|
+
`ParticleProcessMaterial` is a Material, not a Node: the script assigns it to
|
|
321
|
+
`process_material`, it is never a child. `ctx.add_node` sets owners for you. Take
|
|
322
|
+
a `summer_world_snapshot` before, and verify after with `summer_snapshot_diff`
|
|
323
|
+
(exactly `Fire` + `FireLight` added) plus a `summer_screenshot` — flames are
|
|
324
|
+
pixels, judge them as pixels.
|
|
351
325
|
|
|
352
|
-
###
|
|
326
|
+
### 6a. Verify
|
|
353
327
|
|
|
354
328
|
Every file this recipe writes is compiled code. Check it before claiming the fire works.
|
|
355
329
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
id: skill/vfx-fire
|
|
2
2
|
kind: skill
|
|
3
3
|
version: 1.0.3
|
|
4
|
-
summary: Fire effect
|
|
4
|
+
summary: "Fire effect: animated flames from GPUParticles3D, a particle shader and a noise color ramp."
|
|
5
5
|
use_when:
|
|
6
6
|
- authoring a fire visual effect — torch, campfire, bonfire, flame, burning object, candle
|
|
7
7
|
- adding fire to props, hazards, or projectiles — torches, braziers, burning wreckage, a fireball or flame jet
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: vfx-hit-spark
|
|
3
|
-
description: "Hit-spark effect
|
|
3
|
+
description: "Hit-spark effect: a one-shot burst of additive particles oriented to the surface, fired on impact."
|
|
4
4
|
license: MIT
|
|
5
5
|
compatibility: [Cursor, Claude Code, Windsurf, Codex]
|
|
6
6
|
category: visual-effects
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
id: skill/vfx-hit-spark
|
|
2
2
|
kind: skill
|
|
3
3
|
version: 1.0.2
|
|
4
|
-
summary: Hit-spark effect
|
|
4
|
+
summary: "Hit-spark effect: a one-shot burst of additive particles oriented to the surface, fired on impact."
|
|
5
5
|
use_when:
|
|
6
6
|
- authoring a hit-spark effect — impact spark, bullet hit, sword clash, ricochet, sparks at a hit point
|
|
7
7
|
- melee hits, bullet impacts, or ricochets have no visual feedback at the contact point
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: vfx-lightning
|
|
3
|
-
description: "Lightning bolt effect
|
|
3
|
+
description: "Lightning bolt effect: a jagged procedural path with a glow shader, end sparks and screen shake."
|
|
4
4
|
license: MIT
|
|
5
5
|
compatibility: [Cursor, Claude Code, Windsurf, Codex]
|
|
6
6
|
category: visual-effects
|
|
@@ -222,31 +222,22 @@ Recommended: register one `LightningCaster` as an autoload (`/root/Lightning`) s
|
|
|
222
222
|
|
|
223
223
|
Place one `LightningCaster` per "world" (or autoload it), then call from gameplay code.
|
|
224
224
|
|
|
225
|
-
|
|
226
|
-
|
|
225
|
+
Write the two files, then place the caster with ONE `summer_run_script` call
|
|
226
|
+
with an explicit `scenePath` — one transactional run, and several casters or
|
|
227
|
+
anything computed is a loop in the same script:
|
|
227
228
|
|
|
228
229
|
```
|
|
229
230
|
summer_write_file(path="res://addons/vfx/lightning/lightning.gdshader", content="<section 2>", create_only=true)
|
|
230
231
|
summer_write_file(path="res://addons/vfx/lightning/lightning_caster.gd", content="<section 3>", create_only=true)
|
|
231
232
|
|
|
232
|
-
|
|
233
|
-
summer_set_prop(scenePath="res://main.tscn", path="./World/LightningCaster", key="script", value="res://addons/vfx/lightning/lightning_caster.gd")
|
|
234
|
-
summer_set_prop(scenePath="res://main.tscn", path="./World/LightningCaster", key="bolt_color", value="Color(0.55, 0.75, 1.0)")
|
|
235
|
-
summer_set_prop(scenePath="res://main.tscn", path="./World/LightningCaster", key="trauma_amount", value=0.6)
|
|
236
|
-
summer_save_scene(scenePath="res://main.tscn")
|
|
237
|
-
```
|
|
238
|
-
|
|
239
|
-
Or, on engines with `summer_run_script` (see `scene-scripting`), the two node
|
|
240
|
-
calls collapse into one transactional ctx script — worth it when placing several
|
|
241
|
-
casters or anything computed:
|
|
242
|
-
|
|
243
|
-
```gdscript
|
|
233
|
+
summer_run_script(scenePath="res://main.tscn", source="""
|
|
244
234
|
func run(ctx):
|
|
245
|
-
var caster
|
|
235
|
+
var caster = ctx.add_node("Node3D", "LightningCaster", ctx.find("World"))
|
|
246
236
|
caster.set_script(load("res://addons/vfx/lightning/lightning_caster.gd"))
|
|
247
237
|
caster.set("bolt_color", Color(0.55, 0.75, 1.0))
|
|
248
238
|
caster.set("trauma_amount", 0.6)
|
|
249
239
|
ctx.save_scene()
|
|
240
|
+
""")
|
|
250
241
|
```
|
|
251
242
|
|
|
252
243
|
Then verify — the caster `preload`s its own shader, so a shader that failed to write
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
id: skill/vfx-lightning
|
|
2
2
|
kind: skill
|
|
3
3
|
version: 1.0.3
|
|
4
|
-
summary: Lightning bolt effect
|
|
4
|
+
summary: "Lightning bolt effect: a jagged procedural path with a glow shader, end sparks and screen shake."
|
|
5
5
|
use_when:
|
|
6
6
|
- authoring a lightning bolt effect — chain lightning, electric attack, tesla coil, shock spell, energy beam
|
|
7
7
|
- a spell, weapon, or hazard needs a jagged electric arc with glow, endpoint sparks, and camera shake
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: vfx-magic-glow
|
|
3
|
-
description: "Magic-glow effect
|
|
3
|
+
description: "Magic-glow effect: a pulsing OmniLight3D, drifting additive motes and an optional emission shader."
|
|
4
4
|
license: MIT
|
|
5
5
|
compatibility: [Cursor, Claude Code, Windsurf, Codex]
|
|
6
6
|
category: visual-effects
|
|
@@ -195,42 +195,16 @@ Node3D ("MagicGlow") [script: magic_glow.gd]
|
|
|
195
195
|
|
|
196
196
|
### 4. Wire it in (MCP calls)
|
|
197
197
|
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
(not `property`) and only accepts a string, number, or boolean.
|
|
198
|
+
Write the script once, then wire each glow with ONE `summer_run_script` call
|
|
199
|
+
with an explicit `scenePath` — one transactional run instead of a chain of
|
|
200
|
+
`summer_set_prop` calls. For an enchanted sword:
|
|
202
201
|
|
|
203
202
|
```
|
|
204
203
|
summer_write_file(path="res://addons/vfx/magic-glow/magic_glow.gd", content="<section 2>", create_only=true)
|
|
205
204
|
|
|
206
|
-
|
|
207
|
-
summer_set_prop(scenePath="res://main.tscn", path="./Player/Hand/Sword/Glow", key="script", value="res://addons/vfx/magic-glow/magic_glow.gd")
|
|
208
|
-
summer_set_prop(scenePath="res://main.tscn", path="./Player/Hand/Sword/Glow", key="glow_color", value="Color(0.55, 0.85, 1.0)")
|
|
209
|
-
summer_set_prop(scenePath="res://main.tscn", path="./Player/Hand/Sword/Glow", key="light_energy_base", value=1.2)
|
|
210
|
-
summer_set_prop(scenePath="res://main.tscn", path="./Player/Hand/Sword/Glow", key="light_energy_amplitude", value=0.6)
|
|
211
|
-
summer_set_prop(scenePath="res://main.tscn", path="./Player/Hand/Sword/Glow", key="mote_count", value=16)
|
|
212
|
-
summer_set_prop(scenePath="res://main.tscn", path="./Player/Hand/Sword/Glow", key="mote_radius", value=0.20)
|
|
213
|
-
summer_set_prop(scenePath="res://main.tscn", path="./Player/Hand/Sword/Glow", key="pulse_source_mesh", value="../Blade")
|
|
214
|
-
summer_save_scene(scenePath="res://main.tscn")
|
|
215
|
-
```
|
|
216
|
-
|
|
217
|
-
For a soul gem on a pedestal:
|
|
218
|
-
|
|
219
|
-
```
|
|
220
|
-
summer_add_node(scenePath="res://main.tscn", parent="./World/Pedestal/SoulGem", type="Node3D", name="Glow")
|
|
221
|
-
summer_set_prop(scenePath="res://main.tscn", path="./World/Pedestal/SoulGem/Glow", key="glow_color", value="Color(0.85, 0.45, 1.0)")
|
|
222
|
-
summer_set_prop(scenePath="res://main.tscn", path="./World/Pedestal/SoulGem/Glow", key="pulse_hz", value=0.4)
|
|
223
|
-
summer_set_prop(scenePath="res://main.tscn", path="./World/Pedestal/SoulGem/Glow", key="mote_count", value=32)
|
|
224
|
-
summer_set_prop(scenePath="res://main.tscn", path="./World/Pedestal/SoulGem/Glow", key="mote_radius", value=0.30)
|
|
225
|
-
```
|
|
226
|
-
|
|
227
|
-
Either wiring block is also ONE ctx script on engines with `summer_run_script`
|
|
228
|
-
(see `scene-scripting`) — the eight `summer_set_prop` calls become one
|
|
229
|
-
transactional run, and computed placement (a glow per gem in a ring) becomes a loop:
|
|
230
|
-
|
|
231
|
-
```gdscript
|
|
205
|
+
summer_run_script(scenePath="res://main.tscn", source="""
|
|
232
206
|
func run(ctx):
|
|
233
|
-
var glow
|
|
207
|
+
var glow = ctx.add_node("Node3D", "Glow", ctx.find("Sword"))
|
|
234
208
|
glow.set_script(load("res://addons/vfx/magic-glow/magic_glow.gd"))
|
|
235
209
|
glow.set("glow_color", Color(0.55, 0.85, 1.0))
|
|
236
210
|
glow.set("light_energy_base", 1.2)
|
|
@@ -239,6 +213,23 @@ func run(ctx):
|
|
|
239
213
|
glow.set("mote_radius", 0.20)
|
|
240
214
|
glow.set("pulse_source_mesh", NodePath("../Blade"))
|
|
241
215
|
ctx.save_scene()
|
|
216
|
+
""")
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
For a soul gem on a pedestal (computed placement, such as a glow per gem in a
|
|
220
|
+
ring, is a loop in the same script):
|
|
221
|
+
|
|
222
|
+
```
|
|
223
|
+
summer_run_script(scenePath="res://main.tscn", source="""
|
|
224
|
+
func run(ctx):
|
|
225
|
+
var glow = ctx.add_node("Node3D", "Glow", ctx.find("SoulGem"))
|
|
226
|
+
glow.set_script(load("res://addons/vfx/magic-glow/magic_glow.gd"))
|
|
227
|
+
glow.set("glow_color", Color(0.85, 0.45, 1.0))
|
|
228
|
+
glow.set("pulse_hz", 0.4)
|
|
229
|
+
glow.set("mote_count", 32)
|
|
230
|
+
glow.set("mote_radius", 0.30)
|
|
231
|
+
ctx.save_scene()
|
|
232
|
+
""")
|
|
242
233
|
```
|
|
243
234
|
|
|
244
235
|
Judge the pulse with `summer_screenshot framing:"camera"` — emissive glow does not
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
id: skill/vfx-magic-glow
|
|
2
2
|
kind: skill
|
|
3
3
|
version: 1.0.2
|
|
4
|
-
summary: Magic-glow effect
|
|
4
|
+
summary: "Magic-glow effect: a pulsing OmniLight3D, drifting additive motes and an optional emission shader."
|
|
5
5
|
use_when:
|
|
6
6
|
- authoring a magic-glow effect — enchanted item, soul gem, pulsing aura, rune glow, magical orb, wisp
|
|
7
7
|
- an item, altar, or portal should read as magical or important with a pulsing light and drifting motes
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: vfx-muzzle-flash
|
|
3
|
-
description: "Muzzle-flash effect
|
|
3
|
+
description: "Muzzle-flash effect: a one-shot ~80 ms burst at a gun barrel, from particles or a star-burst quad."
|
|
4
4
|
license: MIT
|
|
5
5
|
compatibility: [Cursor, Claude Code, Windsurf, Codex]
|
|
6
6
|
category: visual-effects
|
|
@@ -201,54 +201,39 @@ Node3D ("MuzzleFlash") [script: muzzle_flash.gd]
|
|
|
201
201
|
|
|
202
202
|
Place the node at the **barrel tip** of the weapon. If your gun model has a `BarrelTip` Marker3D, parent there directly.
|
|
203
203
|
|
|
204
|
-
|
|
205
|
-
|
|
204
|
+
Write the two files, then mount the flash with ONE `summer_run_script` call with
|
|
205
|
+
an explicit `scenePath` — one transactional run, and mounting a flash on every
|
|
206
|
+
weapon in the scene is a loop instead of a chain of calls per gun:
|
|
206
207
|
|
|
207
208
|
```
|
|
208
209
|
summer_write_file(path="res://addons/vfx/muzzle-flash/muzzle_flash.gdshader", content="<section 2>", create_only=true)
|
|
209
210
|
summer_write_file(path="res://addons/vfx/muzzle-flash/muzzle_flash.gd", content="<section 3>", create_only=true)
|
|
210
211
|
|
|
211
|
-
|
|
212
|
-
summer_set_prop(scenePath="res://main.tscn", path="./Player/Weapon/BarrelTip/MuzzleFlash", key="script", value="res://addons/vfx/muzzle-flash/muzzle_flash.gd")
|
|
213
|
-
summer_set_prop(scenePath="res://main.tscn", path="./Player/Weapon/BarrelTip/MuzzleFlash", key="flash_size", value=0.6)
|
|
214
|
-
summer_set_prop(scenePath="res://main.tscn", path="./Player/Weapon/BarrelTip/MuzzleFlash", key="flash_duration", value=0.08)
|
|
215
|
-
summer_set_prop(scenePath="res://main.tscn", path="./Player/Weapon/BarrelTip/MuzzleFlash", key="light_energy", value=4.0)
|
|
216
|
-
summer_save_scene(scenePath="res://main.tscn")
|
|
217
|
-
```
|
|
218
|
-
|
|
219
|
-
Then in your weapon script, on `fire()`:
|
|
220
|
-
|
|
221
|
-
```gdscript
|
|
222
|
-
$BarrelTip/MuzzleFlash.fire()
|
|
223
|
-
```
|
|
224
|
-
|
|
225
|
-
Or connect the weapon's `fired` signal in the scene:
|
|
226
|
-
|
|
227
|
-
```
|
|
228
|
-
summer_connect_signal(scenePath="res://main.tscn", emitter="./Player/Weapon", signal="fired", receiver="./Player/Weapon/BarrelTip/MuzzleFlash", method="fire")
|
|
229
|
-
```
|
|
230
|
-
|
|
231
|
-
### 5a. One-script wiring (summer_run_script)
|
|
232
|
-
|
|
233
|
-
On engines with `summer_run_script` (see `scene-scripting`), the node calls
|
|
234
|
-
above are ONE transactional ctx script — and mounting a flash on every weapon in the
|
|
235
|
-
scene becomes a loop instead of a CRUD chain per gun:
|
|
236
|
-
|
|
237
|
-
```gdscript
|
|
212
|
+
summer_run_script(scenePath="res://main.tscn", source="""
|
|
238
213
|
func run(ctx):
|
|
239
|
-
var tip
|
|
240
|
-
var flash
|
|
214
|
+
var tip = ctx.find("BarrelTip")
|
|
215
|
+
var flash = ctx.add_node("Node3D", "MuzzleFlash", tip)
|
|
241
216
|
flash.set_script(load("res://addons/vfx/muzzle-flash/muzzle_flash.gd"))
|
|
242
217
|
flash.set("flash_size", 0.6)
|
|
243
218
|
flash.set("flash_duration", 0.08)
|
|
244
219
|
flash.set("light_energy", 4.0)
|
|
245
|
-
var weapon
|
|
220
|
+
var weapon = ctx.find("Weapon")
|
|
246
221
|
weapon.connect("fired", Callable(flash, "fire"), CONNECT_PERSIST)
|
|
247
|
-
# CONNECT_PERSIST is required
|
|
222
|
+
# CONNECT_PERSIST is required: a bare connect() works live but is NOT saved
|
|
248
223
|
ctx.save_scene()
|
|
224
|
+
""")
|
|
249
225
|
```
|
|
250
226
|
|
|
251
|
-
|
|
227
|
+
Then in your weapon script, on `fire()`:
|
|
228
|
+
|
|
229
|
+
```gdscript
|
|
230
|
+
$BarrelTip/MuzzleFlash.fire()
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
The script above already connects the weapon's `fired` signal to the flash; the
|
|
234
|
+
one-call form is `summer_connect_signal(scenePath="res://main.tscn", emitter="./Player/Weapon", signal="fired", receiver="./Player/Weapon/BarrelTip/MuzzleFlash", method="fire")`.
|
|
235
|
+
|
|
236
|
+
### 5a. Verify
|
|
252
237
|
|
|
253
238
|
`muzzle_flash.gd` `preload`s its own shader, so a shader that failed to write takes
|
|
254
239
|
the script down at parse time. Check before firing a shot.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
id: skill/vfx-muzzle-flash
|
|
2
2
|
kind: skill
|
|
3
3
|
version: 1.0.3
|
|
4
|
-
summary: Muzzle-flash effect
|
|
4
|
+
summary: "Muzzle-flash effect: a one-shot ~80 ms burst at a gun barrel, from particles or a star-burst quad."
|
|
5
5
|
use_when:
|
|
6
6
|
- authoring a muzzle-flash effect — gun fire, weapon flash, barrel flash, spell-cast burst at a hand
|
|
7
7
|
- a gun or spell-casting hand shoots with no visible flash at the barrel or palm
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: vfx-smoke
|
|
3
|
-
description: "Smoke effect
|
|
3
|
+
description: "Smoke effect: a rising column or puff of soft particles with a noise and density falloff shader."
|
|
4
4
|
license: MIT
|
|
5
5
|
compatibility: [Cursor, Claude Code, Windsurf, Codex]
|
|
6
6
|
category: visual-effects
|
|
@@ -228,42 +228,19 @@ child nodes, and `ParticleProcessMaterial` is a `Material` — you cannot
|
|
|
228
228
|
|
|
229
229
|
### 5. Wire it in (MCP calls)
|
|
230
230
|
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
231
|
+
Write the three files, then wire the emitter with ONE `summer_run_script` call
|
|
232
|
+
with an explicit `scenePath` — transactional, and it builds the QuadMesh +
|
|
233
|
+
ShaderMaterial resources directly instead of `.tres` sidecars. For chimney
|
|
234
|
+
smoke, parent the Smoke just above the heat source:
|
|
235
235
|
|
|
236
236
|
```
|
|
237
237
|
summer_write_file(path="res://addons/vfx/_building-blocks/noise-3d-fbm.gdshaderinc", content="<from this skill>", create_only=true)
|
|
238
238
|
summer_write_file(path="res://addons/vfx/smoke/smoke.gdshader", content="<section 2>", create_only=true)
|
|
239
239
|
summer_write_file(path="res://addons/vfx/smoke/smoke_controller.gd", content="<section 3>", create_only=true)
|
|
240
240
|
|
|
241
|
-
|
|
242
|
-
summer_set_prop(scenePath="res://main.tscn", path="./World/Cottage/Chimney/Smoke", key="script", value="res://addons/vfx/smoke/smoke_controller.gd")
|
|
243
|
-
summer_set_prop(scenePath="res://main.tscn", path="./World/Cottage/Chimney/Smoke", key="position", value="Vector3(0, 0.3, 0)")
|
|
244
|
-
summer_set_prop(scenePath="res://main.tscn", path="./World/Cottage/Chimney/Smoke", key="rise_height", value=4.0)
|
|
245
|
-
summer_set_prop(scenePath="res://main.tscn", path="./World/Cottage/Chimney/Smoke", key="particle_count", value=48)
|
|
246
|
-
summer_set_prop(scenePath="res://main.tscn", path="./World/Cottage/Chimney/Smoke", key="wind_direction", value="Vector3(0.4, 0, 0.1)")
|
|
247
|
-
summer_save_scene(scenePath="res://main.tscn")
|
|
248
|
-
```
|
|
249
|
-
|
|
250
|
-
For pairing with a fire:
|
|
251
|
-
|
|
252
|
-
```
|
|
253
|
-
summer_add_node(scenePath="res://main.tscn", parent="./World/Campfire", type="GPUParticles3D", name="Smoke")
|
|
254
|
-
summer_set_prop(scenePath="res://main.tscn", path="./World/Campfire/Smoke", key="position", value="Vector3(0, 1.5, 0)") # above flame top
|
|
255
|
-
summer_set_prop(scenePath="res://main.tscn", path="./World/Campfire/Smoke", key="rise_height", value=3.0)
|
|
256
|
-
```
|
|
257
|
-
|
|
258
|
-
### 5a. One-script wiring (summer_run_script)
|
|
259
|
-
|
|
260
|
-
On engines with `summer_run_script` (see `scene-scripting`), the node wiring
|
|
261
|
-
above is ONE ctx script — transactional, and it builds the QuadMesh + ShaderMaterial
|
|
262
|
-
resources directly instead of `.tres` sidecars:
|
|
263
|
-
|
|
264
|
-
```gdscript
|
|
241
|
+
summer_run_script(scenePath="res://main.tscn", source="""
|
|
265
242
|
func run(ctx):
|
|
266
|
-
var smoke
|
|
243
|
+
var smoke = ctx.add_node("GPUParticles3D", "Smoke", ctx.find("Chimney"))
|
|
267
244
|
smoke.set_script(load("res://addons/vfx/smoke/smoke_controller.gd"))
|
|
268
245
|
smoke.process_material = ParticleProcessMaterial.new()
|
|
269
246
|
var quad := QuadMesh.new()
|
|
@@ -277,11 +254,16 @@ func run(ctx):
|
|
|
277
254
|
smoke.set("particle_count", 48)
|
|
278
255
|
smoke.set("wind_direction", Vector3(0.4, 0, 0.1))
|
|
279
256
|
ctx.save_scene()
|
|
257
|
+
""")
|
|
280
258
|
```
|
|
281
259
|
|
|
260
|
+
For pairing with a fire, run the same script with `ctx.find("Campfire")` as the
|
|
261
|
+
parent, `position = Vector3(0, 1.5, 0)` (above the flame top) and
|
|
262
|
+
`rise_height` 3.0.
|
|
263
|
+
|
|
282
264
|
Verify with `summer_snapshot_diff` (exactly one node added) and a `summer_screenshot`.
|
|
283
265
|
|
|
284
|
-
###
|
|
266
|
+
### 5a. Verify
|
|
285
267
|
|
|
286
268
|
The shader and the controller are compiled code. Check them before tuning anything.
|
|
287
269
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
id: skill/vfx-smoke
|
|
2
2
|
kind: skill
|
|
3
3
|
version: 1.0.2
|
|
4
|
-
summary: Smoke effect
|
|
4
|
+
summary: "Smoke effect: a rising column or puff of soft particles with a noise and density falloff shader."
|
|
5
5
|
use_when:
|
|
6
6
|
- authoring a smoke effect — smoke trail, puff, chimney smoke, steam, fog cloud, explosion smoke
|
|
7
7
|
- a chimney, campfire, explosion, or vent needs a rising smoke column or puff in a 3D scene
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: vfx-water-ripple
|
|
3
|
-
description: "Water-ripple effect
|
|
3
|
+
description: "Water-ripple effect: animated normal-distortion ripples on a water plane or Decal, set off by impacts."
|
|
4
4
|
license: MIT
|
|
5
5
|
compatibility: [Cursor, Claude Code, Windsurf, Codex]
|
|
6
6
|
category: visual-effects
|
|
@@ -221,54 +221,35 @@ MeshInstance3D ("Water") [script: water_ripple_surface.gd]
|
|
|
221
221
|
|
|
222
222
|
### 5. Wire it in (MCP calls)
|
|
223
223
|
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
224
|
+
Write the two files, then wire the surface with ONE `summer_run_script` call
|
|
225
|
+
with an explicit `scenePath` — transactional, and it builds the subdivided
|
|
226
|
+
PlaneMesh directly, so no `plane.tres` sidecar is needed:
|
|
227
227
|
|
|
228
228
|
```
|
|
229
229
|
summer_write_file(path="res://addons/vfx/water-ripple/water_ripple.gdshader", content="<section 2>", create_only=true)
|
|
230
230
|
summer_write_file(path="res://addons/vfx/water-ripple/water_ripple_surface.gd", content="<section 3>", create_only=true)
|
|
231
231
|
|
|
232
|
-
|
|
233
|
-
summer_set_prop(scenePath="res://main.tscn", path="./World/Puddle", key="script", value="res://addons/vfx/water-ripple/water_ripple_surface.gd")
|
|
234
|
-
summer_set_prop(scenePath="res://main.tscn", path="./World/Puddle", key="position", value="Vector3(0, 0.01, 0)")
|
|
235
|
-
|
|
236
|
-
# Whole resources are assigned by path with summer_set_prop.
|
|
237
|
-
summer_set_prop(scenePath="res://main.tscn", path="./World/Puddle", key="mesh", value="res://addons/vfx/water-ripple/plane.tres")
|
|
238
|
-
# `normal_texture` is an exported script property on the controller, not a
|
|
239
|
-
# MeshInstance3D property — MeshInstance3D has no `normal_texture`.
|
|
240
|
-
summer_set_prop(scenePath="res://main.tscn", path="./World/Puddle", key="normal_texture", value="res://addons/vfx/water-ripple/water_normals.png")
|
|
241
|
-
|
|
242
|
-
# subProperty is required — this is how you reach into the PlaneMesh itself.
|
|
243
|
-
summer_set_resource_property(scenePath="res://main.tscn", nodePath="./World/Puddle", resourceProperty="mesh", subProperty="subdivide_width", value=32)
|
|
244
|
-
summer_set_resource_property(scenePath="res://main.tscn", nodePath="./World/Puddle", resourceProperty="mesh", subProperty="subdivide_depth", value=32)
|
|
245
|
-
|
|
246
|
-
summer_save_scene(scenePath="res://main.tscn")
|
|
247
|
-
```
|
|
248
|
-
|
|
249
|
-
### 5a. One-script wiring (summer_run_script)
|
|
250
|
-
|
|
251
|
-
On engines with `summer_run_script` (see `scene-scripting`), the node and
|
|
252
|
-
resource wiring is ONE transactional ctx script — and it builds the subdivided
|
|
253
|
-
PlaneMesh directly, so the `plane.tres` sidecar disappears:
|
|
254
|
-
|
|
255
|
-
```gdscript
|
|
232
|
+
summer_run_script(scenePath="res://main.tscn", source="""
|
|
256
233
|
func run(ctx):
|
|
257
|
-
var puddle
|
|
234
|
+
var puddle = ctx.add_node("MeshInstance3D", "Puddle", ctx.find("World"))
|
|
258
235
|
var plane := PlaneMesh.new()
|
|
259
236
|
plane.subdivide_width = 32
|
|
260
237
|
plane.subdivide_depth = 32
|
|
261
238
|
puddle.mesh = plane
|
|
262
239
|
puddle.position = Vector3(0, 0.01, 0)
|
|
263
240
|
puddle.set_script(load("res://addons/vfx/water-ripple/water_ripple_surface.gd"))
|
|
241
|
+
# normal_texture is an exported property of the controller script, not of MeshInstance3D
|
|
264
242
|
puddle.set("normal_texture", load("res://addons/vfx/water-ripple/water_normals.png"))
|
|
265
243
|
ctx.save_scene()
|
|
244
|
+
""")
|
|
266
245
|
```
|
|
267
246
|
|
|
268
247
|
Set the mesh BEFORE the script if the controller reads it in `_ready`; either way,
|
|
269
|
-
`ctx.add_node` has already owned the node, so it survives the save.
|
|
248
|
+
`ctx.add_node` has already owned the node, so it survives the save. Tuning one
|
|
249
|
+
mesh value later is one `summer_set_resource_property` call (`resourceProperty="mesh"`,
|
|
250
|
+
`subProperty="subdivide_width"`): it reaches into a resource, it never assigns one.
|
|
270
251
|
|
|
271
|
-
###
|
|
252
|
+
### 5a. Verify
|
|
272
253
|
|
|
273
254
|
The shader and the controller are compiled code, and the controller `preload`s the
|
|
274
255
|
shader — a shader that failed to write takes the script down at parse time.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
id: skill/vfx-water-ripple
|
|
2
2
|
kind: skill
|
|
3
3
|
version: 1.0.2
|
|
4
|
-
summary: Water-ripple effect
|
|
4
|
+
summary: "Water-ripple effect: animated normal-distortion ripples on a water plane or Decal, set off by impacts."
|
|
5
5
|
use_when:
|
|
6
6
|
- authoring a water-ripple effect — raindrop ripples, splash ripples, footstep in a puddle, fish jumps
|
|
7
7
|
- rain, footsteps, or falling objects should disturb a water surface with spreading ripples
|