Skip to content
Agents tracked: 440 Downloads (7d): 202M down 19.5% GitHub stars: 10.4M Releases (7d): 607 Agent status: 1 with issuesSince last limit reset: Claude 28d · Codex 0d Updated Oct 21, 2026

Starter kit for a 2D platformer

A recipe for a browser jump-and-run that you hand to Claude Code, Cursor, Codex or Copilot: the stack with exact versions, art, sound and a font you may ship, a plan with a check after every step, and the traps two test builds ran into.

New to kits? Read how to use a kit.

How the kit fits together

Your agent reads the brief, builds with these parts and checks its own work before you ship. Click a part to see why it was picked.

File for your agent

AGENTS.md

The plan your agent follows, a step at a time, with a check that must pass before the next step. It also holds the stack with exact versions, the licenses and the known traps.

File for your agent

first-prompt.txt

The first message you paste into your agent. It points the agent at AGENTS.md and tells it to stop after step 1 and report.

File for your agent

.mcp.json

The MCP servers the brief lists, set up for Claude Code. The kit builder writes the same setup for Cursor, Codex or Copilot.

File for your agent

CREDITS.md

The license record of every third-party file. The brief tells the agent to add a row for every file it brings in.

You bring this

Your coding agent

The kit works with any of these. Pick yours in the kit builder and the setup files change to match.

Engine knowledge

Phaser agent skills

MITofficial source

Models trained on Phaser 3 write code that breaks on Phaser 4. Version-matched guidance fixes that. Written by the engine's makers and pinned to the installed version.

By Phaser Studio Inc · Nothing to install

1 other candidate also fits.

Playtesting

Playwright MCP

0.0.83Apache-2.0

Lets the agent open the game, press keys, take screenshots and read the console, so it can check its own work.

By Microsoft · In 1,094 of 29,413 sampled repos · v0.0.83 on npm · Agent can use it through MCP

1 other candidate also fits.

Tool and asset data

AgentGid

If the agent needs something this kit does not list, it asks AgentGid instead of guessing from memory.

By AgentGid · Agent can use it through MCP

Game engine

Phaser

4.2.1MIT

Runs the loop, draws sprites, reads input and plays sound. Its makers ship agent skills inside the npm package, and AgentGid has agent rules for it.

In 10 of 4,663 JS/TS agent projects (0.2%) · #1 of 4 in game development · v4.2.1, July 9, 2026 · MIT · Installs from a package registry

2 other candidates also fit.

Physics

Arcade Physics

MITofficial source

Gravity, landing on platforms, and touching coins and enemies. Rectangles and gravity are all a platformer needs, and there is nothing to install.

Nothing to install

2 other candidates also fit.

Dev server and bundler

Vite

8.3.4MIT

Serves the game over http while you build and produces the static files to upload. 42.5% of the Phaser projects AgentGid counted use Vite, and Phaser's own scaffolder recommends it for first-time users.

In 1,188 of 4,663 JS/TS agent projects (25.5%) · #1 of 89 in build tools and bundlers · v8.3.4, October 8, 2026 · MIT · Installs from a package registry

1 other candidate also fits.

Language

TypeScript

7.0.2Apache-2.0

Types catch wrong frame names and config keys before the game runs.

In 3,311 of 4,663 JS/TS agent projects (71%) · #1 of 23 in languages, types and runtimes · v7.0.2 (npm registry) · Apache-2.0 · Installs from a package registry

1 other candidate also fits.

Level format

Levels as JSON in the repo

official source

Where the level lives decides whether your agent can edit it without you.

Nothing to install

2 other candidates also fit.

Sprites and tiles and sound effects · from Kenney

New Platformer Pack

CC0

Sprites and tiles. Characters, enemies, ground and backgrounds. One pack from one author keeps the look consistent. CC0, one author, and direct ZIP links, so the agent can fetch the pack by itself.

Sound effects. Jump, coin, hurt and win sounds. The cartoon pack already includes ten matching effects; the pixel styles pair with Digital Audio.

