For agents¶
keelyard is meant to be driven by agents. Everything a person can do from the CLI, an agent can do through MCP, and both return JSON.
What init installs¶
| agent | hooks | MCP | instructions |
|---|---|---|---|
| Claude Code | .claude/settings.json |
.mcp.json |
CLAUDE.md section, .claude/skills/keelyard/SKILL.md, /keelyard:status, /keelyard:prove, /keelyard:undo |
| Codex | .codex/hooks.json |
snippet for ~/.codex/config.toml |
AGENTS.md section |
| OpenCode | .opencode/plugin/keelyard.js |
opencode.json |
AGENTS.md section |
The instruction sections sit between <!-- keelyard:start --> and <!-- keelyard:end -->. init replaces only
that block, and uninstall removes only that block. The rest of the file stays as you wrote it.
The loop an agent follows¶
proof_requirements(items=[...])project_map,find_symbol,outline, thenread_file- edit (snapshots happen automatically)
run_compactfor tests and buildsproof_run_tests(phase="after"), thenproof_checkfor each itemproof_status→{"proven": true}
All 20 tools are listed, with their schemas, in the MCP reference.
Self-test¶
keelyard selftest plays the agent. It sends the same hook JSON Claude Code sends and does everything else
through the MCP server over stdio. In a temporary project it records requirements, reads code, searches
memory, runs a swarm task against a local stub model, makes a bad edit, gets blocked by the gate, rewinds,
fixes the bug, proves it and is let through. It needs no network and no API key.
