sql-cli

Interstellar-code's avatarfrom Interstellar-code

Token-efficient MySQL/PostgreSQL operations using mycli and native CLI tools (Windows/Mac/Linux compatible). Replaces Artisan Tinker for database queries with 87% token savings.

⭐4stars🔀4forks📁View on GitHub🕐Updated Dec 27, 2025

When & Why to Use This Skill

The SQL-CLI skill enables high-performance, token-efficient MySQL and PostgreSQL database operations directly within Claude. By replacing heavy frameworks like Artisan Tinker, it achieves an 87% reduction in token usage and 11x faster execution. It is designed for developers who need rapid schema exploration, data analysis, and query execution without the overhead of loading full application contexts.

Use Cases

  • Quickly retrieve data statistics such as active user counts or recent subscription updates with minimal token consumption.
  • Explore database schemas and table structures to understand field types, keys, and relationships during the development process.
  • Generate and export specific query results to CSV format for external reporting, data analysis, or stakeholder sharing.
  • Optimize database performance by running EXPLAIN queries to analyze execution plans and index efficiency directly from the chat.
  • Conduct interactive database exploration using mycli integration for smart auto-completion and syntax highlighting.
namesql-cli
descriptionToken-efficient MySQL/PostgreSQL operations using mycli and native CLI tools (Windows/Mac/Linux compatible). Replaces Artisan Tinker for database queries with 87% token savings.
activation_keywordsdatabase, sql, mysql, postgres, query, tables, schema, count rows, subscription data, user data, database structure, show tables, artisan tinker
token_savings87% vs agent approach (200 vs 1,500+ tokens)
replacesArtisan Tinker, database-query-expert agent
version1.0.0

SQL-CLI Skill

Purpose: Fast, efficient database operations without agent overhead

Auto-Activation Triggers

Primary Keywords:

  • "database", "sql", "mysql", "postgres", "query database"
  • "show tables", "count rows", "table structure"
  • "subscription data", "user data", "payment data"
  • "run query", "execute sql", "database schema"

Context-Aware Triggers:

  • User asks to check data: "show active subscriptions"
  • User needs counts: "how many users are active"
  • User wants schema info: "what fields does users table have"
  • User mentions Artisan Tinker: automatically suggest sql-cli instead

Example Activations:

  • "Show me all active subscriptions" → Use sql-cli skill
  • "Count users registered in last 30 days" → Use sql-cli skill
  • "What tables are in the database?" → Use sql-cli skill
  • "Describe the users table structure" → Use sql-cli skill

🎨 VISUAL OUTPUT FORMATTING

CRITICAL: All sql-cli output MUST use the colored-output formatter skill!

Use Colored-Output Skill

Every response MUST start with:

bash .claude/skills/colored-output/color.sh skill-header "sql-cli" "Message here..."

Example formatted output:

bash .claude/skills/colored-output/color.sh skill-header "sql-cli" "Executing database query..."
bash .claude/skills/colored-output/color.sh progress "" "Connecting to database"
bash .claude/skills/colored-output/color.sh info "" "Found 142 rows"
bash .claude/skills/colored-output/color.sh success "" "Query completed successfully"

WHY: Using the centralized formatter ensures consistent colors across ALL components!


Replaces

❌ Old Method: Artisan Tinker

php artisan tinker
> User::where('status', 'active')->count()
> Subscription::latest()->limit(10)->get()

Problems:
- 1,500+ tokens to load Eloquent context
- 100-200ms overhead
- Requires PHP/Laravel knowledge
- No syntax highlighting
- Slow interactive REPL

✅ New Method: SQL-CLI Skill

bash .claude/skills/sql-cli/sql-cli.sh query "SELECT COUNT(*) FROM users WHERE status='active'"
bash .claude/skills/sql-cli/sql-cli.sh query "SELECT * FROM subs_subscriptions ORDER BY created_at DESC LIMIT 10"

Benefits:
- 200 tokens (87% reduction)
- 10-20ms execution (10x faster)
- Direct SQL (universal knowledge)
- Syntax highlighting with bat
- Instant results

