using-summer is a skill from the Summer skill library: a guide your AI agent reads when the task matches, so it builds the good version on the first try. Session bootstrap: how to find and use Summer skills and the summer-engine MCP before any response.
When your agent uses it
- Starting any conversation in a Summer Engine project
- Deciding which Summer skill or summer_* tool applies before answering a game-development request
Install
summer setup installs every skill for your agent. To add only this one:
claude-code for your agent, such as codex or cursor. See Skills for every option.
The skill
<SUBAGENT-STOP> If you were dispatched as a subagent to execute a specific task, skip this skill. The parent agent has already loaded it. </SUBAGENT-STOP> <EXTREMELY-IMPORTANT> If you think there is even a 1% chance a Summer skill might apply to what you are doing, you ABSOLUTELY MUST invoke the skill. IF A SKILL APPLIES TO YOUR TASK, YOU DO NOT HAVE A CHOICE. YOU MUST USE IT. This is not negotiable. This is not optional. You cannot rationalize your way out of this. </EXTREMELY-IMPORTANT>Instruction Priority
Summer skills override default model behavior, but user instructions always win:- User’s explicit instructions (CLAUDE.md, GEMINI.md, AGENTS.md, direct requests) — highest priority.
- Summer skills — override default agent behavior where they conflict.
- Default system prompt — lowest priority.
CLAUDE.md says “skip the brainstorm, just build it” and a skill says “always brainstorm first” — follow the user. The user is in control.
What Summer Is
Summer Engine is an AI-native game engine — editor, scene graph, asset pipeline, and runtime are all instrumented for programmatic control by AI agents. Summer (this skill set + MCP server) is how your coding agent talks to it. Three layers:- Skills — discipline guides that fire on specific situations: brainstorming a game, designing a mechanic, building an FPS controller, debugging a crash, shipping a build. Each one is a SKILL.md you load via the Skill tool.
- MCP tools —
summer_*tools that talk to the running Summer Engine onlocalhost:6550. Scene mutation (summer_add_node,summer_set_prop), inspection (summer_get_scene_tree,summer_inspect_node), play/diagnostics (summer_play,summer_get_diagnostics), asset import (summer_import_from_url), and the rest of thesummer_*set. - Operations — Summer’s cloud work (generating images, 3D, audio, video and animation, editing assets, store pages, jobs) is named by operation:
assets.generate_3d,jobs.wait. A call writtenarea.action({...})is one operation: use the toolsummer_area_actionwhen your client lists it, elsesummer_call({ op: "area.action", input: {...} }).summer_searchfinds any operation and its exact input. Long work (3D, video, animation) answers with a job:jobs.wait({ jobId })until it finishes. Spending operations acceptdryRun: true, which returns the person’s estimated credits and changes nothing.
summer_* tools in this session? Summer was set up without MCP (summer setup <agent> --cli). Every tool and operation is also a summer command in the shell: use the summer-cli skill. Each skill’s From a shell table gives the command for each tool it names.
Scripting language: The user is making a Summer game with the Summer SDK.
GDScript is the default creator language. Summer Engine follows its upstream
technical base continuously, so confirm version-sensitive behavior from the
engine’s own version string. You can write game code in either:
- GDScript (
.gd) — the default. Best supported by Summer skills (seegdscript-patterns). Use this unless the user has explicitly chosen C#. - C# (
.cs) — supported by the shipped Mono build. The GDScript conventions ingdscript-patternshave no C# counterpart yet. When writing C#, use the upstream C# API reference matching the current Summer technical base. The lifecycle, signal API, and export attributes differ, so do not blindly translate GDScript idioms. Confirm that the user wants C# before producing it; switching languages mid-project is painful.
.tscn/.scn. Resources are always .tres/.res. Drive the engine through summer_* tools — do not hand-edit .tscn files; the editor holds in-memory state that diverges from disk. 3 or more scene edits are one summer_run_script with scenePath (snapshot, script, diff, screenshot; see scene-scripting), not a chain of single calls.
The engine must be running for MCP tools that touch scenes or diagnostics. If it isn’t, the tool returns an error pointing the user at summer run.
.summer/ is the project’s durable memory. summer_get_project_context surfaces a lightweight projectMemory summary; use it to read only the relevant Markdown before creative, audio, dialogue, level, or character work. Facts marked priority: locked are stable project decisions and require explicit user confirmation before changing.
How to Access Skills
Claude Code / Cursor / Codex / Copilot CLI: Use theSkill tool. When you invoke a skill, its content loads — follow it directly. Never use Read on a skill file.
Gemini CLI: Use activate_skill.
OpenCode: Skills are auto-discovered from the registered directory; load via OpenCode’s native skill mechanism.
Finding the Right Entry
Not sure which skill, tool, template, or reference covers the task? Ask the library before guessing: callsummer_docs_search with the task in plain words (“make stylized water”, “the player falls through the floor”), then summer_docs_read with the id you pick — it returns the entry itself (a skill’s body and metadata, a tool’s call recipe, a template’s pin) and ends with the entry_id line to report through summer_call {"op":"docs.feedback"} once the outcome is verified. From a shell the same two are summer tool search-library --args '{"query":"…"}' and summer tool read-library --args '{"id":"…"}'; neither needs the engine. When search names a skill, invoke it by its bare slug through your host’s skill mechanism (vfx-water-ripple, fps-controller, design-mechanic) rather than paraphrasing the body from the read.
The Rule
Invoke the relevant skill BEFORE any response or action. Even a 1% chance a skill might apply means you check. If the loaded skill turns out not to fit, you don’t have to follow it — but you do have to load it first to know.Red Flags (You Are Rationalizing — Stop)
These thoughts mean STOP. Check skills first.Skill Priority
When multiple Summer skills could apply, run them in this order:- Process skills first —
brainstorm-game,debug,play. These determine HOW to approach the task. - Discipline skills second —
gdscript-patterns,scene-composition,art-direction,audio-direction. These shape the content. - Build skills third —
fps-controller,design-mechanic,design-level,multiplayer. These produce the artifacts.
“I want to make a game” →brainstorm-gamefirst, then build skills. “Make me a sword clash sound” with no game in sight → the asset skill (sound-effect) directly. Asset requests need no brainstorm, no project and no running engine. “Fix this crash” →debugfirst, then domain skills. “Add an FPS controller” → checkscene-compositionfirst, thenfps-controller.
Skill Types
- Rigid skills (
debug,gdscript-patterns): follow exactly. Don’t adapt away the discipline. - Flexible skills (
art-direction,design-mechanic): adapt the principles to the project.
When the Engine Isn’t Running
If an MCP tool returns “Summer Engine is not running”:- Tell the user:
summer runto start it (or open Summer Engine and load the project). - While waiting, do non-MCP work — read code, plan the next steps, draft GDScript.
- Retry the tool. The MCP server lazy-reconnects on the next call.
.tscn files directly. The engine reads them on disk but holds in-memory state that diverges, and saving from the editor will overwrite your file edits.
When the User Hasn’t Set Up Summer
If skills aren’t found or the MCP server fails to start:- Check whether
summeris on PATH:which summer/where summer. - If not, point them at:
npx -y summer-engine@latest setup <agent> --yes --force(use@nextand--channel nextwhile a release is soaking on thenexttag;summer doctorprints the right command). - If
summer doctoris available, run it:summer doctorreports auth, engine, port, project memory, and skill state.
When Summer Is Stale
Runsummer doctor early in a fresh Summer session when setup, MCP tools, slash commands, or skills behave oddly. If doctor reports cli-version-current or skills-version-stale as warning/fail, refresh before continuing:
summer doctor recommends: @latest normally, @next (with --channel next) when this CLI was installed from the soaking release, otherwise the MCP server silently drops back to the older latest. Use the real agent slug from doctor or the current environment (claude-code, codex, cursor, antigravity, github-copilot, vscode-copilot, opencode, etc.).
Why this exact command matters:
@latestforces npm/npx to resolve the current published Summer CLI instead of reusing a stale cached package.clear-npx-cacheclears old npx package material on machines that keep serving an older Summer.setup ... --forcerewrites copied skill/slash-command files, which do not update just because the MCP server restarted.
User Instructions Trump Everything
A direct user instruction (“skip the brainstorm”, “just write the code”, “don’t use the MCP, edit files”) overrides this skill. Surface the trade-off in one sentence (“Skipping brainstorm — heads up, scope creep is the most common reason game projects die.”) and proceed as instructed.From a shell
No Summer MCP tools in this session? Run each one as a command; whensummer --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.
Related skills
audio-direction: Define the game’s sound (music style, SFX vocabulary, dynamic music) as .summer/audio-bible.md.fps-controller: First-person controller: WASD, mouse look, jump, coyote time, jump buffering, air control.debug: Disciplined bug, crash and error loop: script errors, console, debugger, hypothesis, fix, verify.design-mechanic: Design one mechanic in detail (input, feedback, failure modes, tunables) as a doc plus a script stub.design-level: Design one level (layout, pacing, encounters, secrets) as a design doc plus a node-tree skeleton.multiplayer: Start here for Summer multiplayer: how authority, clients, Worlds and Sessions fit, and what comes next.art-direction: Define the game’s visual style (palette, mood, lighting, post) as an art bible in .summer/art-bible.md.brainstorm-game: Turn a vague game idea into a 1-page brief (genre, scope, core loop, mechanics) in .summer/GameSoul.md.play: Run the project in Summer Engine, wait briefly, then report a clean run, errors or warnings.scene-composition: Scene structure: node hierarchy, when to extract sub-scenes, reusable prefabs, instance vs add node.gdscript-patterns: GDScript conventions: type hints, signals, exports, onready, lifecycle methods, node paths, naming.summer-cli: Summer as shell commands, no MCP: sign in, find and run operations, follow jobs, save files, drive the engine.
Source:
library/skills/using-summer/SKILL.md, rendered from summer-engine@4.3.0 on npm.