CC0 (public domain) · Commercial use OK · No credit needed · Free tier · 440 files · Agent can download it from direct links

2 other candidates also fit, 2 ruled out.

Music · from Kenney

Music Jingles

CC0optional, off

Short stingers for win and lose, and optionally a background loop. Jingles for win, lose and pickup moments. For a looping track, choose one by hand from a source below.

CC0 (public domain) · Commercial use OK · No credit needed · Free tier · 85 files · Agent can download it from direct links

2 other candidates also fit, 28 ruled out.

Font · from Google Fonts

Lilita One

OFL-1.1

Title, prompts and messages. It has to stay readable at small sizes. Open licenses and single files with direct links. Bundle the file and its license in the build; do not load it from Google at run time.

SIL OFL 1.1 (most), Apache-2.0 (some), Ubuntu Font License 1.0 · Commercial use OK · No credit needed · Free · 27 KB · static file · Agent can fetch it through an API

7 other candidates also fit, 1 ruled out.

On-screen touch controls · from Kenney

Mobile Controls

CC0optional, off

Buttons for phones and tablets.

CC0 (public domain) · Commercial use OK · No credit needed · Free tier · 900 files · Agent can download it from direct links

Scripted browser tests

Playwright (JavaScript)

1.64.0Apache-2.0

The automated playthrough needs a script that drives a real browser and can be run again after every change. The most used browser test runner in AgentGid's scan. Its first run downloads a browser.

In 1,027 of 4,663 JS/TS agent projects (22%) · #2 of 42 in testing · v1.64.0, October 7, 2026 · Apache-2.0 · Installs from a package registry

When the agent is done

10 checks

  • npm run dev serves the game, and npm run build writes a static dist/ that also works when it is served from a sub-folder.
  • A title screen that starts on a key press and on a click or tap, one level, and a win screen.
  • The player runs, jumps with variable height, lands on platforms, and the camera follows.
  • Coins can be collected and the HUD shows the count.
  • One enemy type: touching it from the side costs one of 3 hearts, landing on it removes it. A fall or the last heart restarts the level with coins, enemies and hearts reset.
  • Reaching the flag ends the level and shows the win screen.
  • Jump, coin, hurt and win each call a sound, counted in the test hook.
  • An automated playthrough starts on the title screen, takes one hit and one fall on purpose, reaches the win screen within 60 seconds, and logs no console errors or warnings from the game.
  • CREDITS.md has a row for every third-party file in dist/, and dist/licenses.md holds the license text of the bundled engine.
  • No Nintendo names, characters, sprites, sounds or level layouts in what you make: source, assets and on-screen text.
Where to publish

itch.io (HTML5 game)

official source

A static folder is all a browser game needs. Built for games: a page, comments and a player audience.

Free: 'itch.io costs nothing to use'

4 other candidates also fit.

After the agent

Left to you

  • Listen to the four sounds once: a check can count play calls, not judge how they sound.
  • Upload the build: it needs your account on the host.
Files for your agentAgent tools (MCP)CodeArt, sound and contentChecksOptional, off by default

What you get

The result
Title screen of the second buildPlaying the levelWin screen with the coin count

One playable level in a desktop browser: the player runs and jumps across platforms, collects coins, avoids an enemy, and reaches a flag. A title screen, a win screen, sound effects, and a static build you can upload.

7 files
Ready for your agent
  • AGENTS.md: the plan, with a check after every step
  • first-prompt.txt, install.txt, .mcp.json
  • CREDITS.md, CLAUDE.md, kit.json
13 parts
Every part is free or has a free tier
  • Code: MIT, Apache-2.0
  • Art and sound: CC0, OFL-1.1
  • Agent tools: MIT, Apache-2.0
3 of 3 asset sources allow commercial use with no credit needed. Plus 2 optional parts, off by default.
10 / 10
Checks met in the last test build
  • Build 2, Oct 12, 2026
  • 27 things in the brief reported, 1 serious
  • Findings went back into recipe v0.3
