Dogfooded claude_internal/ for this repo¶
This directory shows how we use Claude Code on the very repo that teaches
Claude Code. Nothing here is magic — it's the same primitives (settings.json,
skills/, hooks) documented in guides/.
What's wired up¶
settings.json¶
- PreToolUse →
tools/hooks/block-secrets.shonWrite/Edit. Stops anyone (human or Claude) from committing AWS keys, private keys, or common API tokens by accident. This is the same script shipped undertools/hooks/for readers to install. - PostToolUse →
tools/hooks/format-on-write.shonWrite/Edit. Auto-formats files after changes, silently if no formatter is installed. - Permissions. A narrow allowlist for read-only git and the repo's own
lint/benchmark scripts, plus a deny list that blocks
git pushandrm -rfso Claude can't fire destructive commands without explicit user override.
skills/lint-docs¶
Repo-local skill that runs the three lint gates (shellcheck, markdownlint,
lint-claude-md.sh) the way CI runs them, so you can catch violations before
pushing. Invoke with /lint-docs.
Install notes for your own project¶
Don't copy this file verbatim — copy the pattern:
- Pin the hook scripts your team relies on in
claude_internal/settings.jsonso every clone gets the same guardrails. - Keep the permissions list narrow. An allowlist beats a denylist for most repos; add items as Claude asks for them in practice.
- Put repo-local skills under
claude_internal/skills/. User-global skills belong in~/claude_internal/skills/.
See also¶
- CLAUDE.md — how to work on this repo
- guides/hooks.md — hook reference
- guides/security-practices.md — why block-secrets exists
- tools/hooks/index.md — the hook scripts