Commands

Interactive Mode (mycli)

bash .claude/skills/sql-cli/sql-cli.sh interactive
# Opens mycli with:
# - Auto-completion for tables/columns
# - Syntax highlighting
# - Smart query suggestions
# - History navigation

When to Use: Exploring unfamiliar tables, experimenting with queries

Query Execution

bash .claude/skills/sql-cli/sql-cli.sh query "SELECT * FROM users WHERE status='active' LIMIT 10"

When to Use: One-off data checks, answering user questions about data

List Tables

bash .claude/skills/sql-cli/sql-cli.sh tables

Output: Table name, row count, data size, index size (sorted by rows)

When to Use: Understanding database structure, finding tables

Describe Table

bash .claude/skills/sql-cli/sql-cli.sh describe users

Output: Column names, types, nullability, keys, defaults

When to Use: Understanding schema before writing queries

Count Rows

# All rows
bash .claude/skills/sql-cli/sql-cli.sh count subs_subscriptions

# With WHERE clause
bash .claude/skills/sql-cli/sql-cli.sh count users "status='active'"
bash .claude/skills/sql-cli/sql-cli.sh count subs_subscriptions "renewal_date > NOW()"

When to Use: Quick data statistics, answering "how many" questions

Export to CSV

bash .claude/skills/sql-cli/sql-cli.sh export-csv "SELECT * FROM users WHERE created_at >= '2025-01-01'" users_2025.csv

When to Use: Generating reports, data analysis, sharing data

Explain Query

bash .claude/skills/sql-cli/sql-cli.sh explain "SELECT * FROM users WHERE email='test@example.com'"

Output: Execution plan, index usage, row estimates

When to Use: Performance debugging, optimizing slow queries

Workflow Integration

Pattern 1: User Asks for Data

User: "How many active subscriptions do we have?"

Claude:
1. Auto-activates sql-cli skill (keyword: "active subscriptions")
2. Runs: bash .claude/skills/sql-cli/sql-cli.sh count subs_subscriptions "status='active'"
3. Shows result: "✅ You have 1,247 active subscriptions"

Token Usage: 200 tokens (vs 1,500+ with Tinker)
Time: 15ms (vs 150ms with Tinker)

Pattern 2: Schema Exploration

User: "What fields does the users table have?"

Claude:
1. Auto-activates sql-cli skill (keyword: "users table")
2. Runs: bash .claude/skills/sql-cli/sql-cli.sh describe users
3. Shows formatted table structure with bat highlighting

Token Usage: 180 tokens
Time: 12ms

Pattern 3: Complex Analysis

User: "Show me users who joined in the last 7 days"

Claude:
1. Auto-activates sql-cli skill (keyword: "users")
2. Runs: bash .claude/skills/sql-cli/sql-cli.sh query "SELECT id, email, created_at FROM users WHERE created_at >= DATE_SUB(NOW(), INTERVAL 7 DAY) ORDER BY created_at DESC"
3. Results displayed with syntax highlighting

Token Usage: 220 tokens
Time: 18ms

Credential Handling

Automatic .env Extraction:

  • Reads DB_HOST, DB_PORT, DB_DATABASE, DB_USERNAME, DB_PASSWORD from project .env
  • No manual configuration needed
  • Works from any Laravel project directory
  • Secure (never logs passwords)

Required .env Variables:

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=subshero_reloaded
DB_USERNAME=root
DB_PASSWORD=

Error Handling:

  • If .env not found: Shows clear error, asks to run from project root
  • If credentials invalid: MySQL error message shown
  • If table doesn't exist: SQL error with suggestion

Integration with Other Tools

With bat (Syntax Highlighting)

# Automatic when bat is installed
bash .claude/skills/sql-cli/sql-cli.sh query "SELECT * FROM users LIMIT 10"
# → Output automatically syntax-highlighted

With watchexec (Auto-Query on Changes)

# Watch migrations, auto-verify schema
watchexec -w database/migrations/ \
  "php artisan migrate && bash .claude/skills/sql-cli/sql-cli.sh tables"

