diff options
| author | Craig Jennings <c@cjennings.net> | 2026-04-19 17:06:10 -0500 |
|---|---|---|
| committer | Craig Jennings <c@cjennings.net> | 2026-04-19 17:06:10 -0500 |
| commit | 4957c60c9ee985628ad59344e593d20a18ca8fdb (patch) | |
| tree | e8d6659dd2d7dd24126782fa83ccccffc6c6f836 /hooks/settings-snippet.json | |
| parent | ab4a07b3c081609a81ee049ec9bbe6ccded09b54 (diff) | |
| download | rulesets-4957c60c9ee985628ad59344e593d20a18ca8fdb.tar.gz rulesets-4957c60c9ee985628ad59344e593d20a18ca8fdb.zip | |
feat(hooks): add global hooks — PreCompact priorities + git/gh confirm modals
Three new machine-wide hooks installed via `make install-hooks`:
- `precompact-priorities.sh` (PreCompact) — injects a priority block into
the compaction prompt so the generated summary retains information most
expensive to reconstruct: unanswered questions, root causes with
file:line, subagent findings as primary evidence, exact numbers/IDs,
A-vs-B decisions, open TODOs, classified-data handling.
- `git-commit-confirm.py` (PreToolUse/Bash) — gates `git commit` behind a
confirmation modal showing parsed message, staged files, diff stats,
author. Parses both HEREDOC and `-m`/`--message` forms.
- `gh-pr-create-confirm.py` (PreToolUse/Bash) — gates `gh pr create`
behind a modal showing title, base ← head, reviewers, labels,
assignees, milestone, draft flag, body (HEREDOC or quoted).
Makefile: adds `install-hooks` / `uninstall-hooks` targets and extends
`list` with a Hooks section. Install prints the settings.json snippet
(in `hooks/settings-snippet.json`) to merge into `~/.claude/settings.json`.
Also: `languages/elisp/claude/hooks/validate-el.sh` now emits JSON with
`hookSpecificOutput.additionalContext` on failure (via new `fail_json()`
helper) so Claude sees a structured error in context, in addition to
the existing stderr output and exit 2.
Patterns synthesized clean-room from fcakyon/claude-codex-settings
(Apache-2.0). Each hook is original content.
Diffstat (limited to 'hooks/settings-snippet.json')
| -rw-r--r-- | hooks/settings-snippet.json | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/hooks/settings-snippet.json b/hooks/settings-snippet.json new file mode 100644 index 0000000..2a8ac54 --- /dev/null +++ b/hooks/settings-snippet.json @@ -0,0 +1,20 @@ +{ + "hooks": { + "PreCompact": [ + { + "hooks": [ + { "type": "command", "command": "~/.claude/hooks/precompact-priorities.sh" } + ] + } + ], + "PreToolUse": [ + { + "matcher": "Bash", + "hooks": [ + { "type": "command", "command": "~/.claude/hooks/git-commit-confirm.py" }, + { "type": "command", "command": "~/.claude/hooks/gh-pr-create-confirm.py" } + ] + } + ] + } +} |
