Make Game logo

Make Game

Organization
SummerEngine
make-game

Orchestrate 'make me a game': brainstorm, plan, scaffold, mechanics, art, audio, polish, verify, ship.

Overview

PublisherSummerEngine
Repositorysummer
Skill namemake-game
Stars
91
Forks
8
Bundled files
13
LicenseMIT
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • 13 bundled files

    Scripts, templates, and references the model can read while it works. Files are read-only and never executed.

  • Open source

    Published by SummerEngine on GitHub. Read the source before you install it.

Installation

Install the Make Game AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/SummerEngine/summer/tree/main/library/skills/make-game
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/SummerEngine/summer.git /tmp/summer
mkdir -p .claude/skills
cp -r /tmp/summer/library/skills/make-game .claude/skills/make-game
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Make Game in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Make Game on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Make Game is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

/make-game — The orchestration spine

This is the skill that runs end-to-end when a user says "make me a game." It does not try to do everything itself. It runs the right specialist skills in the right order with explicit handoffs and a checkpoint between every phase.

Core principle: structure beats vibes. A guided pipeline that delegates to focused specialists produces a real game. Off-the-cuff "let me think about it" loops produce three half-finished prototypes. Follow the phases. Don't skip.

When to use this skill

  • User says: "make me a game", "build me a game", "I want to make a [genre]", "let's build a game", "build me a [shape]".
  • User has nothing yet and wants the full path from idea → playable.
  • User has a vague idea and wants the agent to drive the whole arc.

When NOT to use this skill

  • User has a specific narrow ask ("add jump", "fix this bug", "design the inventory") → use the specific skill, not this orchestrator.
  • User already has a working scaffold and wants to iterate → start at the relevant phase below, don't re-run the whole pipeline.
  • User says "I want to use a template" → run browse-templates first; come back here only if they decide they want a custom build instead.

Genre playbooks (references/)

Distilled blueprints for common genres live in this skill's references/ folder: architecture, scene tree, collision layers, core-loop code, build order, traps. Each genre is two files — a core file and a systems/polish file. Read the core file during Phase 2 (Plan) so the build plan follows its architecture and build order; read the systems file only when Phase 4 reaches those mechanics. Never load more than the one genre you are building.

GameCoreSystemsRoot / player / camera
Side-scrolling platformerreferences/2d-platformer.mdreferences/2d-platformer-polish.mdNode2D / CharacterBody2D / Camera2D follow
Horde survivors / bullet heavenreferences/2d-survivors.mdreferences/2d-survivors-progression.mdNode2D / CharacterBody2D / Camera2D on player
Top-down action RPG (also the base for puzzle, grid, tower defense)references/2d-rpg.mdreferences/2d-rpg-content.mdNode2D / CharacterBody2D / Camera2D
First-person shooterreferences/3d-fps.mdreferences/3d-fps-systems.mdNode3D / CharacterBody3D / Camera3D on Head
Third-person action / 3D platformerreferences/3d-third-person.mdreferences/3d-third-person-systems.mdNode3D / CharacterBody3D / SpringArm3D
First-person horrorreferences/3d-horror.mdreferences/3d-horror-systems.mdNode3D / CharacterBody3D / Camera3D on Head

2D and 2.5D games look painted. For any 2D or 2.5D request (top-down, RPG, cozy, side-scroller, platformer look), build the world with the painted-25d-world skill: a 3D blockout under one fixed orthographic camera, an AI paint-over projected onto the blocks, sprite characters (Node3D / CharacterBody3D / translate-only Camera3D). Use the 2D playbooks above for the core loop, mechanics and build order only, not for the scene tree or art. Do not start a 2D game from a 2D template unless the user asks for that template.

No playbook (racing, sandbox, sim): build fresh through the phases below. The playbooks lean on these system skills — load one when its mechanic comes up: character-movement, camera-rigs, combat-basics, save-load, ui-basics, multiplayer-project.

