Skip to content

Quickstart

This guide takes you from “never used C3P” to a working profile swap with the drift gate protecting you. Five minutes, one project.

Terminal window
npm install -g claude-code-config-profiles

The binary is c3p.

From the project root that already has a .claude/ tree:

Terminal window
c3p init

This:

  • Creates .claude-profiles/ with a starter profile seeded from your existing .claude/.
  • Installs the git pre-commit hook (--no-hook to skip).
  • Adds the C3P managed-block markers to project-root CLAUDE.md.
  • Updates .gitignore.

Verify:

Terminal window
c3p list
c3p status

Make a dev profile that extends the starter:

Terminal window
c3p new dev --description="local dev"

Edit .claude-profiles/dev/profile.json:

{
"extends": "default",
"description": "local dev"
}

Drop a couple of dev-only files under .claude-profiles/dev/.claude/. Then check the resolver is happy:

Terminal window
c3p validate dev
Terminal window
c3p use dev

If .claude/ had drift, you’ll get a discard / persist / abort prompt (drift concept). On a fresh project, the swap proceeds straight away.

Confirm:

Terminal window
c3p status
# → active: dev (local dev)
# drift: 0 files
Terminal window
# zsh — install once
c3p completions zsh > ~/.zfunc/_c3p
# bash — eval into your shell
eval "$(c3p completions bash)"