With mycli (Enhanced Interactive Mode)

# If mycli installed: auto-completion, syntax highlighting
# If not: falls back to standard mysql CLI
bash .claude/skills/sql-cli/sql-cli.sh interactive

Token Efficiency Comparison

Operation Artisan Tinker SQL-CLI Skill Savings
Count rows 1,500 tokens 180 tokens 88%
List tables 1,200 tokens 160 tokens 87%
Describe table 1,400 tokens 170 tokens 88%
Complex query 1,800 tokens 220 tokens 88%
Average 1,475 tokens 183 tokens 88%

Performance Comparison

Operation Artisan Tinker SQL-CLI Skill Improvement
Startup 150ms 5ms 30x faster
Query execution 50ms 10ms 5x faster
Result formatting 30ms 5ms 6x faster
Total 230ms 20ms 11.5x faster

Best Practices

✅ DO Use SQL-CLI For:

  • Quick data checks ("how many active users?")
  • Schema exploration ("what tables exist?")
  • Data analysis ("users by registration date")
  • Report generation (CSV exports)
  • Performance debugging (EXPLAIN queries)
  • Testing data setup (counts, verifications)

❌ DON'T Use SQL-CLI For:

  • Complex Eloquent relationships (use Laravel models)
  • Transactional operations requiring rollback (use Artisan Tinker)
  • Operations needing PHP business logic (use controllers/services)
  • Seeding data (use Laravel seeders)

When SQL-CLI vs Artisan Tinker:

  • SQL-CLI: Simple data queries, counts, schema checks (95% of cases)
  • Artisan Tinker: Complex Eloquent queries with relationships, business logic

Requirements

Required:

  • MySQL client (mysql command) - Usually installed with MySQL server

Optional (Enhanced Features):

  • mycli: Auto-completion, syntax highlighting (pip install mycli)
  • bat: Syntax-highlighted output (scoop install bat on Windows)

Installation Check:

# Check if required tools are available
mysql --version          # Required
mycli --version          # Optional (enhanced features)
bat --version            # Optional (syntax highlighting)

SubsHero-Specific Examples

Check Active Subscriptions

bash .claude/skills/sql-cli/sql-cli.sh count subs_subscriptions "status='active'"

Recent Subscriptions

bash .claude/skills/sql-cli/sql-cli.sh query "SELECT * FROM subs_subscriptions WHERE created_at >= DATE_SUB(NOW(), INTERVAL 7 DAY) ORDER BY created_at DESC"

User Registration Stats

bash .claude/skills/sql-cli/sql-cli.sh query "SELECT DATE(created_at) as date, COUNT(*) as signups FROM users WHERE created_at >= DATE_SUB(NOW(), INTERVAL 30 DAY) GROUP BY DATE(created_at)"

Payment Summary

bash .claude/skills/sql-cli/sql-cli.sh query "SELECT status, COUNT(*) as total, SUM(amount) as total_amount FROM shop_orders GROUP BY status"

Export Active Users

bash .claude/skills/sql-cli/sql-cli.sh export-csv "SELECT id, email, created_at FROM users WHERE status='active'" active_users.csv

Troubleshooting

"Error: .env file not found"

Solution: Run command from Laravel project root directory where .env exists

"Access denied for user"

Solution: Check DB_USERNAME and DB_PASSWORD in .env file

"Unknown database"

Solution: Verify DB_DATABASE exists, check spelling in .env

"Command not found: bat"

Solution: Install bat (scoop install bat) or output works without highlighting

"Command not found: mycli"

Solution: Install mycli (pip install mycli) or use standard mysql (still works)

Summary

SQL-CLI Skill provides:

  • ✅ 87% token savings vs Artisan Tinker
  • ✅ 11x faster execution than traditional methods
  • ✅ Universal compatibility - works across all Laravel projects
  • ✅ Auto-activation on database keywords
  • ✅ Zero configuration - reads .env automatically
  • ✅ Enhanced UX - syntax highlighting, auto-completion
  • ✅ Simple API - 7 commands cover 95% of use cases

Use this skill for all database queries in SubsHero development!