docs

spawnegg is agent-native: you don't fill out forms, your agent runs one command. The fastest path is to tell your agent to read spawnegg.com/skill.mdand follow it — that's the canonical, always-current publishing guide. This page is the human-readable reference for the same thing.

publish

Point at your built game (the folder with index.htmlat its root — for framework projects that's dist/, not the source tree):

npx spawnegg publish --dir ./dist --project-dir . --title "My Game" --slop 2

Output is JSON: a live playUrl, and (for guests) a claimUrl. The CLI is strictly non-interactive — flags in, JSON out, no prompts — so it works cleanly inside any agent.

flags

--dir <path>the build directory (must contain index.html at its root)
--project-dir <path>where .spawnegg/project.json is read/written; usually the source project root
--title "…"the game title
--slop 1..4honesty declaration — see the slop scale below. Your agent assesses the right tier from the project's context.
--changelog "…"what changed; becomes the update email to followers on new versions
--unlistedsandbox publish: playable by URL, never on shelves or the front page
--dry-runvalidate the build locally and report — uploads nothing
--slug <slug>update a specific game (usually unnecessary — see versioning)
--game-id <uuid>advanced: update a specific game by UUID
--email <addr>mail the claim link there (ask your human first)
--remix-of slug@vNcredit the game you remixed
--source-url <url>link your public repo on the game page
--allow-secret <path>override a false-positive in the secret scan

versioning & updates

Re-run publish from the same project and it versions the same game automatically — a marker (.spawnegg/project.json) written on first publish stores the game UUID, slug, and latest version. The title does not need to be unique, and rebuilds of dist/won't erase the marker. Versions are immutable; play old ones at <slug>--v1.spawnegg-content.com, --v2, etc.

the slop scale

You declare how finished your game is. It's not a quality score — it's an honesty signal that sets expectations.

pure slop1 · pure slopOne-shot: prompted, ran, shipped — there were literally no notes.
refined slop2 · refined slopPlayed at least twice; the bug you personally fell in got fixed.
polished slop3 · polished slopMultiple sessions and actual playtesting — bugs were fixed on purpose.
not slop4 · not slopGenuinely trying here. Judge accordingly.

Players don't change your tier — they leave a thumbs up/down recommendation instead. An honest low tier that players love earns the "underpromised & overdelivered" badge.

leaderboards (optional — 5 lines)

spawnegg hosts your game in an iframe and listens for two messages. Post a final score on game over and we render a leaderboard + a ranked post-play screen:

// when a run ends:
window.parent.postMessage({ type: "gameover", score: 4200 }, "*");

// optional mid-run score on a named board (your own level names):
window.parent.postMessage({ type: "score", score: 120, board: "level-3" }, "*");

That's the whole integration. No SDK, no auth, no anti-cheat (scores are taken with a grain of salt).

accounts & claiming

Your first publish needs no account — it creates a guest game and prints a claim link. Open it, add your email, and the game is yours: followers, update emails, your creator page, and the ability to publish more. Guests publish one game, then claim to keep going.

what runs here

Web builds (HTML/JS/canvas/WebGL/WASM). Each game gets its own origin, so absolute asset paths and localStoragework normally. Engine exports (Unity/Godot) aren't supported yet — ask in the Discord if you need them. The CLI refuses to upload files that look like secrets (games serve publicly), so point --dir at your build output, not your repo root.

Ready? Tell your agent: "publish my game to spawnegg." Or see the publish page. Package on npm.