Examples

SwineKeeper

Two short specs. Three coding agents. Three playable games. You describe the game once, and Overplane has Claude Code, Codex, and OpenCode each build their own take, cached so re-runs cost nothing.

SwineKeeper on mobile, built by Claude Code. Play it
Claude Code claude-sonnet-5
SwineKeeper on mobile, built by Codex. Play it
Codex gpt-5-codex
SwineKeeper on mobile, built by OpenCode. Play it
OpenCode openrouter/deepseek/deepseek-v4-flash

Build it

The whole project is one config, two specs, and one command per agent. Point --agent at a different backend and -o at a different output directory, and you get an independent implementation of the same specs. Unchanged specs hit the build cache, so switching agents or re-running is free.

mkdir swinekeeper && cd swinekeeper
overplane init
overplane sandbox build
overplane spec new   # 001-shape.md
overplane spec new   # 002-game-enhancements.md

overplane build all --agent claude-code -o code/claude
overplane build all --agent codex -o code/codex
overplane build all --agent opencode -o code/opencode

Each output directory gets index.html plus screenshot-desktop.png and screenshot-mobile.png. When a spec's acceptance criteria ask for browser snapshots, Overplane captures any missing ones after codegen, so every agent's build comes back with a comparable pair.

The specs

This is everything the agents were given. Spec one shapes the game; spec two tightens it up after a few playthroughs. Copy them, tweak them, make your own farm.

001-shape.md

---
id: '#0001'
title: Core Game
status: active
tags: [core]
---

# Core Game

## Goal

Build "SwineKeeper", a farm-themed Minesweeper for mobile browsers. The sole
output is a single file, `index.html`, in the working directory — write nothing
else. Structure the HTML for easy AI mutation of individual components
(styles, assets, scripts).

## Requirements

* Self-contained to the maximum degree: all CSS/JS inline, all graphics as
  inline SVG or `data:` URLs. Public CDN links are allowed only as a fallback
  when embedding is impractical. The file must render fully offline.

* Graphics: free, openly licensed vector art (OpenMoji, Twemoji, or similar
  CC/MIT SVG sets) embedded inline for the farmer mascot, pigs, piles, and
  flags — not raw emoji glyphs or hand-rolled shapes.

* Full viewport: `100dvh`, no scrollbars, no pinch-zoom, safe-area insets
  respected. On desktop, render the same app in a centered phone-width column.

* Minimal chrome: compact title banner (farmer mascot, game name, guilty pigs
  in the distance), pile count top-right, timer bottom-right. No other buttons
  or text during play.

* Adaptive grid: cells are square with a touch target of at least 48px.
  Column count derives from viewport width (clamped to 6–10); row count fills
  the remaining height. The grid always fits without scrolling.

* Gameplay: tap reveals a cell; long-press flags it (vibrate if supported).
  First tap is always safe. Empty reveals flood-fill outward. Numbered cells
  show adjacent-pile counts. Revealing a pile (ice-cream-swirl style vector)
  loses; revealing every safe cell wins. After win or loss, show a single
  restart affordance.

* Visual mood: warm, playful farm pastels; soft rounded tiles; cartoon farmer.
  Pick the exact palette, font, and rendering details yourself. Cell icons and
  numbers are large and legible, filling most of the cell.

## Acceptance

- A `?seed=N` URL parameter yields a deterministic board; without it, boards
  are random. No test-related text or UI appears anywhere in the page.
- A headless browser loads the file with no console errors. A screenshot of a
  seeded board is saved if missing, and compared for parity otherwise.

002-game-enhancements.md

---
id: '#0002'
title: Polish
status: active
tags: [polish]
---

# Polish

## Goal

* Cascade reveals animate wave-like, staggered outward from the tapped cell.
* Micro-interactions: press-down feedback on tiles, flag pop-in, board shake
  on loss, a small celebration on win.
* Subtle ambient background motion, pure CSS. All motion honors
  `prefers-reduced-motion`.
* Timer and pile count styled as part of the scene, not overlaid debug text.

Checked before built

Before any agent writes code, Overplane raises each spec into a formal IR and hands the game rules to Z3: warning counts stay in range, revealing a pile ends the game, and the snapshot grid can actually show all four cell states at once. Contradictions surface before you spend a single agent token. The visual requirements ride along as tracked obligations.

The results, side by side

Same specs, different minds. All of them land on a farmer mascot and a pastel farm, but the layouts, HUDs, and reveal animations diverge. Click any one to play it.

SwineKeeper on desktop, built by Claude Code. Play it
Claude Code claude-sonnet-5
SwineKeeper on desktop, built by Codex. Play it
Codex gpt-5-codex
SwineKeeper on desktop, built by OpenCode. Play it
OpenCode openrouter/deepseek/deepseek-v4-flash

Back to examples