These rules from the playbooks apply to every genre:

  • 2D scales to the viewport. Set display/window/stretch/mode = canvas_items and stretch/aspect = expand; UI uses Control anchors; code-positioned nodes compute from get_viewport_rect().size. Never hardcode 1920x1080.
  • Playable slice, not tech demo. Name the core loop in one sentence; every input gets feedback (tween, sound, particle, flash, shake); progression is visible; a restart exists. The bar is "feels good for 30 seconds".
  • The first playable already looks good. People judge Summer by the first frame of their first game, so the first version looks finished even when they ask for a quick prototype: keep the features they asked for and raise the look. Sky and sun with shadows, tonemapping and a little fog; a texture on every surface; real models for the player, characters and main props from the starter project or the Summer asset library (summer_assets_search), never capsules or boxes as final art; one colour palette; a styled UI font. Generation takes minutes, so it never blocks the first play: use starter and library art first, plus at most one or two generated assets the person asked for, and generate the rest in later passes. Before you say it is ready, play it and look at a screenshot of the running game, not the editor (the editor shows a preview sky and sun that the game does not have).
  • A way back to the title. From inside play, a pause menu or a Leave button returns to the title screen without quitting the app.
  • Text the default font can show. No emoji or symbols (▲ ◀ ★ ♥ ✓) in UI text: they render as boxes with hex codes. Use words or icons; see ui-basics.

The Pipeline

  Brainstorm → Plan → Scaffold → Build → Layer → Polish → Verify → Ship
       │        │        │        │        │        │       │       │
       ▼        ▼        ▼        ▼        ▼        ▼       ▼       ▼
  brainstorm  plan   new-project  build-loop   art      vfx    play  export
   -game     (this   browse-      (this skill)  audio          debug -and-
              skill) templates                                       ship
                                                                     
                                  ↓
                         (one mechanic at a time:
                          design-mechanic + scene-composition
                          + gdscript-patterns + play check)

Run the phases in order. Between every phase, stop and confirm with the user before continuing. The user owns scope decisions; the agent owns execution discipline.

Phase 1: Brainstorm

Goal: turn a vague idea into a 1-page brief.

Skill: brainstorm-game

That skill asks one question, scopes mechanics, picks an art direction, and writes .summer/GameSoul.md. Don't skip this. The brief is what every later phase reads.

If the user already has .summer/GameSoul.md (check via Read), skip the brainstorm and confirm:

"Found .summer/GameSoul.md — should I build from this brief, or do you want to start over?"

Checkpoint before continuing:

"Brief saved at .summer/GameSoul.md. Want me to plan the build?"

Phase 2: Plan

Goal: turn the brief into a concrete checklist of scenes, mechanics, and assets, in priority order.

This phase doesn't have a dedicated skill yet — do it inline. Read .summer/GameSoul.md and produce a plan with three sections:

  1. Core scenes — main scene, level/menu scenes, prefabs the game needs
  2. Core mechanics — ranked, max 3 (the brief enforces this; respect it)
  3. Cut list — what's explicitly NOT in scope

If the game has online play, the plan also fixes three product defaults; each one was missed by a real release:

  • Online play is reachable by default. A new player gets to it from the title without changing a setting. Hiding it behind a setting or a grown-ups gate is the owner's explicit decision, recorded in the plan, and it means someone joins online before every release.
  • Progress is saved by the server. Online progress goes through authority player data (summer-player-data), not only the player's local files.
  • A way back to the title from inside an online and an offline session.

Save the plan to .summer/build-plan.md. Format:

markdown
# Build plan — <game name>

Source: .summer/GameSoul.md (date)

## Core scenes
- [ ] main.tscn — World + Player + Camera + Light + Floor
- [ ] level_01.tscn — first playable level
- [ ] hud.tscn — health, score
- [ ] (more)

## Core mechanics (in build order)
1. [ ] Movement (FPS / TPS / 2D platformer / etc.)
2. [ ] Primary action (shoot / jump / interact)
3. [ ] Win/lose state

## Cut list (NOT in scope this pass)
- Multiplayer
- Save/load
- Settings menu
- ...

Checkpoint before continuing:

"Plan saved. Three core mechanics: movement, primary action, win condition. Anything you want to add or cut before I start building?"

Phase 3: Scaffold

Goal: working project on disk, scene opens in the engine.

If the user said "I want to use a template" earlier, this is just browse-templates.

If from scratch:

Skill: new-project

That picks empty vs 3d-basic based on the GameSoul brief. After the project is created and summer run succeeds:

Skill: scene-composition

