Henner M. Kruse dc4a5c5b5e Close bats coverage gaps, add hide_command helper, wire up kcov
- tests/helpers/common.bash: hide_command hides python3/jq/rg via a
  per-directory-batched PATH shim (not per-file — that took minutes),
  making the fail-open/grep-fallback branches testable.
- 20 new tests across all 7 .bats files: unknown flags, invalid
  --settings-scope, missing python3/jq, grep fallback when rg is
  unavailable, empty/multi-vault config edge cases, a vault path that
  stops existing or isn't a directory, and the previously-untested
  tool_name != Bash branch of force-ask-on-raw-git.sh. 53 -> 73 tests.
- hooks.bats: deploy the hooks once in setup_file() (BATS_FILE_TMPDIR)
  instead of per-test (BATS_TEST_TMPDIR) -- faster, and gives kcov one
  stable path per hook to aggregate coverage against instead of a
  fragmented copy per test.
- .gitignore (first in this repo) + tests/README.md Coverage section
  documenting the kcov invocation and why --include-pattern needs three
  entries, not two.

Real, tool-measured coverage via kcov: 86.15% (255/296 lines) across
all 10 wrapper/setup/hook scripts in both plugins, replacing an earlier
manual ~68% branch-coverage estimate.
2026-08-04 21:09:07 +00:00
2026-08-04 10:45:25 +02:00

skill-repo

A collection of Claude Code plugins (Agent Skills) for working with git repositories and Obsidian vaults. Each plugin does one job, ships its own setup command, and only asks for the minimum shell access it actually needs.

Looking for how this repo is structured internally, or how to add a new plugin to it? See ARCHITECTURE.md. This README is about what's in the box and how to use it.

What's in here

Plugin What it does
git-manager Runs git commands (status, log, commit, push, pull, ...) across one or more repositories through a single whitelisted script — no more permission prompts breaking on cd && git ... chains.
obsidian-vault-kb Turns an Obsidian vault into a searchable knowledge base Claude can consult and (optionally) write back to.

Click through to each plugin's own README for details, examples, and setup options.

Installing

From within Claude Code:

/plugin marketplace add /absolute/path/to/skill-repo

(or a Git URL, once this repo is hosted somewhere reachable). Then install whichever plugin(s) you want:

/plugin install git-manager
/plugin install obsidian-vault-kb

Each plugin has its own /plugin-name:setup command — run it once after installing to configure paths and permissions. See the individual plugin READMEs for what each setup asks for.

A shared design philosophy

Both plugins in this repo follow the same rules, worth knowing upfront:

  • Minimal permissions. Neither plugin whitelists generic commands like Bash(git:*), Bash(find:*), or Bash(cd:*). Each whitelists exactly one wrapper script, pinned to its exact absolute path. The wrapper script itself enforces what it's allowed to do (allowed git subcommands, vault boundaries) — the whitelist just says "this specific, self-limiting script may run without asking."
  • Nothing destructive is silent. Actions that change files — writing notes, pushing to a remote — either aren't whitelisted (so you still get a normal confirmation prompt) or are scoped tightly enough that there's nothing surprising they can do.
  • Config lives outside Claude Code, at ~/.agent-skills/<plugin-name>/config.json. Both plugins follow the open Agent Skills format for their actual skill content (SKILL.md + scripts/), so that part works the same if you ever run them from a different Agent-Skills-compatible tool — only the Claude Code-specific setup command and permissions live under vendor/claude-code/.

Updating

After pulling changes to this repo:

/plugin marketplace update skill-repo

Re-run a plugin's /plugin-name:setup if its permissions or config format changed (check that plugin's README/changelog).

S
Description
Private collection of tool-neutral Agent Skills, plus optional vendor-specific setup/integration adapters (currently: Claude Code).
Readme 218 KiB
Languages
Shell 100%