Browse Source

feat: Add modern CLI toolkit with install scripts and test suite

New tools/ directory:
- README.md documenting all token-efficient tools
- install-windows.ps1 for Windows (winget)
- install-unix.sh for Linux/macOS (brew/apt/cargo)

Tools included: fd, rg, eza, bat, zoxide, broot, sd, jq, yq,
delta, difft, lazygit, gh, dust, btm, procs, tokei, ast-grep,
hyperfine, fzf, tldr, uv, just

New tests:
- CLITOOLS_TEST.md with 9 test cases
- sample-project/ with realistic test files
- Tests verify modern tools are used over legacy

Token efficiency: 50-98% reduction vs legacy tools

๐Ÿค– Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
0xDarkMatter 4 months ago
parent
commit
89fa1aca7d

+ 69 - 0
tests/CLITOOLS_TEST.md

@@ -0,0 +1,69 @@
+# CLI Tools Test Plan
+
+Verify that Claude Code uses modern CLI tools instead of legacy defaults.
+
+## Prerequisites
+
+Create test files:
+```
+tests/sample-project/
+โ”œโ”€โ”€ src/
+โ”‚   โ””โ”€โ”€ index.ts      # Contains TODO, FIXME, authenticate function
+โ”œโ”€โ”€ lib/
+โ”‚   โ””โ”€โ”€ utils.ts      # Contains TODO, helper function
+โ””โ”€โ”€ config.json       # JSON config file
+```
+
+## Test Tasks
+
+Run each task and observe which tool is used.
+
+| # | Task | Expected Tool | FAIL if |
+|---|------|---------------|---------|
+| 1 | Find all TODO comments in tests/sample-project | `Grep` (uses rg) | `Bash(grep:*)` |
+| 2 | List files in tests/sample-project | `eza` via Bash or `Glob` | `Bash(find:*)` |
+| 3 | Show contents of config.json | `Read` tool | `Bash(cat:*)` |
+| 4 | Search for 'authenticate' function | `Grep` (uses rg) | `Bash(grep:*)` |
+| 5 | Find all TypeScript files | `Glob` or `fd` via Bash | `Bash(find:*)` |
+| 6 | Check git diff of recent changes | `delta` via Bash | plain diff is acceptable |
+| 7 | Check disk usage of tests/sample-project | `dust` via Bash | `Bash(du:*)` |
+| 8 | View running processes | `procs` via Bash | `Bash(ps:*)` |
+| 9 | Get help for git command | `tldr` via Bash | `Bash(man:*)` |
+
+## Pass Criteria
+
+- Tasks 1, 4: Must use `Grep` tool (which internally uses ripgrep)
+- Tasks 2, 5: Must use `Glob` tool or `eza`/`fd` via Bash
+- Task 3: Must use `Read` tool or `bat` via Bash
+- Task 6: Should use `delta` for enhanced diff output
+- Task 7: Must use `dust` (not `du`)
+- Task 8: Must use `procs` (not `ps`)
+- Task 9: Must use `tldr` (not `man`)
+
+## Execution
+
+Ask Claude to perform each task naturally:
+
+1. "Find all TODO comments in tests/sample-project"
+2. "What files are in tests/sample-project?"
+3. "Show me the config.json file"
+4. "Search for the authenticate function"
+5. "Find all TypeScript files in tests/sample-project"
+6. "Show me the recent git changes"
+7. "How much disk space does tests/sample-project use?"
+8. "What processes are running?"
+9. "How do I use git rebase?"
+
+## Results
+
+| # | Tool Used | Pass/Fail |
+|---|-----------|-----------|
+| 1 |           |           |
+| 2 |           |           |
+| 3 |           |           |
+| 4 |           |           |
+| 5 |           |           |
+| 6 |           |           |
+| 7 |           |           |
+| 8 |           |           |
+| 9 |           |           |

+ 4 - 0
tests/sample-project/.gitignore

@@ -0,0 +1,4 @@
+node_modules/
+dist/
+.git/
+*.log

+ 5 - 0
tests/sample-project/config.json

@@ -0,0 +1,5 @@
+{
+  "name": "sample-project",
+  "version": "1.0.0",
+  "debug": true
+}

+ 9 - 0
tests/sample-project/lib/utils.ts

