🎁 Get the FREE AI Skills Starter Guide β€” Subscribe β†’
BytesAgainBytesAgain
πŸ¦€ ClawHub✦ BytesAgain

Sqlformat

by @bytesagain3

Format, lint, and pretty-print SQL with dialect conversion. Use when checking style, validating syntax, formatting queries, generating clean SQL.

Versionv2.0.0
Downloads539
Installs1
TERMINAL
clawhub install sqlformat

πŸ“– About This Skill


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 [args] to use. Each command records timestamped entries to its own log file.

Core Operations

| Command | Description | |---------|-------------| | check | Check SQL code for style or correctness issues | | validate | Validate SQL syntax against rules | | generate | Generate formatted SQL snippets or boilerplate | | format | Format and pretty-print a SQL query with proper indentation | | lint | Lint SQL for style violations and anti-patterns | | explain | Record query explanation or execution plan notes | | convert | Convert SQL between dialects (MySQL ↔ PostgreSQL, etc.) | | template | Store or retrieve reusable SQL templates | | diff | Record differences between SQL versions | | preview | Preview a formatting transformation before applying | | fix | Log an applied fix to a SQL issue | | report | Record a formatting or lint report |

Utility Commands

| Command | Description | |---------|-------------| | stats | Show summary statistics across all log files (entry counts, disk usage) | | export | Export all data in a given format: json, csv, or txt | | search | 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| (pipe-delimited). The history.log file receives a line for every command executed, providing a single timeline of all activity.

Requirements

  • Bash 4.0+ (uses set -euo pipefail)
  • Standard Unix utilities: date, wc, du, tail, grep, sed, cat, basename
  • No external dependencies β€” pure bash, works on any Linux or macOS system
  • 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 stats

    Configuration

    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

    ⚑ When to Use

    TriggerAction
    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 stats

    βš™οΈ Configuration

    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