One repo. Many outfits.

Hot swap your agent harness and your local checks.

outfit is a free CLI that swaps AGENTS.md, CLAUDE.md, skills and git hooks per developer, in place and without messing up git. Same prompt, different outfit:

$ outfit use strict
$ claude -p "add a login form"

agent reads:
  "Plan first. Tests first.
   Formatter. Small diffs.
   Linter clean. Always."

result:
  plan, tests, formatter,
  change, tests again,
  linter error, fix,
  tests again, lint again,
  6 files, 14 tests
  took 14m 32s
$ outfit use yolo
$ claude -p "add a login form"

agent reads:
  "Be terse. Just ship."

result:
  1 file
  took 20s

(An illustration.) An outfit is a folder: your AGENTS.md, CLAUDE.md, skills and hook switches. git status stays clean in both.

Install

curl -fsSL https://raw.githubusercontent.com/prosperity-solutions/outfit/main/install.sh | sh

One line. No login, no token, no sudo. macOS and Linux, git 2.36+.

What it does

  • Your files, in place of theirs. AGENTS.md, CLAUDE.md, a config, a whole folder.
  • Your checks. Skip the heavy pre-commit, keep the rest, add your own. A hook the team locked stays on.
  • Zero noise. git status is clean, git add -A can't commit your setup, PR diffs don't move.
  • Profiles are folders. Commit one so colleagues can opt in, or keep it local and private.
  • Any repo, any hooks. husky, lefthook, plain .git/hooks. Your team doesn't need to use it.

How it works

  1. A symlink stands where the file was, pointing into your profile.
  2. Sparse checkout tells git to look away from that path. The committed file never changes, so there is no diff.
  3. Hooks re-check after every pull, checkout and rebase. Git can't stage the link, and a commit guard backs that up.
AGENTS.md  ->  .outfit/profiles/me/AGENTS.md
   ^ git sees the committed file. You see yours.

Edit through the link and you edit your profile. An editor's atomic save is caught and copied back. Your bytes are never overwritten: if both sides changed, outfit saves both and asks.

Try it

$ outfit init                 # in front of your git hooks
$ outfit use yolo             # swap in a profile
$ outfit status               # what is on, from where
$ outfit set hook.pre-commit=off
$ outfit use base             # exactly the committed files
$ outfit new mine --from yolo # a private one

Questions

What is outfit?

A small command-line tool that swaps files in a git repository (AGENTS.md, CLAUDE.md, a skills folder, hook switches) for your own versions, only on your machine. The repository's committed files never change, so nobody else's diff does either.

Does it change my teammates' diffs or pull requests?

No. Your versions live in profile folders. Git is told to look away from the swapped paths, so git status stays clean and git add can't pick them up, and a commit guard refuses a commit that would.

How does it work?

A symlink stands where the file was, pointing into your profile. Sparse checkout tells git to ignore that path. Hooks re-check after every pull, checkout and rebase, and copy an editor's save back into your profile.

How do I use my own AGENTS.md or CLAUDE.md without committing it?

Put your version in a profile (a folder) and run outfit use with its name. outfit puts your file where the committed one was, git ignores the swap, and nothing shows up in git status or in a pull request.

How do I skip a slow pre-commit hook just for me?

Run outfit set hook.pre-commit=off. It applies only on your machine (add --global for every repository), the team's hook file is untouched, and a hook the team locked (locked = hook.pre-commit) cannot be skipped.

How is it different from skip-worktree, .git/info/exclude or dotfiles?

git update-index --skip-worktree hides local edits to a tracked file, but breaks on the next pull or checkout. .git/info/exclude only ignores untracked files, and dotfile managers keep your files in your home folder instead of putting your version in place of a file the repo tracks. outfit does the skip-worktree trick safely: your file stands in place of the committed one, it is kept in sync after pulls and rebases, a commit guard stops the swap from being staged, and outfit use base puts the committed file back.

Which coding agents does it work with?

Any agent that reads files from your repository: Claude Code, Codex, Cursor, Gemini CLI and the rest. outfit changes the files they read, not the agents. It also ships an agent skill: outfit skills.

Do my teammates need outfit?

No. Without it they get exactly what is committed. outfit init --team adds a short note for them.

Is it safe?

outfit never overwrites your bytes: if both sides changed, it saves both and asks. Releases are signed with minisign (and notarized by Apple on macOS) and carry build provenance. outfit update checks the signature and the SHA-256 before it replaces itself, and you can check the provenance with gh attestation verify.

How do I undo it?

outfit use base puts the committed files back. outfit uninstall removes the hooks and settings it added (--purge also deletes your own profiles).

What does it cost, and where does it run?

It is free and MIT licensed. One static binary for macOS and Linux, with git 2.36 or newer.

About

One static binary. MIT licensed. Releases are signed (minisign, and Apple's notarization on macOS) and carry build provenance. outfit update checks the signature and checksum before it replaces itself.

Docs, source and releases are on GitHub. Coding agents: start at llms.txt.