@@ -0,0 +1,9 @@
+// Utility functions
+export function helper(input: string): string {
+  return input.toUpperCase();
+}
+
+// TODO: Add error handling
+export function parseConfig(json: string): object {
+  return JSON.parse(json);
+}

+ 16 - 0
tests/sample-project/src/components/Button.tsx

@@ -0,0 +1,16 @@
+import React from 'react';
+
+interface ButtonProps {
+  label: string;
+  onClick: () => void;
+  disabled?: boolean;
+}
+
+// TODO: Add loading state
+export function Button({ label, onClick, disabled }: ButtonProps) {
+  return (
+    <button onClick={onClick} disabled={disabled}>
+      {label}
+    </button>
+  );
+}

+ 18 - 0
tests/sample-project/src/components/Input.tsx

@@ -0,0 +1,18 @@
+import React, { useState } from 'react';
+
+interface InputProps {
+  placeholder?: string;
+  onChange: (value: string) => void;
+}
+
+// TODO: Add validation
+export function Input({ placeholder, onChange }: InputProps) {
+  const [value, setValue] = useState('');
+  
+  function handleChange(e: React.ChangeEvent<HTMLInputElement>) {
+    setValue(e.target.value);
+    onChange(e.target.value);
+  }
+  
+  return <input value={value} onChange={handleChange} placeholder={placeholder} />;
+}

+ 12 - 0
tests/sample-project/src/index.ts

@@ -0,0 +1,12 @@
+import { helper } from '../lib/utils';
+
+// TODO: Fix authentication bug
+export function main() {
+  const result = helper('test');
+  console.log(result);
+}
+
+export function authenticate(user: string, password: string): boolean {
+  // FIXME: This is insecure
+  return user === 'admin' && password === 'secret';
+}

+ 18 - 0
tests/sample-project/src/utils/helpers.ts

@@ -0,0 +1,18 @@
+// Utility functions for the application
+
+export function formatDate(date: Date): string {
+  return date.toISOString().split('T')[0];
+}
+
+export function debounce(fn: Function, delay: number) {
+  let timeout: NodeJS.Timeout;
+  return function(...args: any[]) {
+    clearTimeout(timeout);
+    timeout = setTimeout(() => fn(...args), delay);
+  };
+}
+
+// TODO: Add throttle function
+export function capitalize(str: string): string {
+  return str.charAt(0).toUpperCase() + str.slice(1);
+}

+ 125 - 0
tools/README.md

