From adr-kit
Install or uninstall the adr-kit pre-commit hook in the current project. Copies templates/githooks/pre-commit into .githooks/pre-commit, makes it executable, and runs `git config core.hooksPath .githooks`. Idempotent. Used internally by /adr-kit:init and /adr-kit:upgrade; also exposed standalone for users who want to add or remove the hook independently.
How this skill is triggered — by the user, by Claude, or both
Slash command
/adr-kit:install-hooks [--uninstall][--uninstall]This skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
You install or uninstall the adr-kit pre-commit hook in the project the user is currently in (`pwd` should be the project root).
You install or uninstall the adr-kit pre-commit hook in the project the user is currently in (pwd should be the project root).
ADR_KIT=$(ls -d ~/.claude/plugins/cache/rvdbreemen-adr-kit/adr-kit/*/ | sort -V | tail -1)
TEMPLATE="$ADR_KIT/templates/githooks/pre-commit"
If $TEMPLATE does not exist or is empty, exit with an error: the plugin install is broken; tell the user to reinstall via /plugin install adr-kit@rvdbreemen-adr-kit.
Three cases:
.githooks/pre-commit. Mkdir .githooks/, copy the template, chmod +x, set core.hooksPath. Done..githooks/pre-commit is byte-identical to the template. No-op. Tell the user it's already installed..githooks/pre-commit differs. Read both. Show the user the existing content (truncated to first 30 lines). Ask:
prepend adr-kit before existing — write a wrapper script that calls adr-kit then execs the original. Save the original as .githooks/pre-commit.adr-kit-saved.replace — overwrite. Save the old hook as .githooks/pre-commit.backup-<timestamp> for safety.abort — do nothing.
Apply the user's choice.Run git config core.hooksPath .githooks. Confirm with git config --get core.hooksPath. If the project already has core.hooksPath set to a different directory, do NOT overwrite — tell the user, ask whether to change the config or to symlink the hook into the existing hooks dir.
Print:
Pre-commit ADR judge installed.
- hook: .githooks/pre-commit (mode 755)
- core.hooksPath: .githooks
- disable a single commit: ADR_KIT_HOOK_DISABLE=1 git commit ...
- remove permanently: /adr-kit:install-hooks --uninstall
- LLM pass is opt-in (off by default). Enable per-project: judge.llm_enabled:true in docs/adr/.adr-kit.json. Enable one commit: ADR_KIT_LLM=1 git commit ...
- ADR-suggest is opt-in too: suggest.enabled:true, or ADR_KIT_SUGGEST=1 for one commit.
--uninstallWhen invoked as /adr-kit:install-hooks --uninstall:
.githooks/pre-commit. Verify it is the adr-kit hook (look for the line # adr-kit pre-commit hook near the top). If it is NOT the adr-kit hook, refuse — tell the user the hook in place isn't ours and we won't touch it..githooks/pre-commit.adr-kit-saved does not exist). Remove .githooks/pre-commit. If .githooks/ is now empty, remove it too. Run git config --unset core.hooksPath..githooks/pre-commit.adr-kit-saved → .githooks/pre-commit. Leave core.hooksPath set to .githooks..githooks/pre-commit.backup-<timestamp> exists (from a prior replace install). Tell the user the backup is there and ask whether to restore that instead. Apply choice.Pre-commit ADR judge uninstalled. (restored prior hook | removed .githooks/ | unset core.hooksPath)The ADR Guardian has two registration paths (spec §7):
SessionStart hook in its manifest. It auto-registers in every Claude Code session when the plugin is enabled globally, and self-guards (exits silently when no docs/adr/ with ADRs is present). This is the recommended path.SessionStart entry directly to the project's .claude/settings.json. Contained to this project only. Use when the user wants explicit per-project control or does not enable the plugin globally.When the user asks to add the guardian hook to the project's .claude/settings.json:
Read .claude/settings.json (create it as {} if missing).
Check if hooks.SessionStart already contains an entry whose command contains the string adr-guardian. If yes: print "Already installed" and stop.
If no SessionStart array exists: create it. Parse the JSON structurally — never do text substitution on a JSON file.
Append the following hook object to hooks.SessionStart[0].hooks (create the array path if absent):
{
"type": "command",
"command": "ADR_KIT=$(ls -d ~/.claude/plugins/cache/rvdbreemen-adr-kit/adr-kit/*/ 2>/dev/null | sort -V | tail -1) && [ -n \"$ADR_KIT\" ] && _PY=$(command -v python3 || command -v python || command -v py) && [ -n \"$_PY\" ] && \"$_PY\" \"$ADR_KIT/bin/adr-guardian\" check 2>/dev/null || true",
"timeout": 10,
"statusMessage": "Checking ADR health..."
}
Write the updated JSON back. The existing SessionStart hooks (if any) are preserved byte-for-byte — only the new entry is appended.
Confirm: "Guardian hook added to .claude/settings.json. It will fire at the next session start."
When the user asks to remove the guardian hook from .claude/settings.json:
.claude/settings.json. Parse as JSON.hooks.SessionStart[*].hooks[*] whose command contains adr-guardian. If none found: print "Guardian hook not found in .claude/settings.json" and stop.hooks array becomes empty after removal, remove the empty array (but keep the parent SessionStart entry if other entries exist in other groups).Safety invariant: Never remove or modify any hook entry that does not contain adr-guardian in its command. This is the cozempic lesson — a remove that also clobbers unrelated hooks is worse than not removing at all.
After adding the guardian hook (project-scoped or as part of /adr-kit:init):
echo "docs/adr/.adr-kit-state.json" >> .gitignore
Verify it is not already present first (idempotent). The state file is per-machine and must never be committed.
core.hooksPath only when needed. If the user already has it pointing at a custom dir, propose a symlink rather than redirecting their config.chmod +x the hook after writing — without the executable bit, git silently ignores it..githooks/, which the project may or may not have in .gitignore. Don't add it to git here; the user decides whether to track it.npx claudepluginhub rvdbreemen/adr-kit --plugin adr-kitProvides CDSS development patterns for drug interaction checking, dose validation, clinical scoring (NEWS2, qSOFA), and alert classification integrated into EMR workflows.