NewSee what’s new in v2

Make Claude Code yours, one hook at a time.

200+ open-source mods: guardrails, live panes, status lines, agent controls and checks that know your stack. Browse them, install them and keep them current from a store that lives right inside your terminal.

/plugin marketplace add plagemes/claude-mods

Terminal and desktop Code tab · Claude Code 2.1.292+ · MIT

claude-mods 200+ mods · 20+ categories
Mods
200+
New in v2
—
Categories
20+
Commands to install
3

New in v2

The rack, doubled.

A second shelf of categories: checks that know your stack, your database and your cloud, and controls that scope, queue and supervise Claude itself. Plus a shared core, mods-hub, so mods share one event bus, one side panel and one notification router, with bridges to WhatsApp, Telegram, Slack and Discord. Same store, same two commands.

    Start with these

    Install

    Three commands. That’s the setup.

    Install the store once, then add, update and remove every other mod from inside Claude Code.

    1. Add the marketplace

      /plugin marketplace add plagemes/claude-mods
    2. Install the mod store

      /plugin install mod-store@claude-mods

      Then run /reload-plugins to load it.

    3. Open it

      /mods

      Search, filter by category, install, update and uninstall. Works offline from cache.

    Just want one mod?

    /plugin install <mod>@claude-mods
    Try

    Why mod

    Small hooks. Serious leverage.

    Each mod does one thing well. Stack the ones you need, skip the rest. They stay out of the way until the moment they matter.

    Guardrails that say no first

    Ten guards catch leaked secrets, force-pushes, production commands and rm -rf before they run, then explain the safer path.

    Know what every turn costs

    Live cost, context fill and cache hits in your status line. Set a budget and get stopped at 100%, not surprised by the invoice.

    See what Claude is doing, live

    Tool timelines, touched files, subagents and errors in panes beside the conversation.

    Slash commands for the chores

    Commit messages, PR descriptions, standups and checkpoints, each reduced to a keystroke.

    Walk away. Get called back.

    A chime when a long turn ends, a ping when Claude needs approval, a webhook when CI goes green.

    Context that outlives the session

    Decisions, journals, glossaries and lessons, saved as plain files you own and recalled when they matter.

    The store

    Every mod, one search away.

    Press / to search. Copy an install command, or open a mod for the details.

    Loading the catalog…

    Under the hood

    Events in. Your rules out.

    A mod is a plugin of function hooks. Claude Code emits events: a tool call, a prompt, a finished turn, a frame to draw. Your hook sees each one and can let it pass, rewrite it, answer it, or draw something new.

    Claude Code emits

    • tool.callBash, Edit, Write, Read…
    • prompt.submitwhat you just typed
    • turn.completethe turn is done
    • ui.rendera frame to draw
    • session.starta new session

    Your mod hooks in

    ($, e, next) => …
    • Guard deny with a reason
    • Rewrite next({ ...e })
    • Observe count, time, log
    • Render draw into the UI

    You see

    • A denial with a safer path
    • A status line or band
    • A live pane
    • A new slash command
    • A toast or a sound

    Mods run in a sandbox with no DOM and no Node. Everything outside reaches them through $, the engine interface, so a mod can only do what its hooks ask for.

    Build a mod

    Your idea is one file away.

    If you can write a function, you can write a mod. Start from the example, load it live, and open a pull request when it feels right.

    1. Create mods/<name>/ with a plugin.json and a hooks module.
    2. Load it live with claude --plugin-dir mods/<name>.
    3. Check it with claude plugin validate mods/<name>.
    4. Add it to catalog.json, run node scripts/build.mjs, open a PR.
    import type { Register } from 'claude-code'
    
    // Block force-pushes to main, explain the safer path.
    export const register: Register = on => {
      on('tool.call', { tool: 'Bash' }, ($, e, next) =>
        /git push .*--force\b.*\bmain\b/.test(e.command)
          ? { deny: 'Use --force-with-lease, never on main.' }
          : next(e),
      )
    }

    Make it yours.

    One install, 200+ mods, zero lock-in. Every mod is a folder of plain TypeScript you can read in a minute.

    /plugin marketplace add plagemes/claude-mods