- 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.
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:*), orBash(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 undervendor/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).