SLOPSHOPPER

quiet-bash

Runs a formatter after Bash calls.

newguardprocess
A shopper browsing a rack in a slop shop
README

modmgr

A mod manager for Claude Code. Mods are plugins that hook into a Claude Code session: they can run programs, read the conversation, change what the model sees. modmgr shows which ones you have and what each one can do, and lets you find, install, switch off, update or remove them without leaving the session.

/plugin install modmgr --marketplace ayagmar/claude-mods

Then type /mods. Needs Claude Code 2.1.292 or newer, with the claude CLI on your path.

What you get

Installed lists every mod with its state, version, scope and what it can do. Changes are staged and applied together, with one plugin reload after, and the last batch can be undone.

Installed   2: Discover   3: Dev   4: Health ▲1                                       r: refresh
5 of 5 mods on
╭──────────────────────────────────────────────────────────────────────────────────────────────╮
│ ⌕ Filter 5 mods                                                                    f: filter │
╰──────────────────────────────────────────────────────────────────────────────────────────────╯
  ● broken             ▲1              │ redactor 2.1.0
  ● quiet-bash         ◆1              │ ● on · project · fixtures
❯ ● redactor           ◆3              │ e: disable  x: remove  c: copy id
  ● spawner            ◆2              │ ↑ runs from its marketplace folder: no updates
  ● turn-band          ◆2 new          │
                                       │ Notable
                                       │ ◆ Can read your conversation or files and send data out
                                       │ ◆ Reads environment variables that look like secrets
                                       │ ◆ Can change what the model reads
                                       │
                                       │ What it can do
                                       │ Network             http.fetch
                                       │ Session content     env.get session.messages
                                       │ What the model sees session.append
                                       │ Display only        session.end
                                       │
                                       │ ✓ validates
                                       │
                                       │
────────────────────────────────────────────────────────────────────────────────────────────────
z: undo                                                              j: jobs  h: keys  esc close

A mod's detail says what it hooks and calls, grouped by what that reaches (your machine, the network, the conversation, the model's input, other plugins), and calls out what's worth a second look. When an update adds something notable, it says so until you have seen it:

Installed   2: Discover   3: Dev   4: Health ▲1
5 of 5 mods on
╭──────────────────────────────────────────────────────────────────────────────────────────────╮
│ ⌕ Filter 5 mods                                                                    f: filter │
╰──────────────────────────────────────────────────────────────────────────────────────────────╯
  ● broken             ▲1              │ turn-band 0.4.0
  ● quiet-bash         ◆1              │ ● on · user · fixtures
  ● redactor           ◆3              │ e: disable  x: remove  c: copy id
  ● spawner            ◆2              │ ↑ runs from its marketplace folder: no updates
❯ ● turn-band          ◆2              │
                                       │ New since 0.3.1
                                       │ ◆ Can run programs or change files on your machine
                                       │
                                       │ Notable
                                       │ ◆ Can change what the model reads
                                       │
                                       │ What it can do
                                       │ Your machine        process.run
                                       │ What the model sees prompt.submit
                                       │ Display only        turn.complete ui.render clock.now …
                                       │
                                       │ ✓ validates
                                       │
                                       │
────────────────────────────────────────────────────────────────────────────────────────────────
                                                                      j: jobs  h: keys  esc back

Discover lists the mods in every marketplace you have added, and the mods published anywhere else on public GitHub (about 3,000). Both come from indexes modmgr's CI rebuilds daily, so they are there at once; anything else is checked while you work, search matches first. A community mod shows what it can do before you install it, as claude plugin validate read it. Installing goes through a review that says what will run and where: a community mod installs from the marketplace in its own repository, which the install adds to your user settings first, and one whose repository has no marketplace offers its link instead. o sorts by popularity, stars, name or source; k keeps only your own marketplaces' entries. A command a marketplace declares is shown whole, with its sha256, and runs only when you confirm that exact command.