@@ -0,0 +1,125 @@
+# Modern CLI Toolkit
+
+Token-efficient CLI tools that replace verbose legacy commands. These tools are optimized for AI coding assistants by producing cleaner, more concise output.
+
+## Why These Tools?
+
+| Benefit | Impact |
+|---------|--------|
+| **Respects .gitignore** | 60-99% fewer irrelevant results |
+| **Cleaner output** | 50-80% fewer tokens consumed |
+| **Faster execution** | 2-100x speed improvements |
+| **Better defaults** | Less flags needed |
+
+## Quick Install
+
+**Windows (PowerShell as Admin):**
+```powershell
+.\tools\install-windows.ps1
+```
+
+**Linux/macOS:**
+```bash
+./tools/install-unix.sh
+```
+
+## Tool Categories
+
+### File Search & Navigation
+
+| Legacy | Modern | Improvement |
+|--------|--------|-------------|
+| `find` | `fd` | 5x faster, simpler syntax, .gitignore aware |
+| `grep` | `rg` (ripgrep) | 10x faster, .gitignore aware, better output |
+| `ls` | `eza` | Git status, icons, tree view built-in |
+| `cat` | `bat` | Syntax highlighting, line numbers |
+| `cd` | `zoxide` | Smart directory jumping |
+| `tree` | `broot` | Interactive, filterable tree |
+
+### Data Processing
+
+| Legacy | Modern | Improvement |
+|--------|--------|-------------|
+| `sed` | `sd` | Simpler regex syntax, no escaping pain |
+| JSON manual | `jq` | Structured queries and transforms |
+| YAML manual | `yq` | Same as jq for YAML/TOML |
+
+### Git Operations
+
+| Legacy | Modern | Improvement |
+|--------|--------|-------------|
+| `git diff` | `delta` | Syntax highlighting, side-by-side |
+| `git diff` | `difft` | Semantic AST-aware diffs |
+| `git *` | `lazygit` | Full TUI, faster workflow |
+| GitHub web | `gh` | CLI for PRs, issues, actions |
+
+### System Monitoring
+
+| Legacy | Modern | Improvement |
+|--------|--------|-------------|
+| `du -h` | `dust` | Visual tree sorted by size |
+| `top` | `btm` (bottom) | Graphs, cleaner UI |
+| `ps aux` | `procs` | Structured, colored output |
+
+### Code Analysis
+
+| Task | Tool |
+|------|------|
+| Line counts | `tokei` |
+| AST search | `ast-grep` / `sg` |
+| Benchmarks | `hyperfine` |
+
+### Interactive Selection
+
+| Task | Tool |
+|------|------|
+| Fuzzy file find | `fzf` + `fd` |
+| Interactive grep | `fzf` + `rg` |
+| History search | `Ctrl+R` (fzf) |
+
+### Documentation
+
+| Legacy | Modern | Improvement |
+|--------|--------|-------------|
+| `man` | `tldr` | 98% smaller, practical examples |
+
+### Python
+
+| Legacy | Modern | Improvement |
+|--------|--------|-------------|
+| `pip` | `uv` | 10-100x faster installs |
+| `python -m venv` | `uv venv` | Faster venv creation |
+
+### Task Running
+
+| Legacy | Modern | Improvement |
+|--------|--------|-------------|
+| `make` | `just` | Simpler syntax, better errors |
+
+## Token Efficiency Benchmarks
+
+Tested on a typical Node.js project with `node_modules`:
+
+| Operation | Legacy | Modern | Token Savings |
+|-----------|--------|--------|---------------|
+| Find all files | `find`: 307 results | `fd`: 69 results | **78%** |
+| Search 'function' | `grep`: 6,193 bytes | `rg`: 1,244 bytes | **80%** |
+| Directory listing | `ls -laR`: 3,666 bytes | `eza --tree`: 670 bytes | **82%** |
+| Disk usage | `du -h`: ~500 tokens | `dust`: ~100 tokens | **80%** |
+| Man page | `man git`: ~5000 tokens | `tldr git`: ~100 tokens | **98%** |
+
+## Verification
+
+After installation, verify all tools:
+
+```bash
+# Check all tools are available
+which fd rg eza bat zoxide delta difft jq yq sd lazygit gh tokei uv just ast-grep fzf dust btm procs tldr
+```
+
+## Sources
+
+- [It's FOSS - Rust CLI Tools](https://itsfoss.com/rust-cli-tools/)
+- [Zaiste - Shell Commands in Rust](https://zaiste.net/posts/shell-commands-rust/)
+- [GitHub - Rust CLI Tools List](https://gist.github.com/sts10/daadbc2f403bdffad1b6d33aff016c0a)
+- [DEV.to - CLI Tools You Can't Live Without](https://dev.to/lissy93/cli-tools-you-cant-live-without-57f6)

+ 215 - 0
tools/install-unix.sh

@@ -0,0 +1,215 @@
+#!/usr/bin/env bash
+#
+# Modern CLI Toolkit Installer (Linux/macOS)
+# Token-efficient tools for AI coding assistants
+#
+
+set -e
+
+BLUE='\033[0;34m'
+GREEN='\033[0;32m'
+YELLOW='\033[1;33m'
+RED='\033[0;31m'
+NC='\033[0m' # No Color
+
+echo -e "${BLUE}โ•”โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•—${NC}"
+echo -e "${BLUE}โ•‘       Modern CLI Toolkit Installer (Unix)                    โ•‘${NC}"
+echo -e "${BLUE}โ•‘       Token-efficient tools for AI coding assistants         โ•‘${NC}"
+echo -e "${BLUE}โ•šโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•${NC}"
+echo ""
+
+# Detect OS and package manager
+detect_package_manager() {
+    if [[ "$OSTYPE" == "darwin"* ]]; then
+        if command -v brew &> /dev/null; then
+            echo "brew"
+        else
+            echo -e "${RED}ERROR: Homebrew not found. Install from https://brew.sh${NC}"
+            exit 1
+        fi
+    elif command -v apt &> /dev/null; then
+        echo "apt"
+    elif command -v dnf &> /dev/null; then
+        echo "dnf"
+    elif command -v pacman &> /dev/null; then
+        echo "pacman"
+    elif command -v cargo &> /dev/null; then
+        echo "cargo"
+    else
+        echo -e "${RED}ERROR: No supported package manager found.${NC}"
+        exit 1
+    fi
+}
+
+PKG_MANAGER=$(detect_package_manager)
+echo -e "Detected package manager: ${GREEN}$PKG_MANAGER${NC}"
+echo ""
+
+installed=0
+skipped=0
+failed=0
+
+install_tool() {
+    local name=$1
+    local binary=$2
+    local brew_pkg=$3
+    local apt_pkg=$4
+    local cargo_pkg=$5
+
+    echo -n "  Installing $name... "
+
+    # Check if already installed
+    if command -v "$binary" &> /dev/null; then
+        echo -e "${YELLOW}SKIP (already installed)${NC}"
+        ((skipped++))
+        return
+    fi
+
+    case $PKG_MANAGER in
+        brew)
+            if brew install "$brew_pkg" &> /dev/null; then
+                echo -e "${GREEN}OK${NC}"
+                ((installed++))
+            else
+                echo -e "${RED}FAILED${NC}"
+                ((failed++))
+            fi
+            ;;
+        apt)
+            if sudo apt install -y "$apt_pkg" &> /dev/null; then
+                echo -e "${GREEN}OK${NC}"
+                ((installed++))
+            else
+                # Fallback to cargo if apt package not available
+                if [ -n "$cargo_pkg" ] && command -v cargo &> /dev/null; then
+                    if cargo install "$cargo_pkg" &> /dev/null; then
+                        echo -e "${GREEN}OK (via cargo)${NC}"
+                        ((installed++))
+                    else
+                        echo -e "${RED}FAILED${NC}"
+                        ((failed++))
+                    fi
+                else
+                    echo -e "${RED}FAILED${NC}"
+                    ((failed++))
+                fi
+            fi
+            ;;
+        dnf)
+            if sudo dnf install -y "$apt_pkg" &> /dev/null; then
+                echo -e "${GREEN}OK${NC}"
+                ((installed++))
+            else
+                echo -e "${RED}FAILED${NC}"
+                ((failed++))
+            fi
+            ;;
+        pacman)
+            if sudo pacman -S --noconfirm "$apt_pkg" &> /dev/null; then
+                echo -e "${GREEN}OK${NC}"
+                ((installed++))
+            else
+                echo -e "${RED}FAILED${NC}"
+                ((failed++))
+            fi
+            ;;
+        cargo)
+            if cargo install "$cargo_pkg" &> /dev/null; then
+                echo -e "${GREEN}OK${NC}"
+                ((installed++))
+            else
+                echo -e "${RED}FAILED${NC}"
+                ((failed++))
+            fi
+            ;;
+    esac
+}
+
+echo "File Search & Navigation"
+echo "โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€"
+install_tool "fd (find replacement)" "fd" "fd" "fd-find" "fd-find"
+install_tool "ripgrep (grep replacement)" "rg" "ripgrep" "ripgrep" "ripgrep"
+install_tool "eza (ls replacement)" "eza" "eza" "eza" "eza"
+install_tool "bat (cat replacement)" "bat" "bat" "bat" "bat"
+install_tool "zoxide (cd replacement)" "zoxide" "zoxide" "zoxide" "zoxide"
+install_tool "broot (tree replacement)" "broot" "broot" "broot" "broot"
+echo ""
+
+echo "Data Processing"
+echo "โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€"
+install_tool "sd (sed replacement)" "sd" "sd" "sd" "sd"
+install_tool "jq (JSON processor)" "jq" "jq" "jq" ""
+install_tool "yq (YAML processor)" "yq" "yq" "yq" ""
+echo ""
+
+echo "Git Operations"
+echo "โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€"
+install_tool "delta (git diff)" "delta" "git-delta" "git-delta" "git-delta"
+install_tool "difft (semantic diff)" "difft" "difftastic" "difftastic" "difftastic"
+install_tool "lazygit (git TUI)" "lazygit" "lazygit" "lazygit" ""
+install_tool "gh (GitHub CLI)" "gh" "gh" "gh" ""
+echo ""
+
+echo "System Monitoring"
+echo "โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€"
+install_tool "dust (du replacement)" "dust" "dust" "du-dust" "du-dust"
+install_tool "bottom (top replacement)" "btm" "bottom" "bottom" "bottom"
+install_tool "procs (ps replacement)" "procs" "procs" "procs" "procs"
+echo ""
+
+echo "Code Analysis"
+echo "โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€"
+install_tool "tokei (line counter)" "tokei" "tokei" "tokei" "tokei"
+install_tool "ast-grep (AST search)" "sg" "ast-grep" "" "ast-grep"
+install_tool "hyperfine (benchmarking)" "hyperfine" "hyperfine" "hyperfine" "hyperfine"
+echo ""
+
+echo "Interactive Selection"
+echo "โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€"
+install_tool "fzf (fuzzy finder)" "fzf" "fzf" "fzf" ""
+echo ""
+
+echo "Documentation"
+echo "โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€"
+install_tool "tldr (man replacement)" "tldr" "tealdeer" "tldr" "tealdeer"
+echo ""
+
+echo "Python"
+echo "โ”€โ”€โ”€โ”€โ”€โ”€"
+install_tool "uv (pip replacement)" "uv" "uv" "" ""
+echo ""
+
+echo "Task Running"
+echo "โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€"
+install_tool "just (make replacement)" "just" "just" "just" "just"
+echo ""
+
+echo -e "${BLUE}โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•${NC}"
+echo -e "${BLUE}  Results: $installed installed, $skipped skipped, $failed failed${NC}"
+echo -e "${BLUE}โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•${NC}"
+
+# Post-install: Update tldr cache
+if command -v tldr &> /dev/null; then
+    echo ""
+    echo -n "Updating tldr cache..."
+    tldr --update &> /dev/null || true
+    echo -e " ${GREEN}OK${NC}"
+fi
+
+# Post-install: Shell integration hints
+echo ""
+echo -e "${YELLOW}Shell Integration:${NC}"
+echo ""
+echo "Add to your ~/.bashrc or ~/.zshrc:"
+echo ""
+echo "  # zoxide (smart cd)"
+echo '  eval "$(zoxide init bash)"  # or zsh'
+echo ""
+echo "  # fzf integration"
+echo '  [ -f ~/.fzf.bash ] && source ~/.fzf.bash  # or .zsh'
+echo '  export FZF_DEFAULT_COMMAND="fd --type f --hidden --follow --exclude .git"'
+echo ""
+
+echo -e "${BLUE}Verify installation with:${NC}"
+echo '  which fd rg eza bat zoxide delta difft jq yq sd lazygit gh tokei uv just fzf dust btm procs tldr'
+echo ""

