ChooChoo for Claude Code.
Context engineering for the most capable coding agent.
Claude Code reads CLAUDE.md at session start — your team's standards, architecture, and guardrails loaded before the first keystroke. ChooChoo generates, maintains, and governs those files across every repo.
One settings file. Full agent governance.
ChooChoo generates .claude/settings.json — the single file that controls what Claude Code can and can't do. Permissions whitelist safe commands and blacklist dangerous ones. Hooks run deterministically at every stage of the agent lifecycle. Checked into git, enforced on every developer's machine.
- Allow-list safe commands: test runners, linters, git read operations
- Deny-list destructive operations: force push, rm -rf, curl, DROP TABLE
- PreToolUse hooks block dangerous commands before they execute
- PostToolUse hooks lint after every edit; Stop hooks verify before finishing
- Project settings shared via git; personal overrides in settings.local.json
{
"permissions": {
"allow": [
"Bash(mise run test*)",
"Bash(mise run lint*)",
"Bash(mise run fmt*)",
"Bash(git status)",
"Bash(git diff*)",
"Bash(git log*)",
"Bash(git branch*)",
"Bash(uv run pytest*)",
"Read",
"Grep",
"Glob"
],
"deny": [
"Bash(rm -rf *)",
"Bash(git push --force*)",
"Bash(git reset --hard*)",
"Bash(git checkout -- *)",
"Bash(curl*)",
"Bash(wget*)",
"Bash(docker rm*)",
"Bash(DROP TABLE*)"
]
},
"hooks": {
"PreToolUse": [
{
"matcher": "Bash",
"hooks": [{
"type": "command",
"command": "choochoo guard check-command"
}]
}
],
"PostToolUse": [
{
"matcher": "Edit|Write",
"hooks": [{
"type": "command",
"command": "choochoo guard lint-changed"
}]
}
],
"Stop": [
{
"hooks": [{
"type": "command",
"command": "choochoo guard verify-done"
}]
}
]
},
"env": {
"CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD": "1"
}
} CLAUDE.md — the file Claude reads first.
Claude Code loads CLAUDE.md from the project root at every session start. It's the single source of truth for how the agent should behave in your repo — commands, code standards, guardrails, and architecture decisions.
- Loaded automatically from project root, .claude/, parent dirs, and subdirectories
- Subdirectory CLAUDE.md files load on-demand as Claude navigates your repo
- User-level ~/.claude/CLAUDE.md applies your personal defaults across all projects
- ChooChoo generates and keeps them current — no manual maintenance
# CLAUDE.md
# Generated by ChooChoo — do not edit by hand.
# Run: choochoo context generate
## What this is
payments-api: a FastAPI service handling financial
transactions. Provides Claude Code with structured
startup context for this repository.
## Commands
mise run dev Start dev server (hot-reload on)
mise run test Full test suite (pytest -v)
mise run lint Ruff lint check
mise run fix Auto-fix lint + format
## Code Standards
- Python 3.12 with strict mypy — no untyped Any
- Ruff formatting (line-length = 100)
- Pydantic models for all API inputs/outputs
- Tests required for all new business logic
## Guardrails
- Never log secrets, payment tokens, or card data
- SQL through SQLAlchemy ORM — no raw strings
- All external inputs validated at the API boundary
## Architecture
ADR-001 JWT (RS256) — keys in secrets manager
ADR-007 API versioned under /v1/, /v2/ namespaces .claude/rules/ — modular context by topic.
Break your instructions into focused rule files instead of one massive CLAUDE.md. Claude Code discovers and loads all .md files in .claude/rules/ automatically — security rules, testing conventions, service patterns, each in its own file.
- One file per concern: security.md, testing.md, services.md
- Checked into git so every team member gets the same rules
- ChooChoo generates rules from your actual linting config, ADRs, and CI setup
- Staleness detection alerts you when rules drift from your codebase
# Security Rules
## Secrets Management
- Never paste real API keys or tokens into prompts
- Virtual keys belong in .claude/settings.local.json
- .env files are deny-listed in permissions
## Database Safety
- Never manually delete system tables
- Use parameterized queries with asyncpg
- Don't run DROP TABLE without confirmation
## Gateway
- Virtual keys are per-user credentials
- Changes to gateway config affect all users Why use ChooChoo with Claude Code?
Claude Code is the most configurable coding agent available. ChooChoo makes sure that configurability works for your team, not against it.
Context That Stays Current
CLAUDE.md and .claude/rules/ generated from your actual codebase — not a snapshot from six months ago. Auto-updated when standards change.
Deterministic Guardrails
Hooks block dangerous operations before they execute. Permission settings deny force-push, rm -rf, and other destructive commands.
Team-Wide Consistency
Project settings checked into git mean every developer's Claude Code follows the same rules. No per-machine configuration drift.
Full Session Visibility
ChooChoo's local app indexes every Claude Code session — full-text search, cost tracking, and quality scores across your team.
Eval-Driven Improvement
Agent readiness scoring tells you how well Claude Code performs in your repo. Context files improve automatically based on eval results.
Works With Your Stack
ChooChoo reads your linting config, ADRs, CI pipelines, and test conventions — then compiles context files that reflect your actual engineering standards.
Get the most out of Claude Code.
Context files, hooks, settings, and permissions — generated and maintained by ChooChoo.