The brief counts it as done when these 10 checks pass
  • npm run dev serves the game, and npm run build writes a static dist/ that also works when it is served from a sub-folder.
  • A title screen that starts on a key press and on a click or tap, one level, and a win screen.
  • The player runs, jumps with variable height, lands on platforms, and the camera follows.
  • Coins can be collected and the HUD shows the count.
  • One enemy type: touching it from the side costs one of 3 hearts, landing on it removes it. A fall or the last heart restarts the level with coins, enemies and hearts reset.
  • Reaching the flag ends the level and shows the win screen.
  • Jump, coin, hurt and win each call a sound, counted in the test hook.
  • An automated playthrough starts on the title screen, takes one hit and one fall on purpose, reaches the win screen within 60 seconds, and logs no console errors or warnings from the game.
  • CREDITS.md has a row for every third-party file in dist/, and dist/licenses.md holds the license text of the bundled engine.
  • No Nintendo names, characters, sprites, sounds or level layouts in what you make: source, assets and on-screen text.

Left to you, because no check can do it: Listen to the four sounds once: a check can count play calls, not judge how they sound. Upload the build: it needs your account on the host.

The parts and why each was picked

Defaults for commercial use, free parts and Claude Code. Change them.

Code

Game engine
Phaser 4.2.1

Runs the loop, draws sprites, reads input and plays sound. Its makers ship agent skills inside the npm package, and AgentGid has agent rules for it.

In 10 of 4,663 JS/TS agent projects (0.2%) · #1 of 4 in game development · v4.2.1, July 9, 2026 · MIT · Installs from a package registry

Also fits: KAPLAY, Pixi.js.

Physics
Arcade Physics official source

Gravity, landing on platforms, and touching coins and enemies. Rectangles and gravity are all a platformer needs, and there is nothing to install.

Nothing to install

Also fits: Matter physics in Phaser, Matter.js.

Dev server and bundler
Vite 8.3.4

Serves the game over http while you build and produces the static files to upload. 42.5% of the Phaser projects AgentGid counted use Vite, and Phaser's own scaffolder recommends it for first-time users.

In 1,188 of 4,663 JS/TS agent projects (25.5%) · #1 of 89 in build tools and bundlers · v8.3.4, October 8, 2026 · MIT · Installs from a package registry

Also fits: webpack.

Language

Types catch wrong frame names and config keys before the game runs.

In 3,311 of 4,663 JS/TS agent projects (71%) · #1 of 23 in languages, types and runtimes · v7.0.2 (npm registry) · Apache-2.0 · Installs from a package registry

Also fits: Plain JavaScript.

Level format
Levels as JSON in the repo official source

Where the level lives decides whether your agent can edit it without you.

Nothing to install

Also fits: LDtk, Tiled.

Scripted browser tests

The automated playthrough needs a script that drives a real browser and can be run again after every change. The most used browser test runner in AgentGid's scan. Its first run downloads a browser.

In 1,027 of 4,663 JS/TS agent projects (22%) · #2 of 42 in testing · v1.64.0, October 7, 2026 · Apache-2.0 · Installs from a package registry

Art and sound

Sprites and tiles

Characters, enemies, ground and backgrounds. One pack from one author keeps the look consistent. CC0, one author, and direct ZIP links, so the agent can fetch the pack by itself.

CC0 (public domain) · Commercial use OK · No credit needed · Free tier · 440 files · Agent can download it from direct links

Also fits: OpenGameArt.org, Game-icons.net. Ruled out: 2, see why.

Sound effects

Jump, coin, hurt and win sounds. The cartoon pack already includes ten matching effects; the pixel styles pair with Digital Audio.

CC0 (public domain) · Commercial use OK · No credit needed · Free tier · 440 files · Agent can download it from direct links

Also fits: jsfxr, Sonniss GDC Game Audio Bundle, Freesound, SoundBible. Ruled out: 12, see why.