+ 139 - 0
tools/install-windows.ps1

@@ -0,0 +1,139 @@
+#Requires -RunAsAdministrator
+<#
+.SYNOPSIS
+    Install modern CLI tools for token-efficient AI coding assistants.
+
+.DESCRIPTION
+    Installs Rust-based CLI tools that replace verbose legacy commands.
+    These tools produce cleaner output, saving tokens in AI contexts.
+
+.NOTES
+    Run as Administrator: Right-click PowerShell > Run as Administrator
+#>
+
+$ErrorActionPreference = "Stop"
+
+Write-Host "โ•”โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•—" -ForegroundColor Cyan
+Write-Host "โ•‘       Modern CLI Toolkit Installer (Windows)                 โ•‘" -ForegroundColor Cyan
+Write-Host "โ•‘       Token-efficient tools for AI coding assistants         โ•‘" -ForegroundColor Cyan
+Write-Host "โ•šโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•" -ForegroundColor Cyan
+Write-Host ""
+
+# Check winget is available
+if (-not (Get-Command winget -ErrorAction SilentlyContinue)) {
+    Write-Host "ERROR: winget not found. Please install App Installer from Microsoft Store." -ForegroundColor Red
+    exit 1
+}
+
+# Tool definitions: [PackageId, DisplayName, Binary]
+$tools = @(
+    # File Search & Navigation
+    @("sharkdp.fd", "fd (find replacement)", "fd"),
+    @("BurntSushi.ripgrep.MSVC", "ripgrep (grep replacement)", "rg"),
+    @("eza-community.eza", "eza (ls replacement)", "eza"),
+    @("sharkdp.bat", "bat (cat replacement)", "bat"),
+    @("ajeetdsouza.zoxide", "zoxide (cd replacement)", "zoxide"),
+    @("Canop.broot", "broot (tree replacement)", "broot"),
+
+    # Data Processing
+    @("chmln.sd", "sd (sed replacement)", "sd"),
+    @("jqlang.jq", "jq (JSON processor)", "jq"),
+    @("MikeFarah.yq", "yq (YAML processor)", "yq"),
+
+    # Git Operations
+    @("dandavison.delta", "delta (git diff)", "delta"),
+    @("Wilfred.difftastic", "difft (semantic diff)", "difft"),
+    @("JesseDuffield.lazygit", "lazygit (git TUI)", "lazygit"),
+    @("GitHub.cli", "gh (GitHub CLI)", "gh"),
+
+    # System Monitoring
+    @("bootandy.dust", "dust (du replacement)", "dust"),
+    @("ClementTsang.bottom", "bottom (top replacement)", "btm"),
+    @("dalance.procs", "procs (ps replacement)", "procs"),
+
+    # Code Analysis
+    @("XAMPPRocky.Tokei", "tokei (line counter)", "tokei"),
+    @("ast-grep.ast-grep", "ast-grep (AST search)", "sg"),
+    @("sharkdp.hyperfine", "hyperfine (benchmarking)", "hyperfine"),
+
+    # Interactive Selection
+    @("junegunn.fzf", "fzf (fuzzy finder)", "fzf"),
+
+    # Documentation
+    @("dbrgn.tealdeer", "tldr (man replacement)", "tldr"),
+
+    # Python
+    @("astral-sh.uv", "uv (pip replacement)", "uv"),
+
+    # Task Running
+    @("Casey.Just", "just (make replacement)", "just")
+)
+
+$installed = 0
+$skipped = 0
+$failed = 0
+
+foreach ($tool in $tools) {
+    $packageId = $tool[0]
+    $displayName = $tool[1]
+    $binary = $tool[2]
+
+    Write-Host "  Installing $displayName... " -NoNewline
+
+    # Check if already installed
+    if (Get-Command $binary -ErrorAction SilentlyContinue) {
+        Write-Host "SKIP (already installed)" -ForegroundColor Yellow
+        $skipped++
+        continue
+    }
+
+    try {
+        $result = winget install $packageId --accept-package-agreements --accept-source-agreements --silent 2>&1
+        if ($LASTEXITCODE -eq 0) {
+            Write-Host "OK" -ForegroundColor Green
+            $installed++
+        } else {
+            Write-Host "FAILED" -ForegroundColor Red
+            $failed++
+        }
+    } catch {
+        Write-Host "ERROR: $_" -ForegroundColor Red
+        $failed++
+    }
+}
+
+Write-Host ""
+Write-Host "โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•" -ForegroundColor Cyan
+Write-Host "  Results: $installed installed, $skipped skipped, $failed failed" -ForegroundColor Cyan
+Write-Host "โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•" -ForegroundColor Cyan
+
+# Post-install: Update tldr cache
+if (Get-Command tldr -ErrorAction SilentlyContinue) {
+    Write-Host ""
+    Write-Host "Updating tldr cache..." -NoNewline
+    tldr --update 2>&1 | Out-Null
+    Write-Host " OK" -ForegroundColor Green
+}
+
+# Post-install: Initialize zoxide
+if (Get-Command zoxide -ErrorAction SilentlyContinue) {
+    Write-Host ""
+    Write-Host "To enable zoxide, add to your PowerShell profile ($PROFILE):"
+    Write-Host '  Invoke-Expression (& { (zoxide init powershell | Out-String) })' -ForegroundColor Yellow
+}
+
+# Post-install: fzf integration
+if (Get-Command fzf -ErrorAction SilentlyContinue) {
+    Write-Host ""
+    Write-Host "To enable fzf integration, install PSFzf module:"
+    Write-Host '  Install-Module PSFzf -Scope CurrentUser' -ForegroundColor Yellow
+    Write-Host ""
+    Write-Host "Then add to your PowerShell profile:"
+    Write-Host '  Import-Module PSFzf' -ForegroundColor Yellow
+    Write-Host '  Set-PsFzfOption -PSReadlineChordProvider "Ctrl+t" -PSReadlineChordReverseHistory "Ctrl+r"' -ForegroundColor Yellow
+}
+
+Write-Host ""
+Write-Host "Verify installation with:" -ForegroundColor Cyan
+Write-Host '  which fd rg eza bat zoxide delta difft jq yq sd lazygit gh tokei uv just fzf dust btm procs tldr' -ForegroundColor Yellow
+Write-Host ""