An opinionated, comprehensive Claude Code starter template — installable as a plugin, forkable as a base repo, runnable in a devcontainer.
Covers: slash commands, subagents, auto-triggered skills, output styles, status line, hooks, MCP servers, CI/CD (GitHub Actions + GitLab), Agent SDK examples, devcontainer with egress firewall, and more.
If you already use Claude Code:
/plugin install scotthavird/claude-code-template
This gives you all commands, agents, skills, output styles, and hooks from this template, without forking the repo.
- Use this template to create a new repo.
- Open in a container — VS Code / Cursor will prompt to "Reopen in Container", or use
Cmd+Shift+P→ Dev Containers: Reopen in Container. Claude Code, Prettier, ESLint, Ruff, and GH extensions are pre-installed. - Authenticate — copy
.claude/settings.local.json.example→.claude/settings.local.jsonand add yourANTHROPIC_API_KEY, or runclaude /login. - Start a session —
claudein the repo root. - Try a command —
/analyze-project,/review, or/debug.
/analyze-project /commit /pr /test /lint-fix /review
/security-review /debug /refactor /explain /doc /implement-issue
security-auditor doc-generator test-runner pr-reviewer
refactor-planner debugger dependency-auditor
code-review db-migration test-writing api-design
performance-audit accessibility effort-aware
concise educational review
- Format on save — Prettier / Ruff / gofmt / rustfmt
- Block dangerous bash — destructive patterns, force-push to main, pipe-to-shell (with quote/comment-aware matching)
- Inject context on session start — branch, commits, open PRs
- Redact secrets from tool output — uses v2.1.122
updatedToolOutputto scrub keys/JWTs/PATs before the model sees them - PreCompact checkpoint — saves session state before compaction drops context (v2.1.105+)
- Session cost on stop — total cost plus per-tool
duration_msbreakdown (v2.1.121+)
.github/workflows/claude.yml—@claudementions in issues/PRs.github/workflows/claude-review.yml— automatic review on new PRs.gitlab-ci.yml— GitLab equivalentscripts/ci-review.sh— headless-mode example
sdk/ has TypeScript and Python starters including a custom-tool example.
- Node 20 + Python 3.12 + Docker-in-Docker
- Egress firewall (
init-firewall.sh) restricting outbound network to an allowlist (Anthropic API, GitHub, npm, PyPI) ~/.claudemounted so global settings and auto-memory persist
.claude-plugin/ plugin.json + marketplace.json
.claude/ commands, agents, skills, output-styles, statusline, settings
.devcontainer/ container + firewall
.github/workflows/ Claude Code CI
.mcp.json filesystem, memory, git, fetch
docs/ best-practices, permission-modes, hooks-cookbook, plugins, agent-sdk, integrations
scripts/ hook scripts + log analyzer + CI review
sdk/ TypeScript + Python SDK starters
CLAUDE.md persistent system prompt
- Best practices
- Permission modes
- Hooks cookbook
- Plugins
- Agent SDK
- Integrations
- The
.claude/directory
Create .claude/commands/my-command.md:
---
description: What this command does
argument-hint: [arg1]
allowed-tools: Bash(git:*), Read
---
Your prompt here. $ARGUMENTS becomes the user's input.Create .claude/agents/my-agent.md:
---
name: my-agent
description: When this agent should be used.
tools: Read, Grep, Glob, Bash
model: sonnet
---
System prompt for the agent...Create .claude/skills/my-skill/SKILL.md:
---
name: my-skill
description: Triggers on X, Y, Z contexts.
allowed-tools: Read, Grep
---
Instructions for the skill...logs/is gitignored — hook logs may contain sensitive prompts/outputs..claude/settings.local.jsonis gitignored — put personal API keys there.- Permission rules deny
Read(.env),Read(./secrets/**),Bash(rm -rf:*),Bash(sudo:*), and pipe-to-shell patterns by default. - The PreToolUse hook
block-dangerous-bash.shprovides a second layer. - The devcontainer firewall restricts egress to a fixed allowlist.
- Claude Code overview
- Commands
- Hooks
- Skills
- Subagents
- Plugins
- Settings
- MCP
- Agent SDK
- GitHub Actions
- DevContainers
Fork, customize, share. If you add a broadly useful command / skill / agent, PRs are welcome.
MIT — see LICENSE.