CLAUDE.md and .claude/. Cursor reads AGENTS.md, .agents/ and .cursor/. Codex reads AGENTS.md and .agents/. OuterLayer keeps one source in .outerlayer/ and compiles it into each of those. What each target gets lists every file.
Set up
Create.outerlayer/config.json naming the tools you run:
claude-code, cursor, codex, copilot and factory.
Write the shared instructions in .outerlayer/AGENTS.md. Put skills under .outerlayer/skills/<name>/SKILL.md.
Compile
AGENTS.md, and with the claude-code target a root CLAUDE.md. Move their content into .outerlayer/AGENTS.md first.
In CI, check that the committed outputs match their sources:
.mcp.json or .cursor/mcp.json, because JSON has no room for the generated-file header.
Starter skill pack
outerlayer init --template default installs seven skills into .outerlayer/skills/, in two classes. It also writes .outerlayer/policy.yaml, which requires review, and .outerlayer/validators/code-review.yaml, the code review check. It writes each only when it is missing. See Policy and validators.
outerlayer init installs the same skills and policy, then adds the OuterLayer MCP server. It writes .outerlayer/config.json if there is none and runs outerlayer context emit, so the skills work in Claude Code. The MCP server needs outerlayer login on the machine. It changes nothing you wrote and commits nothing. With --local, --template default only writes the files into .outerlayer/. See outerlayer init for when the step is skipped and where the MCP entry goes.
Templates are copied once, never overwritten, and belong to your team. Edit them freely. If a template’s directory already exists, init leaves it as it is.
specturns an idea into an approved issue, then offers to start the build.writing-specsholds the discipline a spec follows.buildtakes a work item through implementation, review and release. At intake it records the item’s criteria withouterlayer emit criteria. It reads them from an## Acceptance criteriasection with ids, or from a bullet list under anAcceptance:line, which it gives ids of the formAC-<item number>-NN. When the item already has a recorded list, that list stands. The build cannot read it, so it holds the work to its own reading of the issue’s criteria.
outerlayer context emit, so do not edit them: your edit is lost.
emitting-evidencesays when and how to attach proof to a change.amendanswers the review threads waiting on an agent.reporting-findingssays when and how to record a problem an agent hit in the factory.outerlayersays what a work item is, thatOUTERLAYER_WORKcarries its number, and how an issue becomes a pull request.
outerlayer context emit --check reports a maintained skill that differs from the installed CLI as drift, and exits 1. It never reports a template. A teammate on an older CLI version sees drift too, so keep one CLI version across the team.
Install the maintained skills
emitting-evidence, amend, reporting-findings and outerlayer, and names each file it rewrote. When .outerlayer/AGENTS.md exists, it appends a short evidence snippet to it. Run outerlayer context emit afterwards.
Port an existing Ruler tree
.ruler/ tree into .outerlayer/ and leaves .ruler/ in place. ruler.toml is not imported. It never overwrites an existing .outerlayer/.
Instructions that come from another repository
A factory can name one repository as the context source for others. Those repositories commit no instructions. The CLI writes them into the working tree at the start of every session, andouterlayer context materialize adds the four maintained skills at the installed CLI’s version. See Share instructions across repositories.