exo
CLAUDE.md1 starsChanged 53 days agoMITView on GitHub
This is the source of the Claude Code plugin exo. Layout is in README.md; commands, internals and the plan loop are in CONTRIBUTING.md.
- Commits and pushes
In this repository10 other files it gives its agents.
- buildSkill
- configureSkill
- edit-skillsSkill
- find-causeSkill
- gateSkill
- save-sessionSkill
- shipSkill
- specSkill
- watchSkill
- write-docsSkill
The file
We split this CLAUDE.md into the rules it gives an agent
8 rules. About 0 are common, 0 are distinctive, and 8 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈0
Distinctive · estimate
This author's own choices. Worth a look.
8
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 7
Keep the main checkout on main and run every edit in a worktree under .worktrees/, because exo loads in place from this checkout.
- Very specific: line 10
Before the start-of-run cleanup, a squash, a worktree removal, a branch delete or a session push, read .claude/landing.md.
- Very specific: line 12
Ask nothing about where to commit, because this workflow outranks skills/build/references/workspace.md and the pull-request route in ship.
- Very specific: line 13
When a report changed exo, tell the user that a new session runs it and that /reload-plugins updates only the open session.
- Very specific: line 20
When a mistake recurs, add a check to npm run check or fix its code path, not a hook or prose line, because a hook adds overhead to every …
- Very specific: line 24
Before designing a prompt, context, agent, tool, harness or eval, read docs/principles/README.md and open only the page it names.
- Very specific: line 31
Add one line per change under ## Unreleased in CHANGELOG.md, in ### Added, ### Changed, ### Fixed or ### Removed, and raise no version.
- Very specific: line 32
When the user asks for a release, run gh workflow run release.yml, and never run npm run bump, git tag v<version> or gh release create by …
≈ “Common” is an estimate: at least 1 in 5 of the 26,980 CLAUDE.md files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
exo
This is the source of the Claude Code plugin exo. Layout is in README.md; commands, internals and the plan loop are in CONTRIBUTING.md.
Workflow
- Keep the main checkout on
mainand run every edit in a worktree under.worktrees/, because exo loads in place from this checkout. - The lead (main session) only orchestrates: it runs
exo:spec, writes the brief, builds withexo:build <brief>and sends code reading toexo:research-worker. This outranks the inline rules T1 to T5. - Send every edit, fix and failed-check repair to a worktree subagent, one concern each, and run independent parts in parallel.
- Before the start-of-run cleanup, a squash, a worktree removal, a branch delete or a session push, read
.claude/landing.md. - Outside a run, only the lead writes
CHANGELOG.md. - Ask nothing about where to commit, because this workflow outranks
skills/build/references/workspace.mdand the pull-request route inship. - When a report changed exo, tell the user that a new session runs it and that
/reload-pluginsupdates only the open session.
Checks
npm run checkgates every commit, and a clean run endsSUMMARYwithFAIL=0 WARN=0 UNRUN=0.- The lead runs
npm run checkonce, in the background, to a log, and a delegate runs only its proof. - Plan tasks use
Land gate: npm run validate:static, andnpm run checkruns once as the Success criterion. - When a mistake recurs, add a check to
npm run checkor fix its code path, not a hook or prose line, because a hook adds overhead to every session.
Editing
- Before designing a prompt, context, agent, tool, harness or eval, read
docs/principles/README.mdand open only the page it names. - For a build speed or cost idea, run
node benchmarks/speed-ledger.mjs --indexand passbenchmarks/speed-ledger.mdto every idea agent. - A bare skill name in a skill or prompt body means
exo:<name>. - Derive a new value from the repo, or use one overridable default in run.json
defaultsor anEXO_*_MSvar viaenvironmentMs.
Release
- Add one line per change under
## UnreleasedinCHANGELOG.md, in### Added,### Changed,### Fixedor### Removed, and raise no version. - When the user asks for a release, run
gh workflow run release.yml, and never runnpm run bump,git tag v<version>orgh release createby hand, because a hand-cut version collides with the workflow's.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

