SQLFormat
name: SQLFormat
by bytesagain3 · published 2026-03-22
$ claw add gh:bytesagain3/bytesagain3-sqlformat---
name: SQLFormat
description: "Format, lint, and pretty-print SQL with dialect conversion. Use when checking style, validating syntax, formatting queries, generating clean SQL."
version: "2.0.0"
author: "BytesAgain"
homepage: https://bytesagain.com
source: https://github.com/bytesagain/ai-skills
tags: ["sql","format","lint","query","database","developer"]
categories: ["Developer Tools", "Utility"]
---
# SQLFormat
SQL query formatter, linter, and devtools toolkit. Check SQL style, validate syntax, format and pretty-print queries, lint for best practices, explain execution plans, convert between dialects, and manage SQL templates — all from the command line.
Commands
Run `sqlformat <command> [args]` to use. Each command records timestamped entries to its own log file.
Core Operations
| Command | Description |
|---------|-------------|
| `check <input>` | Check SQL code for style or correctness issues |
| `validate <input>` | Validate SQL syntax against rules |
| `generate <input>` | Generate formatted SQL snippets or boilerplate |
| `format <input>` | Format and pretty-print a SQL query with proper indentation |
| `lint <input>` | Lint SQL for style violations and anti-patterns |
| `explain <input>` | Record query explanation or execution plan notes |
| `convert <input>` | Convert SQL between dialects (MySQL ↔ PostgreSQL, etc.) |
| `template <input>` | Store or retrieve reusable SQL templates |
| `diff <input>` | Record differences between SQL versions |
| `preview <input>` | Preview a formatting transformation before applying |
| `fix <input>` | Log an applied fix to a SQL issue |
| `report <input>` | Record a formatting or lint report |
Utility Commands
| Command | Description |
|---------|-------------|
| `stats` | Show summary statistics across all log files (entry counts, disk usage) |
| `export <fmt>` | Export all data in a given format: `json`, `csv`, or `txt` |
| `search <term>` | Search across all log files for a keyword (case-insensitive) |
| `recent` | Display the last 20 lines from the activity history log |
| `status` | Health check — version, data dir, entry count, disk usage |
| `help` | Show the full command reference |
| `version` | Print current version (v2.0.0) |
> **Note:** Each core command works in two modes — call with no arguments to view recent entries (last 20), or pass input to record a new timestamped entry.
Data Storage
All data is stored locally in plain-text log files:
~/.local/share/sqlformat/
├── check.log # Style check records
├── validate.log # Syntax validation results
├── generate.log # Generated SQL snippets
├── format.log # Formatted query records
├── lint.log # Lint findings
├── explain.log # Execution plan notes
├── convert.log # Dialect conversion records
├── template.log # Reusable SQL templates
├── diff.log # SQL version diffs
├── preview.log # Preview entries
├── fix.log # Applied fix records
├── report.log # Lint/format reports
└── history.log # Unified activity log (all commands)Each entry is stored as `YYYY-MM-DD HH:MM|<input>` (pipe-delimited). The `history.log` file receives a line for every command executed, providing a single timeline of all activity.
Requirements
When to Use
1. **Code review prep** — use `format` and `lint` to clean up SQL before submitting a pull request
2. **SQL style enforcement** — use `check` and `lint` to document style violations across a codebase
3. **Dialect migration** — use `convert` when porting queries from MySQL to PostgreSQL (or vice versa)
4. **Query documentation** — use `explain` and `template` to catalog common query patterns with notes
5. **Batch formatting workflows** — use `generate` and `preview` to build formatted SQL output pipelines
Examples
# Format a messy query
sqlformat format "SELECT u.id,u.name,o.total FROM users u JOIN orders o ON u.id=o.user_id WHERE o.status='active'"
# Lint SQL for anti-patterns
sqlformat lint "SELECT * FROM users WHERE 1=1"
# Validate SQL syntax
sqlformat validate "INSERT INTO products (name, price) VALUES ('Widget', 9.99)"
# Convert MySQL to PostgreSQL syntax
sqlformat convert "MySQL: AUTO_INCREMENT -> PostgreSQL: SERIAL"
# Store a reusable template
sqlformat template "pagination: SELECT * FROM {table} LIMIT {limit} OFFSET {offset}"
# Export all records to CSV
sqlformat export csv
# Search for entries about JOIN formatting
sqlformat search JOIN
# View statistics
sqlformat statsConfiguration
Set the `SQLFORMAT_DIR` environment variable to change the data directory:
export SQLFORMAT_DIR="/custom/path/to/data"Default: `~/.local/share/sqlformat/`
---
Powered by BytesAgain | bytesagain.com | hello@bytesagain.com
More tools from the same signal band
Order food/drinks (点餐) on an Android device paired as an OpenClaw node. Uses in-app menu and cart; add goods, view cart, submit order (demo, no real payment).
Sign plugins, rotate agent credentials without losing identity, and publicly attest to plugin behavior with verifiable claims and authenticated transfers.
The philosophical layer for AI agents. Maps behavior to Spinoza's 48 affects, calculates persistence scores, and generates geometric self-reports. Give your...