To set up the canonical hierarchy for the genre. For 3D action games:

World (Node3D)
├── Player (CharacterBody3D)
├── Level (Node3D)
├── Lighting (Node3D)
│   ├── Sun (DirectionalLight3D)
│   └── Environment (WorldEnvironment)
├── HUD (CanvasLayer)
└── GameManager (Node)  # autoload-style, holds win/lose state

Build that hierarchy in one summer_run_script with the scene's scenePath (see scene-scripting), not node by node, and end the script with ctx.save_scene(). Run summer_play once to verify the empty scaffold opens cleanly. If it crashes, run debug immediately — do NOT continue building on a broken base.

Checkpoint before continuing:

"Scaffold is in. Empty scene plays clean. Building mechanic 1 of N: . OK?"

Phase 4: Build (one mechanic at a time)

Goal: each mechanic from the plan, fully working, before moving to the next.

For each mechanic in the plan, in order:

  1. Design pass:

    Skill: design-mechanic

    Outputs the mechanic spec: input, response, feedback, failure modes, depth, tunables, GDScript stub.

  2. Implement:

    • Add the nodes: 3 or more scene edits are one summer_run_script with scenePath (snapshot, script, diff, screenshot); a single tweak is one summer_set_prop. Use scene-composition if the structure is non-trivial.
    • For movement-class mechanics, prefer the matching pre-built skill: character-movement, fps-controller, multiplayer-movement, etc. Follow the genre playbook's build order when one applies.
    • Write GDScript with gdscript-patterns open.
  3. Verify:

    Skill: play

    Then summer_get_diagnostics. Clean? Move on. Errors? debug until clean. Do not stack mechanic 2 on top of a broken mechanic 1.

  4. Checkpoint:

    "Mechanic 1 of N working: . <One-line proof: 'WASD moves the player, jump works'>. Building mechanic 2 of N: . OK?"

Repeat until every mechanic in the plan is implemented OR the user calls cut.

Phase 5: Layer (look + sound)

Goal: deepen the look and add sound. The first playable already looks good (see "The first playable already looks good" above); this phase writes the art bible, replaces the remaining stand-in art and adds audio.

Skill: art-direction

That writes .summer/art-bible.md if it doesn't exist, then guides the lighting / material / palette pass. Use 3d-lighting for the actual scene work. For the web, check the target first. A summer.games web build (summer_export_game with targets:["web"]) runs on Summer's WebGPU template, which needs the Forward+ or Mobile renderer. A WebGL 2 target runs the Compatibility renderer only: follow web-compatibility-look there, avoid Forward+-only features (SDFGI, SSAO, SSR, volumetric fog), and keep rendering/renderer/rendering_method on gl_compatibility.

Skill: audio-direction

Writes .summer/audio-bible.md and sets up the audio bus structure. Wires SFX hooks into the mechanics from Phase 4.

Use asset-strategy to decide whether to generate assets, search the library, or use primitives. Public asset library search is free — encourage it before generation, which costs credits.

Checkpoint before continuing:

"Art and audio direction set. Want me to add a polish pass (juice / VFX / camera shake / hit feedback)?"

Phase 6: Polish (skip if user wants to ship raw)

Goal: the game feels good. Hit-flash, screen shake, audio ducking, weight.

Skill: game-feel

Walks the canonical Summer Engine game-feel stack: hit flash, trauma camera shake, and audio ducking wired so a single hit fires all three.

Skill: tune-performance

Only if summer_get_diagnostics flags rendering or physics hotspots. Don't optimize prematurely.

Phase 7: Verify (final QA pass)

Goal: the full game runs end-to-end without errors, and the win condition can actually be reached.

  1. play from main scene.
  2. Walk every mechanic from the plan.
  3. Hit the win condition (or lose condition).
  4. Return to the title from inside play, then start again.
  5. Online games: run Local Play (multiplayer-testing) and reach online play from the title as a new player, with default settings.
  6. summer_get_diagnostics clean.
  7. debug until clean if not.

Don't skip this even if every mechanic worked individually. Integration bugs hide between mechanics.

Phase 8: Ship

Skill: export-and-ship

Pre-flight checklist (icon, store banners, build config) before producing release builds for the targets in the brief.

Before any version reaches players, run:

Skill: release-readiness

