# Setup Toolchain

> Enforce bun + tsgo as toolchain via PreToolUse hooks. Blocks npm, npx, tsc, global installs. Use when setting up toolchain enforcement or banning npm.

- Skill: `redpanda-data/setup-toolchain` (Agent Skill, multi-file: 4 files)
- Install (CLI): `npx skillmds@latest add redpanda-data/setup-toolchain`
- Raw SKILL.md: https://api.skillmd.com/api/skills/redpanda-data/setup-toolchain/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: redpanda-data (https://skillmd.com/u/redpanda-data)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/redpanda-data/setup-toolchain

---


# Setup Toolchain Enforcement

## What This Sets Up

- **PreToolUse hooks** block banned CLI commands, give actionable suggestions
- **Destructive command guards** prevent `rm -rf` (except safe targets like node_modules/.next/dist/build), `git push --force`, `git reset --hard`, `git checkout .` / `git restore .`
- **SessionStart hook** set env vars for LLM-friendly defaults
- Hooks in `.claude/settings.json` (project-level, committed to git)

## Steps

### 1. Create hook scripts

Copy [`scripts/enforce-toolchain.sh`](scripts/enforce-toolchain.sh) and [`scripts/session-env.sh`](scripts/session-env.sh) to `.claude/hooks/`. Make executable: `chmod +x .claude/hooks/*.sh`

### 2. Configure hooks in `.claude/settings.json`

Add to hooks config (merge existing):
- **PreToolUse** (matcher: `Bash`): `.claude/hooks/enforce-toolchain.sh`
- **SessionStart**: `.claude/hooks/session-env.sh`

### 3. Verify

- [ ] `.claude/hooks/enforce-toolchain.sh` exists, executable
- [ ] `.claude/hooks/session-env.sh` exists, executable
- [ ] `.claude/settings.json` has both hook entries
- [ ] Test: run `npm install` in Claude -- should block
- [ ] Test: run `bun add lodash` in Claude -- should block (missing --yarn)

### 4. Commit

Stage `.claude/hooks/` and `.claude/settings.json`. Commit: `Add toolchain enforcement hooks (bun + tsgo)`
