claude-profile
Give every task its own Claude Code. Launch claude with only the plugins, skills,
marketplaces, and MCP servers a profile defines โ everything else on your machine is never
loaded for that session.
A standalone cross-platform CLI (Rust; macOS / Linux / Windows) โ not a plugin, and it
never writes to your real ~/.claude at all: every plugin/skill a profile uses is vendored
into that profile's own directory instead.
Why
If you use Claude Code seriously, your ~/.claude becomes a junk drawer. Every plugin, skill,
and MCP server you've ever installed loads into every session โ the Rust linter you need
today sits in context next to the Kubernetes tools, the writing skills, and the three MCP
servers from that experiment last month. It all costs tokens, it all adds noise, and none of it
is scoped to what you're actually doing.
claude-profile fixes that with profiles: a tiny JSON file that says "for this kind of
work, load exactly these things." Launch a profile and you get a focused session; open a second
terminal with a different profile and the two don't interfere.
- ๐ฏ Focused sessions โ only the tools relevant to the task are enabled.
- ๐ช Many at once โ different terminals run different profiles simultaneously.
- ๐ฆ Shareable โ publish a profile repo; teammates
installit and launch by name, backed by a lockfile so it resolves to the same plugin code across machines and over time. - ๐งน Non-destructive โ every plugin/skill a profile uses is vendored into that profile's own
directory;
removedeletes it outright โ a real uninstall, not a disable.
Installing
Pick whichever fits your platform โ all install the same claude-profile binary.
macOS / Linux โ Homebrew:
macOS / Linux โ shell (no Homebrew, no Rust needed):
|
Windows โ PowerShell:
irm https://github.com/fuzzyalej/claude-profile/releases/latest/download/claude-profiles-installer.ps1 | iex
Any platform with Rust โ Cargo:
Then verify:
Updating
Update the same way you installed:
|
|
# or
Tip:
claude-profileis a mouthful to type all day. Addalias cpf=claude-profileto your shell. (We intentionally ship only the one binary name.)
Shell completion is built in:
See completions for install paths per shell and OS.
Quick start
Not sure what to put in a profile? claude-profile find python searches a local,
cross-marketplace index and prints copy-paste-ready plugin@marketplace ids. See
Authoring profiles for the full JSON format and find
for the flag reference.
What a profile controls
A profile is a small JSON file naming plugins, skills, marketplaces, and MCP servers. Launching it vendors exactly those entries into the profile's own directory and loads only those โ nothing else on the machine is registered. Passing several profiles at once launches a combined session with the union of all of them.
Full details, including the vendoring/pinning model and how multi-profile launches merge and conflict-check: How it works.
Important limitation: your global CLAUDE.md and memory are NOT gated
Claude Code loads your global/project CLAUDE.md and auto-loaded memory from sources a profile
cannot isolate โ they load in every session regardless of profile. See
How it works ยง What is NOT gated for why this isn't
"fixed" and what to do about it.
Sharing profiles
A repo can hold many profiles. install clones it and makes every profile in it available by
name, without launching anything:
See Command reference for install, show, and pack update semantics.
Uninstalling
# profiles, cloned packs, locks, and every
# profile's vendored plugins/skills)
claude-profile remove <profile> removes a single profile's data and vendored plugins/skills โ
see Command reference.
Learn more
- Authoring profiles โ the profile JSON format, marketplaces, pinning,
extends. - Command reference โ every command, its flags, and behavior.
- How it works โ the isolation model, provisioning, pinning, and known limitations.
- Statusline snippet โ show the active profile in your Claude Code statusline.
For contributors
Design specs and implementation plans behind notable features in claude-profile itself
(not needed to author or use a profile โ only if you're changing the tool):
- Vendored plugin/skill isolation (plan) โ why provisioning copies plugins into a private vendor tree instead of installing into
~/.claude. - Cross-marketplace plugin finder (plan) โ the offline index behind
claude-profile find. - Install/remove progress spinner (plan) โ the provisioning UX shown during vendoring.
License
MIT โ see LICENSE.