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,11 +1,11 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: pixel-art
|
|
3
|
-
description: "Generate pixel-art
|
|
3
|
+
description: "Generate pixel-art sprites, items, tiles and portraits at a set resolution with a limited palette."
|
|
4
4
|
license: MIT
|
|
5
5
|
compatibility: [Cursor, Claude Code, Windsurf, Codex]
|
|
6
6
|
category: 2d-assets
|
|
7
7
|
user-invocable: true
|
|
8
|
-
allowed-tools: Read Grep Glob Write Edit
|
|
8
|
+
allowed-tools: Read Grep Glob Write Edit summer_assets_generate_image summer_assets_search summer_import_from_url summer_set_resource_property summer_call
|
|
9
9
|
paths: ["assets/**", "art/pixel/**", "sprites/**"]
|
|
10
10
|
---
|
|
11
11
|
|
|
@@ -13,12 +13,12 @@ paths: ["assets/**", "art/pixel/**", "sprites/**"]
|
|
|
13
13
|
|
|
14
14
|
This skill generates pixel-art sprites, items, tiles, icons and portraits at a target resolution (32×32, 64×64, 128×128). Pixel art has hard constraints (grid alignment, limited palette, no anti-aliased edges) that diffusion models break by default. The prompt patterns and post-processing below make the output read as pixel art instead of a blurry small image.
|
|
15
15
|
|
|
16
|
-
**Backing
|
|
16
|
+
**Backing operation:** `assets.generate_image` with an explicit pixel-art prompt.
|
|
17
17
|
|
|
18
|
-
Two things about that
|
|
18
|
+
Two things about that operation you have to know before writing a call:
|
|
19
19
|
|
|
20
20
|
- **There is no `"pixel"` style preset.** `style` accepts exactly `realistic`, `cartoon`, `anime`, `none`; anything else is coerced to `none`. Only `cartoon` and `anime` do anything at all (they append a short suffix); `realistic` and `none` append nothing. So `style: "pixel"` is identical to `style: "none"` — the pixel look has to come entirely from the prompt. Use `style: "none"`.
|
|
21
|
-
-
|
|
21
|
+
- **There is no `options` object and no negative prompt.** Shape is `aspectRatio` (`1:1` default, right for sprites and tiles), a minimum size is `width` + `height`, and `seed` repeats a look on Nano Banana models. Exclusions go in the prompt text. The model renders far above the pixel grid either way; the target resolution comes from the downscale below.
|
|
22
22
|
|
|
23
23
|
Pixel-perfect output is enforced in Summer Engine with Nearest texture filtering
|
|
24
24
|
and by downscaling to the target resolution after generation.
|
|
@@ -62,7 +62,7 @@ shading: 3-tone (light, mid, shadow), no gradients, no AA
|
|
|
62
62
|
### 2. Search for existing assets
|
|
63
63
|
|
|
64
64
|
```
|
|
65
|
-
|
|
65
|
+
assets.search({ query: "<subject> pixel", assetType: "2d_image", scope: "all" })
|
|
66
66
|
```
|
|
67
67
|
|
|
68
68
|
### 3. Build the prompt
|
|
@@ -78,18 +78,18 @@ The model can't actually generate at 32×32 — it generates at 1024×1024 with
|
|
|
78
78
|
### 4. Generate
|
|
79
79
|
|
|
80
80
|
```
|
|
81
|
-
|
|
82
|
-
prompt
|
|
83
|
-
model
|
|
84
|
-
style
|
|
85
|
-
removeBackground
|
|
86
|
-
)
|
|
81
|
+
assets.generate_image({
|
|
82
|
+
prompt: "pixel art slime monster, 32x32 sprite, PICO-8 palette, hard 1px outline in palette's darkest color, 3-tone shading, no anti-aliasing, no blur, sharp pixel edges, front-facing. Not blurry, no smooth gradients, no soft edges, not photorealistic, no 3D render.",
|
|
83
|
+
model: "nano-banana-2",
|
|
84
|
+
style: "none",
|
|
85
|
+
removeBackground: true
|
|
86
|
+
})
|
|
87
87
|
```
|
|
88
88
|
|
|
89
89
|
Two deliberate choices there:
|
|
90
90
|
|
|
91
|
-
- **The negations live in the prompt.** There is no `negative_prompt` argument
|
|
92
|
-
- **`removeBackground: true` is
|
|
91
|
+
- **The negations live in the prompt.** There is no `negative_prompt` argument. Diffusion models honor in-prompt negations less reliably than a real negative-prompt field, so state them as plain sentences at the end and expect to regenerate more often than you would on a provider UI that exposes the field.
|
|
92
|
+
- **`removeBackground: true` is its own argument.** It runs a background-removal pass after generation and returns a PNG with true alpha. Prefer it over asking for "transparent background" in the prompt, which makes models paint a literal checkerboard.
|
|
93
93
|
|
|
94
94
|
### 5. Downscale to target resolution
|
|
95
95
|
|
|
@@ -148,7 +148,7 @@ Confirm `Filter: Nearest` is set in the import dock OR project-wide.
|
|
|
148
148
|
- **Skipping the downscale.** The model returns a 1024×1024 pixel-style image. If you import that as a 1024 texture, the "pixels" are actually 32-pixel blocks of soft color. Downscale to true target resolution OR set `Filter: Nearest` so the up-rendering doesn't smooth.
|
|
149
149
|
- **No `Filter: Nearest`.** The default texture filtering is bilinear. Set
|
|
150
150
|
Nearest on import or project-wide for pixel art.
|
|
151
|
-
- **Reaching for `negative_prompt` or `image_size`.** Neither exists on
|
|
151
|
+
- **Reaching for `negative_prompt` or `image_size`.** Neither exists on `assets.generate_image`, and a field it does not list does nothing, so the call looks like it worked and the output is off-style. Negations go in the prompt text; shape is `aspectRatio`, a minimum size `width` + `height`.
|
|
152
152
|
- **Inconsistent palette across the cast.** Pick a named palette (PICO-8, NES, custom hex list) and re-use across every asset in the project. Different palettes = the project doesn't read as one game.
|
|
153
153
|
- **Generating walk-cycle frames as one image.** Sprite sheets via single-prompt are unreliable. Route to `sprite-sheet`.
|
|
154
154
|
|
|
@@ -160,20 +160,24 @@ Confirm `Filter: Nearest` is set in the import dock OR project-wide.
|
|
|
160
160
|
- **User specifies a palette like "Sweetie-16" or "Endesga-32" and the model ignores it.** Name the hex codes explicitly. Palette names alone are unreliable below the top 5-10 famous ones.
|
|
161
161
|
- **Tilesets need to tile cleanly.** Pixel-art tile-edge cleanliness from raw generation is poor. Generate the tile grid, then fix edge seams by hand in Aseprite.
|
|
162
162
|
|
|
163
|
+
## Without Summer Engine
|
|
164
|
+
|
|
165
|
+
In a session without Summer Engine tools (the assets profile; the `summer-assets` skill has the whole loop), do steps 1-5 and skip step 6 (import and wiring). In step 5, downscale with nearest-neighbour in an image editor; the engine settings there do not apply. Pass `out` with the person's folder so the PNG lands there (the `summer-assets` skill says how), and tell them to turn texture filtering off in their engine.
|
|
166
|
+
|
|
163
167
|
## Fallback (no MCP)
|
|
164
168
|
|
|
165
169
|
Print the call:
|
|
166
170
|
|
|
167
171
|
```
|
|
168
|
-
|
|
169
|
-
prompt
|
|
170
|
-
model
|
|
171
|
-
style
|
|
172
|
-
removeBackground
|
|
173
|
-
)
|
|
172
|
+
assets.generate_image({
|
|
173
|
+
prompt: "<pixel art prompt with full anchor>. Not blurry, no smooth gradients, no anti-aliasing.",
|
|
174
|
+
model: "nano-banana-2",
|
|
175
|
+
style: "none",
|
|
176
|
+
removeBackground: true
|
|
177
|
+
})
|
|
174
178
|
```
|
|
175
179
|
|
|
176
|
-
The Summer dashboard
|
|
180
|
+
The Summer dashboard also exposes a negative-prompt control — if the user is running it there, tell them to set square + a real negative prompt.
|
|
177
181
|
|
|
178
182
|
Tell the user to run via the Summer dashboard, downscale in Aseprite/GIMP to true target resolution with nearest-neighbor, then `summer_import_from_url` (or drop into `res://sprites/`) and set `Filter: Nearest`.
|
|
179
183
|
|
|
@@ -193,4 +197,19 @@ After the asset is wired:
|
|
|
193
197
|
- `sprite-sheet` — animated pixel frames.
|
|
194
198
|
- `character-portrait` — high-res counterpart.
|
|
195
199
|
- `asset-strategy` — meta-router.
|
|
196
|
-
-
|
|
200
|
+
- `summer_docs_read` id `reference/mcp-tools-reference` — how to call `assets.generate_image`.
|
|
201
|
+
|
|
202
|
+
<!-- shell-commands: generated from the operation catalog by npm run generate:registry; do not edit by hand -->
|
|
203
|
+
## From a shell
|
|
204
|
+
|
|
205
|
+
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.
|
|
206
|
+
|
|
207
|
+
| In this skill | Command |
|
|
208
|
+
|---|---|
|
|
209
|
+
| `assets.generate_image`, `summer_assets_generate_image` | `summer assets generate-image` |
|
|
210
|
+
| `summer_assets_search` | `summer assets search` |
|
|
211
|
+
| `summer_docs_read` | `summer docs read` |
|
|
212
|
+
| `summer_import_from_url` | `summer engine import-from-url` |
|
|
213
|
+
| `summer_set_prop` | `summer engine set-prop` |
|
|
214
|
+
| `summer_set_resource_property` | `summer engine set-resource-property` |
|
|
215
|
+
<!-- /shell-commands -->
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
id: skill/pixel-art
|
|
2
2
|
kind: skill
|
|
3
3
|
version: 1.0.4
|
|
4
|
-
summary: Generate pixel-art
|
|
4
|
+
summary: "Generate pixel-art sprites, items, tiles and portraits at a set resolution with a limited palette."
|
|
5
5
|
use_when:
|
|
6
6
|
- generating pixel-art assets — sprites, items, tiles, portraits — in a pixel style at a specific resolution (32x32, 64x64, 128x128)
|
|
7
7
|
- a retro or low-resolution 2D game needs sprites, tiles, or portraits on a fixed grid with a limited palette
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: play
|
|
3
|
-
description: "Run the project in Summer Engine, wait briefly, then report
|
|
3
|
+
description: "Run the project in Summer Engine, wait briefly, then report a clean run, errors or warnings."
|
|
4
4
|
license: MIT
|
|
5
5
|
compatibility: [Cursor, Claude Code, Windsurf, Codex]
|
|
6
6
|
category: scene-and-project
|
|
@@ -111,3 +111,21 @@ Any Summer project with a main scene set in `project.godot`.
|
|
|
111
111
|
## See also
|
|
112
112
|
|
|
113
113
|
- `debug` — what to do when /play surfaces an error
|
|
114
|
+
|
|
115
|
+
<!-- shell-commands: generated from the operation catalog by npm run generate:registry; do not edit by hand -->
|
|
116
|
+
## From a shell
|
|
117
|
+
|
|
118
|
+
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.
|
|
119
|
+
|
|
120
|
+
| In this skill | Command |
|
|
121
|
+
|---|---|
|
|
122
|
+
| `summer_clear_console` | `summer engine clear-console` |
|
|
123
|
+
| `summer_get_console` | `summer engine get-console` |
|
|
124
|
+
| `summer_get_debugger_errors` | `summer engine get-debugger-errors` |
|
|
125
|
+
| `summer_get_diagnostics` | `summer engine get-diagnostics` |
|
|
126
|
+
| `summer_get_script_errors` | `summer engine get-script-errors` |
|
|
127
|
+
| `summer_is_running` | `summer engine is-running` |
|
|
128
|
+
| `summer_open_scene` | `summer engine open-scene` |
|
|
129
|
+
| `summer_play` | `summer engine play` |
|
|
130
|
+
| `summer_stop` | `summer engine stop` |
|
|
131
|
+
<!-- /shell-commands -->
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
id: skill/play
|
|
2
2
|
kind: skill
|
|
3
3
|
version: 1.0.2
|
|
4
|
-
summary: Run the project in Summer Engine, wait briefly, then report
|
|
4
|
+
summary: "Run the project in Summer Engine, wait briefly, then report a clean run, errors or warnings."
|
|
5
5
|
use_when:
|
|
6
6
|
- the user says 'play', 'run it', 'test it', 'let me see it', or 'start the game'
|
|
7
7
|
- checking that the project still starts and runs cleanly right after a change
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: playtesting-a-feature
|
|
3
|
-
description: "Before
|
|
3
|
+
description: "Before calling a gameplay feature done, run the game and walk through it. Static checks do not count."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Playtesting A Feature
|
|
@@ -261,3 +261,26 @@ Press play. Walk the path. Probe the edges. Read the diagnostics. Then claim don
|
|
|
261
261
|
- `debug` — when the playtest surfaces a crash or error.
|
|
262
262
|
- `investigating-bugs` — when the playtest surfaces a reproducible logical bug.
|
|
263
263
|
- `debugging-game-feel` — when the feature works but feels wrong.
|
|
264
|
+
|
|
265
|
+
<!-- shell-commands: generated from the operation catalog by npm run generate:registry; do not edit by hand -->
|
|
266
|
+
## From a shell
|
|
267
|
+
|
|
268
|
+
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.
|
|
269
|
+
|
|
270
|
+
| In this skill | Command |
|
|
271
|
+
|---|---|
|
|
272
|
+
| `summer_batch` | `summer engine batch` |
|
|
273
|
+
| `summer_clear_console` | `summer engine clear-console` |
|
|
274
|
+
| `summer_game_control` | `summer engine game-control` |
|
|
275
|
+
| `summer_game_input` | `summer engine game-input` |
|
|
276
|
+
| `summer_game_probe` | `summer engine game-probe` |
|
|
277
|
+
| `summer_get_console` | `summer engine get-console` |
|
|
278
|
+
| `summer_get_debugger_errors` | `summer engine get-debugger-errors` |
|
|
279
|
+
| `summer_get_diagnostics` | `summer engine get-diagnostics` |
|
|
280
|
+
| `summer_get_runtime_tree` | `summer engine get-runtime-tree` |
|
|
281
|
+
| `summer_inspect_runtime_node` | `summer engine inspect-runtime-node` |
|
|
282
|
+
| `summer_is_running` | `summer engine is-running` |
|
|
283
|
+
| `summer_play` | `summer engine play` |
|
|
284
|
+
| `summer_recent_events` | `summer engine recent-events` |
|
|
285
|
+
| `summer_wait_for_event` | `summer engine wait-for-event` |
|
|
286
|
+
<!-- /shell-commands -->
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
id: skill/playtesting-a-feature
|
|
2
2
|
kind: skill
|
|
3
3
|
version: 1.1.2
|
|
4
|
-
summary: "Before
|
|
4
|
+
summary: "Before calling a gameplay feature done, run the game and walk through it. Static checks do not count."
|
|
5
5
|
use_when:
|
|
6
6
|
- about to claim a gameplay feature is done, shipped, or working — requires actually running the game and walking through the feature first
|
|
7
7
|
- a feature passes static diagnostics but nobody has actually run the game and exercised it yet
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: procedural-animation
|
|
3
|
-
description: "Runtime bone
|
|
3
|
+
description: "Runtime bone changes on top of clips: head look-at, foot IK, hand grabs a prop, lean, recoil."
|
|
4
4
|
license: MIT
|
|
5
5
|
compatibility: [Cursor, Claude Code, Windsurf, Codex]
|
|
6
6
|
category: animation
|
|
@@ -61,31 +61,35 @@ The most common NPC liveliness fix.
|
|
|
61
61
|
```gdscript
|
|
62
62
|
func run(ctx):
|
|
63
63
|
var skel = ctx.find("NPC").find_children("*", "Skeleton3D", true, false)[0]
|
|
64
|
-
var mod
|
|
64
|
+
var mod = ctx.look_at_modifier(skel, ctx.find("Player"), {
|
|
65
65
|
"bone_name": "Head", "forward_axis": 2, "primary_rotation_axis": 1,
|
|
66
66
|
"use_secondary_rotation": true, "use_angle_limitation": true,
|
|
67
67
|
"symmetry_limitation": true, "primary_limit_angle": 1.4, "secondary_limit_angle": 1.0,
|
|
68
68
|
})
|
|
69
69
|
```
|
|
70
70
|
|
|
71
|
-
Unknown prop names land in the `prop_warnings` report entry instead of failing silently — read it. On an older engine the helper is a plain script error; fall back to the
|
|
71
|
+
Unknown prop names land in the `prop_warnings` report entry instead of failing silently — read it. On an older engine the helper is a plain script error; fall back to plain GDScript in the same tool (confirm the bone names first with `summer_inspect_node`):
|
|
72
72
|
|
|
73
73
|
```
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
74
|
+
summer_run_script(scenePath="res://main.tscn", source="""
|
|
75
|
+
func run(ctx):
|
|
76
|
+
var skel = ctx.find("NPC").find_children("*", "Skeleton3D", true, false)[0]
|
|
77
|
+
var look = LookAtModifier3D.new()
|
|
78
|
+
look.name = "HeadLookAt"
|
|
79
|
+
look.bone_name = "Head"
|
|
80
|
+
look.forward_axis = 2 # +Z forward (Meshy default)
|
|
81
|
+
look.primary_rotation_axis = 1 # Y-up
|
|
82
|
+
look.use_secondary_rotation = true
|
|
83
|
+
look.use_angle_limitation = true # OFF by default: nothing clamps until you set this
|
|
84
|
+
look.symmetry_limitation = true # one angle drives both directions
|
|
85
|
+
look.primary_limit_angle = 1.4 # ~80 degrees, prevents the Exorcist
|
|
86
|
+
look.secondary_limit_angle = 1.0
|
|
87
|
+
skel.add_child(look)
|
|
88
|
+
ctx.set_owner_recursive(look)
|
|
89
|
+
ctx.save_scene()
|
|
90
|
+
""")
|
|
84
91
|
```
|
|
85
92
|
|
|
86
|
-
Every `summer_set_prop` above also needs the required `scenePath` (e.g.
|
|
87
|
-
`scenePath="res://main.tscn"`); the paths are shown bare here for readability.
|
|
88
|
-
|
|
89
93
|
There is no `symmetry_limit` and no `secondary_rotation_axis` property on
|
|
90
94
|
`LookAtModifier3D` — the real names are the ones above, and the secondary
|
|
91
95
|
rotation axis is derived, not set. Confirmed against the shipped 4.6.1 binary;
|
|
@@ -264,3 +268,21 @@ driving them. Foot raycasts can be set up visually with a RayCast3D child.
|
|
|
264
268
|
- Upstream API reference matching the current Summer technical base:
|
|
265
269
|
`SkeletonModifier3D`, `LookAtModifier3D`, `SkeletonIK3D`,
|
|
266
270
|
`PhysicalBoneSimulator3D`.
|
|
271
|
+
|
|
272
|
+
<!-- shell-commands: generated from the operation catalog by npm run generate:registry; do not edit by hand -->
|
|
273
|
+
## From a shell
|
|
274
|
+
|
|
275
|
+
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.
|
|
276
|
+
|
|
277
|
+
| In this skill | Command |
|
|
278
|
+
|---|---|
|
|
279
|
+
| `summer_add_node` | `summer engine add-node` |
|
|
280
|
+
| `summer_get_scene_tree` | `summer engine get-scene-tree` |
|
|
281
|
+
| `summer_get_script_errors` | `summer engine get-script-errors` |
|
|
282
|
+
| `summer_inspect_node` | `summer engine inspect-node` |
|
|
283
|
+
| `summer_inspect_resource` | `summer engine inspect-resource` |
|
|
284
|
+
| `summer_run_script` | `summer engine run-script` |
|
|
285
|
+
| `summer_save_scene` | `summer engine save-scene` |
|
|
286
|
+
| `summer_set_prop` | `summer engine set-prop` |
|
|
287
|
+
| `summer_set_resource_property` | `summer engine set-resource-property` |
|
|
288
|
+
<!-- /shell-commands -->
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
id: skill/procedural-animation
|
|
2
2
|
kind: skill
|
|
3
3
|
version: 1.0.4
|
|
4
|
-
summary: Runtime bone
|
|
4
|
+
summary: "Runtime bone changes on top of clips: head look-at, foot IK, hand grabs a prop, lean, recoil."
|
|
5
5
|
use_when:
|
|
6
6
|
- the user needs runtime-driven bone modification on top of clips — head look-at, foot IK on uneven ground, additive lean, hit recoil, ragdoll
|
|
7
7
|
- the character's feet float above or sink into stairs and slopes (foot placement)
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: prop-model
|
|
3
|
-
description: "Generate
|
|
3
|
+
description: "Generate one static 3D prop (sword, barrel, chest, lantern, statue): one object, no rig, a MeshInstance3D."
|
|
4
4
|
license: MIT
|
|
5
5
|
compatibility: [Cursor, Claude Code, Windsurf, Codex]
|
|
6
6
|
category: 3d-assets
|
|
7
7
|
user-invocable: true
|
|
8
|
-
allowed-tools: Read Grep
|
|
8
|
+
allowed-tools: Read Grep summer_assets_search summer_assets_get summer_import_asset_by_id summer_assets_generate_3d summer_assets_generate_image summer_import_from_url summer_add_node summer_set_prop summer_inspect_node summer_get_scene_tree summer_save_scene summer_jobs_wait summer_call
|
|
9
9
|
paths: ["assets/models/**", "**/*.tscn", "**/*.gd"]
|
|
10
10
|
---
|
|
11
11
|
|
|
@@ -13,7 +13,7 @@ paths: ["assets/models/**", "**/*.tscn", "**/*.gd"]
|
|
|
13
13
|
|
|
14
14
|
One prop, one mesh, one MeshInstance3D. Most game-world objects are static props, so this is the most common 3D-asset call. The skill keeps two things tight: the **prompt shape** that produces a clean isolated mesh on the first try, and the **wire-in pattern** that gets the asset into the scene without leaving orphans in `res://assets/models/`.
|
|
15
15
|
|
|
16
|
-
The backing
|
|
16
|
+
The backing operation is `assets.generate_3d`; it answers with a job that `jobs.wait` follows. Default model is `hunyuan` (Hunyuan 3D v3.1 Pro — best quality). Use `trellis` when speed matters (Trellis 2 is ~2× faster, slightly lower fidelity). `meshy` is the legacy fallback — only pick it if the user asks by name.
|
|
17
17
|
|
|
18
18
|
## When to use
|
|
19
19
|
|
|
@@ -37,7 +37,7 @@ The backing tool is `summer_generate_3d`. Default model is `hunyuan` (Hunyuan 3D
|
|
|
37
37
|
### 1. Search before generating
|
|
38
38
|
|
|
39
39
|
```
|
|
40
|
-
|
|
40
|
+
assets.search({ query: "<prop name>", assetType: "3d_model", scope: "all" })
|
|
41
41
|
```
|
|
42
42
|
|
|
43
43
|
If a fitting model exists, propose reuse:
|
|
@@ -48,10 +48,10 @@ If a fitting model exists, propose reuse:
|
|
|
48
48
|
|
|
49
49
|
| Use case | Tris | Pass via |
|
|
50
50
|
|---|---|---|
|
|
51
|
-
| Hero prop (sword on hip, key item) | 3k–8k | `
|
|
52
|
-
| Background prop (crate, barrel, sack) | 200–800 | `
|
|
53
|
-
| Mid-range interactive (chest, lantern) | 1k–3k | `
|
|
54
|
-
| Cinematic showcase (throne, statue) | 10k–30k | `
|
|
51
|
+
| Hero prop (sword on hip, key item) | 3k–8k | `targetPolycount: 5000` |
|
|
52
|
+
| Background prop (crate, barrel, sack) | 200–800 | `targetPolycount: 600` |
|
|
53
|
+
| Mid-range interactive (chest, lantern) | 1k–3k | `targetPolycount: 2000` |
|
|
54
|
+
| Cinematic showcase (throne, statue) | 10k–30k | `targetPolycount: 20000` |
|
|
55
55
|
|
|
56
56
|
Default if you don't pass it: provider picks (~10k–30k). For most game-world props, that's overkill — pass a target.
|
|
57
57
|
|
|
@@ -74,22 +74,24 @@ The `isolated object` and `white background` clauses are load-bearing — withou
|
|
|
74
74
|
|
|
75
75
|
> About to generate `viking_axe` via `hunyuan`, target ~5k tris, ~60s. This uses credits. OK?
|
|
76
76
|
|
|
77
|
+
To say how many credits, run the same call with `dryRun: true` first: it returns `estimate` (`credits`, `balance`, `enough`) and generates nothing.
|
|
78
|
+
|
|
77
79
|
```
|
|
78
|
-
|
|
79
|
-
prompt
|
|
80
|
-
model
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
)
|
|
80
|
+
assets.generate_3d({
|
|
81
|
+
prompt: "A two-handed viking battle axe, weathered iron head with rune etchings, leather-wrapped wooden haft. Game asset, centered, stylized, white background, isolated object.",
|
|
82
|
+
model: "hunyuan",
|
|
83
|
+
targetPolycount: 5000
|
|
84
|
+
})
|
|
85
|
+
jobs.wait({ jobId: "<job.id>", timeoutSeconds: 50 }) // again until finished
|
|
84
86
|
```
|
|
85
87
|
|
|
86
|
-
|
|
88
|
+
The finished job's `result` holds `assetId` and `fileUrl`. Treat `assetId` as the
|
|
87
89
|
stable handle and `fileUrl` as a fallback preview/import URL.
|
|
88
90
|
|
|
89
91
|
### 5. Import and wire
|
|
90
92
|
|
|
91
93
|
```
|
|
92
|
-
|
|
94
|
+
assets.get({ assetId: "<assetId>" })
|
|
93
95
|
summer_import_asset_by_id(
|
|
94
96
|
assetId="<assetId>",
|
|
95
97
|
path="res://assets/models/viking_axe.glb",
|
|
@@ -111,8 +113,8 @@ the parent-shape pattern.
|
|
|
111
113
|
|
|
112
114
|
- **Scene context in the prompt.** "A sword lying on a wooden table" → the table becomes geometry. Always say `isolated object`.
|
|
113
115
|
- **Multi-object prompts.** "A sword and a shield" → fused single mesh. Generate separately.
|
|
114
|
-
- **Skipping `
|
|
115
|
-
- **Forgetting to import.** `fileUrl` from `
|
|
116
|
+
- **Skipping `targetPolycount` for background props.** A 30k-tri barrel in the background tanks frame rate when the level has 50 of them.
|
|
117
|
+
- **Forgetting to import.** `fileUrl` from `assets.generate_3d` is a remote URL — you MUST `summer_import_asset_by_id` or `summer_import_from_url` before referencing it as `res://...`.
|
|
116
118
|
- **Generating before searching.** Reuse beats regenerate every time.
|
|
117
119
|
- **Picking `meshy` by default.** It's legacy. `hunyuan` is better; `trellis` is faster.
|
|
118
120
|
|
|
@@ -123,6 +125,10 @@ the parent-shape pattern.
|
|
|
123
125
|
- **Concave interior (open chest, hollow vase).** Specify "lid open" or "hollow inside" — Hunyuan defaults to closed solids.
|
|
124
126
|
- **Symmetrical prop comes back asymmetric.** Add `symmetric, mirrored` to the prompt and regenerate.
|
|
125
127
|
|
|
128
|
+
## Without Summer Engine
|
|
129
|
+
|
|
130
|
+
In a session without Summer Engine tools (the assets profile; the `summer-assets` skill has the whole loop), do steps 1-4 and skip step 5 (import and wiring). Save the file where the person asked with `out` (the `summer-assets` skill says how), and tell them the path and format. The file is GLB. Generated models are not at real-world size, so give the person the target size (a chair about 1 m, a door about 2 m) to scale it to.
|
|
131
|
+
|
|
126
132
|
## Fallback (no MCP)
|
|
127
133
|
|
|
128
134
|
The user can run the same prompt in the Summer dashboard or a supported
|
|
@@ -144,4 +150,27 @@ After the prop is wired:
|
|
|
144
150
|
- `asset-strategy` — the meta-router that decides between this skill and Pipeline 2 (textures).
|
|
145
151
|
- `character-model` — for humanoids.
|
|
146
152
|
- `environment-kit` — for style-locked sets.
|
|
147
|
-
-
|
|
153
|
+
- `summer_docs_read` id `reference/mcp-tools-reference` — how to call `assets.generate_3d`; `summer_search` returns its exact input.
|
|
154
|
+
|
|
155
|
+
<!-- shell-commands: generated from the operation catalog by npm run generate:registry; do not edit by hand -->
|
|
156
|
+
## From a shell
|
|
157
|
+
|
|
158
|
+
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.
|
|
159
|
+
|
|
160
|
+
| In this skill | Command |
|
|
161
|
+
|---|---|
|
|
162
|
+
| `assets.generate_3d`, `summer_assets_generate_3d` | `summer assets generate-3d` |
|
|
163
|
+
| `summer_assets_generate_image` | `summer assets generate-image` |
|
|
164
|
+
| `summer_assets_get` | `summer assets get` |
|
|
165
|
+
| `summer_assets_search` | `summer assets search` |
|
|
166
|
+
| `summer_docs_read` | `summer docs read` |
|
|
167
|
+
| `summer_add_node` | `summer engine add-node` |
|
|
168
|
+
| `summer_get_scene_tree` | `summer engine get-scene-tree` |
|
|
169
|
+
| `summer_import_asset_by_id` | `summer engine import-asset-by-id` |
|
|
170
|
+
| `summer_import_from_url` | `summer engine import-from-url` |
|
|
171
|
+
| `summer_inspect_node` | `summer engine inspect-node` |
|
|
172
|
+
| `summer_save_scene` | `summer engine save-scene` |
|
|
173
|
+
| `summer_set_prop` | `summer engine set-prop` |
|
|
174
|
+
| `jobs.wait`, `summer_jobs_wait` | `summer jobs wait` |
|
|
175
|
+
| `summer_search` | `summer ops search "<what you want>"` |
|
|
176
|
+
<!-- /shell-commands -->
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
id: skill/prop-model
|
|
2
2
|
kind: skill
|
|
3
3
|
version: 1.0.3
|
|
4
|
-
summary: Generate
|
|
4
|
+
summary: "Generate one static 3D prop (sword, barrel, chest, lantern, statue): one object, no rig, a MeshInstance3D."
|
|
5
5
|
use_when:
|
|
6
6
|
- generating a single static 3D prop — sword, barrel, chest, lantern, throne, statue, crate, key, potion, banner
|
|
7
7
|
- a scene needs one static object — furniture, weapon, container, decoration — as a MeshInstance3D without rigging
|
|
@@ -30,6 +30,7 @@ source: official
|
|
|
30
30
|
license: MIT
|
|
31
31
|
status: preview
|
|
32
32
|
recommended: false
|
|
33
|
+
bundled: false
|
|
33
34
|
lint_exceptions:
|
|
34
35
|
- url-allowlist
|
|
35
36
|
lint_exception_reason: "Source citation: the body links the MIT-licensed godot-psxlike reference addon on GitHub (wyvernbw) that the extracted article names as its implementation evidence. Read-only provenance link; the skill never fetches or installs it."
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: publish-your-game
|
|
3
|
-
description: "Publish a
|
|
3
|
+
description: "Publish a game on Summer Games through MCP: store page, art, build upload, submit, owner approval link."
|
|
4
4
|
license: MIT
|
|
5
5
|
compatibility: [Cursor, Claude Code, Windsurf, Codex]
|
|
6
6
|
category: deployment
|
|
7
7
|
user-invocable: true
|
|
8
|
-
allowed-tools:
|
|
8
|
+
allowed-tools: summer_docs_read
|
|
9
9
|
---
|
|
10
10
|
|
|
11
11
|
# /publish-your-game — publish your game
|
|
@@ -14,12 +14,49 @@ This skill covers the whole publishing journey: find the game, make its store pa
|
|
|
14
14
|
|
|
15
15
|
Its current text lives on the hosted Summer Engine MCP, the same text the Studio agent reads, so it changes with the store and is never stale here. Load it before you act:
|
|
16
16
|
|
|
17
|
-
1. `
|
|
17
|
+
1. `summer_docs_read` with id `skill/publish-your-game` returns the current text when this machine is signed in (`summer login`).
|
|
18
18
|
2. A host that shows MCP prompts or resources has it as the `publish-your-game` prompt and the resource `summer://skills/publish-your-game`.
|
|
19
19
|
3. Without a store sign-in: https://docs.summerengine.com/llms.txt lists every docs page; fetch any page as .md.
|
|
20
20
|
|
|
21
|
-
|
|
21
|
+
## The journey in operations
|
|
22
22
|
|
|
23
|
-
|
|
23
|
+
A call written `area.action({...})` is the tool `summer_area_action` when your client lists it, else `summer_call({ op: "area.action", input: {...} })`; `summer_search` finds any operation and its exact input. Engine tools keep their `summer_*` names.
|
|
24
24
|
|
|
25
|
-
|
|
25
|
+
1. `games.list()` finds the game; `games.create({ title, targets })` makes a new one with its first store page draft. Include `web` in `targets` so it plays in the browser. Keep the `gameId`.
|
|
26
|
+
2. `store.get_listing({ gameId })` reads the page: text per store, art per slot, the publish checklist and the tags a page can pick.
|
|
27
|
+
3. `store.update_listing`, `store.set_art`, `store.set_trailer` and `store.set_sound` fill it until `readyToPublish` is true. Editing never publishes.
|
|
28
|
+
4. Export with `summer_export_game`, run `release-readiness` on the exact `.zip`, and report each check to the owner; a hosted game's upload checks can pass while every online join fails. Then upload it: `store.upload_file({ gameId, clientVersion, confirm: true })` from this machine once the owner approved the exact file and version, or `store.upload_begin` (`kind` bundle, web or download), `store.upload_sign_parts` and `store.upload_complete` with the bytes. Finishing answers a job: `jobs.wait({ jobId })` until Summer's checks are done.
|
|
29
|
+
5. `store.publish({ gameId, price, note, idempotencyKey })` asks the owner; `price` is `{ currency: "USD", amountMinor }` in cents (0 is free), omitted it keeps the current price. It answers `needs_approval` with the owner's link and a job. Give the owner the link; `jobs.wait({ jobId })` returns once they answer.
|
|
30
|
+
6. `store.status({ gameId })` shows Summer's review decision and feedback, every upload, what players get now, and one next step.
|
|
31
|
+
7. A store bundle goes to players with `store.release({ gameId, idempotencyKey })` once Summer approved the game: it releases only the build the owner approved, and answers a job. Web builds and downloads need no release.
|
|
32
|
+
|
|
33
|
+
The one rule to keep even before you load it: Asking does not publish. `store.publish` returns an approval link; only the owner's click sends the game to review, and review comes before live.
|
|
34
|
+
|
|
35
|
+
After the review: when `store.status` says `review.needsChanges`, fix every point in `review.feedback`, then call `store.publish` again with a new `idempotencyKey`; the owner approves the resubmission. If there is no written feedback, say so and ask the owner instead of guessing. The game is not live until Summer approves it.
|
|
36
|
+
|
|
37
|
+
<!-- shell-commands: generated from the operation catalog by npm run generate:registry; do not edit by hand -->
|
|
38
|
+
## From a shell
|
|
39
|
+
|
|
40
|
+
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.
|
|
41
|
+
|
|
42
|
+
| In this skill | Command |
|
|
43
|
+
|---|---|
|
|
44
|
+
| `summer_docs_read` | `summer docs read` |
|
|
45
|
+
| `summer_export_game` | `summer engine export-game` |
|
|
46
|
+
| `games.create` | `summer games create` |
|
|
47
|
+
| `games.list` | `summer games list` |
|
|
48
|
+
| `jobs.wait` | `summer jobs wait` |
|
|
49
|
+
| `summer_search` | `summer ops search "<what you want>"` |
|
|
50
|
+
| `store.get_listing` | `summer store get-listing` |
|
|
51
|
+
| `store.publish` | `summer store publish` |
|
|
52
|
+
| `store.release` | `summer store release` |
|
|
53
|
+
| `store.set_art` | `summer store set-art` |
|
|
54
|
+
| `store.set_sound` | `summer store set-sound` |
|
|
55
|
+
| `store.set_trailer` | `summer store set-trailer` |
|
|
56
|
+
| `store.status` | `summer store status` |
|
|
57
|
+
| `store.update_listing` | `summer store update-listing` |
|
|
58
|
+
| `store.upload_begin` | `summer store upload-begin` |
|
|
59
|
+
| `store.upload_complete` | `summer store upload-complete` |
|
|
60
|
+
| `store.upload_file` | `summer store upload-file` |
|
|
61
|
+
| `store.upload_sign_parts` | `summer store upload-sign-parts` |
|
|
62
|
+
<!-- /shell-commands -->
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
id: skill/publish-your-game
|
|
2
2
|
kind: skill
|
|
3
3
|
version: 1.0.0
|
|
4
|
-
summary: "Publish a
|
|
4
|
+
summary: "Publish a game on Summer Games through MCP: store page, art, build upload, submit, owner approval link."
|
|
5
5
|
use_when:
|
|
6
6
|
- "the user says 'publish my game', 'put it on summer.games', 'launch it on the store' or 'submit it for review'"
|
|
7
|
-
- "taking a built Summer game to a submitted store page: listing text, art, build upload,
|
|
8
|
-
- "an agent publishes for the owner end to end and needs the order of the
|
|
7
|
+
- "taking a built Summer game to a submitted store page: listing text, art, build upload, store.publish and the owner's approval link"
|
|
8
|
+
- "an agent publishes for the owner end to end and needs the order of the store.* operations"
|
|
9
9
|
do_not_use_when:
|
|
10
10
|
- "only producing a local export build — skill/export-and-ship"
|
|
11
11
|
facets:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: release-readiness
|
|
3
|
-
description: "Before releasing a Summer game version, prove players can play it: server
|
|
3
|
+
description: "Before releasing a Summer game version, prove players can play it: server, online join, progress, files."
|
|
4
4
|
license: MIT
|
|
5
5
|
compatibility: [Cursor, Claude Code, Windsurf, Codex]
|
|
6
6
|
category: deployment
|
|
@@ -435,3 +435,15 @@ here would have caught:
|
|
|
435
435
|
- [ ] 9. For an iPhone or Android bundle, `summerVersion` has the current Summer release's MAJOR.MINOR.
|
|
436
436
|
- [ ] 10. A signed-in player played the released version for 3 minutes in each Summer Games app, through an analytics event, without the game closing or being signed out (or it is reported as not run).
|
|
437
437
|
- [ ] One line per check reported to the user before anything is changed.
|
|
438
|
+
|
|
439
|
+
<!-- shell-commands: generated from the operation catalog by npm run generate:registry; do not edit by hand -->
|
|
440
|
+
## From a shell
|
|
441
|
+
|
|
442
|
+
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.
|
|
443
|
+
|
|
444
|
+
| In this skill | Command |
|
|
445
|
+
|---|---|
|
|
446
|
+
| `summer_export_game` | `summer engine export-game` |
|
|
447
|
+
| `summer_get_diagnostics` | `summer engine get-diagnostics` |
|
|
448
|
+
| `summer_read_file` | `summer engine read-file` |
|
|
449
|
+
<!-- /shell-commands -->
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
id: skill/release-readiness
|
|
2
2
|
kind: skill
|
|
3
3
|
version: 1.0.0
|
|
4
|
-
summary: "Before releasing a Summer game version, prove players can play it: server
|
|
4
|
+
summary: "Before releasing a Summer game version, prove players can play it: server, online join, progress, files."
|
|
5
5
|
use_when:
|
|
6
6
|
- "before uploading, promoting or releasing a new version to players: is it ready to release"
|
|
7
7
|
- "every online join fails with world_start_timeout, or the hosted server's log is empty, while Local Play works"
|