andrewli315/mod-manager
mod-manager
Claude Code용 세션별 mod 관리자입니다. 프롬프트 위의 도구 모음에서 현재 세션에 대해 로컬에 설치된 mod를 켜거나 끌 수 있습니다.
이 mod 소개
mod-manager는 Claude Code 프롬프트 위에 MODS 도구 모음을 추가해 세션별로 로컬 설치 mod를 켜고 끌 수 있게 합니다. 알려진 mod와 켜짐/꺼짐 상태 및 버전을 나열하고 Enable all / Disable all을 제공하며, Manage 창(/mods)에서는 mod별 Enable/Disable과 Save-as-default 제어를 제공합니다. 선택 사항은 session id별로 저장되고 ↻ Apply 버튼(단축키 a)으로 보류 중인 변경을 적용합니다. 새로 발견된 미확인 mod는 결정(Enable 또는 Keep off)할 때까지 거부됩니다. ~/.claude/dev-mods, ~/.claude/plugins/synced, ~/.claude/plugins/marketplaces, ~/.claude/skills, CLAUDE_CODE_PLUGIN_DIRS의 폴더와 형제 폴더를 검색합니다. .claude-plugin/plugin.json과 modules 목록이 있는 hooks/hooks.json을 포함한 폴더만 mod로 간주합니다. plugin.register hook은 각 mod가 세션에 참여하기 전에 평가하고 비활성화된 mod를 거부하므로 해당 mod의 hooks, 명령과 도구는 로드되지 않습니다. 폴더를 mod 디렉터리에 넣거나 claude --plugin-dir을 사용해 설치합니다. 핫 리로드를 위해 CLAUDE_CODE_PLUGIN_DIR_WATCH=1과 함께 CLAUDE_CODE_PLUGIN_DIRS에 추가할 수도 있습니다. 제한 사항은 사용자 계층 mod만 끌 수 있고, 자신보다 먼저 로드되는 mod는 거부할 수 없으며, 로드되지 않은 marketplace 플러그인은 목록에 나오지 않고, 모바일에서는 도구 모음을 사용할 수 없다는 점입니다(/mods는 작동).
설치
먼저 작성자의 README에서 marketplace와 플러그인 이름을 확인하세요. 저장소 구조에 따라 명령어가 달라질 수 있습니다.
claude plugin marketplace add andrewli315/mod-manager claude plugin install mod-manager
원문 / README
mod-manager
A per-session mod manager for Claude Code. A toolbar above the prompt lets you switch any locally installed mod on or off for the current session.
╭────────────────────────────────────────────────────────╮
│ ⬢ MODS [ Mods ▾ 3/5 on ] ● pending [ ↻ Apply ] ⚙ Manage │
╰────────────────────────────────────────────────────────╯
Features
- Dropdown toolbar above the prompt listing every mod it knows about, marked
●(on) or○(off), with versions. Pick a mod to toggle it;Enable allandDisable allare included. - Manage pane (
/modsor the⚙ Managebutton): one card per mod with Enable/Disable buttons and a★ Save as defaultbutton. - Per-session choices: selections are stored per session id. New sessions start from your saved default (everything on unless you saved otherwise).
- Apply button: a change shows a yellow
● pendingmarker until you press↻ Apply(hotkeya). mod-manageritself is locked on so you can always turn mods back on.
Hotkeys (when the bar has focus): a Apply, m Manage.
Install
Requires a Claude Code build with function-hook mods (plugin authoring support).
-
Put this folder inside your mods folder, for example
~/.claude/dev-mods/<id>/mod-manager/, and accept the "Enable hot reloading for this session?" prompt. -
Or load it directly for one session:
claude --plugin-dir /path/to/mod-manager
Make it available in every session
Add the folder to CLAUDE_CODE_PLUGIN_DIRS in the env block of ~/.claude/settings.json
(separate several folders with ; on Windows, : elsewhere). CLAUDE_CODE_PLUGIN_DIR_WATCH=1
makes long-lived sessions (the desktop app, the SDK) hot-reload it too:
{
"env": {
"CLAUDE_CODE_PLUGIN_DIRS": "/absolute/path/to/mod-manager",
"CLAUDE_CODE_PLUGIN_DIR_WATCH": "1"
}
}
New mods ask first
The first time mod-manager runs it treats every mod already present as known. After
that, a mod it has never seen is refused until you decide: the MODS bar shows a
magenta ✦ NEW MOD row with Enable and Keep off. Enable loads it right away;
Keep off records the choice for this session. Your choices are remembered, so each mod
asks once.
Where it looks for mods
~/.claude/dev-mods, ~/.claude/plugins/synced, ~/.claude/plugins/marketplaces,
~/.claude/skills, every folder in CLAUDE_CODE_PLUGIN_DIRS, and the folder beside
mod-manager. A folder counts as a mod when it has a .claude-plugin/plugin.json and a
hooks/hooks.json with a modules list. Mods that have loaded in any session are also
listed, whatever their location.
How it works
- A
plugin.registerhook sees every mod before it joins the session. Mods you switched off are refused, so none of their hooks, commands or tools load. It records each mod it sees in the plugin store so the dropdown can list it. - Sibling folders next to
mod-managerare scanned for.claude-plugin/plugin.json, so mods that never loaded still appear. ↻ Applywriteshooks/.reload. With hot reloading on, that save reloads all mods, and the refusal list is applied. Without hot reloading, changes take effect the next time mods load.
Limitations
- Only mods in the
usertier can be switched off; managed and built-in plugins are never refused. - A mod that loads before
mod-managercannot be refused by it. - The dropdown lists mods the manager has seen load plus siblings on disk. It does not scan marketplace-installed plugins that have never loaded.
- No toolbar on the mobile surface (it has no dropdown element);
/modsstill works.
Development
claude plugin validate .
Files:
| Path | Purpose |
| --- | --- |
| .claude-plugin/plugin.json | Manifest |
| hooks/hooks.json | Points at the hooks module |
| hooks/register.tsx | All hooks: register filter, toolbar, pane, /mods |
| types/index.d.ts | $.state contract (mods, disabled, isDirty) |
Contributing
Issues and pull requests are welcome. Please run claude plugin validate . before
submitting.
License
동명의 다른 작품
- mod-managermishgoldenberg · ★ 3