1: Installed   Discover   3: Dev   4: Health ▲1
5 mods
╭──────────────────────────────────────────────────────────────────────────────────────────────╮
│ ⌕ Search 5 mods                                                                    f: search │
╰──────────────────────────────────────────────────────────────────────────────────────────────╯
❯ secret-scrub                    4.2k │ Install secret-scrub from fixtures
  Masks tokens and keys in tool outpu… │ y: confirm  n: cancel
  commit-guard                    2.8k │
  Stops a commit while the tests fail… │ scope: user: every project ▾
  turn-timer                      1.9k │ ● install   secret-scrub 1.0.0 · fixtures · user
  Shows how long the current turn has… │
  cost-meter                      1.2k │ modmgr reads what it can do once it is installed,
  Counts the tokens each turn spends,… │ and shows it in its detail then.
  quiet-hours                      610 │ Takes effect after the reload modmgr runs.
  Holds notifications while a turn ru… │
                                       │ Runs
                                       │   claude plugin install secret-scrub@fixtures --scope …
                                       │
                                       │
                                       │
                                       │
                                       │
                                       │
                                       │
────────────────────────────────────────────────────────────────────────────────────────────────
                                                                                        esc back

Dev lists the mods you are writing (loaded with --plugin-dir, CLAUDE_CODE_PLUGIN_DIRS, your skills folder or a folder marketplace): validate them, run their tests, reload, and get the line someone else needs to install yours.

Health lists what needs you, worst first, each with a fix one key away:

1: Installed   2: Discover   3: Dev   Health ▲2                                       r: refresh
2 problems to look at
  broken                               │ broken
❯ ▲ validate finds 1 error in it       │
  redactor                             │ ▲ validate finds 1 error in it
  ▲ 1 failure while it reloaded; last… │
  modmgr itself                        │ → see it
    5 enabled                          │
    updates checked never, every 6 ho… │
    detector: 5 mods found; 205 of 20… │
    cache: 185 B                       │
    A hook that fails is logged only … │
                                       │
                                       │
                                       │
                                       │
                                       │
                                       │
                                       │
                                       │
                                       │
                                       │
                                       │
                                       │
────────────────────────────────────────────────────────────────────────────────────────────────
l: reload                                                            j: jobs  h: keys  esc close

Updates are checked every few hours while no turn is running (updateCheckHours, 0 turns them off).

As text

For scripts and claude -p:

/mods list | info <id> | doctor [--json] | export
/mods install <id> [--scope user|project|local] [--accept-command <sha256>] --yes
/mods remove <id> [--wipe-data] --yes
/mods update [<id>] --yes
/mods enable <id> --yes | disable <id> --yes
/mods apply <file> --yes

Writes need --yes (without it they print what they would run) and never reload: run /reload-plugins after. Exit codes: 0 done, 1 refused or failed, 2 usage. Under -p, Claude Code prefixes the answer with modmgr: .

Options

Set them with claude plugin configure modmgr:

OptionDefault
updateCheckHours6Hours between update checks; 0 turns them off.
detectRemoteonRead the daily catalogue and community indexes, and catalogue entries' hooks.json, from raw.githubusercontent.com to find mods.
debugTimingsoffWrite how long each step took to the debug log (--debug).

CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC turns off everything modmgr fetches. modmgr sends no telemetry.

Safety

modmgr is a lens, not a sandbox: once a mod runs, it runs with your session's power. It tells you what a mod can do and asks before anything new runs. docs/SECURITY.md says what it reads, fetches and stores.

Development

See CONTRIBUTING.md and docs/PERF.md. The landing page is in site/ (pnpm site).

Credits

The community index finds mods the way awesome-claude-code-mods (browse it at mods.aidojo.si) does, and reads its list of candidate repositories (CC0) so a mod GitHub's search hasn't indexed yet is still found.

License

MIT

Source 1 files
hooks/register.ts 9 lines
1// Fixture mod: machine reach + tools.
2export const register = on => {
3  on('tool.call', { tool: 'Bash' }, async ($, e, next) => {
4    const ran = await next(e)
5    await $.process.run(['true'])
6    return ran
7  })
8}
9