harvest-full-game

Installation
SKILL.md

The harvest-full-game loop

Same harvest as harvest-game — build a game, harvest the engine gaps it exposes — but the deliverable is the complete game, not a minimal slice. Building the whole thing surfaces the deep gaps a slice never reaches: economy, progression, quests, multiplayer sync, content-scale generators. If you only want a quick probe, use harvest-game instead.

Take the invocation argument and resolve a target game:

  • A specific game named → that's the target. Research it.
  • A link (repo or game page) → that's the target, and the link is its spec. Read it for mechanics, every signature system, camera, controls, and content breadth — it is a research source, never a port source. Build fresh from the engine surface; translating its code line-by-line faithfully recreates its workarounds and hides exactly the gaps this loop exists to expose.
  • A genre → pick a well-known game in that genre whose full-scope mechanics stress engine areas no existing Games/* game already covers.
  • Nothing / "find one" → web-research currently popular or recently viral games and pick one the engine can't obviously do yet. Prefer games whose defining mechanic looks missing from the engine surface.

Then run the whole loop in this session:

  1. Research. Web-search the target's core loop, every signature system, camera, controls, win conditions, HUD, and content breadth until you can write the full-scope master blueprint. Keep the game profile in your working notes only — the game's name and genre must never appear in the filed issue or any committed text other than the game's own directory.
  2. Work on your session's branch, per the root workflow — the PR comes later, when the game is real.
  3. Build the whole game in Games/<id>, following the jgengine-newgame skill in full: open with the master blueprint (ranked pillars, perspective, system list + coupling map, content budget, asset plan, art direction with a committed palette and UI voice, file tree, keybinds, non-goals, phase plan with per-phase observable acceptance), then execute the phases straight through — every phase whole, no half systems, content budgets hit combinatorially, the world dressed. This is the entire difference from harvest-game: you deliver the full blueprint, not a core-loop demo. Wire it as the other Games/* do: a private workspace package @games/<id> with ./src exports and no build, plus the standalone dev harness check-game-shape enforces (root index.html + vite.config.ts, src/index.css, a "dev": "vite" script). Games auto-register from Games/* in apps/dev's registry and the jgengine.com Games dropdown — no registry entry, vite alias, or @games dependency to add by hand. Build from the engine surface in the jgengine-api skill, not by copying other games.
  4. Track gaps the moment you hit them in your working notes — one raw engine problem per line, engine terms only, no game context, no solutions. The bar is not "the engine couldn't do it" — friction is a gap too: anything the game had to hand-roll that should be a natural engine primitive or one-liner. Tag each line blocker (no engine-surface route existed), workaround (a route existed but the game had to hand-roll something the engine should own), or ergonomics (it worked but took boilerplate a primitive would erase). A gap you hit while building outranks a gap you suspect from reading; note both, but only after genuinely attempting the engine-surface route. Note: jgengine-newgame's "Engine gaps" section says to fix a truly-missing primitive directly in this repo — for a harvest run, prefer logging the gap over closing it inline unless the fix is small and unblocks the phase, so the [FEATURE] list stays the record of what a full build actually exposed.
  5. Verify per the full-game checklist in jgengine-newgame and the jgengine-verify skill: bun run check-types, bun test packages Games (including the co-located <game>.world.test.ts summarizeEnvironment assertions for every environment() world), then bun run shoot <id> --mode ui and --mode play as the final human glance — open the PNGs and actually look at them. A hung shot is never re-run in the foreground; the world test is what proves the scene resolved.
  6. Session end. File the gaps as [FEATURE] issue(s) on this repo — title [FEATURE] <brief summary>, body a numbered list of the raw engine problems, each carrying its blocker / workaround / ergonomics tag (nothing else, no game context, no solutions). Then ship per CLAUDE.md's ship rule: push, open the PR (GitHub MCP create_pull_request), subscribe_pr_activity, squash-merge immediately (merge_pull_request, or queue enable_pr_auto_merge (squash) if checks block it), then verify green with the 60-second worker check per CLAUDE.md's ship rule (no send_later check-ins).
Installs
1
GitHub Stars
6
First Seen
Jul 11, 2026