| name | profile |
| description | Load a skill profile to switch active plugin set. Use when user wants to focus on a specific workflow (web-app/data-eng/harness-dev/minimal) and reduce skill enumeration block size per |
| scope | core |
| user-invocable | true |
| argument-hint | <profile-name> | list | current |
| allowed-tools | ["Read","Bash","Edit","Write"] |
Profile Loader
Switch the active plugin set to match a workflow profile, reducing per-spawn skill enumeration overhead (see #1041, #1080).
Usage
/profile list # Show all available profiles
/profile current # Show currently active profile
/profile load <name> # Activate a profile (requires session restart)
/profile reset # Remove active profile marker (restores full plugin set)
Implementation rules
.claude/ path handling (CC v2.1.121+)
Direct Write/Edit on .claude/profiles/.active and ~/.claude/settings.json is permitted under mode: "bypassPermissions" (CC v2.1.121+, #1101). The legacy /tmp/*.sh bypass is deprecated. For CC < v2.1.121, see git history for the legacy pattern.
Profiles directory
Profiles live in .claude/profiles/*.json. Active profile marker: .claude/profiles/.active (plain text, contains profile name).
Global plugin state is stored in ~/.claude/settings.json under enabledPlugins (object: plugin-key โ boolean).
Workflow: /profile list
Read .claude/profiles/ โ glob *.json
- For each JSON file: read
name and description fields
- Check
.claude/profiles/.active for currently active profile
- Print table:
Available profiles:
web-app Web application development (frontend + auth + deploy)
data-eng Data engineering sessions (Airflow, Spark, Kafka, Snowflake, dbt)
harness-dev oh-my-customcode harness development (agent/skill/rule authoring)
minimal Minimal plugin set for low-overhead sessions (memory + core only)
Active: web-app (restart required to apply plugin changes)
Workflow: /profile current
- Read
.claude/profiles/.active
- If exists: print
Active profile: <name>
- If missing: print
No profile active (full plugin set in use)
Workflow: /profile load <name>
- Locate
.claude/profiles/<name>.json
- Read profile JSON โ extract
plugins.enabled and plugins.disabled
- Read
~/.claude/settings.json โ extract current enabledPlugins object
- Compute diff:
- Plugins to enable: in
plugins.enabled but currently false or absent
- Plugins to disable: in
plugins.disabled but currently true
- Show diff to user:
Profile: web-app
Enable: context7, superpowers, vercel, ui-design, ...
Disable: codex, ralph-wiggum, agent-sdk-dev, ...
-
Apply changes via direct Edit on ~/.claude/settings.json (mode: "bypassPermissions", CC v2.1.121+):
- Read
~/.claude/settings.json, merge the computed diff into enabledPlugins (set enabled plugins to true, disabled plugins to false), then Write the updated JSON back.
-
Write active marker via direct Write on .claude/profiles/.active (mode: "bypassPermissions"):
- Write the profile
<name> as plain text content to .claude/profiles/.active.
-
Confirm:
[Done] Profile 'web-app' applied to ~/.claude/settings.json
Active marker written to .claude/profiles/.active
IMPORTANT: Restart this Claude Code session for plugin changes to take effect.
Workflow: /profile reset
- Remove
.claude/profiles/.active marker via direct Bash: /bin/rm .claude/profiles/.active (mode: "bypassPermissions")
- Print:
[Done] Profile marker removed. Full plugin set will be active after restart.
- Note: does NOT revert
~/.claude/settings.json โ user should re-run /profile load <other> or manually restore
Notes
- Profile changes to
~/.claude/settings.json take effect only after session restart
- Profiles define a subset: plugins not listed in
enabled or disabled keep their current state
- Profile JSON
enabled/disabled lists use full plugin keys: <name>@<marketplace> format
- All
.claude/ writes use direct Write/Edit/Bash (CC v2.1.121+, no /tmp wrapping โ see Implementation rules above)
Manifest Profile Integration
templates/manifest.json ์ profiles ํค๋ ์์ฐ ํํฐ๋ง (์์ด์ ํธยท์คํฌยท๊ฐ์ด๋ ๋ฒ์)์ ์ ์ํฉ๋๋ค. ๊ธฐ์กด .claude/profiles/*.json ์ ํ๋ฌ๊ทธ์ธ ์ ํ ์ญํ ๊ณผ ๋ถ๋ฆฌ๋ ๊ฐ๋
์
๋๋ค.
๋ ํ๋กํ ์์คํ
๋น๊ต
| ์์คํ
| ๊ฒฝ๋ก | ์ญํ | ์ ์ฉ ์์ |
|---|
| Plugin profiles | .claude/profiles/*.json | ~/.claude/settings.json plugin on/off | ์ธ์
์ฌ์์ ํ |
| Manifest profiles | templates/manifest.json#profiles | ์ค์น ์ ์์ด์ ํธยท์คํฌยท๊ฐ์ด๋ ๋ฒ์ ์ง์ | omcustom install --profile <name> |
Manifest Profile ์ฌ์ฉ ์๋๋ฆฌ์ค
omcustom install --profile minimal
omcustom install --profile web-app
omcustom install --profile data-eng
omcustom install --profile full
omcustom install
include ํจํด ํด์ ๊ท์น
| ํจํด | ์๋ฏธ | ์์ |
|---|
"*" | ํด๋น ์นดํ
๊ณ ๋ฆฌ ์ ์ฒด ํฌํจ | "include": "*" |
"mgr-*" | glob ํจํด, ์ ๋์ฌ ๋งค์นญ | mgr-creator, mgr-gitnerd ๋ฑ |
{"scope": "core"} | SKILL.md์ scope ํ๋ ๊ธฐ์ค | scope: core์ธ ์คํฌ ์ ์ฒด |
"react-best-practices" | ํน์ ์คํฌ/๊ฐ์ด๋ ์ด๋ฆ | ํด๋น ํญ๋ชฉ๋ง ํฌํจ |
Plugin + Manifest ํ๋กํ ์ฐ๋ ๊ฐ์ด๋
๋์ผ ์ด๋ฆ(์: web-app)์ผ๋ก ๋ ์์คํ
์ ํจ๊ป ์ฌ์ฉํ ์ ์์ต๋๋ค:
omcustom install --profile web-app
/profile load web-app
๋ ์์คํ
์ ๋
๋ฆฝ์ ์ด๋ฏ๋ก ์ด๋ ํ๋๋ง ์ฌ์ฉํด๋ ๋ฌด๋ฐฉํฉ๋๋ค.
๊ด๋ จ ๋ฌธ์
guides/profiles/manifest-install.md โ ์ ์ฒด ์ฌ์ฉ ๊ฐ์ด๋ ๋ฐ ํ๋กํ๋ณ ์์ฐ ํ
templates/manifest.json#profiles โ ํ๋กํ ์ ์ ์์ค