mroberts 37fc3fb291 Fix audit tool bootstrap and add per-run preflight
audit-code install-tools.sh:
- Buffer the opengrep release JSON before grep -m1; curl died with (23)
  under pipefail when grep quit early.
- Use ${m}: in the PowerShell block; $m: parsed as a scope-qualified var.
- On Arch, skip paru/yay when pacman -Q shows every package installed,
  since --needed still invokes sudo.
- Add --check-only (fast, installs nothing, non-zero naming missing tools)
  and --user-only (no system package managers, no sudo).

log-run.py (both skills): put the skill dir on sys.path so running it as
a script from any cwd no longer raises ModuleNotFoundError.

audit-terraform: move deps from requirements.txt into pyproject
dependency groups and add scripts/install-tools.sh (uv sync --group tools,
then check trivy, tflint, tofu, terragrunt, gh).

Both SKILL.md files gain a 0.5 Preflight step and call scripts through
uv run --project ${SKILL_DIR}. tools_unavailable is now a map of tool to
exact install command; audit-terraform skips trivy when absent and stops
with an install hint instead of crashing when tofu/terragrunt is missing.
2026-09-22 15:21:28 -05:00

mroberts — Claude Code plugin marketplace

Personal marketplace hosting multiple Claude Code plugins.

Install

claude plugin marketplace add ssh://[email protected]/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/<name>/.claude-plugin
  2. Write plugins/<name>/.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:
{ "name": "<name>", "source": "./plugins/<name>", "description": "...", "category": "productivity" }

A plugin absent from plugins[] is not installable, regardless of its directory.

  1. 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.

S
Description
My personal claude plugins
Readme
396 KiB
Languages
Python 91.6%
JavaScript 5.6%
Shell 2.8%