Plan carefully. Build simply. Verify the result. Remember what worked.
Enders Game is an installable coding plugin for Codex and Claude Code. It gives agents a small, evidence-driven workflow for real software work: discover the repo, plan against observable acceptance criteria, build the smallest complete change, review the raw diff, run checks, save handoffs, and keep verified lessons in local Markdown.
It uses Python's standard library only. No hosted memory service, database, embedding model, telemetry stream, or extra API key.
- Runs a resumable plan-build-review-test loop for coding tasks.
- Requires acceptance criteria to map to real checks.
- Blocks false completion when checks are empty, flaky, unavailable, or stale.
- Tracks named tasks, retries, logs, heartbeats, budgets, and local metrics.
- Saves project memory in readable Markdown under
.enders-game/memory/. - Updates
CHANGELOG.md,ROADMAP.md, and weekly sprint notes after verified completion. - Supports isolated Git worktree experiments and GitHub Actions repair workflows.
After this repo is published:
git clone https://github.com/llcoolblaze/enders-game.git
cd enders-gameInstall for Codex:
python3 install.py codexInstall for Claude Code:
python3 install.py claudePreview the install without changing host plugin state:
python3 install.py codex --dry-runRequirements: Python 3.10+, Git, and an authenticated coding host. The runtime supports macOS, Linux, and WSL.
From this checkout, point Ender at any Git repository:
./ender --project /path/to/repository onboardInspect the proposed checks, then apply them:
./ender --project /path/to/repository onboard --apply --baseline --host codex
./ender --project /path/to/repository init --activateRun a task:
./ender --project /path/to/repository loop "Fix duplicate orders: retrying one request must create one order"Check progress or completion evidence:
./ender --project /path/to/repository status
./ender --project /path/to/repository acceptance
./ender --project /path/to/repository metricsIn Codex, select $ender. In Claude Code, use /enders-game:ender.
Ender runs the same boring sequence every time:
baseline -> plan -> build -> focused checks -> review -> risk checks -> full verification -> learn
Completion requires all of these:
- the requested behavior is implemented
- each acceptance criterion has reviewer evidence
- mapped behavior checks pass on the unchanged source tree
- relevant UI, security, or migration checks run when those risks are present
- verified lessons and handoff notes are saved
Repairs reuse the plan unless evidence shows the plan is wrong. Repeated identical failures stop the loop instead of burning retries.
Ender writes local, inspectable files into the target repository:
.enders-game/
config.json
state.json
tasks/
logs/
memory/
USER.md
MEMORY.md
HANDOFF.md
lessons/
attempts/
sessions/
sprints/
YYYY-WNN.md
After a verified task completes, Ender also updates:
CHANGELOG.mdwith a task completion entryROADMAP.mdwith a completed roadmap item.enders-game/sprints/YYYY-WNN.mdwith completed work and what worked
Each generated entry includes the Ender task id, so reruns do not duplicate records.
./ender --project /repo init --activate
./ender --project /repo onboard --apply --baseline
./ender --project /repo loop "task outcome"
./ender --project /repo loop --resume
./ender --project /repo status
./ender --project /repo triage
./ender --project /repo acceptance
./ender --project /repo verify
./ender --project /repo metricsTask control:
./ender --project /repo task add "task outcome"
./ender --project /repo task list
./ender --project /repo task switch TASK_ID
./ender --project /repo task pauseMemory:
./ender --project /repo memory search "duplicate order retry"
./ender --project /repo memory add "Retries reuse the request ID." --evidence "Passing duplicate-order regression"
./ender --project /repo memory auditExperiments and CI:
./ender --project /repo experiment create --path /tmp/ender-worktree --branch experiment/name
./ender --project /tmp/ender-worktree experiment diff
./ender --project /repo ci RUN_ID
./ender --project /repo ci RUN_ID --repair| Skill | Purpose |
|---|---|
ender |
Route a complete coding task |
ender-onboard |
Discover setup, checks, and baseline failures |
ender-spec |
Turn an idea into observable requirements |
ender-plan |
Map acceptance criteria to verification |
ender-build |
Implement the smallest complete change |
ender-review |
Review raw code against requirements |
ender-test |
Execute checks and report actual evidence |
ender-loop |
Run bounded, resumable iterations |
ender-debug |
Diagnose a failure before repair |
ender-security |
Review concrete trust boundaries |
ender-qa |
Exercise UI and accessibility behavior |
ender-simplify |
Remove unnecessary complexity |
ender-tasks |
Queue, pause, switch, and resume work |
ender-experiment |
Isolate a proposal in a Git worktree |
ender-ci |
Inspect and reproduce a CI failure |
ender-memory |
Audit, correct, retire, and search knowledge |
ender-session |
Recall context and save a handoff |
ender-ship |
Prepare authorized delivery |
ender-help |
Find the right command |
Run the offline suite:
python3 -m unittest discover -s tests -vRun the deterministic evaluation self-test:
python3 plugins/enders-game/scripts/evaluate.py --self-testOptional live evaluation uses your normal host credentials and billing:
python3 plugins/enders-game/scripts/evaluate.py --live --host codex --output /tmp/ender-evaluation.json- Loop configuration, commands, recovery, and host limits
- Memory commands, privacy, and lifecycle hooks
- Engineering workflow
- Beta improvements and implementation coverage
- Upgrade and evaluation guide
Pull the latest release, refresh or reinstall the plugin with your host plugin manager, then start a new agent session.
Uninstall:
codex plugin remove enders-game@enders-game
claude plugin uninstall enders-game@enders-gameRemove only the marked Ender activation blocks from project instruction files if you want to undo activation. Project memory remains local under .enders-game/.
MIT