Musicoptional, off

Short stingers for win and lose, and optionally a background loop. Jingles for win, lose and pickup moments. For a looping track, choose one by hand from a source below.

CC0 (public domain) · Commercial use OK · No credit needed · Free tier · 85 files · Agent can download it from direct links

Also fits: Free Music Archive, ccMixter. Ruled out: 28, see why.

Font

Title, prompts and messages. It has to stay readable at small sizes. Open licenses and single files with direct links. Bundle the file and its license in the build; do not load it from Google at run time.

SIL OFL 1.1 (most), Apache-2.0 (some), Ubuntu Font License 1.0 · Commercial use OK · No credit needed · Free · 27 KB · static file · Agent can fetch it through an API

Also fits: Kenney, Fontsource, Fira Code, Hack and 3 more. Ruled out: 1, see why.

On-screen touch controlsoptional, off

Buttons for phones and tablets.

CC0 (public domain) · Commercial use OK · No credit needed · Free tier · 900 files · Agent can download it from direct links

For your agent

Engine knowledge
Phaser agent skills official source

Models trained on Phaser 3 write code that breaks on Phaser 4. Version-matched guidance fixes that. Written by the engine's makers and pinned to the installed version.

By Phaser Studio Inc · Nothing to install

Also fits: Context7.

Playtesting

Lets the agent open the game, press keys, take screenshots and read the console, so it can check its own work.

By Microsoft · In 1,094 of 29,413 sampled repos · v0.0.83 on npm · Agent can use it through MCP

Also fits: Chrome DevTools MCP.

Tool and asset data

If the agent needs something this kit does not list, it asks AgentGid instead of guessing from memory.

By AgentGid · Agent can use it through MCP

Ship

Where to publish
itch.io (HTML5 game) official source

A static folder is all a browser game needs. Built for games: a page, comments and a player audience.

Free: 'itch.io costs nothing to use'

Also fits: GitHub Pages, Netlify, Cloudflare Workers, Render.

Licenses of the assets

SourceUsed forTermsLicense page
KenneyNew Platformer Pack, New Platformer Pack Sprites and tiles, Sound effects Commercial use OK; No credit needed; Can ship inside your build CC0 (public domain)read Oct 10, 2026
Google FontsLilita One Font Commercial use OK; No credit needed; Can ship inside your build, with conditions SIL OFL 1.1 (most), Apache-2.0 (some), Ubuntu Font License 1.0read Oct 10, 2026

License terms as the sources state them, read on the dates shown. The kit's CREDITS.md starts with these rows and the brief tells the agent to add one for every file it brings in. This is a record, not legal advice.

The plan your agent follows

The agent works one step at a time and does not start a step until the previous one meets its "Done when" lines. The full instructions, with code, are in AGENTS.md.

  1. Scaffold · done when:
    • The dev server shows an empty scene at 1280x720 that scales with the window, and the console has no errors or warnings.
    • npx tsc passes.
    • npm run build passes and dist/index.html loads its script from ./assets/.
    • The kit files listed under "Before you start" are still there.
  2. Assets · done when:
    • A temporary test scene draws one tile, one character frame and one enemy frame, and plays one sound after a key press.
    • [...document.fonts].map(f => f.family + ':' + f.status) lists the font as loaded, and a screenshot shows text set in it.
  3. Level · done when:
    • Screenshots with the camera at the left end and at the right end show ground, platforms and a background.
    • The same two screenshots taken with WebGL (not the Canvas renderer) show no thin vertical lines in the background.
    • A normal visit to the built game has no window.__game; with ?test it has one.
  4. Player · done when:
    • A scripted test holds Right until x has grown by 300 px (fail after 5 s), then presses jump: y rises and returns to the ground.
    • A tap of the jump key (give it a hold time in the script, for example 50 ms) peaks lower than a held press, and a zero-length press still jumps.
    • A screenshot with physics debug drawing on shows the body outline on the character, not around the whole frame.
  5. Gameplay · done when:
    • Each rule has its own check, and a check may place the player through the hook: a coin overlap raises the counter and the HUD shows it; falling onto a coin does not allow a jump in mid-air; side contact lowers hearts by one and does not repeat for about a second; landing on the enemy removes it; a fall restarts the level with coins and hearts reset; the last heart does the same; a key held across a restart still moves the player; touching the goal sets state to won.
    • A debug screenshot shows every coin's and enemy's body on its art.
    • A screenshot shows the HUD count readable over the sky and over the clouds.
  6. Sound and screens · done when:
    • Starting from the title screen, a run reaches the win screen.
    • After the first key press game.sound.locked is false, and the four counters in window.__game.sounds rise during a run.
  7. Verify and ship · done when:
    • The playthrough log shows jumps, coins, hits, deaths, wins, the sound counters, the final state, and zero console errors and warnings.
    • Every line under Definition of done is true.

