pluginpool

May 16, 2026 · View on GitHub

pluginpool — ten focused Claude Code plugins

pluginpool

Ten focused Claude Code plugins for everyday developer productivity.

License: MIT Plugins: 10 Tests: 89 passing Python: stdlib only Status: stable

Ten tiny, deterministic Python helpers wrapped as Claude Code slash commands. Each one tackles a single real-world productivity pain. No magic. No pip install. Hermetic tests. MIT.


What's inside

#PluginWhat it doesTests
1commit-narratorSemantic commit message from git diff --cached, including the why8
2pr-storytellerPR title + body + test plan from commits and diff vs base branch6
3test-gapLines in your diff lacking test coverage (Cobertura / lcov / coverage.json)9
4deps-doctorMulti-ecosystem dependency audit (npm, pip, cargo, go) — one report8
5env-lint.env vs .env.example key parity — never prints values7
6secret-guardPre-commit secret scanner: pattern + entropy, redacted output10
7standup-genDaily standup notes from git activity across one or many repos8
8todo-harvestTODO/FIXME/HACK scan with git blame author + age9
9flaky-detectorRun a test command N times, report per-test flakiness %11
10changelog-forgeConventional commits → CHANGELOG section + semver bump suggestion13

89 hermetic tests across the suite. All green.


Why this exists

Most "developer productivity" tooling sells you on a magic black box and asks you to trust the output. That's the wrong shape for tools you run dozens of times a day. These plugins are the opposite:

  • Deterministic helpers. Each plugin's core is a small Python script that does exactly one thing and emits structured output you can audit.
  • Claude Code is the runtime, not the brain. The slash command makes the helper easy to invoke; Claude reasons over the output. You can always run the helper without Claude and get the same data.
  • No pip install to use a plugin. Python 3 standard library only at runtime.
  • Hermetic tests. Every test that touches git builds its own temp repo with explicit identity. No network. No leakage.
  • Each plugin is its own repo. Install one. Install all. Vendor what you want.

Installing one plugin

git clone https://github.com/mturac/pluginpool-<plugin-name> ~/.claude/plugins/<plugin-name>

Restart Claude Code; the slash command /<plugin-name> appears under /help.

Installing them all

for p in commit-narrator pr-storyteller test-gap deps-doctor env-lint \
         secret-guard standup-gen todo-harvest flaky-detector changelog-forge; do
  git clone "https://github.com/mturac/pluginpool-$p" "$HOME/.claude/plugins/$p"
done

Using a helper standalone (no Claude Code required)

Every helper has a plain CLI. For example:

cd ~/.claude/plugins/commit-narrator
git -C ~/your/repo diff --staged | python3 scripts/narrate.py --diff - --format json

This is how the test suites exercise the helpers — and how you can wire any of them into CI.


Anatomy of a plugin

<plugin>/
├── .claude-plugin/
│   └── plugin.json              # name, version, description, author
├── commands/
│   └── <plugin>.md              # slash command (YAML frontmatter + body)
├── scripts/
│   └── <helper>.py              # Python 3 stdlib-only CLI
├── tests/
│   ├── test_<helper>.py         # hermetic pytest suite
│   └── fixtures/                # synthetic fixtures (where applicable)
├── examples/
│   └── README.md                # copy-pasteable input → output simulations
├── Makefile                     # `make test`
├── LICENSE                      # MIT
├── .gitignore
└── README.md

Everything is intentionally small. The biggest helper (flaky.py) is ~240 lines. The smallest (envlint.py) is ~70.


Tests

Per-plugin:

cd <plugin>
make test
# or
python3 -m pytest tests/ -v

Full sweep across all 10 plugins (run from a directory that contains all of them as siblings):

for p in commit-narrator pr-storyteller test-gap deps-doctor env-lint \
         secret-guard standup-gen todo-harvest flaky-detector changelog-forge; do
  (cd "$p" && python3 -m pytest tests/ -q --no-header)
done

You should see ten lines like 8 passed in 1.45s summing to 89.


Quality

Each plugin had a multi-pass code review with regression tests for every issue found. Notable invariants enforced by the suite:

  • No shell=True, no eval, no exec in any helper (grep -r clean).
  • env-lint writes a fake value SUPERSECRETVALUE123 into a temp .env during its tests and asserts that string never appears in JSON or markdown output. Redaction is a tested property, not a comment.
  • secret-guard asserts that every finding's raw matched string is absent from output — the redaction (rule + first 4 chars + …) is verified per pattern.
  • test-gap explicitly distinguishes "no coverage report present" from "100% covered" — a missing report yields a non-zero exit and a clear warning, never a silent green.
  • deps-doctor treats missing audit tools as "skipped: tool not installed" — never silently green.
  • flaky-detector parses both pytest -v per-test lines and pytest -q tail-summary lines, and exits non-zero with a warning if neither produced parseable output.

License

Each plugin ships under MIT. See the LICENSE file inside each plugin directory.


Writing

LinkedIn

Dev.to


Repo index