# SmartTools **A lightweight personal tool builder for AI-powered CLI commands.** Turn any AI model into a Unix-style pipe command. Build once, use forever. ```bash # Fix grammar in any file echo "teh cat sat on teh mat" | fix-grammar # Output: The cat sat on the mat # Explain errors instantly cat error.log | explain-error # Generate commit messages git diff --staged | commit-msg # Extract data as validated JSON echo "Price $49.99, SKU ABC-123" | json-extract --fields "price, sku" # Output: {"price": 49.99, "sku": "ABC-123"} ``` ## Why SmartTools? - **Unix Philosophy** - Tools that do one thing well, composable with pipes - **Provider Agnostic** - Works with Claude, GPT, Gemini, DeepSeek, local models - **No Lock-in** - Your tools are YAML files, your prompts are yours - **Multi-step Pipelines** - Chain AI prompts with Python code for validation - **12+ Providers Profiled** - We tested them so you don't have to ## Quick Start ```bash # Install pip install smarttools # Ensure ~/.local/bin is in PATH export PATH="$HOME/.local/bin:$PATH" # Launch the UI smarttools ui # Or create your first tool smarttools create summarize ``` ## Installation ### From PyPI (Recommended) ```bash pip install smarttools ``` ### From Source ```bash git clone https://gitea.brrd.tech/rob/smarttools.git cd smarttools pip install -e . ``` ### Requirements - Python 3.10+ - At least one AI CLI tool installed (see [Provider Setup](docs/PROVIDERS.md)) - Optional: `urwid` for the TUI (`pip install urwid`) ### Post-Install Add to your `~/.bashrc` or `~/.zshrc`: ```bash export PATH="$HOME/.local/bin:$PATH" ``` Then refresh wrapper scripts: ```bash smarttools refresh ``` ## Usage ### UI Mode (Recommended for Beginners) ```bash smarttools ui ``` Navigate with arrow keys, Tab, Enter, and mouse. Create tools visually with the built-in prompt editor. ### CLI Mode ```bash smarttools list # List all tools smarttools create mytool # Create new tool smarttools edit mytool # Edit in $EDITOR smarttools delete mytool # Delete tool smarttools run mytool # Run a tool smarttools test mytool # Test with mock provider smarttools refresh # Update executable wrappers ``` ### Running Tools Once created, tools work like any Unix command: ```bash # Direct invocation mytool -i input.txt -o output.txt # Pipe input (most common) cat file.txt | mytool # With arguments echo "hello" | translate --lang French # Preview without calling AI cat file.txt | mytool --dry-run # Test with mock provider cat file.txt | mytool --provider mock ``` ## Example Tools SmartTools comes with 28 pre-built examples you can install: ### Text Processing | Tool | Description | Example | |------|-------------|---------| | `summarize` | Condense documents | `cat article.txt \| summarize` | | `translate` | Translate text | `echo "Hello" \| translate --lang Spanish` | | `fix-grammar` | Fix spelling/grammar | `cat draft.txt \| fix-grammar` | | `simplify` | Rewrite for clarity | `cat legal.txt \| simplify --level "5th grade"` | | `tone-shift` | Change tone | `cat email.txt \| tone-shift --tone professional` | | `eli5` | Explain like I'm 5 | `cat quantum.txt \| eli5` | | `tldr` | One-line summary | `cat readme.txt \| tldr` | | `expand` | Expand bullet points | `cat notes.txt \| expand` | ### Developer Tools | Tool | Description | Example | |------|-------------|---------| | `explain-error` | Explain stack traces | `cat error.log \| explain-error` | | `explain-code` | Explain what code does | `cat script.py \| explain-code` | | `review-code` | Quick code review | `cat pr.diff \| review-code --focus security` | | `gen-tests` | Generate unit tests | `cat module.py \| gen-tests --framework pytest` | | `docstring` | Add docstrings | `cat functions.py \| docstring` | | `commit-msg` | Generate commit message | `git diff --staged \| commit-msg` | ### Data Tools | Tool | Description | Example | |------|-------------|---------| | `json-extract` | Extract as validated JSON | `cat text.txt \| json-extract --fields "name, email"` | | `json2csv` | Convert JSON to CSV | `cat data.json \| json2csv` | | `extract-emails` | Extract email addresses | `cat page.html \| extract-emails` | | `extract-contacts` | Extract contacts as CSV | `cat notes.txt \| extract-contacts` | | `sql-from-text` | Natural language to SQL | `echo "get active users" \| sql-from-text` | | `safe-sql` | SQL with safety checks | `echo "delete old records" \| safe-sql` | | `parse-log` | Analyze log files | `cat app.log \| parse-log --focus errors` | | `csv-insights` | Analyze CSV data | `cat sales.csv \| csv-insights --question "trends?"` | ### Advanced Multi-Step Tools | Tool | Description | Pattern | |------|-------------|---------| | `log-errors` | Extract & explain errors from huge logs | Code→AI | | `diff-focus` | Review only added lines | Code→AI | | `changelog` | Git log to formatted changelog | Code→AI→Code | | `code-validate` | Generate syntax-checked Python | AI→Code | ### Install Example Tools ```bash # Download and run the example installer curl -sSL https://gitea.brrd.tech/rob/smarttools/raw/branch/main/examples/install.py | python3 # Or manually copy from examples/ ``` ## Providers SmartTools works with any AI CLI tool. We've profiled 12 providers: | Provider | Speed | Accuracy | Cost | Best For | |----------|-------|----------|------|----------| | `opencode-deepseek` | 13s | 4/4 | Cheap | **Best value** - daily use | | `opencode-pickle` | 13s | 4/4 | FREE | **Best free** - accurate | | `claude-haiku` | 14s | 4/4 | Paid | Fast + accurate | | `codex` | 14s | 4/4 | Paid | Reliable | | `claude-opus` | 18s | 4/4 | $$$ | Highest quality | | `gemini` | 91s | 3/4 | Paid | Large docs (1M tokens) | See [docs/PROVIDERS.md](docs/PROVIDERS.md) for setup instructions. ## Tool Anatomy A tool is a YAML config file in `~/.smarttools//config.yaml`: ```yaml name: summarize description: Condense documents to key points arguments: - flag: --length variable: length default: "3-5 bullet points" steps: - type: prompt prompt: | Summarize this text into {length}: {input} provider: opencode-pickle output_var: response output: "{response}" ``` ### Multi-Step Tools Chain AI prompts with Python code for powerful workflows: ```yaml name: json-extract description: Extract data as validated JSON steps: # Step 1: AI extracts data - type: prompt prompt: "Extract {fields} as JSON from: {input}" provider: opencode-deepseek output_var: raw_json # Step 2: Code validates JSON - type: code code: | import json try: parsed = json.loads(raw_json) validated = json.dumps(parsed, indent=2) except: validated = "ERROR: Invalid JSON" output_var: validated output: "{validated}" ``` ### Variables | Variable | Description | |----------|-------------| | `{input}` | The piped/file input | | `{argname}` | Custom argument value | | `{step_output}` | Output from previous step | ## Shell Integration ### Git Hooks ```bash # .git/hooks/prepare-commit-msg #!/bin/bash git diff --cached | commit-msg > "$1" ``` ### Aliases ```bash # ~/.bashrc alias gc='git diff --staged | commit-msg' alias wtf='explain-error' alias fixme='fix-grammar' ``` ### Vim Integration ```vim " Fix grammar in selection vnoremap fg :!fix-grammar " Explain selected code vnoremap ec :!explain-code ``` ## UI Navigation | Action | Keys | |--------|------| | Cycle sections | `Tab` | | Go back | `Escape` | | Select | `Enter` or click | | Navigate | Arrow keys | | **Select text** | `Shift` + mouse drag | | **Copy** | Terminal native (with Shift) | | **Paste** | `Ctrl+Shift+V` | **Tip:** Hold `Shift` while using mouse for terminal-native text selection. ## Philosophy SmartTools is a **personal power tool**: - **You own your tools** - YAML files you can read, edit, share - **You choose the AI** - Any provider, swap anytime - **You accept responsibility** - No sandboxing, like any script you write - **Unix philosophy** - Small tools that compose ## Contributing ```bash git clone https://gitea.brrd.tech/rob/smarttools.git cd smarttools pip install -e ".[dev]" pytest ``` ## Support If SmartTools saves you time, consider supporting the project: **Bitcoin:** `3KeLqGv2Xo8jGYkqA1i68a6nXwgQnuJoza` **Questions?** robdickson444@hotmail.com ## License MIT - Use it, modify it, share it. ## Links - [Installation Guide](docs/INSTALL.md) - [Provider Setup](docs/PROVIDERS.md) - [Example Tools](docs/EXAMPLES.md) - [Design Document](docs/DESIGN.md)