Known traps

What test builds and the official docs showed going wrong with these parts. Each one is in the brief, so the agent reads it before it gets there.

  • Phaser 4 is not Phaser 3. The classes Point, Mesh and BitmapMask are gone, and FX and masks became filters. AgentGid: Phaser
  • Do not start the project with npm create @phaserjs/game@latest: it only works at an interactive terminal, and its template pins older versions than this kit. checked by running it, Oct 12, 2026
  • Kenney's atlases use Starling-style XML: load them with this.load.atlasXML(key, png, xml), then refer to frames by name. Phaser skill: loading-assets
  • A font whose path has a space, in the file name or in a folder, fails to load with a warning only, and the game silently uses a system font. document.fonts.check() still answers true, so look at a screenshot. Phaser source and test build
  • Two Phaser skills disagree about fonts. The text skill says Phaser cannot load web fonts; the loading-assets skill documents this.load.font, and that loader exists in 4.2.1. Use it. Phaser skills, checked Oct 12, 2026
  • Browsers block sound until the first key press or click. Phaser unlocks audio by itself after that, so start the game from a title screen and do not add your own workaround. Phaser skill: audio-and-sound
  • A game with no sound at all has a clean console. Count the play calls, or nothing checks the audio. test build
  • itch.io accepts at most 1,000 files in a ZIP, and this pack alone has 1,353 entries: ship the atlases and sounds you use, not the whole pack. itch.io docs
  • The physics skill's first example calls setCollideWorldBounds(true). With world bounds equal to the level, that turns the bottom of every pit into a floor. test build
  • The engine's own bundle contains strings such as SNES_USB (its gamepad tables). A search of dist/ for console brand names finds them: they are not yours to remove. test build

Checks on this kit

  • Note Phaser is at 4.2.1 on npm. Models often write Phaser 3 code from memory, so the brief points the agent at the skills shipped inside the package. Source
  • Note The chosen pack has 1,353 entries and itch.io allows 1,000 files per upload. The brief tells the agent to copy only the atlases and sounds it uses. Source

What happened when an agent built from it

The recipe was given to a fresh coding agent in a clean sandbox, twice. The agent got only the kit files. It had to build the project and write down everything in the brief that was wrong, missing or unclear.

Build 1 · brief v0.1 · Oct 12, 2026

10 of 10
lines of the definition of done met
39
things in the brief reported as wrong, missing or unclear
5
serious: stopped the build or put the work at risk

The scaffold command cancelled itself in the kit folder, and the flag that forces it deleted the brief. The build broke under a sub-folder, and the test hook did not exist in the production build.

Build 2 · brief v0.2 · Oct 12, 2026

10 of 10
lines of the definition of done met
27
things in the brief reported as wrong, missing or unclear
1
serious: would have shipped a visible flaw

Nothing stopped the build. Testing with the Canvas renderer only, as the brief said, hid a seam in the background that WebGL draws. The agent found it by looking at WebGL screenshots and fixed it.

