Skip to content
claude-mods
Menu

How it works

How it works

A plugin’s `hooks/hooks.json` names one module that exports `register`. Claude Code calls its hooks at fixed points in a session, and each hook can let the event through, refuse it with a reason, add hidden context or draw on screen.

  1. Step 1

    Add the marketplace

    Point Claude Code at the repository (with access) or at a local clone. The marketplace catesworks-mods lists one entry per plugin under ./mods/<plugin>.

  2. Step 2

    Install the plugins you want

    claude plugin install <name>@catesworks-mods for each one. Each plugin is independent: install only the guards, only the UI, or all of them.

  3. Step 3

    Hooks run in your session

    On session.start a plugin registers its slash commands. On tool.call, prompt.submit or agent.spawn it inspects the event before it happens.

  4. Step 4

    Refuse with the safe form

    A refusal names the safe form; the secret-leak guard never quotes the refused command. A one-time escape such as /secret-guard allow-once is honoured only when you type it at the prompt.

  5. Step 5

    Draw what matters

    Panes, the band above the prompt, the status line and toasts show beads, rollouts, unread bus messages and scheduled jobs without a model turn.

  6. Step 6

    Fail open, within bounds

    The hooks catch their own failures. A guard refuses on an internal error only when the raw input matches a narrow pattern, so a parser bug cannot block every Bash call.

Checked on every push

scripts/check.sh runs every CI check locally: the Claude Code version pin, the vendored copies, tsc, claude plugin validate and claude plugin test for each plugin, plus Node tests against real git repositories and a real ripgrep.

No login or secret is needed: validate and test run credential-free (ADR-0001, experiment b).

Access is by invitation

The repository is private. Installing from GitHub needs read access to it; ask for an invitation through the contact form.