pre-push rejects any push that would update refs/heads/main, however the command is spelled; pre-commit and pre-merge-commit refuse commits while main is checked out. npm install enables them via core.hooksPath. The README documents the three layers of protection for main. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
1.7 KiB
1.7 KiB
claude-playground
A tiny todo CLI that exists to try out Claude Code features.
npm install # once per clone: turns on the git hooks in .githooks/
npm test
npm start -- add "try Claude Code"
npm start -- done 1
npm start -- ls
What's set up
| File | Claude Code feature |
|---|---|
CLAUDE.md |
Project memory, loaded into every session |
.claude/settings.json |
Shared permissions + a hook that syntax-checks .js files after every edit |
.claude/skills/changelog/ |
A custom skill — run /changelog |
.claude/agents/test-writer.md |
A custom subagent — "use the test-writer agent to…" |
Protecting main
Changes reach main only through a PR that a human merges. Three layers, strongest first:
- Gitea branch protection on
main(set in the repo settings on code.westerkam.org): the only layer that can't be bypassed from a clone. - Git hooks in
.githooks/(enabled bynpm install):pre-pushrejects any push that would updatemain, however it's spelled;pre-commit/pre-merge-commitrefuse commits whilemainis checked out.--no-verifyskips them. - Claude Code deny rules in
.claude/settings.jsonforgit push … main: a quick early stop, but they match command text, so they're easy to get around.
Things to try
- "There's a bug in how ids are assigned after removing a todo — find it and fix it with a test."
- "Use the test-writer agent to cover
src/todo.js." - "Add a
--jsonflag tols." then/code-review /changelogafter a few commits- Press
shift+tabto cycle permission modes (e.g. plan mode before a bigger change) /memoryto edit CLAUDE.md,/agentsand/hooksto inspect the setup