Skip to content
claude-mods
Menu

Claude Code mods · access by invitation

Conventions Claude Code cannot forget

A mod changes Claude’s own interface or behaviour: a hook on tool calls, a pane, a band above the prompt, a status line entry, a toast or a slash command. Each one enforces a convention mechanically instead of relying on memory or instructions.

Sample session (illustrative)
  • env
  • ✗ denied: secret-leak-guard … use compgen -v | grep NAME
  • git worktree add /tmp/wt1 -b demo
  • ✗ denied: worktree-path-guard … use <repo>/.claude/worktrees/<name>
  • /kb why did we pick shape B′
  • ✓ example-repo/docs/decisions/ADR-0001.md:7 [authoritative]
  • bus: laptop-demo · 2 unread · newest from desk-demo
  • bead: demo-1a2 Fix the login redirect · cron: 1 scheduled

From install to enforced

  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.

How the hooks work →

Access is by invitation

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