.outerlayer/. Its instructions are in AGENTS.md, its skills in
.agents/skills/ and its MCP servers in .mcp.json. See Agent
context.
.outerlayer/, and outerlayer init --update moves them out:
.outerlayer/ directory in a subfolder compiles the same way into that
subfolder, such as packages/api/CLAUDE.md from
packages/api/.outerlayer/AGENTS.md.
Who reads what
A change to policy or validators takes effect when it merges to the base branch, not when it is pushed on a feature branch.
config.json
What each target gets
In a repository that has not moved,outerlayer context emit writes these
files for each target in targets:
AGENTS.md is written whatever the targets are. For Cursor, each ${VAR} in
mcp.json becomes ${env:VAR}, Cursor’s syntax for an environment variable.
commands/
Each Markdown file is a slash command.outerlayer context emit compiles it per target:
Claude Code gets the file as written, frontmatter included. Cursor gets the frontmatter
description as a comment and drops argument-hint.
policy.yaml and validators
See Policy and validators for every key.Governed repositories
A repository that another linked repository of its factory governs may commit these files, and a repository that is governed commits its ownCLAUDE.md, AGENTS.md and skills. The control plane’s files are not written into it. A laptop session gets them through outerlayer claude, from a copy under ~/.outerlayer/context/.
outerlayer claude keeps one folder for each checkout that has skills in .agents/skills/ under ~/.outerlayer/context/own/. Its .claude/skills/ links to each of those skills, so Claude Code loads them under their own names. The CLI removes the folder of a checkout that no longer exists at the next launch.
An earlier CLI committed .outerlayer-pin.json at the repository root. The launcher and the session hook do not read it, and a governed repository can delete it. See Share instructions across repositories.