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>
18 lines
838 B
Markdown
18 lines
838 B
Markdown
# claude-playground
|
|
|
|
A tiny zero-dependency Node.js todo CLI, used as a sandbox for trying Claude Code features.
|
|
|
|
## Commands
|
|
- `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
|
|
- ES modules, Node >= 20, no third-party dependencies.
|
|
- `src/todo.js` holds pure functions; keep I/O in `load`/`save` and `src/cli.js`.
|
|
- Every behavior change gets a test in `test/`.
|
|
- Commit messages: short imperative subject line.
|
|
|
|
## Remote
|
|
Gitea at code.westerkam.org — `origin` = `git@code.westerkam.org:christian/claude-playground.git`.
|