# mroberts — Claude Code plugin marketplace Personal marketplace hosting multiple Claude Code plugins. ## Install ```bash claude plugin marketplace add ssh://git@git.mroberts.dev/mroberts/claude-plugin.git claude plugin install guards@mroberts ``` ## Layout ``` .claude-plugin/marketplace.json # index — every plugin must be listed here plugins/ guards/ .claude-plugin/plugin.json hooks/hooks.json hooks/bash-guard.mjs ``` ## Adding a plugin 1. `mkdir -p plugins//.claude-plugin` 2. Write `plugins//.claude-plugin/plugin.json` with `name`, `version`, `description`. 3. Add components: `hooks/hooks.json`, `commands/`, `agents/`, `skills/` as needed. 4. Append an entry to `plugins[]` in `.claude-plugin/marketplace.json`: ```json { "name": "", "source": "./plugins/", "description": "...", "category": "productivity" } ``` A plugin absent from `plugins[]` is not installable, regardless of its directory. 5. Push, then `claude plugin marketplace update mroberts`. ## Plugins | Plugin | Purpose | |---|---| | `guards` | Enforces the hard constraints in `~/.claude/CLAUDE.md` — jj-only VCS, no Claude attribution, build+test gate before push/tag, secret scrubbing on writes. | ## Note on `guards` `hooks/bash-guard.mjs` is referenced via `${CLAUDE_PLUGIN_ROOT}` and travels with the plugin. `shush` is referenced by absolute path (`/home/mroberts/.local/bin/shush`) because it is a separately installed binary, not a repo file — that path is machine-specific and will need changing on another host.