summer-engine 3.8.0 → 4.2.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 +24 -22
- package/.codex-plugin/plugin.json +18 -22
- package/.cursor-plugin/plugin.json +8 -14
- package/.factory-plugin/plugin.json +6 -13
- package/AGENTS.md +19 -12
- package/CHANGELOG.md +133 -0
- package/GEMINI.md +3 -3
- package/README.md +118 -37
- 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/config.js +3 -2
- package/dist/cli/commands/create.js +12 -3
- package/dist/cli/commands/list.d.ts +5 -0
- package/dist/cli/commands/list.js +30 -13
- package/dist/cli/commands/login.d.ts +27 -0
- package/dist/cli/commands/login.js +58 -12
- package/dist/cli/commands/memory.js +6 -2
- package/dist/cli/commands/ops.d.ts +64 -0
- package/dist/cli/commands/ops.js +329 -0
- package/dist/cli/commands/setup.d.ts +4 -0
- package/dist/cli/commands/setup.js +254 -26
- package/dist/cli/commands/skills.js +28 -11
- package/dist/cli/commands/status.d.ts +26 -0
- package/dist/cli/commands/status.js +36 -21
- 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 +33 -10
- package/dist/core/capabilities/apps.js +25 -12
- package/dist/core/capabilities/audit/args.d.ts +6 -6
- 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 +4 -4
- 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/hdri-import.d.ts +2 -2
- package/dist/core/capabilities/motion-generation.d.ts +2 -2
- 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/placement.d.ts +23 -23
- package/dist/core/capabilities/publish-build.js +2 -0
- package/dist/core/capabilities/runtime-control.d.ts +42 -42
- 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/seeing/args.d.ts +16 -16
- 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/capabilities/ui-control.d.ts +2 -2
- package/dist/core/capabilities/world-snapshot.d.ts +4 -4
- 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.d.ts +2 -2
- package/dist/core/library-search.js +2 -1
- package/dist/core/oauth.js +4 -0
- package/dist/core/ops/areas.d.ts +11 -0
- package/dist/core/ops/areas.js +24 -0
- package/dist/core/ops/catalog.d.ts +45 -0
- package/dist/core/ops/catalog.js +157 -0
- package/dist/core/ops/cloud.d.ts +64 -0
- package/dist/core/ops/cloud.js +198 -0
- package/dist/core/ops/contract.d.ts +120 -0
- package/dist/core/ops/contract.js +134 -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/public-catalog.d.ts +48 -0
- package/dist/core/ops/public-catalog.js +56 -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 +8 -0
- package/dist/core/ops/search.js +187 -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 +27 -6
- package/dist/installer/agent-table.d.ts +12 -0
- package/dist/installer/agent-table.js +33 -9
- package/dist/installer/cli-permissions.d.ts +65 -0
- package/dist/installer/cli-permissions.js +182 -0
- package/dist/installer/setup.d.ts +4 -0
- package/dist/installer/setup.js +12 -4
- package/dist/installer/skills-refresh.d.ts +29 -0
- package/dist/installer/skills-refresh.js +261 -0
- package/dist/installer/version-check.d.ts +51 -11
- package/dist/installer/version-check.js +147 -37
- 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 +453 -0
- package/dist/mcp/server.d.ts +45 -11
- package/dist/mcp/server.js +263 -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/dist/project-memory/agent-instructions.d.ts +47 -0
- package/dist/project-memory/agent-instructions.js +226 -0
- package/gemini-extension.json +6 -13
- package/hooks/pre-commit-doctor.sh +5 -4
- package/hooks/session-start.sh +24 -28
- package/integrations/README.md +1 -1
- package/integrations/claude/README.md +6 -0
- package/integrations/claude/manifest-target.json +4 -0
- package/integrations/claude-desktop/README.md +1 -1
- package/integrations/copilot-jetbrains/README.md +1 -1
- package/integrations/gemini/README.md +11 -0
- 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/integrations/windsurf/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 +69 -28
- package/library/skills/3d-lighting/resource.yaml +1 -1
- package/library/skills/README.md +121 -118
- package/library/skills/adaptive-music/SKILL.md +40 -23
- package/library/skills/adaptive-music/resource.yaml +1 -1
- package/library/skills/agent-playtesting/SKILL.md +23 -1
- package/library/skills/agent-playtesting/resource.yaml +1 -1
- package/library/skills/ai-characters-in-games/SKILL.md +16 -1
- package/library/skills/ai-characters-in-games/resource.yaml +1 -1
- package/library/skills/ambient-bed/SKILL.md +38 -13
- package/library/skills/ambient-bed/resource.yaml +1 -1
- package/library/skills/animated-loop/SKILL.md +60 -32
- package/library/skills/animated-loop/resource.yaml +1 -1
- package/library/skills/animation-tree/SKILL.md +27 -1
- package/library/skills/animation-tree/resource.yaml +1 -1
- package/library/skills/art-direction/SKILL.md +17 -3
- package/library/skills/art-direction/resource.yaml +1 -1
- package/library/skills/asset-strategy/SKILL.md +51 -4
- package/library/skills/asset-strategy/resource.yaml +2 -1
- package/library/skills/audio-direction/SKILL.md +26 -10
- package/library/skills/audio-direction/resource.yaml +1 -1
- package/library/skills/auto-fire-targeting/SKILL.md +15 -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 +14 -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 +11 -1
- package/library/skills/browse-templates/resource.yaml +1 -1
- package/library/skills/camera-rigs/SKILL.md +22 -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 +28 -4
- package/library/skills/character-animation-wiring/resource.yaml +1 -1
- package/library/skills/character-model/SKILL.md +83 -47
- package/library/skills/character-model/resource.yaml +1 -1
- package/library/skills/character-movement/SKILL.md +27 -3
- package/library/skills/character-movement/resource.yaml +1 -1
- package/library/skills/character-portrait/SKILL.md +39 -19
- package/library/skills/character-portrait/resource.yaml +1 -1
- package/library/skills/cinematic-cutscene/SKILL.md +79 -46
- package/library/skills/cinematic-cutscene/resource.yaml +1 -1
- package/library/skills/combat-basics/SKILL.md +20 -1
- package/library/skills/combat-basics/resource.yaml +1 -1
- package/library/skills/compatibility-renderer-traps/SKILL.md +12 -1
- package/library/skills/compatibility-renderer-traps/resource.yaml +1 -1
- package/library/skills/concept-art/SKILL.md +29 -12
- package/library/skills/concept-art/resource.yaml +1 -1
- package/library/skills/concept-to-level/SKILL.md +258 -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 +37 -13
- package/library/skills/create-asset-sheet/resource.yaml +1 -1
- package/library/skills/debug/SKILL.md +34 -2
- package/library/skills/debug/resource.yaml +1 -1
- package/library/skills/debugging-game-feel/SKILL.md +13 -1
- package/library/skills/debugging-game-feel/resource.yaml +1 -1
- package/library/skills/design-level/SKILL.md +40 -35
- package/library/skills/design-level/resource.yaml +1 -1
- package/library/skills/design-mechanic/SKILL.md +18 -1
- package/library/skills/design-mechanic/resource.yaml +1 -1
- package/library/skills/design-npc/SKILL.md +43 -24
- package/library/skills/design-npc/resource.yaml +1 -1
- package/library/skills/diagnosing-perf-regressions/SKILL.md +13 -1
- package/library/skills/diagnosing-perf-regressions/resource.yaml +1 -1
- package/library/skills/driving-the-editor-ui/SKILL.md +24 -1
- package/library/skills/driving-the-editor-ui/resource.yaml +1 -1
- package/library/skills/environment-kit/SKILL.md +43 -16
- package/library/skills/environment-kit/resource.yaml +1 -1
- package/library/skills/export-and-ship/SKILL.md +29 -6
- package/library/skills/export-and-ship/resource.yaml +1 -1
- package/library/skills/fabricating-assets/SKILL.md +30 -7
- package/library/skills/fabricating-assets/resource.yaml +3 -3
- package/library/skills/facial-and-lipsync/SKILL.md +36 -15
- package/library/skills/facial-and-lipsync/resource.yaml +1 -1
- package/library/skills/fps-controller/SKILL.md +50 -41
- package/library/skills/fps-controller/resource.yaml +1 -1
- package/library/skills/game-feel/SKILL.md +34 -8
- package/library/skills/game-feel/resource.yaml +1 -1
- package/library/skills/gameskill/SKILL.md +15 -4
- package/library/skills/gameskill/resource.yaml +1 -1
- package/library/skills/gdscript-patterns/SKILL.md +16 -1
- package/library/skills/gdscript-patterns/resource.yaml +1 -1
- package/library/skills/generate-motion/SKILL.md +51 -21
- package/library/skills/generate-motion/resource.yaml +1 -1
- package/library/skills/godogen-visual-proof-game-generation/SKILL.md +18 -1
- package/library/skills/godogen-visual-proof-game-generation/resource.yaml +1 -0
- package/library/skills/grow-analytics/SKILL.md +13 -3
- package/library/skills/grow-analytics/resource.yaml +1 -1
- package/library/skills/headless-scripting/SKILL.md +14 -1
- package/library/skills/headless-scripting/resource.yaml +1 -1
- package/library/skills/in-game-purchases/SKILL.md +12 -1
- package/library/skills/in-game-purchases/resource.yaml +1 -1
- package/library/skills/instantiate-asset-pack/SKILL.md +19 -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 +33 -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 +13 -1
- package/library/skills/multiplayer/resource.yaml +1 -1
- package/library/skills/multiplayer-movement/SKILL.md +19 -1
- package/library/skills/multiplayer-movement/resource.yaml +1 -1
- package/library/skills/multiplayer-project/SKILL.md +18 -1
- package/library/skills/multiplayer-project/resource.yaml +1 -1
- package/library/skills/multiplayer-publish/SKILL.md +25 -7
- package/library/skills/multiplayer-publish/resource.yaml +3 -3
- package/library/skills/multiplayer-state/SKILL.md +17 -1
- package/library/skills/multiplayer-state/resource.yaml +1 -1
- package/library/skills/multiplayer-testing/SKILL.md +16 -1
- package/library/skills/multiplayer-testing/resource.yaml +1 -1
- package/library/skills/music-track/SKILL.md +38 -13
- package/library/skills/music-track/resource.yaml +1 -1
- package/library/skills/navigate-summer/SKILL.md +26 -9
- package/library/skills/navigate-summer/resource.yaml +1 -1
- package/library/skills/new-project/SKILL.md +12 -1
- package/library/skills/new-project/resource.yaml +1 -1
- package/library/skills/organic-model/SKILL.md +48 -18
- package/library/skills/organic-model/resource.yaml +1 -1
- package/library/skills/pixel-art/SKILL.md +42 -23
- package/library/skills/pixel-art/resource.yaml +1 -1
- package/library/skills/play/SKILL.md +19 -1
- package/library/skills/play/resource.yaml +1 -1
- package/library/skills/playtesting-a-feature/SKILL.md +24 -1
- package/library/skills/playtesting-a-feature/resource.yaml +1 -1
- package/library/skills/procedural-animation/SKILL.md +38 -16
- package/library/skills/procedural-animation/resource.yaml +1 -1
- package/library/skills/prop-model/SKILL.md +48 -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 +43 -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 +13 -1
- package/library/skills/release-readiness/resource.yaml +1 -1
- package/library/skills/remote-deploy/SKILL.md +15 -1
- package/library/skills/remote-deploy/resource.yaml +1 -1
- package/library/skills/retarget/SKILL.md +43 -20
- package/library/skills/retarget/resource.yaml +1 -1
- package/library/skills/running-in-the-cloud/SKILL.md +11 -1
- package/library/skills/running-in-the-cloud/resource.yaml +1 -1
- package/library/skills/save-load/SKILL.md +16 -1
- package/library/skills/save-load/resource.yaml +1 -1
- package/library/skills/scene-composition/SKILL.md +18 -1
- package/library/skills/scene-composition/resource.yaml +1 -1
- package/library/skills/scene-hierarchy-design/SKILL.md +26 -2
- package/library/skills/scene-hierarchy-design/resource.yaml +1 -1
- package/library/skills/scene-scripting/SKILL.md +96 -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 +24 -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 +12 -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 +47 -21
- package/library/skills/skybox-panorama/resource.yaml +1 -1
- package/library/skills/sound-effect/SKILL.md +52 -20
- package/library/skills/sound-effect/resource.yaml +1 -1
- package/library/skills/spatial-placement/SKILL.md +44 -9
- package/library/skills/spatial-placement/resource.yaml +1 -1
- package/library/skills/sprite-sheet/SKILL.md +55 -27
- package/library/skills/sprite-sheet/resource.yaml +1 -1
- package/library/skills/store-art/SKILL.md +14 -3
- package/library/skills/store-art/resource.yaml +2 -2
- package/library/skills/store-listing/SKILL.md +13 -3
- package/library/skills/store-listing/resource.yaml +2 -2
- package/library/skills/summer-analytics/SKILL.md +22 -5
- package/library/skills/summer-analytics/resource.yaml +2 -2
- package/library/skills/summer-apps/SKILL.md +77 -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 +86 -0
- package/library/skills/summer-assets/resource.yaml +34 -0
- package/library/skills/summer-cli/SKILL.md +133 -0
- package/library/skills/summer-cli/resource.yaml +31 -0
- package/library/skills/summer-friends/SKILL.md +14 -0
- package/library/skills/summer-leaderboards/SKILL.md +16 -0
- package/library/skills/summer-match-results/SKILL.md +17 -0
- package/library/skills/summer-matchmaking/SKILL.md +17 -0
- package/library/skills/summer-parties/SKILL.md +14 -0
- package/library/skills/summer-player-data/SKILL.md +14 -0
- package/library/skills/summer-store/SKILL.md +16 -1
- package/library/skills/summer-world-chat/SKILL.md +14 -0
- package/library/skills/summer-world-saves/SKILL.md +14 -0
- package/library/skills/text-to-motion/SKILL.md +45 -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 +37 -15
- package/library/skills/tileable-texture/resource.yaml +1 -1
- package/library/skills/trailer-shot/SKILL.md +46 -24
- package/library/skills/trailer-shot/resource.yaml +1 -1
- package/library/skills/tune-performance/SKILL.md +32 -6
- package/library/skills/tune-performance/resource.yaml +1 -1
- package/library/skills/ui-basics/SKILL.md +55 -36
- package/library/skills/ui-basics/resource.yaml +1 -1
- package/library/skills/ui-graphics/SKILL.md +64 -38
- package/library/skills/ui-graphics/resource.yaml +1 -1
- package/library/skills/use-widget-asset/SKILL.md +15 -1
- package/library/skills/use-widget-asset/resource.yaml +1 -1
- package/library/skills/using-summer/SKILL.md +32 -5
- package/library/skills/using-summer/resource.yaml +3 -2
- package/library/skills/vehicle-model/SKILL.md +92 -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 +31 -2
- package/library/skills/verifying-scenes/resource.yaml +1 -1
- package/library/skills/vfx-dissolve/SKILL.md +21 -2
- package/library/skills/vfx-dissolve/resource.yaml +1 -1
- package/library/skills/vfx-fire/SKILL.md +41 -41
- package/library/skills/vfx-fire/resource.yaml +1 -1
- package/library/skills/vfx-hit-spark/SKILL.md +24 -1
- package/library/skills/vfx-hit-spark/resource.yaml +1 -1
- package/library/skills/vfx-lightning/SKILL.md +30 -16
- package/library/skills/vfx-lightning/resource.yaml +1 -1
- package/library/skills/vfx-magic-glow/SKILL.md +46 -32
- package/library/skills/vfx-magic-glow/resource.yaml +1 -1
- package/library/skills/vfx-muzzle-flash/SKILL.md +43 -35
- package/library/skills/vfx-muzzle-flash/resource.yaml +1 -1
- package/library/skills/vfx-smoke/SKILL.md +39 -31
- package/library/skills/vfx-smoke/resource.yaml +1 -1
- package/library/skills/vfx-water-ripple/SKILL.md +35 -31
- package/library/skills/vfx-water-ripple/resource.yaml +1 -1
- package/library/skills/voice-line/SKILL.md +87 -40
- package/library/skills/voice-line/resource.yaml +1 -1
- package/library/skills/web-and-touch-input/SKILL.md +20 -1
- package/library/skills/web-and-touch-input/resource.yaml +1 -1
- package/library/skills/web-compatibility-look/SKILL.md +21 -1
- package/library/skills/web-compatibility-look/resource.yaml +1 -1
- package/library/skills/world-building-3d/SKILL.md +29 -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 +8 -5
- package/registry/generated/counts.json +2 -2
- package/registry/generated/gemini-extension.json +6 -13
- package/registry/generated/index.json +482 -349
- package/registry/generated/marketplace.claude.json +2 -13
- package/registry/generated/plugin.claude-directory.json +168 -0
- package/registry/generated/plugin.claude.json +24 -22
- package/registry/generated/plugin.codex.json +18 -22
- package/registry/generated/plugin.cursor.json +8 -14
- package/registry/generated/plugin.factory.json +6 -13
- package/registry/generated/server.json +43 -0
- package/registry/generated/skills-index.md +121 -118
- package/registry/generated/skills-registry.json +167 -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 +1241 -0
- package/registry/operations/public-catalog.json +33160 -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: fabricating-assets
|
|
3
|
-
description: "Fabricate meshes with a
|
|
3
|
+
description: "Fabricate meshes with a Blender script (summer_fabricate_3d): exact-size kits, VFX meshes, post-processing."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Fabricating Assets
|
|
@@ -22,10 +22,10 @@ Three facts shape every use:
|
|
|
22
22
|
| Asset class | First route | Second | Why |
|
|
23
23
|
|---|---|---|---|
|
|
24
24
|
| Blockout / placeholder | `scene-scripting` primitives or CSG | fabricate | Must be instant and in-scene; no process spawn is justified |
|
|
25
|
-
| Generic hard-surface prop ("a barrel") | `
|
|
26
|
-
| Bespoke prop ("the artifact from our GDD") | `
|
|
25
|
+
| Generic hard-surface prop ("a barrel") | `assets.search` → `summer_import_asset` (`prop-model`) | `assets.generate_3d` | The free library plus `target_size` beats paid generation and a 2-minute wait, in a consistent style |
|
|
26
|
+
| Bespoke prop ("the artifact from our GDD") | `assets.generate_3d` | fabricate | Image-to-3D is exactly what generation is for; fabricate when exact dimensions or parametric variants matter |
|
|
27
27
|
| **Modular kit** (walls, pipes, fences, rails that snap) | **fabricate** | generated kit (`environment-kit`) | Generation cannot hold dimensions and style across 30 pieces; array + boolean + bevel + one material is the classic kit workflow |
|
|
28
|
-
| Characters (rigged, animated) | `
|
|
28
|
+
| Characters (rigged, animated) | `assets.generate_3d` (`character-model`) | library | Scripted organic modelling is the documented failure mode; fabrication has no path to competitive organics blind |
|
|
29
29
|
| Environments / terrain | in-engine terrain + library set dressing | generation for landmarks | Terrain wants interactive tools; dressing wants scatter |
|
|
30
30
|
| Materials / textures / skies | library (`summer_import_hdri`, texture packs) | generation | Fabricate only to bake a procedural material to images |
|
|
31
31
|
| **VFX meshes** (shatter pieces, trails, sweeps, LOD chains) | **fabricate** | in-engine | Bisect/fracture, curve sweeps, decimate are one-liners in bpy and absent in the engine |
|
|
@@ -146,7 +146,7 @@ Factory startup disables add-ons, so cell-fracture operators are not available.
|
|
|
146
146
|
|
|
147
147
|
| `failure_reason` | What happened | Do |
|
|
148
148
|
|---|---|---|
|
|
149
|
-
| `engine_lacks_op` | This engine build predates FabricateMesh (nothing was sent) | Route to `
|
|
149
|
+
| `engine_lacks_op` | This engine build predates FabricateMesh (nothing was sent) | Route to `assets.generate_3d`, `assets.search` / `summer_import_asset`, or `summer_run_script` blockout geometry; tell the user an engine update enables fabrication |
|
|
150
150
|
| `blender_not_found` | No usable Blender executable (see `tried`) | Relay the one-line decision above; never guess a path or install anything |
|
|
151
151
|
| `blender_launch_failed` | The executable exists but did not start (permissions, broken install, wrong architecture) | Show the `error` and `output` tail to the user; a different `blender_path` or a reinstall is their call |
|
|
152
152
|
| `script_error` | Your bpy raised (`traceback_tail`, `script_line`, `blender_version`) | Fix the named line against the reported version; `script_line` maps to your `source` |
|
|
@@ -169,14 +169,14 @@ Every failure leaves the project untouched except `import_failed` / `instantiate
|
|
|
169
169
|
- **Output is unencumbered.** Meshes made with Blender belong to the user; the `.glb` in their project carries no Blender licence obligation.
|
|
170
170
|
- **Scripts you write here are created on the user's machine and never distributed by Summer.** If you adapt a bpy snippet from elsewhere, respect its licence — prefer your own code or CC0 sources, and record the origin in `.summer/memory/decisions/` when it matters for the project.
|
|
171
171
|
- **Trademark.** "Blender" is a trademark of the Blender Foundation. Refer to it factually as the dependency ("requires Blender"); never describe the feature as powered by, built on, or branded with Blender, and never use its logo. Summer's name for this capability is *mesh fabrication*.
|
|
172
|
-
- Imported library assets keep their own licences (`
|
|
172
|
+
- Imported library assets keep their own licences (`assets.search` results carry `license`); fabrication does not change that.
|
|
173
173
|
|
|
174
174
|
## Red Flags — STOP
|
|
175
175
|
|
|
176
176
|
| Red flag | Reality |
|
|
177
177
|
|---|---|
|
|
178
178
|
| Fabricating a barrel, a crate, a chair | Library first, generation second. Fabricate is for kits, VFX meshes, and post-processing |
|
|
179
|
-
| Fabricating a character or creature | Scripted organic modelling is the documented failure mode; `
|
|
179
|
+
| Fabricating a character or creature | Scripted organic modelling is the documented failure mode; `assets.generate_3d` with rigging |
|
|
180
180
|
| A script that calls `export_scene.gltf`, saves, or quits | Breaks the contract; the bootstrap exports |
|
|
181
181
|
| A material that is not a Principled BSDF | Exports grey; the `warnings` list said so |
|
|
182
182
|
| Procedural roughness or normal maps left unbaked | Not baked automatically — set constants or bake in the script |
|
|
@@ -193,3 +193,26 @@ Every failure leaves the project untouched except `import_failed` / `instantiate
|
|
|
193
193
|
- `environment-kit`, `prop-model`, `character-model` — the generation and library specialists fabrication defers to.
|
|
194
194
|
- `scene-scripting` — in-scene geometry, placement loops, and wrapping fabricated pieces in bodies and collisions.
|
|
195
195
|
- `verifying-scenes` and `verification-before-completion` — the evidence discipline after import.
|
|
196
|
+
|
|
197
|
+
<!-- shell-commands: generated from the operation catalog by npm run generate:registry; do not edit by hand -->
|
|
198
|
+
## From a shell
|
|
199
|
+
|
|
200
|
+
No Summer MCP tools in this session? Run each one as a command; when `summer --version` is missing or below 4.0, use `npx -y summer-engine@latest` in place of `summer`. Fields are flags in kebab-case (`--scene-path res://main.tscn`) or one `--input '<json>'`, and `summer ops describe <op>` prints the exact input. The `summer-cli` skill has the rest.
|
|
201
|
+
|
|
202
|
+
| In this skill | Command |
|
|
203
|
+
|---|---|
|
|
204
|
+
| `assets.generate_3d` | `summer assets generate-3d` |
|
|
205
|
+
| `assets.search` | `summer assets search` |
|
|
206
|
+
| `summer_fabricate_3d` | `summer engine fabricate-3d` |
|
|
207
|
+
| `summer_get_console` | `summer engine get-console` |
|
|
208
|
+
| `summer_get_project_context` | `summer engine get-project-context` |
|
|
209
|
+
| `summer_import_asset` | `summer engine import-asset` |
|
|
210
|
+
| `summer_import_hdri` | `summer engine import-hdri` |
|
|
211
|
+
| `summer_instantiate_scene` | `summer engine instantiate-scene` |
|
|
212
|
+
| `summer_remove_node` | `summer engine remove-node` |
|
|
213
|
+
| `summer_run_script` | `summer engine run-script` |
|
|
214
|
+
| `summer_save_scene` | `summer engine save-scene` |
|
|
215
|
+
| `summer_screenshot` | `summer engine screenshot` |
|
|
216
|
+
| `summer_snapshot_diff` | `summer engine snapshot-diff` |
|
|
217
|
+
| `summer_world_snapshot` | `summer engine world-snapshot` |
|
|
218
|
+
<!-- /shell-commands -->
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
id: skill/fabricating-assets
|
|
2
2
|
kind: skill
|
|
3
3
|
version: 1.0.0
|
|
4
|
-
summary: Fabricate meshes with a
|
|
4
|
+
summary: "Fabricate meshes with a Blender script (summer_fabricate_3d): exact-size kits, VFX meshes, post-processing."
|
|
5
5
|
use_when:
|
|
6
6
|
- writing a Blender Python (bpy) script for summer_fabricate_3d and deciding whether fabrication, generation, or the free library is the right route for an asset
|
|
7
7
|
- a parametric hard-surface set with exact dimensions, booleans, bevels, and shared materials that must stay consistent across many pieces
|
|
8
8
|
- VFX meshes — shatter fragments, curve sweeps, trails, LOD chains — or decimating, UV-unwrapping, and baking a generated model before it goes into the scene
|
|
9
9
|
- a fabrication failed (blender_not_found, script_error, export_empty, import_failed, busy, timeout) and the result needs to be read correctly
|
|
10
10
|
do_not_use_when:
|
|
11
|
-
- a generic prop — search the free library first (
|
|
11
|
+
- a generic prop — search the free library first (assets.search, prop-model), then generate (assets.generate_3d)
|
|
12
12
|
- a character or any organic shape — character-model / organic-model; scripted organic modelling is the documented failure mode
|
|
13
13
|
- a blockout or placeholder — scene-scripting primitives/CSG are instant and in-scene
|
|
14
|
-
- "the engine build lacks FabricateMesh (Summer Engine 0.5.66 or newer); older engines return engine_lacks_op — route to
|
|
14
|
+
- "the engine build lacks FabricateMesh (Summer Engine 0.5.66 or newer); older engines return engine_lacks_op — route to assets.generate_3d / assets.search / summer_run_script instead"
|
|
15
15
|
facets:
|
|
16
16
|
lifecycle:
|
|
17
17
|
- build
|
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: facial-and-lipsync
|
|
3
|
-
description: "Make a character's mouth move with a voice-over
|
|
3
|
+
description: "Make a character's mouth move with a voice-over: phonemes, viseme blendshapes, facial expressions."
|
|
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 Edit Write
|
|
8
|
+
allowed-tools: Read Grep Edit Write summer_assets_search summer_inspect_resource summer_inspect_node summer_assets_generate_audio summer_assets_generate_motion summer_run_script summer_add_node summer_set_prop summer_set_resource_property summer_save_scene summer_get_script_errors summer_jobs_wait summer_call
|
|
9
9
|
paths: ["**/*.gd", "**/*.tscn", "**/*.tres"]
|
|
10
10
|
---
|
|
11
11
|
|
|
12
12
|
# Facial Animation & Lipsync
|
|
13
13
|
|
|
14
|
-
Half generative, half authored. The *generative* half: an audio file (TTS via `
|
|
14
|
+
Half generative, half authored. The *generative* half: an audio file (TTS via `assets.generate_audio` with `capability: "text_to_speech"`) goes through a phoneme-extraction tool (Summer does NOT wrap one — you run it externally), out comes a viseme timeline — a list of `{ phoneme, start_time, duration }` triples. The *authored* half: the character's face mesh must have BlendShapes named for the standard viseme set, or the timeline has nothing to drive. Without both halves, you get a talking robot.
|
|
15
15
|
|
|
16
16
|
The pipeline:
|
|
17
17
|
|
|
18
|
-
1. **Audio in** — `.wav`/`.mp3` from `
|
|
18
|
+
1. **Audio in** — `.wav`/`.mp3` from `assets.generate_audio({ capability: "text_to_speech", ... })` or imported VO.
|
|
19
19
|
2. **Phoneme extraction** — done OUTSIDE Summer. Recommended: **Rhubarb Lip Sync** (open source, widely used for game lipsync; outputs JSON with mouth-shape cues over time). Alternatives: gentle, allosaurus, or a Whisper-phoneme model on Replicate / Hugging Face. There is no `summer_*` MCP for this in the current engine.
|
|
20
20
|
3. **Viseme mapping** — phonemes / Rhubarb cues → Oculus / Apple ARKit viseme set (15 standard shapes covers English).
|
|
21
21
|
4. **BlendShape driver** — at runtime, lerp the mesh's BlendShape weights along the timeline, synced to audio playback.
|
|
@@ -32,7 +32,7 @@ The pipeline:
|
|
|
32
32
|
## When NOT to use this skill
|
|
33
33
|
|
|
34
34
|
- Character has no face / no BlendShapes (helmeted soldier, robot, mascot). Hard-skip to body language via `generate-motion`.
|
|
35
|
-
- The dialogue is written but not yet voiced — generate audio first via `
|
|
35
|
+
- The dialogue is written but not yet voiced — generate audio first via `assets.generate_audio({ capability: "text_to_speech", ... })`. Lipsync without audio has nothing to sync to.
|
|
36
36
|
- Pre-rendered cinematic from external DCC. Lipsync is in the rendered video, not the engine.
|
|
37
37
|
|
|
38
38
|
## Steps
|
|
@@ -47,27 +47,26 @@ Look for `mesh.blend_shape_count` > 0 and a list of names. An ARKit-52 head has
|
|
|
47
47
|
|
|
48
48
|
If the head has zero BlendShapes, stop. Tell the user: "This head mesh has no BlendShapes — facial animation needs shape keys on the mesh. Options: use an emotional body-language overlay instead, author shape keys in Blender and re-import, or hand the character to a 3D artist." Don't proceed.
|
|
49
49
|
|
|
50
|
-
Do **not** promise a `face_blendshapes` generation option. `
|
|
51
|
-
has no such
|
|
52
|
-
|
|
53
|
-
and then silently ignored by the backend. Regenerating will not add BlendShapes.
|
|
50
|
+
Do **not** promise a `face_blendshapes` generation option. `assets.generate_3d`
|
|
51
|
+
has no such field and nothing in the Summer generation pipeline handles one; a
|
|
52
|
+
field the operation does not list does nothing. Regenerating will not add BlendShapes.
|
|
54
53
|
Shape keys come from the mesh author (Blender / an ARKit-52 source mesh), not
|
|
55
54
|
from a rig pass.
|
|
56
55
|
|
|
57
56
|
### 2. Get the audio
|
|
58
57
|
|
|
59
|
-
If the user has VO already, use it. If not, generate via TTS.
|
|
58
|
+
If the user has VO already, use it. If not, generate via TTS. On the ElevenLabs models the `voiceId` must be one of Summer's game-cast voices (the `voice-line` skill lists them with their ids); any other id is refused. There is no "voice name" string; it's always an ID like `IKne3meq5aSn9XLyUdCD` (Charlie, the hero).
|
|
60
59
|
|
|
61
60
|
```
|
|
62
|
-
|
|
61
|
+
assets.generate_audio({
|
|
63
62
|
capability: "text_to_speech",
|
|
64
63
|
text: "Welcome to the village, traveler.",
|
|
65
|
-
voiceId: "<
|
|
64
|
+
voiceId: "<cast voice id>"
|
|
66
65
|
})
|
|
67
|
-
//
|
|
66
|
+
// answers at once with asset: { assetId, fileUrl, durationSeconds }
|
|
68
67
|
```
|
|
69
68
|
|
|
70
|
-
If the user hasn't picked a voice yet, stop and ask
|
|
69
|
+
If the user hasn't picked a voice yet, stop and ask which cast voice fits the character (see `voice-line`).
|
|
71
70
|
|
|
72
71
|
### 3. Extract phonemes (the generative step — runs OUTSIDE Summer)
|
|
73
72
|
|
|
@@ -296,7 +295,7 @@ production speech recognition or photoreal lip sync.
|
|
|
296
295
|
|
|
297
296
|
## Handoff
|
|
298
297
|
|
|
299
|
-
- For voice generation upstream, `voice-line` (which wraps `
|
|
298
|
+
- For voice generation upstream, `voice-line` (which wraps `assets.generate_audio({ capability: "text_to_speech", ... })`).
|
|
300
299
|
- For dialogue scripts and conversation flow, `design-npc`.
|
|
301
300
|
- For the AnimationTree this layer composes into, `animation-tree`.
|
|
302
301
|
- For idle blinks, saccades, and head-tracking that complement lipsync, `procedural-animation`.
|
|
@@ -309,3 +308,25 @@ production speech recognition or photoreal lip sync.
|
|
|
309
308
|
- `animation-tree` — wire the lipsync OneShot into the character's tree.
|
|
310
309
|
- `procedural-animation` — eye blinks, saccades, head idle.
|
|
311
310
|
- Rhubarb Lip Sync — https://github.com/DanielSWolf/rhubarb-lip-sync (external tool; phoneme extraction).
|
|
311
|
+
|
|
312
|
+
<!-- shell-commands: generated from the operation catalog by npm run generate:registry; do not edit by hand -->
|
|
313
|
+
## From a shell
|
|
314
|
+
|
|
315
|
+
No Summer MCP tools in this session? Run each one as a command; when `summer --version` is missing or below 4.0, use `npx -y summer-engine@latest` in place of `summer`. Fields are flags in kebab-case (`--scene-path res://main.tscn`) or one `--input '<json>'`, and `summer ops describe <op>` prints the exact input. The `summer-cli` skill has the rest.
|
|
316
|
+
|
|
317
|
+
| In this skill | Command |
|
|
318
|
+
|---|---|
|
|
319
|
+
| `assets.generate_3d` | `summer assets generate-3d` |
|
|
320
|
+
| `assets.generate_audio`, `summer_assets_generate_audio` | `summer assets generate-audio` |
|
|
321
|
+
| `summer_assets_generate_motion` | `summer assets generate-motion` |
|
|
322
|
+
| `summer_assets_search` | `summer assets search` |
|
|
323
|
+
| `summer_add_node` | `summer engine add-node` |
|
|
324
|
+
| `summer_get_script_errors` | `summer engine get-script-errors` |
|
|
325
|
+
| `summer_inspect_node` | `summer engine inspect-node` |
|
|
326
|
+
| `summer_inspect_resource` | `summer engine inspect-resource` |
|
|
327
|
+
| `summer_run_script` | `summer engine run-script` |
|
|
328
|
+
| `summer_save_scene` | `summer engine save-scene` |
|
|
329
|
+
| `summer_set_prop` | `summer engine set-prop` |
|
|
330
|
+
| `summer_set_resource_property` | `summer engine set-resource-property` |
|
|
331
|
+
| `summer_jobs_wait` | `summer jobs wait` |
|
|
332
|
+
<!-- /shell-commands -->
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
id: skill/facial-and-lipsync
|
|
2
2
|
kind: skill
|
|
3
3
|
version: 1.0.2
|
|
4
|
-
summary: Make a character's mouth move with a voice-over
|
|
4
|
+
summary: "Make a character's mouth move with a voice-over: phonemes, viseme blendshapes, facial expressions."
|
|
5
5
|
use_when:
|
|
6
6
|
- the user has (or wants) a voice-over and needs the character's mouth to move with the words
|
|
7
7
|
- adding emotional facial expressions (smile, frown, surprise)
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: fps-controller
|
|
3
|
-
description: "
|
|
3
|
+
description: "First-person controller: WASD, mouse look, jump, coyote time, jump buffering, air control."
|
|
4
4
|
license: MIT
|
|
5
5
|
compatibility: [Cursor, Claude Code, Windsurf, Codex]
|
|
6
6
|
category: character-controllers
|
|
7
7
|
user-invocable: false
|
|
8
8
|
template-id: template-3d-fps-old-school
|
|
9
|
-
allowed-tools: Read Grep summer_get_scene_tree summer_add_node summer_set_prop summer_set_resource_property summer_input_map_bind summer_save_scene summer_get_script_errors
|
|
9
|
+
allowed-tools: Read Grep summer_get_scene_tree summer_run_script summer_add_node summer_set_prop summer_set_resource_property summer_input_map_bind summer_save_scene summer_get_script_errors
|
|
10
10
|
paths: ["**/*.gd", "**/*.tscn"]
|
|
11
11
|
---
|
|
12
12
|
|
|
@@ -32,52 +32,44 @@ The Head/Camera split is the standard: yaw rotates the body, pitch rotates only
|
|
|
32
32
|
|
|
33
33
|
Always call `summer_get_scene_tree` before mutating. If `World/Player`, `World/PlayerOld`, or any existing CharacterBody3D is present, ASK the user how to proceed before adding nodes.
|
|
34
34
|
|
|
35
|
-
### 2.
|
|
35
|
+
### 2. Build the Player rig in one script
|
|
36
36
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
summer_set_prop(scenePath="res://main.tscn", path="./World/Player", key="position", value="Vector3(0, 1, 0)")
|
|
40
|
-
```
|
|
41
|
-
|
|
42
|
-
### 3. Add the collision shape and size it
|
|
37
|
+
The body, its capsule, the head pivot and the camera are one `summer_run_script`
|
|
38
|
+
call (one undo step):
|
|
43
39
|
|
|
44
40
|
```
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
41
|
+
summer_run_script(scenePath="res://main.tscn", source="""
|
|
42
|
+
func run(ctx):
|
|
43
|
+
var player = ctx.add_node("CharacterBody3D", "Player", ctx.find("World"), {"position": Vector3(0, 1, 0)})
|
|
44
|
+
var capsule = CapsuleShape3D.new()
|
|
45
|
+
capsule.radius = 0.4
|
|
46
|
+
capsule.height = 1.8
|
|
47
|
+
ctx.add_node("CollisionShape3D", "Collision", player, {"shape": capsule, "position": Vector3(0, 0.9, 0)})
|
|
48
|
+
var head = ctx.add_node("Node3D", "Head", player, {"position": Vector3(0, 1.6, 0)})
|
|
49
|
+
ctx.add_node("Camera3D", "Camera", head)
|
|
50
|
+
ctx.save_scene()
|
|
51
|
+
""")
|
|
49
52
|
```
|
|
50
53
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
- **`scenePath` is required** on `summer_add_node`, `summer_set_prop`,
|
|
54
|
-
`summer_set_resource_property` and `summer_save_scene`. Omit it and the call
|
|
55
|
-
never reaches the engine. (`summer_input_map_bind` is the exception — it edits
|
|
56
|
-
`project.godot`, not a scene, and takes only `name` + `events`.)
|
|
57
|
-
- **This inline-resource sequence is the supported pattern, not a trap.**
|
|
58
|
-
`summer_set_prop` with a class-name string instantiates a scene-embedded
|
|
59
|
-
(`[sub_resource]`) resource, and `summer_set_resource_property` then reads that
|
|
60
|
-
property off the node and writes the sub-property straight onto it. Embedded
|
|
61
|
-
and external `.tres` resources take the same path. Structural failures are
|
|
62
|
-
explicit — `node not found`, `property is not a resource`, or `resource is
|
|
63
|
-
null` when the property was never assigned — but a bad value shape is silent
|
|
64
|
-
on current engines: a JSON object instead of an engine variant string, a
|
|
65
|
-
misspelled `key`/`subProperty`, or a wrong-typed value returns `ok:true` yet
|
|
66
|
-
no-ops or coerces destructively. Assign the resource first, pass class names
|
|
67
|
-
and `Vector3(...)`/`Color(...)` strings, and confirm in the saved `.tscn`,
|
|
68
|
-
never from `ok` alone.
|
|
69
|
-
|
|
70
|
-
### 4. Add the Head pivot + Camera
|
|
54
|
+
Eye height of 1.6 sits the camera right at the top of a 1.8-tall capsule (capsule center 0.9, plus 0.7 to the eye). Tweak per art style.
|
|
71
55
|
|
|
72
|
-
|
|
73
|
-
summer_add_node(scenePath="res://main.tscn", parent="./World/Player", type="Node3D", name="Head")
|
|
74
|
-
summer_set_prop(scenePath="res://main.tscn", path="./World/Player/Head", key="position", value="Vector3(0, 1.6, 0)")
|
|
75
|
-
summer_add_node(scenePath="res://main.tscn", parent="./World/Player/Head", type="Camera3D", name="Camera")
|
|
76
|
-
```
|
|
56
|
+
Two rules:
|
|
77
57
|
|
|
78
|
-
|
|
58
|
+
- **`scenePath` is required** on `summer_run_script` and on every scene tool
|
|
59
|
+
(`summer_set_prop`, `summer_set_resource_property`, `summer_save_scene`).
|
|
60
|
+
Omit it and the call never reaches the engine. (`summer_input_map_bind` is
|
|
61
|
+
the exception — it edits `project.godot`, not a scene, and takes only
|
|
62
|
+
`name` + `events`.)
|
|
63
|
+
- **Build and size a shape before you assign it.** Tuning one value later is
|
|
64
|
+
one `summer_set_resource_property` call on the assigned resource. Structural
|
|
65
|
+
failures there are explicit — `node not found`, `property is not a resource`,
|
|
66
|
+
or `resource is null` when the property was never assigned — but a bad value
|
|
67
|
+
shape is silent on current engines: a JSON object instead of an engine
|
|
68
|
+
variant string, a misspelled `subProperty`, or a wrong-typed value returns
|
|
69
|
+
`ok:true` yet no-ops or coerces destructively. Pass `Vector3(...)`/`Color(...)`
|
|
70
|
+
strings and confirm in the saved `.tscn`, never from `ok` alone.
|
|
79
71
|
|
|
80
|
-
###
|
|
72
|
+
### 3. InputMap actions
|
|
81
73
|
|
|
82
74
|
```
|
|
83
75
|
summer_input_map_bind(name="move_forward", events=[{type:"key", key:"W"}])
|
|
@@ -88,7 +80,7 @@ summer_input_map_bind(name="jump", events=[{type:"key", key:"Space"}])
|
|
|
88
80
|
summer_input_map_bind(name="sprint", events=[{type:"key", key:"Shift"}])
|
|
89
81
|
```
|
|
90
82
|
|
|
91
|
-
###
|
|
83
|
+
### 4. Attach the controller script
|
|
92
84
|
|
|
93
85
|
Ask before writing: "May I create `scripts/player_controller.gd` and attach it to `./World/Player`?" Then `Write` the file with the skeleton in the next section, attach via inspector, and finish with `summer_save_scene(scenePath="res://main.tscn")` + `summer_get_script_errors(path="res://scripts/player_controller.gd")` (that tool checks one file and requires `path`).
|
|
94
86
|
|
|
@@ -356,3 +348,20 @@ If the user asks for a "third-person FPS", flag the contradiction: FPS = first-p
|
|
|
356
348
|
- `gdscript-patterns` — once movement grows past this skeleton (slide, grapple, hover), refactor into a state machine instead of stuffing more branches into `_physics_process`.
|
|
357
349
|
- `character-movement` — 2D and third-person controllers.
|
|
358
350
|
- `game-feel` — camera shake and hit feedback.
|
|
351
|
+
|
|
352
|
+
<!-- shell-commands: generated from the operation catalog by npm run generate:registry; do not edit by hand -->
|
|
353
|
+
## From a shell
|
|
354
|
+
|
|
355
|
+
No Summer MCP tools in this session? Run each one as a command; when `summer --version` is missing or below 4.0, use `npx -y summer-engine@latest` in place of `summer`. Fields are flags in kebab-case (`--scene-path res://main.tscn`) or one `--input '<json>'`, and `summer ops describe <op>` prints the exact input. The `summer-cli` skill has the rest.
|
|
356
|
+
|
|
357
|
+
| In this skill | Command |
|
|
358
|
+
|---|---|
|
|
359
|
+
| `summer_add_node` | `summer engine add-node` |
|
|
360
|
+
| `summer_get_scene_tree` | `summer engine get-scene-tree` |
|
|
361
|
+
| `summer_get_script_errors` | `summer engine get-script-errors` |
|
|
362
|
+
| `summer_input_map_bind` | `summer engine input-map-bind` |
|
|
363
|
+
| `summer_run_script` | `summer engine run-script` |
|
|
364
|
+
| `summer_save_scene` | `summer engine save-scene` |
|
|
365
|
+
| `summer_set_prop` | `summer engine set-prop` |
|
|
366
|
+
| `summer_set_resource_property` | `summer engine set-resource-property` |
|
|
367
|
+
<!-- /shell-commands -->
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
id: skill/fps-controller
|
|
2
2
|
kind: skill
|
|
3
3
|
version: 1.0.4
|
|
4
|
-
summary:
|
|
4
|
+
summary: "First-person controller: WASD, mouse look, jump, coyote time, jump buffering, air control."
|
|
5
5
|
use_when:
|
|
6
6
|
- building an FPS, first-person movement, or a 3D character that walks, jumps, and reacts to external forces
|
|
7
7
|
- a first-person prototype needs solid movement feel — coyote time, jump buffering, air control
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: game-feel
|
|
3
|
-
description: "Add juice: hit-flash, trauma
|
|
3
|
+
description: "Add juice: hit-flash, trauma camera shake and audio ducking, one hit fires all three."
|
|
4
4
|
license: MIT
|
|
5
5
|
compatibility: [Cursor, Claude Code, Windsurf, Codex]
|
|
6
6
|
category: visual-effects
|
|
@@ -117,7 +117,7 @@ func flash() -> void:
|
|
|
117
117
|
|
|
118
118
|
**Tunable knobs:** `duration` 0.06–0.12s — under 0.06 reads as a flicker, over 0.12 looks slow. `emission_energy_multiplier` 1.5–3.0.
|
|
119
119
|
|
|
120
|
-
> Note: `summer_set_prop(key="material_override", value="StandardMaterial3D")` creates an inline `StandardMaterial3D` sub_resource that `summer_set_resource_property(resourceProperty="material_override", subProperty="albedo_color", value="Color(r, g, b, a)")` then edits and `summer_save_scene` persists — so the inline route, the script above, and a saved `materials/flash.tres` are all valid. What breaks is the value *shape*: a JSON object instead of a Godot literal string, a misspelled `key`/`subProperty`, or a wrong-typed value returns `ok:true` yet silently no-ops or destructively coerces on current engines (dict → material cleared; dict → `Color(0,0,0,1)`; newer engines reject these with `unknown_property` / `bad_value_shape` / `type_mismatch`). Always pass class names and `Color(...)`/`Vector3(...)` strings, and confirm the result in the saved `.tscn` or a snapshot diff — never from `ok` alone. See
|
|
120
|
+
> Note: `summer_set_prop(scenePath="res://levels/world.tscn", path="./World/Enemy/Mesh", key="material_override", value="StandardMaterial3D")` creates an inline `StandardMaterial3D` sub_resource that `summer_set_resource_property(scenePath="res://levels/world.tscn", nodePath="./World/Enemy/Mesh", resourceProperty="material_override", subProperty="albedo_color", value="Color(r, g, b, a)")` then edits and `summer_save_scene` persists — so the inline route, the script above, and a saved `materials/flash.tres` are all valid. What breaks is the value *shape*: a JSON object instead of a Godot literal string, a misspelled `key`/`subProperty`, or a wrong-typed value returns `ok:true` yet silently no-ops or destructively coerces on current engines (dict → material cleared; dict → `Color(0,0,0,1)`; newer engines reject these with `unknown_property` / `bad_value_shape` / `type_mismatch`). Always pass class names and `Color(...)`/`Vector3(...)` strings, and confirm the result in the saved `.tscn` or a snapshot diff — never from `ok` alone. See `summer_docs_read` id `reference/mcp-tools-reference`.
|
|
121
121
|
|
|
122
122
|
## Step 5 — Install Section 2 (Trauma Camera Shake)
|
|
123
123
|
|
|
@@ -370,12 +370,12 @@ Tune one knob at a time:
|
|
|
370
370
|
| Equal pitch/yaw shake | `yaw_factor ≤ 0.5` | Eyes are sensitive to vertical motion; equal axes feel mechanical |
|
|
371
371
|
| `Engine.time_scale` for every hit | Reserve hit-stop for big events only (boss hits, deaths) | Time-scale dips on every hit feel laggy, not impactful |
|
|
372
372
|
| A JSON object (or a misspelled key) as the `summer_set_prop` / `summer_set_resource_property` value — e.g. `value={"type": "StandardMaterial3D", ...}` through `summer_batch`, which forwards ops verbatim | `value="StandardMaterial3D"` to create the inline material, then `summer_set_resource_property(... value="Color(r, g, b, a)")` per field; confirm in the saved `.tscn` | Current engines return `ok:true` and silently no-op or coerce destructively — dict → material cleared, dict → `Color(0,0,0,1)`. The inline sub_resource itself is fine |
|
|
373
|
-
| `summer_set_prop(key="groups", value='["player_camera"]')` | `add_to_group(&"player_camera")` in `_ready()`, or a `groups = [...]` line in the `.tscn` | `Node` has no `groups` property, and `summer_set_prop` takes only string/number/boolean — never an array |
|
|
373
|
+
| `summer_set_prop(scenePath="res://levels/world.tscn", path="./World/Player/Camera3D", key="groups", value='["player_camera"]')` | `add_to_group(&"player_camera")` in `_ready()`, or a `groups = [...]` line in the `.tscn` | `Node` has no `groups` property, and `summer_set_prop` takes only string/number/boolean — never an array |
|
|
374
374
|
| `BaseMaterial3D.new()` | `StandardMaterial3D.new()` | `BaseMaterial3D` is abstract; constructing it is a parse error that kills the whole script |
|
|
375
375
|
|
|
376
376
|
## Collaborative protocol
|
|
377
377
|
|
|
378
|
-
This skill writes 3 GDScript files and adds 1 node + 1 autoload entry. Always ask before each section is applied. Group related writes into one ask: "I'm about to add HitFlash + CameraShake + AudioDucker autoload, wire one signal. OK?" See
|
|
378
|
+
This skill writes 3 GDScript files and adds 1 node + 1 autoload entry. Always ask before each section is applied. Group related writes into one ask: "I'm about to add HitFlash + CameraShake + AudioDucker autoload, wire one signal. OK?" See `summer_docs_read` id `reference/collaborative-protocol`.
|
|
379
379
|
|
|
380
380
|
## When NOT to use this skill
|
|
381
381
|
|
|
@@ -386,11 +386,37 @@ This skill writes 3 GDScript files and adds 1 node + 1 autoload entry. Always as
|
|
|
386
386
|
|
|
387
387
|
## See also
|
|
388
388
|
|
|
389
|
-
-
|
|
390
|
-
-
|
|
389
|
+
- `summer_docs_read` id `reference/mcp-tools-reference` — full MCP tool list, especially `summer_set_resource_property` on inline sub_resources and which failures are loud vs. silent
|
|
390
|
+
- `summer_docs_read` id `reference/godot-version` — Summer compatibility and
|
|
391
391
|
version-sensitive API notes
|
|
392
|
-
-
|
|
393
|
-
-
|
|
392
|
+
- `summer_docs_read` id `reference/collaborative-protocol` — "May I write" pattern
|
|
393
|
+
- `summer_docs_read` id `reference/gd-style` — typed GDScript conventions
|
|
394
394
|
- `audio-direction` — bus layout setup (prerequisite for ducking)
|
|
395
395
|
- `vfx-hit-spark` — particles to layer on top of the trio
|
|
396
396
|
- `debugging-game-feel` — when the trio is installed and it still feels wrong
|
|
397
|
+
|
|
398
|
+
<!-- shell-commands: generated from the operation catalog by npm run generate:registry; do not edit by hand -->
|
|
399
|
+
## From a shell
|
|
400
|
+
|
|
401
|
+
No Summer MCP tools in this session? Run each one as a command; when `summer --version` is missing or below 4.0, use `npx -y summer-engine@latest` in place of `summer`. Fields are flags in kebab-case (`--scene-path res://main.tscn`) or one `--input '<json>'`, and `summer ops describe <op>` prints the exact input. The `summer-cli` skill has the rest.
|
|
402
|
+
|
|
403
|
+
| In this skill | Command |
|
|
404
|
+
|---|---|
|
|
405
|
+
| `summer_docs_read` | `summer docs read` |
|
|
406
|
+
| `summer_add_node` | `summer engine add-node` |
|
|
407
|
+
| `summer_batch` | `summer engine batch` |
|
|
408
|
+
| `summer_connect_signal` | `summer engine connect-signal` |
|
|
409
|
+
| `summer_get_debugger_errors` | `summer engine get-debugger-errors` |
|
|
410
|
+
| `summer_get_scene_tree` | `summer engine get-scene-tree` |
|
|
411
|
+
| `summer_get_script_errors` | `summer engine get-script-errors` |
|
|
412
|
+
| `summer_inspect_node` | `summer engine inspect-node` |
|
|
413
|
+
| `summer_inspect_resource` | `summer engine inspect-resource` |
|
|
414
|
+
| `summer_play` | `summer engine play` |
|
|
415
|
+
| `summer_project_setting` | `summer engine project-setting` |
|
|
416
|
+
| `summer_read_file` | `summer engine read-file` |
|
|
417
|
+
| `summer_save_scene` | `summer engine save-scene` |
|
|
418
|
+
| `summer_set_prop` | `summer engine set-prop` |
|
|
419
|
+
| `summer_set_resource_property` | `summer engine set-resource-property` |
|
|
420
|
+
| `summer_stop` | `summer engine stop` |
|
|
421
|
+
| `summer_write_file` | `summer engine write-file` |
|
|
422
|
+
<!-- /shell-commands -->
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
id: skill/game-feel
|
|
2
2
|
kind: skill
|
|
3
3
|
version: 1.0.2
|
|
4
|
-
summary: "Add juice: hit-flash, trauma
|
|
4
|
+
summary: "Add juice: hit-flash, trauma camera shake and audio ducking, one hit fires all three."
|
|
5
5
|
use_when:
|
|
6
6
|
- a Summer game feels flat, lacks impact, needs juice or punch
|
|
7
7
|
- the user asks for hit feedback, screen shake, camera shake, or audio ducking
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: gameskill
|
|
3
|
-
description: "Capture what a game-dev session
|
|
3
|
+
description: "Capture what a game-dev session learned as a reusable skill (project, user or Summer library) for next time."
|
|
4
4
|
license: MIT
|
|
5
5
|
compatibility: [Cursor, Claude Code, Windsurf, Codex]
|
|
6
6
|
category: workflow
|
|
@@ -17,7 +17,7 @@ Summer resolves skills in this order: the game project, then the user's agent sk
|
|
|
17
17
|
|
|
18
18
|
1. **The game project** (default). Write `SKILL.md` into the project-scoped skills directory of the agent you are running in: `.claude/skills/<slug>/` for Claude Code, `.agents/skills/<slug>/` for Codex, Cursor, Devin Desktop and the other agents that read the shared folder. `summer skills install --scope project` shows the exact path for the current agent. Commit it with the game.
|
|
19
19
|
2. **The user's agent skills directory** when the lesson applies to every project on this machine (`~/.claude/skills/<slug>/`, `~/.agents/skills/<slug>/`). Do not edit skills that Summer installed there; they are overwritten on the next `summer setup`.
|
|
20
|
-
3. **The Summer library** when the lesson is general enough for every Summer user. Only possible inside a checkout of the `summerengine/summer` repository: add `library/skills/<slug>/resource.yaml` and `library/skills/<slug>/SKILL.md` (flat slugs, no category folders), then run `npm run generate:registry` and `npm run validate:library`. Everything under `registry/generated/` and every plugin manifest is generated from `library/`; never hand-edit them. Outside that checkout, send the lesson through `
|
|
20
|
+
3. **The Summer library** when the lesson is general enough for every Summer user. Only possible inside a checkout of the `summerengine/summer` repository: add `library/skills/<slug>/resource.yaml` and `library/skills/<slug>/SKILL.md` (flat slugs, no category folders), then run `npm run generate:registry` and `npm run validate:library`. Everything under `registry/generated/` and every plugin manifest is generated from `library/`; never hand-edit them. Outside that checkout, send the lesson through `summer_call` `{"op":"docs.feedback"}` (or `summer tool library-feedback`) with the id of the closest existing skill so the maintainers can fold it in.
|
|
21
21
|
|
|
22
22
|
Read the current project as ground truth. Working code from the real project beats invented examples.
|
|
23
23
|
|
|
@@ -25,7 +25,7 @@ Read the current project as ground truth. Working code from the real project bea
|
|
|
25
25
|
|
|
26
26
|
1. One short sentence to the user: "Capturing learnings from this session into a skill." No plan dump.
|
|
27
27
|
|
|
28
|
-
2. Probe. Check which skills directories exist for this agent and project, and search the bundled library first (`
|
|
28
|
+
2. Probe. Check which skills directories exist for this agent and project, and search the bundled library first (`summer_docs_search "<topic>"`, or `summer skills list`) so you extend an existing skill instead of duplicating it.
|
|
29
29
|
|
|
30
30
|
3. Recap the session. Pull out learnings that are non-obvious AND general, things a future agent could not derive from reading the codebase. Examples that count:
|
|
31
31
|
- A working shader (the actual code)
|
|
@@ -36,7 +36,7 @@ Read the current project as ground truth. Working code from the real project bea
|
|
|
36
36
|
- A spawning, AI or enemy pattern that worked
|
|
37
37
|
- A performance fix with measured before and after
|
|
38
38
|
- An asset workflow that beat the alternatives
|
|
39
|
-
- A Summer tool that steered you wrong: report that with `
|
|
39
|
+
- A Summer tool that steered you wrong: report that with `summer_call` `{"op":"docs.feedback"}` on the tool's id, in addition to any skill
|
|
40
40
|
|
|
41
41
|
Examples that do NOT count: one-off code with no general lesson, things already documented in an existing skill or the project's agent instructions, personal preferences without reasoning, anything manufactured to fill space.
|
|
42
42
|
|
|
@@ -62,3 +62,14 @@ Read the current project as ground truth. Working code from the real project bea
|
|
|
62
62
|
## When there is nothing worth capturing
|
|
63
63
|
|
|
64
64
|
Say so: "session was tactical, no durable learnings worth a skill." Better to ship nothing than to ship noise.
|
|
65
|
+
|
|
66
|
+
<!-- shell-commands: generated from the operation catalog by npm run generate:registry; do not edit by hand -->
|
|
67
|
+
## From a shell
|
|
68
|
+
|
|
69
|
+
No Summer MCP tools in this session? Run each one as a command; when `summer --version` is missing or below 4.0, use `npx -y summer-engine@latest` in place of `summer`. Fields are flags in kebab-case (`--scene-path res://main.tscn`) or one `--input '<json>'`, and `summer ops describe <op>` prints the exact input. The `summer-cli` skill has the rest.
|
|
70
|
+
|
|
71
|
+
| In this skill | Command |
|
|
72
|
+
|---|---|
|
|
73
|
+
| `docs.feedback` | `summer docs feedback` |
|
|
74
|
+
| `summer_docs_search` | `summer docs search` |
|
|
75
|
+
<!-- /shell-commands -->
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
id: skill/gameskill
|
|
2
2
|
kind: skill
|
|
3
3
|
version: 1.0.2
|
|
4
|
-
summary: Capture what a game-dev session
|
|
4
|
+
summary: "Capture what a game-dev session learned as a reusable skill (project, user or Summer library) for next time."
|
|
5
5
|
use_when:
|
|
6
6
|
- finishing a game-development session with learnings worth capturing as a reusable skill
|
|
7
7
|
- a session found a technique, workaround, or convention worth reusing across Summer sessions
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: gdscript-patterns
|
|
3
|
-
description: "GDScript conventions
|
|
3
|
+
description: "GDScript conventions: type hints, signals, exports, onready, lifecycle methods, node paths, naming."
|
|
4
4
|
license: MIT
|
|
5
5
|
compatibility: [Cursor, Claude Code, Windsurf, Codex]
|
|
6
6
|
category: scripting-patterns
|
|
@@ -148,3 +148,18 @@ Note the field name difference too: `LabelSettings.outline_color` (Label 2D) vs
|
|
|
148
148
|
When the AI adds a node with Summer MCP tools and attaches a script, the script path is set via `summer_set_prop(path, "script", "res://path/to/script.gd")`. The script file must exist first. Create it with guarded `summer_write_file` or edit it with `summer_replace_text`, then attach the script and connect scene signals.
|
|
149
149
|
|
|
150
150
|
For signal connections, the receiver must have the handler method. Create the script with the method stub before calling `summer_connect_signal`.
|
|
151
|
+
|
|
152
|
+
<!-- shell-commands: generated from the operation catalog by npm run generate:registry; do not edit by hand -->
|
|
153
|
+
## From a shell
|
|
154
|
+
|
|
155
|
+
No Summer MCP tools in this session? Run each one as a command; when `summer --version` is missing or below 4.0, use `npx -y summer-engine@latest` in place of `summer`. Fields are flags in kebab-case (`--scene-path res://main.tscn`) or one `--input '<json>'`, and `summer ops describe <op>` prints the exact input. The `summer-cli` skill has the rest.
|
|
156
|
+
|
|
157
|
+
| In this skill | Command |
|
|
158
|
+
|---|---|
|
|
159
|
+
| `summer_connect_signal` | `summer engine connect-signal` |
|
|
160
|
+
| `summer_get_script_errors` | `summer engine get-script-errors` |
|
|
161
|
+
| `summer_input_map_bind` | `summer engine input-map-bind` |
|
|
162
|
+
| `summer_replace_text` | `summer engine replace-text` |
|
|
163
|
+
| `summer_set_prop` | `summer engine set-prop` |
|
|
164
|
+
| `summer_write_file` | `summer engine write-file` |
|
|
165
|
+
<!-- /shell-commands -->
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
id: skill/gdscript-patterns
|
|
2
2
|
kind: skill
|
|
3
3
|
version: 1.0.3
|
|
4
|
-
summary: GDScript conventions
|
|
4
|
+
summary: "GDScript conventions: type hints, signals, exports, onready, lifecycle methods, node paths, naming."
|
|
5
5
|
use_when:
|
|
6
6
|
- writing or refactoring GDScript — type hints, signals, exports, onready, lifecycle methods, naming conventions
|
|
7
7
|
- reviewing GDScript for idiomatic signals, exports, @onready usage, node references, and naming
|