Result of the last build. A playable level, 22 files and 1.7 MB, finished by a scripted playthrough in 26 seconds. Its findings went back into the recipe, which is now at v0.3. That version has not been built again as a whole.

A scripted run of the built game, recorded afterwards in a headless browser: start to flag in 17 seconds, 26 of 35 coins. No sound.
Title screen of the second build
Title screen of the second build
Playing the level
Playing the level
Win screen with the coin count
Win screen with the coin count

Art and sounds: Kenney, New Platformer Pack (CC0). Font: Lilita One (OFL-1.1). Screenshots of the project the test agent built.

Checked again on Oct 19, 2026. AgentGid checks every recipe each week, without a model: 4 pinned packages all still exist on their registries, 1 of them has a newer release than the tested pin; 24 links in the brief: all open. npm lines are checked pin by pin, not installed.

Not checked by anyone yet

  • How it sounds: nobody listened
  • The upload to itch.io
  • Browsers other than Chromium
  • A machine with a GPU
  • The pixel and 1-bit styles, and plain JavaScript

The kit files

Put them in an empty project folder, open your coding agent there and paste the first prompt (Claude Code first asks you to approve the MCP servers in .mcp.json). These are the files for Claude Code with the default answers; the kit builder writes them for Cursor, Codex, Copilot or another agent, and for other choices. Full guide: how to use a kit.

FileWhat it isSize
AGENTS.mdThe brief: what to build, stack and versions, licenses, plan with checks, known traps308 lines
CREDITS.mdThe license record of every third-party file44 lines
first-prompt.txtYour first message to the agent8 lines
install.txtInstall commands with exact versions2 lines
CLAUDE.mdOne line that imports AGENTS.md for Claude Code1 lines
.mcp.jsonThe MCP servers the brief lists, for Claude Code15 lines
kit.jsonThe kit as data: parts, versions, checks285 lines

Download all (.zip)

first-prompt.txt the agent stops after each step and reports
Read AGENTS.md from top to bottom before you do anything else. The kit files it lists are already in this folder.

Then do step 1 of the plan and stop. Report back with:
1. the commands you ran,
2. what each "Done when" check showed (a screenshot or the output),
3. anything in AGENTS.md that turned out to be wrong, missing or out of date.

Do not start step 2 until I reply.
Or let it run the whole plan
Read AGENTS.md from top to bottom before you do anything else. The kit files it lists are already in this folder.

Then work through the plan in order. After each step, run its "Done when" checks yourself and write one line in PROGRESS.md: the step, what you checked, and the result.
You may install the packages and download the files that AGENTS.md lists without asking. Stop and ask me only for what its "Before you start" section says needs a person.
When a check fails, fix the cause and run it again. If it still fails after two real fixes, stop and tell me what you tried.
Keep a list in PROGRESS.md of anything in AGENTS.md that turned out to be wrong, missing or out of date.
When every line of the Definition of done is true, stop and show me how to run it.
install.txt
npm install --save-exact phaser@4.2.1
npm install -D --save-exact vite@8.3.4 typescript@7.0.2 @playwright/test@1.64.0

Other versions of this kit

Art style

Each style maps to a pack from one author, so tiles, characters and enemies match.

Cartoon (this page) Pixel art 1-bit

Language

TypeScript (this page) JavaScript

Language of on-screen text

Fonts must cover the script, and voices and speech models must know the language.

English (this page) Russian

Other versions were not test-built as a whole: the kit says which parts differ from the tested one.

Ask for this kit from your agent

Agents connected to the AgentGid MCP server get the same kit without this page: list_recipes(), then plan_project({"recipe": "2d-platformer", "answers": {"agent": "cursor"}, "files": true}). Every brief also tells the agent to ask AgentGid before it adds a part that is not listed.

Recipe 2d-platformer v0.3. Data snapshot Oct 12, 2026: versions, licenses and prices change, so check the linked pages before you ship.

Comments

  • Built something with this kit? Share what worked, what broke and what you changed.

Other kits