Install hooks by copying into .git/hooks instead of core.hooksPath

Linking core.hooksPath to the tracked, sandbox-writable .githooks/ let a
sandboxed command rewrite a hook that git commit/push then run unsandboxed.
Copies in .git/hooks can't be changed from the sandbox. This also keeps
existing .git/hooks scripts working and lets npm install succeed outside a
git checkout. pre-merge-commit now names itself in errors; hook tests clean
up, ignore GIT_* env and cover the installer; docs state what each layer
does and doesn't stop.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
christianandClaude Opus 5.5 committed 2026-10-21 00:44:30 +02:00
1 parent 8b08c7b27a
commit 24541f0602
7 files changed
+72 -20

No files matched your search

+2 -1
View File
@@ -3,7 +3,8 @@
A tiny zero-dependency Node.js todo CLI, used as a sandbox for trying Claude Code features.
## Commands
- `npm test` — run the test suite (built-in `node:test`, no install needed)
- `npm install` — once per clone (no dependencies): installs the git hooks that block commits and pushes to `main`. If it fails in the sandbox, ask the human to run it.
- `npm test` — run the test suite (built-in `node:test`)
- `npm start -- add "something"` / `npm start -- ls` — run the CLI (data in `todos.json`, override with `TODO_FILE`)
## Conventions