It checks the file you upload, not the editor: a hosted game's server.pck starts its authority scene, Summer.initialize passes no hard-coded Game ID, online play is reachable, progress is saved by the server, and players can get back to the title. Then, after publishing, the user joins online with the released version. Report each check as pass, fail, not applicable or not run. Hosted games publish through multiplayer-publish; store pages through publish-your-game.

If the brief said "jam" or "prototype", skip this phase. If the brief said "game I want to release", run it.

Anti-Patterns

Don'tWhy
Skip the brainstorm because the user said "FPS"Even with the genre named, you need the scope cut list. Otherwise mechanic 4 quietly sneaks in and the game never ships.
Let mechanic 2 start before mechanic 1 is verified cleanCompounding bugs. You'll spend the rest of the session debugging which mechanic broke what.
Change the art style while mechanics are unfinishedArt changes are reversible only if the underlying scene structure is stable. Get mechanics done before a new style; the first playable still starts good-looking.
Treat "polish" as requiredIf the brief says "jam in 2 days", polish is a cut item. Respect the brief.
Run all phases without confirmingThe user owns scope. Stop at every checkpoint.
Ship online play behind a setting nobody changesHosted join is never exercised, so it breaks without anyone noticing. Reachable by default, or the owner joins online before every release.
Hard-code a Game ID in Summer.initializeThe summer.games bundle has no gameId; a different ID fails on the hosted server and every online join times out. Pass no ID.
Build a fully featured menu before there's a playable mechanicMenu work is endless polish; player-loop work is the actual game. Mechanics first.
Fall back to "let me try a few things" mid-pipelineIf you don't know what to do, name the phase and ask the user, don't improvise around the structure.

What this skill produces (artifacts on disk)

By the end of a successful run, the user has:

  • project.godot — Summer Engine project
  • main.tscn — playable main scene
  • .summer/GameSoul.md — the brief
  • .summer/build-plan.md — the checklist
  • .summer/art-bible.md — visual direction
  • .summer/audio-bible.md — sonic direction
  • One .gd file per mechanic
  • summer_get_diagnostics returns clean
  • summer_play runs end-to-end and the win condition is reachable

Closing line

When all phases are done:

" is in. mechanics, . . Want me to package a build (export-and-ship) or iterate?"

That's the handoff back to the user.

From a shell

No Summer MCP tools in this session? Run each one as a command; when summer --version is missing or below 4.0, use npx -y summer-engine@latest in place of summer. Fields are flags in kebab-case (--scene-path res://main.tscn) or one --input '<json>', and summer ops describe <op> prints the exact input. The summer-cli skill has the rest.

In this skillCommand
assets.search, summer_assets_searchsummer assets search
summer_docs_readsummer docs read
summer_add_nodesummer engine add-node
summer_batchsummer engine batch
summer_create_scenesummer engine create-scene
summer_export_gamesummer engine export-game
summer_get_diagnosticssummer engine get-diagnostics
summer_get_project_contextsummer engine get-project-context
summer_get_scene_treesummer engine get-scene-tree
summer_get_script_errorssummer engine get-script-errors
summer_import_assetsummer engine import-asset
summer_import_asset_by_idsummer engine import-asset-by-id
summer_playsummer engine play
summer_replace_textsummer engine replace-text
summer_run_scriptsummer engine run-script
summer_save_scenesummer engine save-scene
summer_set_propsummer engine set-prop
summer_set_resource_propertysummer engine set-resource-property
summer_stopsummer engine stop
summer_write_filesummer engine write-file

Bundled files

The model reads these on demand while the skill is loaded. They are exposed as readable files and are never executed.

Frequently asked questions

What does the Make Game AI skill do?

Orchestrate 'make me a game': brainstorm, plan, scaffold, mechanics, art, audio, polish, verify, ship.

Why use Make Game on TypingMind?

Because you install it once and use it with any model. Make Game is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Make Game in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/SummerEngine/summer/tree/main/library/skills/make-game. TypingMind reads its SKILL.md and bundles its files and installs it as a skill you can enable per chat.

Which AI models can use Make Game?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Make Game?

As many as you like. As long as a model supports skills, you can use Make Game with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Make Game AI skill free?

Yes. It is published on GitHub by SummerEngine under the MIT license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