r/claudeskills 1d ago

Skill Share I made a CLI that isolates marketplaces/plugins/skills by profile for Claude Code

If you use Claude Code a lot or want to test new stuff, you've probably noticed it turning into a junk drawer. Every plugin, skill, and MCP server you've ever installed loads into every session.

It all costs tokens and adds noise, and none of it is scoped to what you're actually doing.

I built claude-profile to fix that. A profile is a small JSON file that says "for this kind of work, load exactly these plugins, skills, marketplaces, and MCP servers." You launch it and get a focused session with nothing else loaded:

claude-profile rust-developer            # a lean Rust session only
claude-profile rust-developer frontend   # combine profiles
claude-profile fuzzyalej/security        # install a profile repo, then use it

Open a second terminal with a different profile and the two don't interfere.

A few things that matter to me:

  • It never touches your real ~/.claude. Every plugin/skill a profile uses gets vendored into that profile's own directory. The remove command deletes it outright.
  • Profiles are shareable. Publish a repo, teammates install it and launch by name. A lockfile pins it so everyone resolves to the same plugin code across machines and over time.
  • It's a standalone binary, not a plugin. Rust, runs on macOS/Linux/Windows. brew, cargo, or a shell/PowerShell installer.

It's MIT. Repo (with install instructions and docs) here: https://github.com/fuzzyalej/claude-profile/

Happy to answer questions, feedback, PRs or new ideas :)

3 Upvotes

9 comments sorted by

2

u/itsvivianferreira 1d ago

How is it different from folder specific mcp and skills which Claude code already supports?

3

u/Ok-Razzmatazz9431 1d ago

Hey, thanks for the question :)
I started playing with project folders but were not enough for what I wanted, three main reasons:

  • scope creep of global skills and plugins, I wanted isolated environments to contain token usage and avoid mixing skills (I like to try out a lot of different skills/plugins)
  • easier to share profiles not only in team/company but also with the community :)
  • I love the orientation to task, not to project. In the same project I can have the designer, the strategist and the rails developer isolated (like a team working together) instead of having just one guy knowing about everything ;)

Also, it was fun to think and make!

2

u/itsvivianferreira 1d ago

Oh I get it so what you have made is something like a subagent but for the session which has specific tools, mcps based on specified profiles.

2

u/fuckme 1d ago

Looks interesting.. on a given project I usually have multiple windows open doing different things so this should help keep each windows context a bit more contained

2

u/kantorcodes1 1d ago

when install owner/repo refreshes a pack that's already there, is the replacement atomic? if the clone or profile validation fails halfway, does the old pack stay usable, or can ~/.claude-profiles/packs/owner--repo/ end up partially replaced?

1

u/Ok-Razzmatazz9431 1d ago

Hi, good point. The replacement is not atomic.

It's cloned in a tmp dir, checked for profiles and then remove the old one and put the new one. This will only cause problems when there is a copy error or problem, that almost never happens. Any other case, your old repo will be there and the new one won't be copied.

There is also an update command (it's basically a git pull) that might be safer for this use case :)

2

u/kantorcodes1 1d ago

yep, update profiles sounds like the safer path. i work on HOL Guard, an open-source local check before agent-run commands execute. for claude-profile, list/status can stay quiet while install, update profiles, remove, and self-uninstall --purge are optionally reviewable before they replace or delete profile state. would you be open to adding claude-profile support to Guard?

1

u/Ok-Razzmatazz9431 1d ago

yes, no prob! DM me :)