summer-engine 3.1.0 → 3.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 -2
- package/.claude-plugin/plugin.json +27 -5
- package/.codex-plugin/plugin.json +28 -6
- package/.cursor-plugin/plugin.json +27 -5
- package/.factory-plugin/plugin.json +27 -5
- package/.opencode/plugins/summer.js +1 -1
- package/CHANGELOG.md +102 -0
- package/README.md +18 -3
- package/assets/audit/scene_audit.gd +4136 -0
- package/assets/seeing/seeing_probe.gd +1873 -0
- package/dist/cli/commands/skills.js +20 -2
- package/dist/core/api-client.d.ts +9 -1
- package/dist/core/api-client.js +21 -4
- package/dist/core/capabilities/agent-playbook.js +46 -0
- package/dist/core/capabilities/audit/accept.d.ts +55 -0
- package/dist/core/capabilities/audit/accept.js +147 -0
- package/dist/core/capabilities/audit/args.d.ts +95 -0
- package/dist/core/capabilities/audit/args.js +89 -0
- package/dist/core/capabilities/audit/audit.d.ts +56 -0
- package/dist/core/capabilities/audit/audit.js +287 -0
- package/dist/core/capabilities/audit/frame.d.ts +14 -0
- package/dist/core/capabilities/audit/frame.js +35 -0
- package/dist/core/capabilities/audit/gaps.d.ts +96 -0
- package/dist/core/capabilities/audit/gaps.js +257 -0
- package/dist/core/capabilities/audit/judge.d.ts +162 -0
- package/dist/core/capabilities/audit/judge.js +1134 -0
- package/dist/core/capabilities/audit/math.d.ts +110 -0
- package/dist/core/capabilities/audit/math.js +263 -0
- package/dist/core/capabilities/audit/summary.d.ts +74 -0
- package/dist/core/capabilities/audit/summary.js +212 -0
- package/dist/core/capabilities/board.d.ts +31 -0
- package/dist/core/capabilities/board.js +43 -0
- package/dist/core/capabilities/camera-view.d.ts +4 -2
- package/dist/core/capabilities/camera-view.js +6 -3
- package/dist/core/capabilities/connect-signal.d.ts +85 -0
- package/dist/core/capabilities/connect-signal.js +285 -0
- package/dist/core/capabilities/engine-fallbacks.d.ts +5 -0
- package/dist/core/capabilities/engine-fallbacks.js +5 -0
- package/dist/core/capabilities/engine-ops.d.ts +5 -1
- package/dist/core/capabilities/engine-ops.js +0 -3
- package/dist/core/capabilities/engine-receipt.d.ts +12 -0
- package/dist/core/capabilities/engine-receipt.js +26 -0
- package/dist/core/capabilities/file-read.d.ts +64 -0
- package/dist/core/capabilities/file-read.js +325 -0
- package/dist/core/capabilities/game-task-plan.js +4 -2
- package/dist/core/capabilities/grep.d.ts +60 -0
- package/dist/core/capabilities/grep.js +190 -0
- package/dist/core/capabilities/inspect-node.d.ts +56 -0
- package/dist/core/capabilities/inspect-node.js +225 -0
- package/dist/core/capabilities/inspect-resource.d.ts +61 -0
- package/dist/core/capabilities/inspect-resource.js +376 -0
- package/dist/core/capabilities/math3d.d.ts +28 -0
- package/dist/core/capabilities/math3d.js +88 -0
- package/dist/core/capabilities/motion-generation.d.ts +62 -0
- package/dist/core/capabilities/motion-generation.js +138 -0
- package/dist/core/capabilities/placement-batch.d.ts +102 -0
- package/dist/core/capabilities/placement-batch.js +483 -0
- package/dist/core/capabilities/placement-math.d.ts +70 -0
- package/dist/core/capabilities/placement-math.js +209 -0
- package/dist/core/capabilities/placement-script.d.ts +42 -0
- package/dist/core/capabilities/placement-script.js +1096 -0
- package/dist/core/capabilities/placement.d.ts +485 -0
- package/dist/core/capabilities/placement.js +1731 -0
- package/dist/core/capabilities/project-context.d.ts +33 -2
- package/dist/core/capabilities/project-context.js +87 -4
- package/dist/core/capabilities/replace-node.d.ts +91 -0
- package/dist/core/capabilities/replace-node.js +423 -0
- package/dist/core/capabilities/runtime-control.d.ts +18 -2
- package/dist/core/capabilities/runtime-control.js +67 -2
- package/dist/core/capabilities/scene-batch.d.ts +63 -0
- package/dist/core/capabilities/scene-batch.js +394 -0
- package/dist/core/capabilities/scene-readback.d.ts +36 -0
- package/dist/core/capabilities/scene-readback.js +54 -0
- package/dist/core/capabilities/seeing/args.d.ts +348 -0
- package/dist/core/capabilities/seeing/args.js +178 -0
- package/dist/core/capabilities/seeing/candidates.d.ts +127 -0
- package/dist/core/capabilities/seeing/candidates.js +282 -0
- package/dist/core/capabilities/seeing/math.d.ts +134 -0
- package/dist/core/capabilities/seeing/math.js +269 -0
- package/dist/core/capabilities/seeing/probe.d.ts +62 -0
- package/dist/core/capabilities/seeing/probe.js +188 -0
- package/dist/core/capabilities/seeing/scoring.d.ts +235 -0
- package/dist/core/capabilities/seeing/scoring.js +639 -0
- package/dist/core/capabilities/seeing/seeing.d.ts +233 -0
- package/dist/core/capabilities/seeing/seeing.js +1341 -0
- package/dist/core/capabilities/seeing/shot-store.d.ts +52 -0
- package/dist/core/capabilities/seeing/shot-store.js +204 -0
- package/dist/core/capabilities/surface-snap-mesh.d.ts +88 -0
- package/dist/core/capabilities/surface-snap-mesh.js +425 -0
- package/dist/core/capabilities/surface-snap.d.ts +77 -0
- package/dist/core/capabilities/surface-snap.js +461 -0
- package/dist/core/capabilities/tool-dispatch.js +231 -72
- package/dist/core/capabilities/tscn.d.ts +85 -0
- package/dist/core/capabilities/tscn.js +391 -0
- package/dist/core/capabilities/world-snapshot.d.ts +58 -0
- package/dist/core/capabilities/world-snapshot.js +150 -0
- package/dist/core/capability-skew.d.ts +5 -5
- package/dist/core/capability-skew.js +14 -6
- package/dist/core/headless/worker-engine-client.d.ts +1 -1
- package/dist/core/headless/worker-engine-client.js +2 -2
- package/dist/core/library-read.d.ts +37 -5
- package/dist/core/library-read.js +264 -33
- package/dist/core/library-search.d.ts +2 -2
- package/dist/installer/agent-config.js +5 -3
- package/dist/installer/agent-table.d.ts +16 -0
- package/dist/installer/agent-table.js +52 -17
- package/dist/mcp/server.js +9 -3
- package/dist/mcp/tools/asset-tools.js +21 -3
- package/dist/mcp/tools/audit-tools.d.ts +23 -0
- package/dist/mcp/tools/audit-tools.js +60 -0
- package/dist/mcp/tools/debug-tools.js +3 -1
- package/dist/mcp/tools/file-tools.js +17 -4
- package/dist/mcp/tools/generate-tools.js +74 -66
- package/dist/mcp/tools/library-tools.js +2 -0
- package/dist/mcp/tools/perception-tools.js +6 -19
- package/dist/mcp/tools/placement-tools.d.ts +24 -0
- package/dist/mcp/tools/placement-tools.js +91 -0
- package/dist/mcp/tools/project-tools.js +18 -15
- package/dist/mcp/tools/scene-tools.js +71 -83
- package/dist/mcp/tools/seeing-tools.d.ts +24 -0
- package/dist/mcp/tools/seeing-tools.js +64 -0
- package/dist/mcp/tools/spatial-tools.js +17 -9
- package/dist/mcp/tools/visual-tools.js +59 -7
- package/gemini-extension.json +26 -4
- package/integrations/amp/README.md +1 -1
- package/integrations/crush/README.md +1 -1
- package/integrations/grok-build/README.md +1 -1
- package/integrations/hermes/README.md +1 -1
- package/integrations/kimi-code/README.md +1 -1
- package/integrations/mistral-vibe/README.md +1 -1
- package/integrations/opencode/README.md +1 -1
- package/integrations/rovo-dev/README.md +1 -1
- package/integrations/vscode-copilot/README.md +1 -1
- package/integrations/warp/README.md +1 -1
- package/integrations/windsurf/README.md +1 -1
- package/library/references/mcp-tools-reference/mcp-tools-reference.md +59 -15
- package/library/references/mcp-tools-reference/resource.yaml +1 -1
- package/library/references/summer-folder/resource.yaml +1 -1
- package/library/references/summer-folder/summer-folder.md +1 -1
- package/library/skills/3d-lighting/SKILL.md +1 -1
- package/library/skills/README.md +36 -14
- package/library/skills/adaptive-music/SKILL.md +1 -1
- package/library/skills/agent-playtesting/SKILL.md +1 -1
- package/library/skills/ai-characters-in-games/SKILL.md +220 -0
- package/library/skills/ai-characters-in-games/resource.yaml +30 -0
- package/library/skills/ambient-bed/SKILL.md +1 -1
- package/library/skills/animated-loop/SKILL.md +1 -1
- package/library/skills/animation-tree/SKILL.md +1 -1
- package/library/skills/art-direction/SKILL.md +1 -1
- package/library/skills/asset-strategy/SKILL.md +2 -1
- package/library/skills/asset-strategy/resource.yaml +2 -1
- package/library/skills/audio-direction/SKILL.md +1 -1
- package/library/skills/auto-fire-targeting/SKILL.md +1 -1
- package/library/skills/brainstorm-game/SKILL.md +1 -1
- package/library/skills/brainstorming/SKILL.md +1 -1
- package/library/skills/browse-templates/SKILL.md +3 -3
- package/library/skills/browse-templates/resource.yaml +1 -1
- package/library/skills/camera-rigs/SKILL.md +128 -0
- package/library/skills/camera-rigs/resource.yaml +29 -0
- package/library/skills/celeste-momentum-platforming/SKILL.md +1 -1
- package/library/skills/character-animation-wiring/SKILL.md +1 -1
- package/library/skills/character-model/SKILL.md +1 -1
- package/library/skills/character-movement/SKILL.md +326 -0
- package/library/skills/character-movement/references/default-third-person-controller.gd +201 -0
- package/library/skills/character-movement/references/default-third-person-verification-probe.gd +154 -0
- package/library/skills/character-movement/references/movement-3d.md +136 -0
- package/library/skills/character-movement/references/platformer-feel.md +83 -0
- package/library/skills/character-movement/resource.yaml +40 -0
- package/library/skills/character-portrait/SKILL.md +1 -1
- package/library/skills/cinematic-cutscene/SKILL.md +1 -1
- package/library/skills/combat-basics/SKILL.md +159 -0
- package/library/skills/combat-basics/references/projectiles-and-aoe.md +100 -0
- package/library/skills/combat-basics/resource.yaml +34 -0
- package/library/skills/concept-art/SKILL.md +1 -1
- package/library/skills/create-asset-sheet/SKILL.md +1 -1
- package/library/skills/debug/SKILL.md +1 -1
- package/library/skills/debugging-game-feel/SKILL.md +1 -1
- package/library/skills/design-level/SKILL.md +1 -1
- package/library/skills/design-mechanic/SKILL.md +1 -1
- package/library/skills/design-npc/SKILL.md +1 -1
- package/library/skills/diagnosing-perf-regressions/SKILL.md +1 -1
- package/library/skills/dispatching-parallel-agents/SKILL.md +1 -1
- package/library/skills/driving-the-editor-ui/SKILL.md +1 -1
- package/library/skills/environment-kit/SKILL.md +1 -1
- package/library/skills/export-and-ship/SKILL.md +1 -1
- package/library/skills/fabricating-assets/SKILL.md +1 -1
- package/library/skills/facial-and-lipsync/SKILL.md +1 -1
- package/library/skills/fps-controller/SKILL.md +9 -7
- package/library/skills/fps-controller/resource.yaml +4 -1
- package/library/skills/game-feel/SKILL.md +1 -1
- package/library/skills/gameskill/SKILL.md +1 -1
- package/library/skills/gdscript-patterns/SKILL.md +1 -1
- package/library/skills/generate-motion/SKILL.md +9 -9
- package/library/skills/generate-motion/resource.yaml +2 -1
- package/library/skills/godogen-visual-proof-game-generation/SKILL.md +1 -1
- package/library/skills/headless-scripting/SKILL.md +1 -1
- package/library/skills/in-game-purchases/SKILL.md +254 -0
- package/library/skills/in-game-purchases/resource.yaml +29 -0
- package/library/skills/instantiate-asset-pack/SKILL.md +1 -1
- package/library/skills/investigating-bugs/SKILL.md +1 -1
- package/library/skills/lumera-single-image-scene-reconstruction/SKILL.md +1 -1
- package/library/skills/make-game/SKILL.md +25 -3
- package/library/skills/make-game/references/2d-platformer-polish.md +93 -0
- package/library/skills/make-game/references/2d-platformer.md +117 -0
- package/library/skills/make-game/references/2d-rpg-content.md +234 -0
- package/library/skills/make-game/references/2d-rpg.md +241 -0
- package/library/skills/make-game/references/2d-survivors-progression.md +201 -0
- package/library/skills/make-game/references/2d-survivors.md +237 -0
- package/library/skills/make-game/references/3d-fps-systems.md +216 -0
- package/library/skills/make-game/references/3d-fps.md +177 -0
- package/library/skills/make-game/references/3d-horror-systems.md +186 -0
- package/library/skills/make-game/references/3d-horror.md +201 -0
- package/library/skills/make-game/references/3d-third-person-systems.md +220 -0
- package/library/skills/make-game/references/3d-third-person.md +215 -0
- package/library/skills/make-game/resource.yaml +6 -1
- package/library/skills/multiplayer/SKILL.md +150 -0
- package/library/skills/multiplayer/resource.yaml +33 -0
- package/library/skills/multiplayer-movement/SKILL.md +510 -0
- package/library/skills/multiplayer-movement/files.md +501 -0
- package/library/skills/multiplayer-movement/resource.yaml +30 -0
- package/library/skills/multiplayer-project/SKILL.md +521 -0
- package/library/skills/multiplayer-project/files.md +448 -0
- package/library/skills/multiplayer-project/resource.yaml +36 -0
- package/library/skills/multiplayer-publish/SKILL.md +229 -0
- package/library/skills/multiplayer-publish/export-errors.md +89 -0
- package/library/skills/multiplayer-publish/resource.yaml +28 -0
- package/library/skills/multiplayer-state/SKILL.md +438 -0
- package/library/skills/multiplayer-state/files.md +592 -0
- package/library/skills/multiplayer-state/resource.yaml +35 -0
- package/library/skills/multiplayer-testing/SKILL.md +236 -0
- package/library/skills/multiplayer-testing/resource.yaml +39 -0
- package/library/skills/music-track/SKILL.md +1 -1
- package/library/skills/navigate-summer/SKILL.md +1 -1
- package/library/skills/new-project/SKILL.md +1 -1
- package/library/skills/organic-model/SKILL.md +1 -1
- package/library/skills/pixel-art/SKILL.md +1 -1
- package/library/skills/play/SKILL.md +1 -1
- package/library/skills/playtesting-a-feature/SKILL.md +1 -1
- package/library/skills/procedural-animation/SKILL.md +2 -2
- package/library/skills/procedural-animation/resource.yaml +1 -1
- package/library/skills/prop-model/SKILL.md +1 -1
- package/library/skills/psx-retro-rendering/SKILL.md +1 -1
- package/library/skills/realtime-wet-surfaces/SKILL.md +2 -2
- package/library/skills/remote-deploy/SKILL.md +1 -1
- package/library/skills/retarget/SKILL.md +1 -1
- package/library/skills/running-in-the-cloud/SKILL.md +1 -1
- package/library/skills/save-load/SKILL.md +156 -0
- package/library/skills/save-load/resource.yaml +27 -0
- package/library/skills/scene-composition/SKILL.md +1 -1
- package/library/skills/scene-hierarchy-design/SKILL.md +1 -1
- package/library/skills/scene-scripting/SKILL.md +1 -1
- package/library/skills/scene-to-level/SKILL.md +1 -1
- package/library/skills/skill-create/SKILL.md +1 -1
- package/library/skills/skill-improve/SKILL.md +1 -1
- package/library/skills/skill-test/SKILL.md +1 -1
- package/library/skills/skintokens-auto-rigging/SKILL.md +1 -1
- package/library/skills/skybox-panorama/SKILL.md +1 -1
- package/library/skills/sound-effect/SKILL.md +1 -1
- package/library/skills/spatial-placement/SKILL.md +134 -3
- package/library/skills/spatial-placement/references/kit-placement-tools.md +364 -0
- package/library/skills/spatial-placement/resource.yaml +16 -2
- package/library/skills/sprite-sheet/SKILL.md +1 -1
- package/library/skills/summer-analytics/SKILL.md +147 -0
- package/library/skills/summer-analytics/resource.yaml +28 -0
- package/library/skills/summer-friends/SKILL.md +226 -0
- package/library/skills/summer-friends/resource.yaml +28 -0
- package/library/skills/summer-leaderboards/SKILL.md +231 -0
- package/library/skills/summer-leaderboards/resource.yaml +30 -0
- package/library/skills/summer-match-results/SKILL.md +286 -0
- package/library/skills/summer-match-results/resource.yaml +32 -0
- package/library/skills/summer-matchmaking/SKILL.md +301 -0
- package/library/skills/summer-matchmaking/resource.yaml +32 -0
- package/library/skills/summer-parties/SKILL.md +253 -0
- package/library/skills/summer-parties/resource.yaml +30 -0
- package/library/skills/summer-player-data/SKILL.md +322 -0
- package/library/skills/summer-player-data/resource.yaml +30 -0
- package/library/skills/summer-store/SKILL.md +271 -0
- package/library/skills/summer-store/resource.yaml +29 -0
- package/library/skills/summer-world-chat/SKILL.md +195 -0
- package/library/skills/summer-world-chat/resource.yaml +30 -0
- package/library/skills/summer-world-saves/SKILL.md +284 -0
- package/library/skills/summer-world-saves/resource.yaml +29 -0
- package/library/skills/text-to-motion/SKILL.md +99 -0
- package/library/skills/text-to-motion/prompts-and-controls.md +34 -0
- package/library/skills/text-to-motion/resource.yaml +41 -0
- package/library/skills/text-to-motion/rigging-for-text-motion.md +54 -0
- package/library/skills/tileable-texture/SKILL.md +1 -1
- package/library/skills/trailer-shot/SKILL.md +1 -1
- package/library/skills/tune-performance/SKILL.md +1 -1
- package/library/skills/ui-basics/SKILL.md +10 -1
- package/library/skills/ui-graphics/SKILL.md +1 -1
- package/library/skills/use-widget-asset/SKILL.md +1 -1
- package/library/skills/using-summer/SKILL.md +2 -2
- package/library/skills/using-summer/resource.yaml +2 -2
- package/library/skills/vehicle-model/SKILL.md +1 -1
- package/library/skills/verification-before-completion/SKILL.md +1 -1
- package/library/skills/verifying-scenes/SKILL.md +76 -2
- package/library/skills/verifying-scenes/resource.yaml +13 -2
- package/library/skills/vfx-dissolve/SKILL.md +1 -1
- package/library/skills/vfx-fire/SKILL.md +1 -1
- package/library/skills/vfx-hit-spark/SKILL.md +1 -1
- package/library/skills/vfx-lightning/SKILL.md +1 -1
- package/library/skills/vfx-magic-glow/SKILL.md +1 -1
- package/library/skills/vfx-muzzle-flash/SKILL.md +1 -1
- package/library/skills/vfx-smoke/SKILL.md +1 -1
- package/library/skills/vfx-water-ripple/SKILL.md +1 -1
- package/library/skills/voice-line/SKILL.md +1 -1
- package/library/skills/web-and-touch-input/SKILL.md +38 -0
- package/library/skills/web-and-touch-input/resource.yaml +28 -0
- package/library/skills/web-compatibility-look/SKILL.md +62 -0
- package/library/skills/web-compatibility-look/resource.yaml +30 -0
- package/library/skills/world-building-3d/SKILL.md +8 -1
- package/library/skills/world-building-3d/references/spatial-tools.md +1 -1
- package/library/skills/world-building-3d/resource.yaml +2 -1
- package/library/skills/writing-plans/SKILL.md +1 -1
- package/library/skills/writing-skills/SKILL.md +1 -1
- package/library/templates/3d-lan-multiplayer-starter/resource.yaml +2 -2
- package/library/tools/attach-to-surface/resource.yaml +142 -0
- package/library/tools/batch/resource.yaml +9 -3
- package/library/tools/connect-ports/resource.yaml +120 -0
- package/library/tools/connect-signal/resource.yaml +3 -2
- package/library/tools/debug-views/resource.yaml +94 -0
- package/library/tools/frame-nodes/resource.yaml +104 -0
- package/library/tools/frame-shot/resource.yaml +134 -0
- package/library/tools/generate-motion/resource.yaml +44 -9
- package/library/tools/get-board/resource.yaml +50 -0
- package/library/tools/get-project-context/resource.yaml +13 -2
- package/library/tools/grep/resource.yaml +77 -0
- package/library/tools/inspect-asset/resource.yaml +71 -0
- package/library/tools/inspect-node/resource.yaml +9 -2
- package/library/tools/inspect-resource/resource.yaml +16 -5
- package/library/tools/instantiate-scene/resource.yaml +27 -2
- package/library/tools/measure/resource.yaml +96 -0
- package/library/tools/place-adjacent/resource.yaml +113 -0
- package/library/tools/play/resource.yaml +15 -2
- package/library/tools/raycast/resource.yaml +101 -0
- package/library/tools/read-file/resource.yaml +36 -2
- package/library/tools/read-library/resource.yaml +2 -2
- package/library/tools/repeat-along/resource.yaml +129 -0
- package/library/tools/replace-node/resource.yaml +11 -5
- package/library/tools/scene-audit/resource.yaml +144 -0
- package/library/tools/screenshot/resource.yaml +13 -2
- package/library/tools/search-assets/resource.yaml +18 -0
- package/library/tools/shot-sheet/resource.yaml +110 -0
- package/library/tools/snap-to-surface/resource.yaml +4 -1
- package/library/tools/world-snapshot/resource.yaml +24 -3
- package/library/tools/zoom/resource.yaml +105 -0
- package/package.json +1 -1
- package/registry/generated/aliases.json +17 -3
- package/registry/generated/counts.json +3 -3
- package/registry/generated/gemini-extension.json +26 -4
- package/registry/generated/index.json +2154 -469
- package/registry/generated/marketplace.claude.json +2 -2
- package/registry/generated/plugin.claude.json +27 -5
- package/registry/generated/plugin.codex.json +28 -6
- package/registry/generated/plugin.cursor.json +27 -5
- package/registry/generated/plugin.factory.json +27 -5
- package/registry/generated/skills-index.md +36 -14
- package/registry/generated/skills-registry.json +421 -124
- package/registry/generated/templates-registry.json +2 -2
- package/library/skills/host-authoritative-state/SKILL.md +0 -332
- package/library/skills/host-authoritative-state/resource.yaml +0 -28
- package/library/skills/peer-to-peer-multiplayer/SKILL.md +0 -373
- package/library/skills/peer-to-peer-multiplayer/resource.yaml +0 -28
- package/library/skills/setup-multiplayer/SKILL.md +0 -336
- package/library/skills/setup-multiplayer/resource.yaml +0 -28
|
@@ -11,8 +11,8 @@
|
|
|
11
11
|
{
|
|
12
12
|
"name": "summer",
|
|
13
13
|
"source": "./",
|
|
14
|
-
"version": "3.
|
|
15
|
-
"description": "Agent tooling for Summer Engine: game-dev skills, lifecycle hooks, and a
|
|
14
|
+
"version": "3.2.0",
|
|
15
|
+
"description": "Agent tooling for Summer Engine: game-dev skills, lifecycle hooks, and a 101-tool MCP bridge to the local desktop app.",
|
|
16
16
|
"author": {
|
|
17
17
|
"name": "Summer Engine",
|
|
18
18
|
"email": "founders@summerengine.com"
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
"$schema": "https://json.schemastore.org/claude-code-plugin-manifest.json",
|
|
3
3
|
"_generated": "GENERATED from integrations/claude — do not edit; npm run generate:registry",
|
|
4
4
|
"name": "summer",
|
|
5
|
-
"version": "3.
|
|
6
|
-
"description": "Agent tooling for Summer Engine: game-dev skills, lifecycle hooks, and a
|
|
5
|
+
"version": "3.2.0",
|
|
6
|
+
"description": "Agent tooling for Summer Engine: game-dev skills, lifecycle hooks, and a 101-tool MCP bridge to the local desktop app.",
|
|
7
7
|
"author": {
|
|
8
8
|
"name": "Summer Engine",
|
|
9
9
|
"email": "founders@summerengine.com",
|
|
@@ -30,6 +30,7 @@
|
|
|
30
30
|
"./library/skills/3d-lighting/",
|
|
31
31
|
"./library/skills/adaptive-music/",
|
|
32
32
|
"./library/skills/agent-playtesting/",
|
|
33
|
+
"./library/skills/ai-characters-in-games/",
|
|
33
34
|
"./library/skills/ambient-bed/",
|
|
34
35
|
"./library/skills/animated-loop/",
|
|
35
36
|
"./library/skills/animation-tree/",
|
|
@@ -40,11 +41,14 @@
|
|
|
40
41
|
"./library/skills/brainstorm-game/",
|
|
41
42
|
"./library/skills/brainstorming/",
|
|
42
43
|
"./library/skills/browse-templates/",
|
|
44
|
+
"./library/skills/camera-rigs/",
|
|
43
45
|
"./library/skills/celeste-momentum-platforming/",
|
|
44
46
|
"./library/skills/character-animation-wiring/",
|
|
45
47
|
"./library/skills/character-model/",
|
|
48
|
+
"./library/skills/character-movement/",
|
|
46
49
|
"./library/skills/character-portrait/",
|
|
47
50
|
"./library/skills/cinematic-cutscene/",
|
|
51
|
+
"./library/skills/combat-basics/",
|
|
48
52
|
"./library/skills/concept-art/",
|
|
49
53
|
"./library/skills/create-asset-sheet/",
|
|
50
54
|
"./library/skills/debug/",
|
|
@@ -66,16 +70,21 @@
|
|
|
66
70
|
"./library/skills/generate-motion/",
|
|
67
71
|
"./library/skills/godogen-visual-proof-game-generation/",
|
|
68
72
|
"./library/skills/headless-scripting/",
|
|
69
|
-
"./library/skills/
|
|
73
|
+
"./library/skills/in-game-purchases/",
|
|
70
74
|
"./library/skills/instantiate-asset-pack/",
|
|
71
75
|
"./library/skills/investigating-bugs/",
|
|
72
76
|
"./library/skills/lumera-single-image-scene-reconstruction/",
|
|
73
77
|
"./library/skills/make-game/",
|
|
78
|
+
"./library/skills/multiplayer/",
|
|
79
|
+
"./library/skills/multiplayer-movement/",
|
|
80
|
+
"./library/skills/multiplayer-project/",
|
|
81
|
+
"./library/skills/multiplayer-publish/",
|
|
82
|
+
"./library/skills/multiplayer-state/",
|
|
83
|
+
"./library/skills/multiplayer-testing/",
|
|
74
84
|
"./library/skills/music-track/",
|
|
75
85
|
"./library/skills/navigate-summer/",
|
|
76
86
|
"./library/skills/new-project/",
|
|
77
87
|
"./library/skills/organic-model/",
|
|
78
|
-
"./library/skills/peer-to-peer-multiplayer/",
|
|
79
88
|
"./library/skills/pixel-art/",
|
|
80
89
|
"./library/skills/play/",
|
|
81
90
|
"./library/skills/playtesting-a-feature/",
|
|
@@ -86,11 +95,11 @@
|
|
|
86
95
|
"./library/skills/remote-deploy/",
|
|
87
96
|
"./library/skills/retarget/",
|
|
88
97
|
"./library/skills/running-in-the-cloud/",
|
|
98
|
+
"./library/skills/save-load/",
|
|
89
99
|
"./library/skills/scene-composition/",
|
|
90
100
|
"./library/skills/scene-hierarchy-design/",
|
|
91
101
|
"./library/skills/scene-scripting/",
|
|
92
102
|
"./library/skills/scene-to-level/",
|
|
93
|
-
"./library/skills/setup-multiplayer/",
|
|
94
103
|
"./library/skills/skill-create/",
|
|
95
104
|
"./library/skills/skill-improve/",
|
|
96
105
|
"./library/skills/skill-test/",
|
|
@@ -99,6 +108,17 @@
|
|
|
99
108
|
"./library/skills/sound-effect/",
|
|
100
109
|
"./library/skills/spatial-placement/",
|
|
101
110
|
"./library/skills/sprite-sheet/",
|
|
111
|
+
"./library/skills/summer-analytics/",
|
|
112
|
+
"./library/skills/summer-friends/",
|
|
113
|
+
"./library/skills/summer-leaderboards/",
|
|
114
|
+
"./library/skills/summer-match-results/",
|
|
115
|
+
"./library/skills/summer-matchmaking/",
|
|
116
|
+
"./library/skills/summer-parties/",
|
|
117
|
+
"./library/skills/summer-player-data/",
|
|
118
|
+
"./library/skills/summer-store/",
|
|
119
|
+
"./library/skills/summer-world-chat/",
|
|
120
|
+
"./library/skills/summer-world-saves/",
|
|
121
|
+
"./library/skills/text-to-motion/",
|
|
102
122
|
"./library/skills/tileable-texture/",
|
|
103
123
|
"./library/skills/trailer-shot/",
|
|
104
124
|
"./library/skills/tune-performance/",
|
|
@@ -118,6 +138,8 @@
|
|
|
118
138
|
"./library/skills/vfx-smoke/",
|
|
119
139
|
"./library/skills/vfx-water-ripple/",
|
|
120
140
|
"./library/skills/voice-line/",
|
|
141
|
+
"./library/skills/web-and-touch-input/",
|
|
142
|
+
"./library/skills/web-compatibility-look/",
|
|
121
143
|
"./library/skills/world-building-3d/",
|
|
122
144
|
"./library/skills/writing-plans/",
|
|
123
145
|
"./library/skills/writing-skills/"
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"_generated": "GENERATED from integrations/codex — do not edit; npm run generate:registry",
|
|
3
3
|
"name": "summer",
|
|
4
|
-
"version": "3.
|
|
5
|
-
"description": "Agent tooling for Summer Engine: game-dev skills, lifecycle hooks, and a
|
|
4
|
+
"version": "3.2.0",
|
|
5
|
+
"description": "Agent tooling for Summer Engine: game-dev skills, lifecycle hooks, and a 101-tool MCP bridge. Build games by talking.",
|
|
6
6
|
"author": {
|
|
7
7
|
"name": "Summer Engine",
|
|
8
8
|
"email": "founders@summerengine.com",
|
|
@@ -25,6 +25,7 @@
|
|
|
25
25
|
"./library/skills/3d-lighting/",
|
|
26
26
|
"./library/skills/adaptive-music/",
|
|
27
27
|
"./library/skills/agent-playtesting/",
|
|
28
|
+
"./library/skills/ai-characters-in-games/",
|
|
28
29
|
"./library/skills/ambient-bed/",
|
|
29
30
|
"./library/skills/animated-loop/",
|
|
30
31
|
"./library/skills/animation-tree/",
|
|
@@ -35,11 +36,14 @@
|
|
|
35
36
|
"./library/skills/brainstorm-game/",
|
|
36
37
|
"./library/skills/brainstorming/",
|
|
37
38
|
"./library/skills/browse-templates/",
|
|
39
|
+
"./library/skills/camera-rigs/",
|
|
38
40
|
"./library/skills/celeste-momentum-platforming/",
|
|
39
41
|
"./library/skills/character-animation-wiring/",
|
|
40
42
|
"./library/skills/character-model/",
|
|
43
|
+
"./library/skills/character-movement/",
|
|
41
44
|
"./library/skills/character-portrait/",
|
|
42
45
|
"./library/skills/cinematic-cutscene/",
|
|
46
|
+
"./library/skills/combat-basics/",
|
|
43
47
|
"./library/skills/concept-art/",
|
|
44
48
|
"./library/skills/create-asset-sheet/",
|
|
45
49
|
"./library/skills/debug/",
|
|
@@ -61,16 +65,21 @@
|
|
|
61
65
|
"./library/skills/generate-motion/",
|
|
62
66
|
"./library/skills/godogen-visual-proof-game-generation/",
|
|
63
67
|
"./library/skills/headless-scripting/",
|
|
64
|
-
"./library/skills/
|
|
68
|
+
"./library/skills/in-game-purchases/",
|
|
65
69
|
"./library/skills/instantiate-asset-pack/",
|
|
66
70
|
"./library/skills/investigating-bugs/",
|
|
67
71
|
"./library/skills/lumera-single-image-scene-reconstruction/",
|
|
68
72
|
"./library/skills/make-game/",
|
|
73
|
+
"./library/skills/multiplayer/",
|
|
74
|
+
"./library/skills/multiplayer-movement/",
|
|
75
|
+
"./library/skills/multiplayer-project/",
|
|
76
|
+
"./library/skills/multiplayer-publish/",
|
|
77
|
+
"./library/skills/multiplayer-state/",
|
|
78
|
+
"./library/skills/multiplayer-testing/",
|
|
69
79
|
"./library/skills/music-track/",
|
|
70
80
|
"./library/skills/navigate-summer/",
|
|
71
81
|
"./library/skills/new-project/",
|
|
72
82
|
"./library/skills/organic-model/",
|
|
73
|
-
"./library/skills/peer-to-peer-multiplayer/",
|
|
74
83
|
"./library/skills/pixel-art/",
|
|
75
84
|
"./library/skills/play/",
|
|
76
85
|
"./library/skills/playtesting-a-feature/",
|
|
@@ -81,11 +90,11 @@
|
|
|
81
90
|
"./library/skills/remote-deploy/",
|
|
82
91
|
"./library/skills/retarget/",
|
|
83
92
|
"./library/skills/running-in-the-cloud/",
|
|
93
|
+
"./library/skills/save-load/",
|
|
84
94
|
"./library/skills/scene-composition/",
|
|
85
95
|
"./library/skills/scene-hierarchy-design/",
|
|
86
96
|
"./library/skills/scene-scripting/",
|
|
87
97
|
"./library/skills/scene-to-level/",
|
|
88
|
-
"./library/skills/setup-multiplayer/",
|
|
89
98
|
"./library/skills/skill-create/",
|
|
90
99
|
"./library/skills/skill-improve/",
|
|
91
100
|
"./library/skills/skill-test/",
|
|
@@ -94,6 +103,17 @@
|
|
|
94
103
|
"./library/skills/sound-effect/",
|
|
95
104
|
"./library/skills/spatial-placement/",
|
|
96
105
|
"./library/skills/sprite-sheet/",
|
|
106
|
+
"./library/skills/summer-analytics/",
|
|
107
|
+
"./library/skills/summer-friends/",
|
|
108
|
+
"./library/skills/summer-leaderboards/",
|
|
109
|
+
"./library/skills/summer-match-results/",
|
|
110
|
+
"./library/skills/summer-matchmaking/",
|
|
111
|
+
"./library/skills/summer-parties/",
|
|
112
|
+
"./library/skills/summer-player-data/",
|
|
113
|
+
"./library/skills/summer-store/",
|
|
114
|
+
"./library/skills/summer-world-chat/",
|
|
115
|
+
"./library/skills/summer-world-saves/",
|
|
116
|
+
"./library/skills/text-to-motion/",
|
|
97
117
|
"./library/skills/tileable-texture/",
|
|
98
118
|
"./library/skills/trailer-shot/",
|
|
99
119
|
"./library/skills/tune-performance/",
|
|
@@ -113,6 +133,8 @@
|
|
|
113
133
|
"./library/skills/vfx-smoke/",
|
|
114
134
|
"./library/skills/vfx-water-ripple/",
|
|
115
135
|
"./library/skills/voice-line/",
|
|
136
|
+
"./library/skills/web-and-touch-input/",
|
|
137
|
+
"./library/skills/web-compatibility-look/",
|
|
116
138
|
"./library/skills/world-building-3d/",
|
|
117
139
|
"./library/skills/writing-plans/",
|
|
118
140
|
"./library/skills/writing-skills/"
|
|
@@ -122,7 +144,7 @@
|
|
|
122
144
|
"interface": {
|
|
123
145
|
"displayName": "Summer",
|
|
124
146
|
"shortDescription": "Superpowers for AI game dev. Build games by talking.",
|
|
125
|
-
"longDescription": "Summer turns Codex into a game-dev studio for Summer Engine. Users make Summer games with the Summer SDK and GDScript. The plugin adds game-dev skills, lifecycle hooks, and a
|
|
147
|
+
"longDescription": "Summer turns Codex into a game-dev studio for Summer Engine. Users make Summer games with the Summer SDK and GDScript. The plugin adds game-dev skills, lifecycle hooks, and a 101-tool MCP bridge for guarded project files, scene editing, asset import, play mode, diagnostics, generation, and creator workflows. Git, shell, and grep stay with the host agent. Summer follows its upstream technical base continuously; version-sensitive work uses the bundled compatibility reference instead of a fixed onboarding version. Session-start orients the session. Pre-commit doctor (opt-in) blocks bad commits.",
|
|
126
148
|
"developerName": "Summer Engine",
|
|
127
149
|
"category": "Coding",
|
|
128
150
|
"capabilities": [
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
"_generated": "GENERATED from integrations/cursor — do not edit; npm run generate:registry",
|
|
4
4
|
"name": "summer",
|
|
5
5
|
"displayName": "Summer",
|
|
6
|
-
"version": "3.
|
|
7
|
-
"description": "Agent tooling for Summer Engine: game-dev skills, lifecycle hooks, and a
|
|
6
|
+
"version": "3.2.0",
|
|
7
|
+
"description": "Agent tooling for Summer Engine: game-dev skills, lifecycle hooks, and a 101-tool MCP bridge to the local desktop app.",
|
|
8
8
|
"author": {
|
|
9
9
|
"name": "Summer Engine",
|
|
10
10
|
"email": "founders@summerengine.com"
|
|
@@ -37,6 +37,7 @@
|
|
|
37
37
|
"./library/skills/3d-lighting/",
|
|
38
38
|
"./library/skills/adaptive-music/",
|
|
39
39
|
"./library/skills/agent-playtesting/",
|
|
40
|
+
"./library/skills/ai-characters-in-games/",
|
|
40
41
|
"./library/skills/ambient-bed/",
|
|
41
42
|
"./library/skills/animated-loop/",
|
|
42
43
|
"./library/skills/animation-tree/",
|
|
@@ -47,11 +48,14 @@
|
|
|
47
48
|
"./library/skills/brainstorm-game/",
|
|
48
49
|
"./library/skills/brainstorming/",
|
|
49
50
|
"./library/skills/browse-templates/",
|
|
51
|
+
"./library/skills/camera-rigs/",
|
|
50
52
|
"./library/skills/celeste-momentum-platforming/",
|
|
51
53
|
"./library/skills/character-animation-wiring/",
|
|
52
54
|
"./library/skills/character-model/",
|
|
55
|
+
"./library/skills/character-movement/",
|
|
53
56
|
"./library/skills/character-portrait/",
|
|
54
57
|
"./library/skills/cinematic-cutscene/",
|
|
58
|
+
"./library/skills/combat-basics/",
|
|
55
59
|
"./library/skills/concept-art/",
|
|
56
60
|
"./library/skills/create-asset-sheet/",
|
|
57
61
|
"./library/skills/debug/",
|
|
@@ -73,16 +77,21 @@
|
|
|
73
77
|
"./library/skills/generate-motion/",
|
|
74
78
|
"./library/skills/godogen-visual-proof-game-generation/",
|
|
75
79
|
"./library/skills/headless-scripting/",
|
|
76
|
-
"./library/skills/
|
|
80
|
+
"./library/skills/in-game-purchases/",
|
|
77
81
|
"./library/skills/instantiate-asset-pack/",
|
|
78
82
|
"./library/skills/investigating-bugs/",
|
|
79
83
|
"./library/skills/lumera-single-image-scene-reconstruction/",
|
|
80
84
|
"./library/skills/make-game/",
|
|
85
|
+
"./library/skills/multiplayer/",
|
|
86
|
+
"./library/skills/multiplayer-movement/",
|
|
87
|
+
"./library/skills/multiplayer-project/",
|
|
88
|
+
"./library/skills/multiplayer-publish/",
|
|
89
|
+
"./library/skills/multiplayer-state/",
|
|
90
|
+
"./library/skills/multiplayer-testing/",
|
|
81
91
|
"./library/skills/music-track/",
|
|
82
92
|
"./library/skills/navigate-summer/",
|
|
83
93
|
"./library/skills/new-project/",
|
|
84
94
|
"./library/skills/organic-model/",
|
|
85
|
-
"./library/skills/peer-to-peer-multiplayer/",
|
|
86
95
|
"./library/skills/pixel-art/",
|
|
87
96
|
"./library/skills/play/",
|
|
88
97
|
"./library/skills/playtesting-a-feature/",
|
|
@@ -93,11 +102,11 @@
|
|
|
93
102
|
"./library/skills/remote-deploy/",
|
|
94
103
|
"./library/skills/retarget/",
|
|
95
104
|
"./library/skills/running-in-the-cloud/",
|
|
105
|
+
"./library/skills/save-load/",
|
|
96
106
|
"./library/skills/scene-composition/",
|
|
97
107
|
"./library/skills/scene-hierarchy-design/",
|
|
98
108
|
"./library/skills/scene-scripting/",
|
|
99
109
|
"./library/skills/scene-to-level/",
|
|
100
|
-
"./library/skills/setup-multiplayer/",
|
|
101
110
|
"./library/skills/skill-create/",
|
|
102
111
|
"./library/skills/skill-improve/",
|
|
103
112
|
"./library/skills/skill-test/",
|
|
@@ -106,6 +115,17 @@
|
|
|
106
115
|
"./library/skills/sound-effect/",
|
|
107
116
|
"./library/skills/spatial-placement/",
|
|
108
117
|
"./library/skills/sprite-sheet/",
|
|
118
|
+
"./library/skills/summer-analytics/",
|
|
119
|
+
"./library/skills/summer-friends/",
|
|
120
|
+
"./library/skills/summer-leaderboards/",
|
|
121
|
+
"./library/skills/summer-match-results/",
|
|
122
|
+
"./library/skills/summer-matchmaking/",
|
|
123
|
+
"./library/skills/summer-parties/",
|
|
124
|
+
"./library/skills/summer-player-data/",
|
|
125
|
+
"./library/skills/summer-store/",
|
|
126
|
+
"./library/skills/summer-world-chat/",
|
|
127
|
+
"./library/skills/summer-world-saves/",
|
|
128
|
+
"./library/skills/text-to-motion/",
|
|
109
129
|
"./library/skills/tileable-texture/",
|
|
110
130
|
"./library/skills/trailer-shot/",
|
|
111
131
|
"./library/skills/tune-performance/",
|
|
@@ -125,6 +145,8 @@
|
|
|
125
145
|
"./library/skills/vfx-smoke/",
|
|
126
146
|
"./library/skills/vfx-water-ripple/",
|
|
127
147
|
"./library/skills/voice-line/",
|
|
148
|
+
"./library/skills/web-and-touch-input/",
|
|
149
|
+
"./library/skills/web-compatibility-look/",
|
|
128
150
|
"./library/skills/world-building-3d/",
|
|
129
151
|
"./library/skills/writing-plans/",
|
|
130
152
|
"./library/skills/writing-skills/"
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"_generated": "GENERATED from integrations/factory — do not edit; npm run generate:registry",
|
|
3
3
|
"name": "summer",
|
|
4
|
-
"description": "Agent tooling for Summer Engine: game-dev skills, lifecycle hooks, and a
|
|
5
|
-
"version": "3.
|
|
4
|
+
"description": "Agent tooling for Summer Engine: game-dev skills, lifecycle hooks, and a 101-tool MCP bridge to the local desktop app.",
|
|
5
|
+
"version": "3.2.0",
|
|
6
6
|
"author": {
|
|
7
7
|
"name": "Summer Engine",
|
|
8
8
|
"email": "founders@summerengine.com",
|
|
@@ -22,6 +22,7 @@
|
|
|
22
22
|
"./library/skills/3d-lighting/",
|
|
23
23
|
"./library/skills/adaptive-music/",
|
|
24
24
|
"./library/skills/agent-playtesting/",
|
|
25
|
+
"./library/skills/ai-characters-in-games/",
|
|
25
26
|
"./library/skills/ambient-bed/",
|
|
26
27
|
"./library/skills/animated-loop/",
|
|
27
28
|
"./library/skills/animation-tree/",
|
|
@@ -32,11 +33,14 @@
|
|
|
32
33
|
"./library/skills/brainstorm-game/",
|
|
33
34
|
"./library/skills/brainstorming/",
|
|
34
35
|
"./library/skills/browse-templates/",
|
|
36
|
+
"./library/skills/camera-rigs/",
|
|
35
37
|
"./library/skills/celeste-momentum-platforming/",
|
|
36
38
|
"./library/skills/character-animation-wiring/",
|
|
37
39
|
"./library/skills/character-model/",
|
|
40
|
+
"./library/skills/character-movement/",
|
|
38
41
|
"./library/skills/character-portrait/",
|
|
39
42
|
"./library/skills/cinematic-cutscene/",
|
|
43
|
+
"./library/skills/combat-basics/",
|
|
40
44
|
"./library/skills/concept-art/",
|
|
41
45
|
"./library/skills/create-asset-sheet/",
|
|
42
46
|
"./library/skills/debug/",
|
|
@@ -58,16 +62,21 @@
|
|
|
58
62
|
"./library/skills/generate-motion/",
|
|
59
63
|
"./library/skills/godogen-visual-proof-game-generation/",
|
|
60
64
|
"./library/skills/headless-scripting/",
|
|
61
|
-
"./library/skills/
|
|
65
|
+
"./library/skills/in-game-purchases/",
|
|
62
66
|
"./library/skills/instantiate-asset-pack/",
|
|
63
67
|
"./library/skills/investigating-bugs/",
|
|
64
68
|
"./library/skills/lumera-single-image-scene-reconstruction/",
|
|
65
69
|
"./library/skills/make-game/",
|
|
70
|
+
"./library/skills/multiplayer/",
|
|
71
|
+
"./library/skills/multiplayer-movement/",
|
|
72
|
+
"./library/skills/multiplayer-project/",
|
|
73
|
+
"./library/skills/multiplayer-publish/",
|
|
74
|
+
"./library/skills/multiplayer-state/",
|
|
75
|
+
"./library/skills/multiplayer-testing/",
|
|
66
76
|
"./library/skills/music-track/",
|
|
67
77
|
"./library/skills/navigate-summer/",
|
|
68
78
|
"./library/skills/new-project/",
|
|
69
79
|
"./library/skills/organic-model/",
|
|
70
|
-
"./library/skills/peer-to-peer-multiplayer/",
|
|
71
80
|
"./library/skills/pixel-art/",
|
|
72
81
|
"./library/skills/play/",
|
|
73
82
|
"./library/skills/playtesting-a-feature/",
|
|
@@ -78,11 +87,11 @@
|
|
|
78
87
|
"./library/skills/remote-deploy/",
|
|
79
88
|
"./library/skills/retarget/",
|
|
80
89
|
"./library/skills/running-in-the-cloud/",
|
|
90
|
+
"./library/skills/save-load/",
|
|
81
91
|
"./library/skills/scene-composition/",
|
|
82
92
|
"./library/skills/scene-hierarchy-design/",
|
|
83
93
|
"./library/skills/scene-scripting/",
|
|
84
94
|
"./library/skills/scene-to-level/",
|
|
85
|
-
"./library/skills/setup-multiplayer/",
|
|
86
95
|
"./library/skills/skill-create/",
|
|
87
96
|
"./library/skills/skill-improve/",
|
|
88
97
|
"./library/skills/skill-test/",
|
|
@@ -91,6 +100,17 @@
|
|
|
91
100
|
"./library/skills/sound-effect/",
|
|
92
101
|
"./library/skills/spatial-placement/",
|
|
93
102
|
"./library/skills/sprite-sheet/",
|
|
103
|
+
"./library/skills/summer-analytics/",
|
|
104
|
+
"./library/skills/summer-friends/",
|
|
105
|
+
"./library/skills/summer-leaderboards/",
|
|
106
|
+
"./library/skills/summer-match-results/",
|
|
107
|
+
"./library/skills/summer-matchmaking/",
|
|
108
|
+
"./library/skills/summer-parties/",
|
|
109
|
+
"./library/skills/summer-player-data/",
|
|
110
|
+
"./library/skills/summer-store/",
|
|
111
|
+
"./library/skills/summer-world-chat/",
|
|
112
|
+
"./library/skills/summer-world-saves/",
|
|
113
|
+
"./library/skills/text-to-motion/",
|
|
94
114
|
"./library/skills/tileable-texture/",
|
|
95
115
|
"./library/skills/trailer-shot/",
|
|
96
116
|
"./library/skills/tune-performance/",
|
|
@@ -110,6 +130,8 @@
|
|
|
110
130
|
"./library/skills/vfx-smoke/",
|
|
111
131
|
"./library/skills/vfx-water-ripple/",
|
|
112
132
|
"./library/skills/voice-line/",
|
|
133
|
+
"./library/skills/web-and-touch-input/",
|
|
134
|
+
"./library/skills/web-compatibility-look/",
|
|
113
135
|
"./library/skills/world-building-3d/",
|
|
114
136
|
"./library/skills/writing-plans/",
|
|
115
137
|
"./library/skills/writing-skills/"
|
|
@@ -31,7 +31,7 @@ Activate summer:using-summer FIRST in any Summer Engine session — it sets work
|
|
|
31
31
|
|
|
32
32
|
Process skills (run before building): brainstorm-game, debug, play.
|
|
33
33
|
Discipline skills (shape what you build): gdscript-patterns, scene-composition, art-direction, audio-direction, asset-strategy.
|
|
34
|
-
Build skills (produce artifacts): fps-controller, design-mechanic, design-level,
|
|
34
|
+
Build skills (produce artifacts): fps-controller, design-mechanic, design-level, multiplayer, multiplayer-project, multiplayer-movement, multiplayer-state, design-npc, 3d-lighting, ui-basics, game-feel, vfx-fire, vfx-smoke, vfx-lightning, vfx-hit-spark, tune-performance, export-and-ship, make-game.
|
|
35
35
|
|
|
36
36
|
Always check for a relevant skill before responding. The summer-engine MCP server (npx -y summer-engine@latest mcp) provides identity-bound project file mutations plus scene, asset, render, play, and diagnostics tools. Git, shell, and grep remain native; do not bypass Summer's file guards when MCP is available.
|
|
37
37
|
</EXTREMELY_IMPORTANT>`;
|
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,108 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to summer-engine will be documented here. Following [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) and [Semantic Versioning](https://semver.org/).
|
|
4
4
|
|
|
5
|
+
## [3.2.0] - 2026-10-07
|
|
6
|
+
|
|
7
|
+
### Added
|
|
8
|
+
- Multiplayer skills, rewritten from scratch around Summer's own networking. `multiplayer` explains the model (one project, a client scene and a headless authority scene, Worlds, Sessions, queues, Local Play) and routes to a linked sequence:
|
|
9
|
+
- `multiplayer-project`: the export-ready layout (`client/`, `authority/`, `network/`), `summer.build.json`, `world.json`, the runtime descriptor, the source graph, one network composition, joining a queue and a first Local Play run.
|
|
10
|
+
- `multiplayer-movement`: client-side movement. The owner moves its character locally and publishes a pose to an owner-written State group bound to its player entity. The authority checks every pose with a refilling distance allowance and can teleport players with `reset()`. Others glide between poses 100 ms behind, ordered by authority acceptance time.
|
|
11
|
+
- `multiplayer-state`: shared and private authority-written State groups, Commands with verified Sessions and request ids, and Transient Events.
|
|
12
|
+
- `multiplayer-testing`: Local Play under latency, jitter and loss, bots driven through `-- --bot={client}`, and what a passing run must show. "Every client joined" alone can hide a composition that never attached.
|
|
13
|
+
- `multiplayer-publish` (preview): the two export presets, the summer.games bundle, the source graph analyzer and native upload probe, and uploading a Build. `export-errors.md` lists every exporter message.
|
|
14
|
+
- One skill per Summer SDK service: `summer-matchmaking` (preview), `summer-match-results`, `summer-leaderboards` (preview), `summer-parties` (preview), `summer-friends` (preview; needs an engine release with the Friends SDK), `summer-player-data`, `summer-world-saves` (preview), `summer-world-chat` (preview), `summer-store` (preview), `summer-analytics` (preview).
|
|
15
|
+
- The core skills' code was run as written: a 2-player Local Play game at 100 ms round trip, 10 ms jitter and 1 % loss (movement, a refused teleport cheat, Commands, private state, Events), and a summer.games bundle export that passes the source graph analyzer and the native upload probe.
|
|
16
|
+
- Kit-placement tools (preview), built only on existing engine ops (a read-only `RunSceneScript` probe, then `SetProp` / `SnapToSurface` / `InstantiateScene` with the usual scene target, undo and final save). Every result is under 5 KB, names its evidence (`visual_aabb`, `physics`, `mesh_triangles`, `markers`) and declares any cut list:
|
|
17
|
+
- `summer_inspect_asset`: measure a `.tscn`/`.glb`/`.gltf` (or Mesh) without adding it to a scene. A `summary` block comes first: AABB, origin label, the two largest opposite plane pairs with a `one_sided` flag per plane (its material culls back faces) and the ids of port-like open loops. Then per-mesh AABBs and triangle counts, the 6 largest planar faces, open boundary loops, Marker3D anchors, collision shapes. Open loops have stable ids by facing and position (`+Y` = the outermost loop facing +Y in the piece's own axes, `+Y#2` the next), never by radius, so the same id names the same loop in every pose. `detail: "summary"` (default) lists only port-like loops (radius over 2 cm with a partner loop facing another way, or the one opening of an end piece such as an outlet's socket), so a flat wall's outline no longer buries the facing; `detail: "full"` lists every loop. `maxTriangles` goes down to 100, and the summary says which budget covers a mesh the budget cut.
|
|
18
|
+
- `summer_place_adjacent`: put one node's bounds face against another's along an axis, lining up the other axes per axis; verified by a fresh read.
|
|
19
|
+
- `summer_attach_to_surface`: turn a piece's measured local back axis into a surface found by a ray (up kept), then seat its back face (the extreme of its visible bounds along the back axis, not its origin) with `SnapToSurface` at a standoff. The piece keeps its height and place along the surface (`placeAt: "current"`) unless `placeAt: "hit"` slides its back-face centre onto the ray hit. Before saving it refuses, and puts the piece back exactly where it started, when the seat lands on another node than the named surface (or, with a ray only, off the hit plane) or the piece would move more than `maxMove` (default 2). The receipt names `seated_on`, `final_gap`, `back_face_gap` and `moved_by`; a failed seat adds `blockers` (what the piece overlaps, whether it started overlapping, the first contact) and a `next_step`.
|
|
20
|
+
- `summer_repeat_along`: instance up to 64 copies of a scene along a line by spacing or count, with a compact receipt of the created paths. N copies cost N + 2 engine requests.
|
|
21
|
+
- `summer_connect_ports`: move and turn a piece so its port (open-loop id such as `"+Y"`, Marker3D name, or open-loop index) meets another piece's port; verified distance, angle and tilt. A join that would tilt the piece's up axis more than `maxTiltDegrees` (default 5) is refused before anything changes, with the predicted tilt and the ports that join within the limit, unless `allowTilt` is set. `rollDegrees` is documented exactly (axis = the target port direction reversed, right-hand rule, zero = the shortest turn from the current orientation), and the receipt adds `roll_axis` and `other_ports`: where each other port of the subject ends up (world position and outward direction), so a bend's free end needs no extra measure.
|
|
22
|
+
- `summer_raycast`: one ray from any point; physics first, visual-AABB fallback declared.
|
|
23
|
+
- `summer_measure`: gap or overlap per axis between two nodes, or face coplanarity across 2-32 nodes (proud / recessed).
|
|
24
|
+
- `summer_instantiate_scene` takes `position`, `rotation_degrees`, `scale` or `transform`, set on the node path the receipt reports right after the instance exists: one call per placed piece. The same fields work on `InstantiateScene` ops in `summer_batch`, where the transforms of a run of placed pieces travel in one request before the next other op: N placed pieces cost about N + 2 engine requests instead of 2N + 1.
|
|
25
|
+
- `summer_batch` gains `receipt: "summary"`: counts, failures with their op index, created node paths and renames, under 5 KB.
|
|
26
|
+
- `spatial-placement` skill: a question-to-tool table for every placement tool, a modular-kit workflow and a worked two-storey facade example with a downpipe, clamps and a lamp; `references/kit-placement-tools.md` documents each tool's arguments, results, limits and engine ops. `world-building-3d` routes kit placement to it.
|
|
27
|
+
- `summer_generate_motion` gains `backend: "text-to-motion"`: custom 2-second clips from text prompts on any of your own rigged models (humanoid, animal, creature, cartoon plant, prop; 5-70 bones). New fields `prompt` / `prompts` (1-8), `takes` (1-4), `lockJoints`, `cfgScale` (1.5-8) and `idempotencyKey`; one billed clip per prompt x take; poll `summer_check_job`, import with `summer_import_asset_by_id`. The server keeps the backend off until it is enabled and answers `backend_unavailable`; the tool then points back to `meshy-library`. `summer tool generate-motion` validates with the same schema.
|
|
28
|
+
- `text-to-motion` skill (preview): route, rigging for non-humanoids (human bone names, the talking-flower recipe), prompts and controls, failure codes. `asset-strategy` and `generate-motion` route custom and non-humanoid motion to it.
|
|
29
|
+
- Seeing tools (preview) for judging 3D environments like a player and an artist; every image inline (one grid per call), rendered from the saved scene with its REAL WorldEnvironment and lights, read-only, structured failures. `summer_frame_nodes` (fit a pose to node world bounds, optional bookmark and marks), `summer_shot_sheet` (N bookmarks/poses in one labelled grid; `compare_previous` adds previous / now / difference map), `summer_debug_views` (beauty, lighting, unshaded, normals, overdraw, wireframe), `summer_zoom` (exact sub-frustum of a region or mark N at full resolution), `summer_frame_shot` (smart framing for establishing / eye_level / low_angle / detail / corridor: thick-sweep visibility, selective occluders, near-lens check, low-angle rule, a small beauty render per pose, rule-of-thirds / fill / horizon / sky / depth / featureless-area / value-contrast / foreground scoring; top 3, best bookmarked, one sheet). Built on the existing ScenePreview op (a throwaway wrapper scene with a read-only @tool kernel, `assets/seeing/seeing_probe.gd`); no engine change.
|
|
30
|
+
- Bounded shot storage: one previous-image slot per rendered bookmark at `res://.summer/shots/<bookmark>.jpg` (JPEG, at most 1024 px, folder capped at 20 MB with oldest-first eviction) and explicit `save_to` copies; nothing else is written. `summer_screenshot framing:"bookmark"` keeps a clean render there when the bookmark has none, and gains `compare_previous` and `update_previous`.
|
|
31
|
+
- `verifying-scenes` gains an environment review section (the loop and a beauty rubric); the playbook gains a `seeing` section.
|
|
32
|
+
- `summer_scene_audit` (preview): one read-only call that walks every node of a 3D scene and lists likely visual and placement problems, at most 5 KB, sorted error / warn / look, each with node path, world position, reason, evidence numbers and the next tool; counts and editor time per check; `offset`/`limit` paging, `checks`, `root` (subtree) and `min_severity` filters; `render:"sheet"` adds one inline image of the page's first 6 issues framed from their open side. Checks: `through_hole` (capped ray grids through each facade line; rays that pass the wall and reach the far side of the building), `floor_gap`, `floating` / `sunken`, `interpenetration`, `orientation`, `uv_stretch`, `duplicate` / `z_fight`, `lights`, `transform`, `resource`. Every check works on any scene from geometry, the engine's node and resource data and materials alone, never node or file names or kit metadata: each piece's role comes from its shape (see-through cards are dressing, upright sheets walls, flat slabs floors, raised slabs with walls under them roofs, a large slab below the rest the underlay, a piece in a wall's opening an insert, bands, piers and corner blocks against a facade structure, the rest props). Built on the seeing tools' private-copy path (ScenePreview of a throwaway wrapper scene with a read-only @tool kernel, `assets/audit/scene_audit.gd`): the open tab never becomes unsaved; no engine change. `verifying-scenes` gains the audit loop and the playbook routes to it.
|
|
33
|
+
- `summer_scene_audit` check refinements:
|
|
34
|
+
- `floor_gap` classifies each ray by the surface it hits first. An underlay plane above the floor's own drain channel or dip is "covers the floor" (warn), not a hole.
|
|
35
|
+
- `floor_gap` also samples bare strips between each tile edge and a wall within 1 m.
|
|
36
|
+
- `floor_gap` measures areas from the missed rays' own footprints, with the strip's size (a thin seam counts its own area, not whole grid cells).
|
|
37
|
+
- `sunken` measures and names the surface a prop is buried in, seen from above.
|
|
38
|
+
- `interpenetration` lists every partner a prop cuts (up to 3).
|
|
39
|
+
- `summer_scene_audit` `budget_ms` (default 3000): each check gets a weighted share of the editor time. A check past its share stops and shows `partial` (the share it covered) in its counts, and is never listed as clean.
|
|
40
|
+
- `summer_scene_audit` `z_fight` is exhaustive. A geometry pass (its own stage time) compares each mesh's planar face groups:
|
|
41
|
+
- between any two pieces: props, roofs, ledges, side walls, inserts against hosts, decals; opposite-facing pairs only when both are double-sided;
|
|
42
|
+
- between two surfaces of one mesh, reported once per mesh;
|
|
43
|
+
- the ray samples still run.
|
|
44
|
+
- "Coplanar" means a gap under twice the 24-bit depth step at the view distance (the nearest walkable eye point, camera or bookmark) for the main camera's near/far. `ev` carries the overlap, gap, tolerance and surfaces.
|
|
45
|
+
- The material decides what is demoted to look, with the reason: `render_priority`, depth or normal offsets, a see-through (alpha) material such as a decal or overlay, no depth test or depth writes.
|
|
46
|
+
- `summer_scene_audit` gains three gap detectors. They run last in `budget_ms`, on the time the other checks leave, so no other check loses time to them. Like every check they decide from geometry alone: the pieces they look at are walls and the facade members (bands, piers, corner blocks) the roles found, and run pieces for open ends.
|
|
47
|
+
- `exposed_edge`: open outline edges of walls, bands, piers and corner blocks (cached per mesh) that nothing covers within 4-7 mm and that walkable space sees (eye points over open-sky floor cells, flood-filled from the scene's cameras and characters, sight lines not through a building). Each comes with its reveal: a 2-60 cm step, a seam (the next sheet within 4 cm) or a gap (the next sheet within 35 cm). Band pieces warn. Wall pieces are look items, or warn when `depth_step` agrees. Band pieces are scanned first.
|
|
48
|
+
- `open_fixture_end`: an open end of a run piece (a mesh with two or more open rims of one size: a pipe, duct or gutter section, an elbow, a tee) that nothing joins within 2.5 cm (sleeve tolerance), seen from walkable space (warn). A piece with one rim, or rims of different sizes (a cap, a funnel, an outlet), is open by design.
|
|
49
|
+
- `depth_step` (look): ray rows across each facade at its band levels (band rows first) and every 1.25 m. It finds band recesses and missing band runs, seams, proud modules and holes with something behind them. A hole confirms a nearby `through_hole` (warn -> error). Runs a door-like opening (an insert reaching the floor) covers are skipped.
|
|
50
|
+
- `summer_scene_audit` `accept:[{key, reason}]`: look and warn items you judged fine are written to `res://.summer/audit-accept.json`, the only file the audit writes. Each issue carries a `key` (check:path@x,y,z, rounded to 0.1 m). Later audits count accepted items (`counts.<check>.accepted`, `accepted`) and hide them until their evidence changes materially (severity rises, or the measured size moves by over 25%); then they show again with `accept_stale`. Errors cannot be accepted. `show_accepted` lists them.
|
|
51
|
+
- `summer_grep` (preview): regex search over project files through the engine's ripgrep `Grep` op, which agents could reach only as an undocumented raw `summer_batch` op. Returns file, line and text per match; `context_lines` (0-10) adds the lines before and after each match (read back from the matched files, because the engine op drops ripgrep's context output); `path` (a res:// directory or file), `glob`, `case_sensitive`, `multiline`; `max_results` (default 50, max 500) with `truncated`; every line is clipped to `max_line_chars`. A missing path is `failure_reason: path_not_found` instead of a raw ripgrep error string.
|
|
52
|
+
- `summer_read_file` reads big files in parts. `offset` / `limit` page by lines (default) or bytes (`unit: "bytes"`, cut on UTF-8 boundaries), and `data.window` reports `start_line` / `end_line`, `total_lines`, `next_offset` and `eof`. For JSON, `json_path` returns one value (`pieces.wall_a`, `items[3]`), `keys` keeps matching object keys (`["wall_*"]`) and `keys_only` lists key names only; `data.json` says what matched. The sha256 stays the full-file receipt, so a windowed read still guards an overwrite. Without these arguments the call is unchanged.
|
|
53
|
+
- `summer_world_snapshot` filters: `path_prefix` (one subtree), `classes`, `fields` and `offset`. A filtered read adds `matched_nodes` and `matched_counts` (the subtree's class counts) and filters `lights` / `cameras` to the subtree. `counts`, `total_nodes` and the `snapshot_id` diff baseline still cover the whole scene.
|
|
54
|
+
- `summer_inspect_node` `fields`: only the named properties (globs allowed) plus derived `transform` (local position / rotation_degrees / scale and a `Transform3D` literal), `global_transform` (composed from the world snapshot), `scene_file_path`, `aabb` and `warnings`. Reading a transform drops from about 5 KB to a few hundred bytes.
|
|
55
|
+
|
|
56
|
+
### Changed
|
|
57
|
+
- `fps-controller`, `procedural-animation`, `make-game`, `browse-templates`, `using-summer` and the `.summer/` folder reference point at the new multiplayer skills and no longer suggest `@rpc` or `MultiplayerSynchronizer`.
|
|
58
|
+
- The `3d-lan-multiplayer-starter` template (host/join over Godot RPCs) is deprecated: it cannot use Summer hosting, matchmaking or identity.
|
|
59
|
+
- `summer_get_agent_playbook` gains a `placement3d` section: read `spatial-placement` first, then a question-to-tool map for the spatial tools that already ship (`summer_starcast`, `summer_test_placement`, `summer_snap_to_surface`, `summer_align_distribute_3d`, `summer_navigation_probe`, world snapshot + diff + screenshot) and the kit-placement tools (measure the piece, place it in one call, place relative, mount, repeat, join ports, raycast, measure), with their preview status.
|
|
60
|
+
- `summer_get_project_context` returns a compact payload by default (a few KB instead of tens of KB): project name and path, current and main scene, `sceneSummary` (root node and node count), `health` with scalar fields and capability counts, `projectMemory`, and the warnings. The open scene's tree, the engine's capability lists and the project settings come back with `include: ["scene_tree" | "capabilities" | "settings"]`; `settingsPrefix` / `settingsPrefixes` imply `settings`; `omitted` says how to ask for each block left out. Callers that read `scene`, `project` or `health.capabilities` must pass `include`.
|
|
61
|
+
- `summer_world_snapshot` lists at most 200 nodes by default, and `max_nodes` now caps the listed entries rather than the stored snapshot: the engine always snapshots the whole scene (its default 4000), so `summer_snapshot_diff` keeps seeing every change. `truncated` and `next_offset` say when the list is cut.
|
|
62
|
+
- `summer_generate_motion`: `motionName` is optional in the schema and still required for `meshy-library` (checked before any request); text-to-motion fields sent with `meshy-library` are rejected instead of silently ignored. The description lists the five motion aliases that always resolve instead of names that do not. `summer tool generate-motion` waits up to 10 minutes, like the MCP tool.
|
|
63
|
+
- Scene receipts carry `scenePersistence.saved` instead of `scenePersistence.persisted`: the engine sets that flag when the SaveScene ran, which says nothing about what the file holds. Callers that read `persisted` must read `saved`; `verified` appears only where a tool read the saved file back (`summer_replace_node`, `summer_batch` with ReparentNode, `summer_connect_signal`).
|
|
64
|
+
|
|
65
|
+
### Removed
|
|
66
|
+
- `setup-multiplayer`, `host-authoritative-state` and `peer-to-peer-multiplayer`, replaced by the multiplayer skills above. `summer setup --force` prunes installed copies.
|
|
67
|
+
|
|
68
|
+
### Fixed
|
|
69
|
+
- `summer_scene_audit`:
|
|
70
|
+
- `transform` no longer flags correctly placed pieces whose global origin is the world origin. A piece is "left at the origin" only when its LOCAL transform is identity, its parent's is identity, it touches nothing and it is not one of a row of siblings. Several pieces sharing that transform are a warning each; one alone is a look item.
|
|
71
|
+
- Screen-space quads (a post-process `extra_cull_margin` or a huge `custom_aabb`) are skipped. They were "sunken" and "at the origin".
|
|
72
|
+
- `z_fight` evidence names the shared plane's `normal` and the axis to nudge (`nudge.world`, `nudge.local`), so a window insert whose head or jamb is the shared plane is not nudged along the facade normal.
|
|
73
|
+
- Seeing tools (preview):
|
|
74
|
+
- Camera poses behind one-sided walls. The visibility pass now reads which side of each surface a ray meets (a short front-faces-only ray at the hit). A sight line that crosses a hard or subject surface from behind blocks like a wall, unless the material is transparent. A frame that is more than 25% surfaces seen from behind is rejected as `behind_surface`. So is a lens inside a closed shell (`inside_volume`) or within 0.3 m behind a back face. This removes `summer_frame_shot` corridor winners that stood behind a back wall and looked through its door hole.
|
|
75
|
+
- `summer_frame_nodes` with an explicit `from` measures that exact pose plus about 20 nearby alternatives (wider lens, turned, raised or lowered). If walls block it, or it stands behind or inside a surface, the caption opens with a WARNING and the nearest valid `from` (+ `fov`). The requested view is still rendered. `receipt.view_check` carries the result.
|
|
76
|
+
- Marks no longer pass off hidden nodes as visible. `summer_frame_nodes marks:true`, `summer_screenshot marks:true` (3D scene) and `summer_zoom mark` test each labelled node from the rendered camera (centre plus 4 points across the box face it shows). Hidden labels are noted `(hidden behind <path>)`, and a zoom on a hidden mark warns.
|
|
77
|
+
- `summer_zoom` honours the region exactly. The region is no longer grown to 16:9 or padded by default. The image takes the region's own aspect, with dark bars only past 0.5-3.2. The caption reports the real zoom per axis and `widened_because`. `pad` defaults to 0 for `region` and to 0.15 for `mark`.
|
|
78
|
+
- Establishing shots:
|
|
79
|
+
- the top 3 are three different views: one per side of the subject while the score is within 0.15 of the best, and always at least 25 degrees apart. This also applies to low-angle and detail shots; eye-level looks are spaced 25 degrees apart;
|
|
80
|
+
- a `light` term reads the strongest DirectionalLight3D: side or front-side light scores best, light from straight behind the camera (a flat-lit face) worst;
|
|
81
|
+
- an `edge` term penalises sky or void below the horizon from 4% of the frame;
|
|
82
|
+
- a `solid` term counts surfaces seen from behind.
|
|
83
|
+
- `summer_frame_shot` eye-level and corridor cameras stay at eye height. Corridor winners could come back "adjusted: raised" well above eye height: the candidates included 2.4 m and 3.5 m eyes, and the ground-clearance check read a duct or balcony overhead as ground and lifted the camera over it. Now every eye-level and corridor pose stands 1.5-1.8 m (or exactly `eye_height`) above the walkable surface straight below the lens, within a step of the spawn's or corridor's floor, and is never raised. A pose that cannot stand there moves horizontally (along the view, then sideways) or is rejected (`no_walkable_ground`, `not_walkable`; a raised or off-height pose is `raised_above_eye` / `above_eye_height`). The corridor scan seeds on the walkable floor inside the subject (a 7 x 7 grid of downward rays from the subject's middle; the most common horizontal surface met from above with headroom for an eye wins) instead of the subject's lowest point, which walls sunk into the ground put under the floor. The caption and `receipt.scan_floor` say where it seeded, and a fallback to the lowest point is declared.
|
|
84
|
+
- Establishing shots rank in tiers: a pose showing more than 15% empty ground (featureless ground or surroundings outside the subject's footprint, from the image check) or world edge ranks below every pose showing less, whatever its score.
|
|
85
|
+
- Every `summer_frame_shot` top pose and tile label states the real camera height: metres above the first surface below it and the absolute y (`receipt.top[].camera_y`, `ground_y`, `height_above_ground`).
|
|
86
|
+
- Transparent materials (alpha blend, scissor, hash, depth pre-pass, shaders that write ALPHA, instance fade) no longer block like walls. They get their own physics layer, outside every sweep. A sight line through them counts 0.8, and a grid cell counts half a soft cell. Meshes that mix opaque and transparent surfaces are split per surface.
|
|
87
|
+
- `summer_shot_sheet` without `compare_previous` no longer overwrites each bookmark's previous image (the compare baseline). The same rule now holds for `summer_debug_views` and `summer_screenshot framing:"bookmark"` (MCP and `summer tool`). A plain render creates a missing baseline and keeps an existing one, and says so. Only `compare_previous:true`, the new `update_previous:true`, or re-saving the pose with `summer_frame_nodes` / `summer_frame_shot` replaces it.
|
|
88
|
+
- `summer_snap_to_surface` could not seat a prop sunk into its support: the engine backs a start overlap off, sweeps, then measures `hitTravel` from the original pose (negative when sunk) and refuses with `gap_exceeds_hit_travel`, so agents set the height by hand. When the subject starts inside its support the tool now lifts it against the cast direction by the overlap depth plus 2 cm (at most the subject's extent and 0.5 m; exact local position from the saved scene, mapped through the parent transform), snaps again, and keeps the result only when it settles on a node it was sunk into; otherwise it restores the original position. The receipt carries `recovery` (`lifted_by`, `original_local_position`).
|
|
89
|
+
- `summer_snap_to_surface` failed on props without colliders: collider-less ferns on a ground PlaneMesh all answered `overlap_recovery_exceeded`, "starts in contact with or inside (unnamed)". Without a collider on the subject or the support the engine falls back to `visual_aabb`, the subject's AABB swept against every other visible AABB, and one big AABB around it (a tree, a block, a post quad with a huge custom AABB) is an overlap no back-off clears; a seat can also rest on an AABB above the real surface. Whenever the engine answers with `visual_aabb` (that failure, `gap_exceeds_hit_travel`, `surface_not_found`, or a seat) a read-only probe measures the move from visible triangles: the subject's vertices cast along the direction onto the triangles of the meshes below (a surface through the subject means it is sunk and is lifted out, at most 0.5 m), plus the support's vertices under it cast back onto the subject. One SetProp places it, a second read verifies the gap (undone beyond 5 mm), and the scene is saved: `evidence: visual_mesh`, with the engine's answer under `engine`, `verify`, and `evidenceDetails` (samples, triangles, colliders). Screen-space meshes (a shader that writes `POSITION`) are not surfaces. When the triangles find no support either, the engine's failure comes back with `mesh_fallback`.
|
|
90
|
+
- `summer_snap_to_surface` failures `gap_exceeds_hit_travel` and `overlap_recovery_exceeded` said nothing about why. A read-only starcast at the current pose now adds `start_overlap`, `blocking` (the nodes the subject touches or sits inside), `below`, and a concrete `next_step`, also in the error text. Same implementation on `summer tool snap-to-surface`.
|
|
91
|
+
- `summer_replace_node` with `scene` lost the change silently: the editor showed the new piece and the receipt said ok, but the saved .tscn kept the OLD scene reference (with a new unique_id), so the swap reverted on reload. The engine's ReplaceNode routes through the editor's "Change Type" path, whose `Node::replace_by` copies the old node's `scene_file_path` onto the new instance. The tool now saves, reads the saved scene, and swaps through ops that persist: InstantiateScene under a temporary name, SetProp for each property override (transform, visibility, ...), ReparentNode for each child the scene added (re-owning deeper descendants the engine's ReparentNode leaves unowned), MoveNode to the old index, RemoveNode, rename, SaveScene. It then reads the file back and returns `persisted: true` only when the node at the path instances the new scene under the same parent with every child present; otherwise it is an error with `failure_reason: not_persisted`. State that cannot travel (groups, signal connections, scene-local sub_resource values, overrides of nodes inside the old scene) is listed in `not_carried_over`. A type change of a plain node keeps the engine op, which persists, and gets the same read-back. `summer_batch` refuses a raw `ReplaceNode` with `scene`. Same implementation on `summer tool replace-node`.
|
|
92
|
+
- `summer_batch` with `ReparentNode` lost the moved node's children and grandchildren on save while the op said ok: the engine's ReparentNode re-owns only the node it moves, and its `remove_child` clears the scene owner of everything below it, so the saved .tscn held `Cabinet/Box` but not `Box/Toy` or `Box/Toy/ToyPart`. A batch with ReparentNode now saves, reads the saved scene (which nodes the scene owns), sends each ReparentNode in its own request together with one in-place ReparentNode per scene-owned descendant (same parent, same live index, local transform kept), which gives each back to the scene, and after the final save reads the file again. `persisted: true` / `verified: true` only when every moved node and descendant is at its new path; otherwise an error with `failure_reason: not_persisted` and the missing paths. Nodes created earlier in the batch and renames after the move are followed. A move onto a parent that already has a child of that name is refused (`name_collision`), and so are `Undo` in the same batch and a binary `.scn`. `summer_replace_node` shares the same re-owning step. Same implementation on `summer tool batch`.
|
|
93
|
+
- `summer_inspect_resource` failed on every call with "missing nodePath or property", on a mesh `.res` and a `.glb` alike: it sent only `path`, but the engine's resource endpoint reads a resource a node holds and takes `nodePath` + `property`. `path` now loads the resource FILE read-only in the editor (a RunSceneScript probe): a Mesh returns its AABB, `surface_count`, per-surface primitive, vertex and index counts, attributes, triangles and material, the unique materials and blend shapes; a `.tscn`/`.glb`/`.gltf` returns its node count, first 40 nodes (type, instanced scene, mesh) and meshes, pointing to `summer_inspect_asset` for measurements; any other resource returns its editor properties that differ from the class default (`props`, `props_at_default`). `nodePath` + `property` reach the engine endpoint as it expects. Same implementation on `summer tool inspect-resource`.
|
|
94
|
+
- `summer_read_library` could not load a file a skill links: `spatial-placement` points to `references/kit-placement-tools.md` for arguments, result shapes and limits, but `reference/kit-placement-tools` was `not_found` and `part: "resource"` returned only resource.yaml. A linked file now loads by `<entry id>/<link as written>` (resolved inside `library/` only, text files only, at most 256 KB), by the relative path alone when exactly one entry ships it, and `reference/<slug>` falls back to the one `references/<slug>.md` an entry ships. Every body ends with its relative links and the id that loads each (`links` in the result); a link to another entry's `SKILL.md` or body resolves to that entry. A test walks every markdown file every skill ships and loads each link both ways. `realtime-wet-surfaces` linked a source record outside the package; it is now named, not linked.
|
|
95
|
+
- `summer_connect_signal` never saved the connection while the receipt said ok: the engine's ConnectSignal connects without `CONNECT_PERSIST` and reads no flags argument, so the saved .tscn had no `[connection]` line. The tool now connects through a RunSceneScript probe with `emitter.connect(signal, Callable(receiver, method), CONNECT_PERSIST)` (a non-persistent connection of the same pair, left by the old op, is replaced), saves (the run marks the tab unsaved; the save leaves it clean), reads the saved scene back and returns `persisted: true` / `verified: true` only when the `[connection]` line is there; otherwise `failure_reason: not_persisted`. A missing emitter, receiver or signal is a structured failure (`emitter_not_found`, `receiver_not_found`, `signal_not_found` with the emitter's signals). The probe runs in the active tab, so a scene in a background tab is brought forward and the user's tab restored (`tab_switched`). The scene must be a `.tscn`. `summer_batch` refuses a raw `ConnectSignal` before anything is sent. Same implementation on `summer tool connect-signal`.
|
|
96
|
+
- `summer_play` takes `players`, `spectators` and `queue` for Local Play on Summer multiplayer games. The engine starts the game's authority headless plus that many clients on this machine, each joining through the game's own `Summer.client.join`, with scenes and queue taken from the project's `summer.build.json`. The result's `local_play` block lists every process. An engine without Local Play ignores the keys and runs one client; the tool adds `local_play_note` saying so.
|
|
97
|
+
|
|
98
|
+
## [3.1.1] - 2026-09-11
|
|
99
|
+
|
|
100
|
+
### Fixed
|
|
101
|
+
- Skill descriptions no longer blow the hosts' skills context budget. Every SKILL.md description is now the skill's 160-character `summary` (94 skills: 13k characters, about 3.3k tokens, down from 32k characters). Codex had started truncating descriptions and Claude Code's budget is about 15k characters. Trigger phrases live in the skill body; `validate-library` fails when a description and its summary differ.
|
|
102
|
+
- `summer setup goose` / `hermes` on an empty config wrote the file as one flow mapping; new files are block-style YAML.
|
|
103
|
+
|
|
104
|
+
### Changed
|
|
105
|
+
- Agents whose docs read the agentskills.io folder now install skills to `~/.agents/skills` (project: `.agents/skills`) instead of each agent's own folder: Codex, Cursor, Zed, OpenCode, Copilot in VS Code, Devin Desktop, Amp, Crush, Warp, Kimi Code, Factory Droid, Rovo Dev, Grok Build; Antigravity, Goose, Hermes and Mistral Vibe at project scope. One install serves all of them and "where are the skills" has one answer. `skills install --force` removes the copies 3.1.0 wrote in the old per-agent folders.
|
|
106
|
+
|
|
5
107
|
## [3.1.0] - 2026-09-11
|
|
6
108
|
|
|
7
109
|
### Added
|
package/README.md
CHANGED
|
@@ -50,7 +50,9 @@ At that point the agent has the skills, the MCP server, and your engine running.
|
|
|
50
50
|
|
|
51
51
|
## AGENTS READING THIS: install playbook
|
|
52
52
|
|
|
53
|
-
You are an AI coding agent. The user told you to install Summer Engine. **Run this playbook via your shell**: Bash on macOS/Linux or PowerShell on Windows.
|
|
53
|
+
You are an AI coding agent. The user told you to install Summer Engine. **Run this playbook via your shell**: Bash on macOS/Linux or PowerShell on Windows. Detection first, then only install what's missing. (Once installed, your working guide is [`AGENTS.md`](AGENTS.md).)
|
|
54
|
+
|
|
55
|
+
**Windows PowerShell: type `npx.cmd` wherever this playbook says `npx`.** Plain `npx` in PowerShell runs `npx.ps1`, which Windows blocks by default ("running scripts is disabled on this system"). `npx.cmd` is the same command without that block. Never change the execution policy or turn off Windows Defender to work around it. Bash (including Git Bash on Windows) can use plain `npx`.
|
|
54
56
|
|
|
55
57
|
### Step -1: Verify Node.js is on PATH
|
|
56
58
|
|
|
@@ -58,7 +60,19 @@ You are an AI coding agent. The user told you to install Summer Engine. **Run th
|
|
|
58
60
|
node --version
|
|
59
61
|
```
|
|
60
62
|
|
|
61
|
-
If this
|
|
63
|
+
If this prints Node.js 20 or newer, continue to Step 0.
|
|
64
|
+
|
|
65
|
+
**Windows, Node missing or older than 20:** a clean Windows machine has no Node, and the whole CLI and MCP server run through it. Ask the user once: "Summer needs Node.js. OK if I install the LTS version with winget?" On yes, run:
|
|
66
|
+
|
|
67
|
+
```powershell
|
|
68
|
+
winget install -e --id OpenJS.NodeJS.LTS --accept-source-agreements --accept-package-agreements
|
|
69
|
+
$env:Path = [Environment]::GetEnvironmentVariable('Path','Machine') + ';' + [Environment]::GetEnvironmentVariable('Path','User')
|
|
70
|
+
node --version
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
The second line makes the new Node visible to this shell without a restart. Windows may show an administrator prompt; tell the user to accept it. Then continue the playbook in the same shell. When setup finishes, tell the user: "Restart <your agent app> once so it sees Node, then the Summer MCP connects." An app that was already open when Node was installed cannot start the MCP server until it restarts. If `winget` itself is not available, tell the user: "Install Node.js LTS from https://nodejs.org, then restart this app and re-run the prompt," and stop.
|
|
74
|
+
|
|
75
|
+
**macOS/Linux, Node missing or older than 20:** stop and tell the user: "Summer needs Node.js 20+. Install from https://nodejs.org and re-run the prompt."
|
|
62
76
|
|
|
63
77
|
### Step 0: Pre-detection (no commits to disk, just check state)
|
|
64
78
|
|
|
@@ -173,7 +187,8 @@ Only skip brainstorm if the user explicitly said "skip brainstorm" or "just buil
|
|
|
173
187
|
### Anti-patterns (do NOT do these)
|
|
174
188
|
|
|
175
189
|
- **Don't run `npm install -g summer-engine`.** Use `npx -y summer-engine@latest ...` instead. `-g` requires `sudo` on most Mac/Linux setups, so the user will get permission errors and you'll get stuck. `npx` works without root and the MCP config we ship already points at `npx summer-engine mcp`.
|
|
176
|
-
- **Don't
|
|
190
|
+
- **Don't install Node.js without asking, and don't use anything but winget for it.** On Windows, Step -1 installs Node LTS with winget after the user says yes. On macOS/Linux, point them at https://nodejs.org and stop.
|
|
191
|
+
- **Don't run plain `npx` in Windows PowerShell, and don't change the execution policy or Defender to make it work.** Use `npx.cmd`.
|
|
177
192
|
- **Don't ask the user "do you want the engine too?" or "do you also want the CLI?"** There is one product, three pieces, all installed by this playbook.
|
|
178
193
|
- **Don't double-download.** Always run `npx -y summer-engine@latest doctor --json` first and skip the engine download and the browser login when their checks are `status: "ok"`. Step 1 (`setup`) is the exception: run it every time — it is idempotent, and doctor's top-level `ok` cannot tell you whether skills or the MCP config are installed.
|
|
179
194
|
- **Don't tell the user to type `/plugin marketplace add` or `/plugin install`.** The CLI path is the canonical install. Those slash commands are an alternative for the marketplace TUI, not the primary flow.
|