|
|
@@ -0,0 +1,227 @@
|
|
|
+---
|
|
|
+name: init-tools
|
|
|
+description: "Initialize Claude Code with dev-shell-tools. Creates permissions, rules, and tool preferences in .claude/ directory."
|
|
|
+---
|
|
|
+
|
|
|
+# /init-tools
|
|
|
+
|
|
|
+Initialize Claude Code with modern dev-shell-tools for a comfortable development experience.
|
|
|
+
|
|
|
+## What This Does
|
|
|
+
|
|
|
+**Installs complete dev environment setup:**
|
|
|
+
|
|
|
+1. **Permissions** (`.claude/settings.local.json`) - Pre-approved CLI tools
|
|
|
+2. **Rules** (`.claude/rules/cli-tools.md`) - Instructions to prefer modern tools
|
|
|
+
|
|
|
+Tools from [dev-shell-tools](https://github.com/0xDarkMatter/dev-shell-tools):
|
|
|
+
|
|
|
+**Core Tools:**
|
|
|
+- **Git**: Full git access, lazygit, gh (GitHub CLI)
|
|
|
+- **File ops**: ls, mkdir, cat, wc, tree, eza, bat
|
|
|
+- **Search**: rg (ripgrep), fd, fzf, ast-grep/sg
|
|
|
+- **Navigation**: zoxide/z, broot/br
|
|
|
+- **Data processing**: jq, yq, sd
|
|
|
+- **Diff tools**: delta, difft (difftastic)
|
|
|
+- **Analysis**: tokei, procs, hyperfine
|
|
|
+
|
|
|
+**Dev Tools:**
|
|
|
+- **Package managers**: npm, node, python, uv, pip
|
|
|
+- **Task runners**: just
|
|
|
+- **Network**: curl, http (httpie)
|
|
|
+- **Windows**: powershell
|
|
|
+
|
|
|
+## Execution Flow
|
|
|
+
|
|
|
+```
|
|
|
+/init-tools
|
|
|
+ |
|
|
|
+ +-- Check for existing .claude/ files
|
|
|
+ | +-- If exists: Ask to overwrite or skip
|
|
|
+ | +-- If not: Proceed
|
|
|
+ |
|
|
|
+ +-- Create .claude directory
|
|
|
+ +-- Create .claude/rules directory
|
|
|
+ |
|
|
|
+ +-- Write settings.local.json (permissions)
|
|
|
+ +-- Write rules/cli-tools.md (tool preferences)
|
|
|
+```
|
|
|
+
|
|
|
+## Instructions
|
|
|
+
|
|
|
+### Step 1: Check for existing settings
|
|
|
+
|
|
|
+```bash
|
|
|
+ls -la .claude/settings.local.json 2>/dev/null
|
|
|
+ls -la .claude/rules/cli-tools.md 2>/dev/null
|
|
|
+```
|
|
|
+
|
|
|
+If files exist, ask user:
|
|
|
+- **Overwrite**: Replace entirely
|
|
|
+- **Skip**: Keep existing, do nothing
|
|
|
+
|
|
|
+### Step 2: Create directories
|
|
|
+
|
|
|
+```bash
|
|
|
+mkdir -p .claude/rules
|
|
|
+```
|
|
|
+
|
|
|
+### Step 3: Write permissions file
|
|
|
+
|
|
|
+Write to `.claude/settings.local.json`:
|
|
|
+
|
|
|
+```json
|
|
|
+{
|
|
|
+ "permissions": {
|
|
|
+ "allow": [
|
|
|
+ "Bash(git:*)",
|
|
|
+ "Bash(ls:*)",
|
|
|
+ "Bash(mkdir:*)",
|
|
|
+ "Bash(cat:*)",
|
|
|
+ "Bash(wc:*)",
|
|
|
+ "Bash(tree:*)",
|
|
|
+ "Bash(curl:*)",
|
|
|
+ "Bash(rg:*)",
|
|
|
+ "Bash(fd:*)",
|
|
|
+ "Bash(fzf:*)",
|
|
|
+ "Bash(z:*)",
|
|
|
+ "Bash(zoxide:*)",
|
|
|
+ "Bash(br:*)",
|
|
|
+ "Bash(broot:*)",
|
|
|
+ "Bash(ast-grep:*)",
|
|
|
+ "Bash(sg:*)",
|
|
|
+ "Bash(bat:*)",
|
|
|
+ "Bash(eza:*)",
|
|
|
+ "Bash(delta:*)",
|
|
|
+ "Bash(difft:*)",
|
|
|
+ "Bash(jq:*)",
|
|
|
+ "Bash(yq:*)",
|
|
|
+ "Bash(sd:*)",
|
|
|
+ "Bash(lazygit:*)",
|
|
|
+ "Bash(gh:*)",
|
|
|
+ "Bash(tokei:*)",
|
|
|
+ "Bash(uv:*)",
|
|
|
+ "Bash(just:*)",
|
|
|
+ "Bash(http:*)",
|
|
|
+ "Bash(procs:*)",
|
|
|
+ "Bash(hyperfine:*)",
|
|
|
+ "Bash(npm:*)",
|
|
|
+ "Bash(node:*)",
|
|
|
+ "Bash(python:*)",
|
|
|
+ "Bash(pip:*)",
|
|
|
+ "Bash(powershell -Command:*)",
|
|
|
+ "Bash(powershell.exe:*)"
|
|
|
+ ],
|
|
|
+ "deny": [],
|
|
|
+ "ask": []
|
|
|
+ },
|
|
|
+ "hooks": {}
|
|
|
+}
|
|
|
+```
|
|
|
+
|
|
|
+### Step 4: Write rules file
|
|
|
+
|
|
|
+Write to `.claude/rules/cli-tools.md`:
|
|
|
+
|
|
|
+```markdown
|
|
|
+# CLI Tool Preferences (dev-shell-tools)
|
|
|
+
|
|
|
+ALWAYS prefer modern CLI tools over traditional alternatives.
|
|
|
+
|
|
|
+## File Search & Navigation
|
|
|
+
|
|
|
+| Instead of | Use | Why |
|
|
|
+|------------|-----|-----|
|
|
|
+| `find` | `fd` | 5x faster, respects .gitignore |
|
|
|
+| `grep` | `rg` (ripgrep) | 10x faster, respects .gitignore |
|
|
|
+| `ls` | `eza` | Git status, tree view |
|
|
|
+| `cat` | `bat` | Syntax highlighting |
|
|
|
+| `cd` + manual | `z`/`zoxide` | Frecent directories |
|
|
|
+| `tree` | `eza --tree` | Interactive |
|
|
|
+
|
|
|
+## Data Processing
|
|
|
+
|
|
|
+| Instead of | Use |
|
|
|
+|------------|-----|
|
|
|
+| `sed` | `sd` |
|
|
|
+| Manual JSON | `jq` |
|
|
|
+| Manual YAML | `yq` |
|
|
|
+
|
|
|
+## Git Operations
|
|
|
+
|
|
|
+| Instead of | Use |
|
|
|
+|------------|-----|
|
|
|
+| `git diff` | `delta` or `difft` |
|
|
|
+| Manual git | `lazygit` |
|
|
|
+| GitHub web | `gh` |
|
|
|
+
|
|
|
+## Code Analysis
|
|
|
+
|
|
|
+- Line counts: `tokei`
|
|
|
+- AST search: `ast-grep` / `sg`
|
|
|
+- Benchmarks: `hyperfine`
|
|
|
+
|
|
|
+## Python
|
|
|
+
|
|
|
+| Instead of | Use |
|
|
|
+|------------|-----|
|
|
|
+| `pip` | `uv` |
|
|
|
+| `python -m venv` | `uv venv` |
|
|
|
+
|
|
|
+## Task Running
|
|
|
+
|
|
|
+Prefer `just` over Makefiles.
|
|
|
+
|
|
|
+Reference: https://github.com/0xDarkMatter/dev-shell-tools
|
|
|
+```
|
|
|
+
|
|
|
+### Step 5: Confirm
|
|
|
+
|
|
|
+Report to user:
|
|
|
+```
|
|
|
+Initialized Claude Code with dev-shell-tools:
|
|
|
+
|
|
|
+Created:
|
|
|
+ .claude/settings.local.json (37 tool permissions)
|
|
|
+ .claude/rules/cli-tools.md (modern tool preferences)
|
|
|
+
|
|
|
+Claude will now:
|
|
|
+ - Auto-approve dev-shell-tools commands
|
|
|
+ - Prefer fd over find, rg over grep, bat over cat, etc.
|
|
|
+
|
|
|
+To customize: edit files in .claude/
|
|
|
+To add to git: git add .claude/
|
|
|
+```
|
|
|
+
|
|
|
+## Options
|
|
|
+
|
|
|
+| Flag | Effect |
|
|
|
+|------|--------|
|
|
|
+| `--force` | Overwrite existing without asking |
|
|
|
+| `--perms-only` | Only install permissions, skip rules |
|
|
|
+| `--rules-only` | Only install rules, skip permissions |
|
|
|
+| `--minimal` | Minimal permissions (git, ls, cat, mkdir only) |
|
|
|
+| `--full` | Add cloud/container tools (docker, kubectl, terraform, etc.) |
|
|
|
+
|
|
|
+### Full Template (--full)
|
|
|
+
|
|
|
+Adds to permissions:
|
|
|
+```json
|
|
|
+"Bash(docker:*)",
|
|
|
+"Bash(docker-compose:*)",
|
|
|
+"Bash(kubectl:*)",
|
|
|
+"Bash(helm:*)",
|
|
|
+"Bash(terraform:*)",
|
|
|
+"Bash(aws:*)",
|
|
|
+"Bash(gcloud:*)",
|
|
|
+"Bash(az:*)",
|
|
|
+"Bash(wrangler:*)"
|
|
|
+```
|
|
|
+
|
|
|
+## Notes
|
|
|
+
|
|
|
+- Permissions are project-local (don't affect other projects)
|
|
|
+- Rules instruct Claude to prefer modern tools
|
|
|
+- Global settings in `~/.claude/` still apply
|
|
|
+- Restart Claude Code session for changes to take effect
|
|
|
+- Tools from: https://github.com/0xDarkMatter/dev-shell-tools
|