Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Audit SQL for the cost & performance anti-patterns that burn warehouse credits. Scores warehouse health 0-100 and outputs a prioritized cost-reduction plan for BigQuery, Snowflake, Redshift, and Postgres.
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-07 | ✗→✓ | ▲ Improved | -14% | 0% |
| case-10 | ✗→✓ | ▲ Improved | 31% | 0% |
| case-13 | ✗→✓ | ▲ Improved | -26% | 0% |
| case-22 | ✗→✓ | ▲ Improved | 18% | 0% |
| case-05 | ✓→✓ | = Same ✓ | 108% | 0% |
A static-analysis skill that audits SQL for the cost & performance anti-patterns that dominate warehouse bills — SELECT *, full-table scans, non-sargable predicates, Cartesian joins, the NOT IN NULL trap, and 15 more. It scores warehouse query health 0-100 (A-F) and outputs a prioritized cost-reduction plan, each finding with a why, a concrete fix, and an estimated savings.
Built for analytics engineers (dbt, Looker), data platform teams running FinOps / "reduce cloud spend" initiatives, and anyone reviewing a SQL pull request before it hits production. Works across BigQuery, Snowflake, Redshift, and Postgres. Zero dependencies, MIT licensed.
The executable engine and full rule set live in the source repository: https://github.com/takeaseatventure/sql-sentinel. Treat that repository as third-party executable code.
The engine splits a SQL script into statements (honoring quotes and comments), runs 20 rules over each statement, scores health 0-100 weighted by severity (critical 25, high 12, medium 5, low 1), and returns a prioritized cost-reduction plan.
Install or clone the source repository only after choosing a reviewed commit, tag, or release to trust. Do not run code from a mutable default branch just because this skill links to it:
bashgit clone https://github.com/takeaseatventure/sql-sentinel.git cd sql-sentinel git checkout <reviewed-commit-or-tag> node scripts/sql-sentinel.js path/to/query.sql
Or programmatically:
javascriptconst { auditSql } = require('./scripts/sql-sentinel'); const report = auditSql(yourSqlString, { dialect: 'bigquery' }); console.log(report.healthScore); // 0-100 console.log(report.grade); // 'A' | 'B' | 'C' | 'D' | 'E' | 'F' console.log(report.prioritizedPlan); // array, worst findings first
The output leads with critical findings (Cartesian joins, mass DELETE) and descends to low-severity style issues. Each finding explains why it costs money and how to fix it.
sqlSELECT DISTINCT * FROM user_events, raw_logs WHERE LOWER(event_name) LIKE '%signup%' AND user_id NOT IN (SELECT id FROM deleted_users) ORDER BY created_at;
The audit scores this 17/100 (grade F) and flags 7 findings:
SELECT * forces full column scan (30-90% wasted bytes on wide tables)LIKE '%signup%' defeats indexesLOWER(event_name) defeats indexes (non-sargable)NOT IN (SELECT ...) — NULL semantics hazardSELECT DISTINCT dedup costORDER BY without LIMIT sorts the full resultsql-- This scores 90+/100 (grade A) — no findings SELECT id, email, created_at FROM users WHERE created_at >= TIMESTAMP '2026-01-01' AND created_at < TIMESTAMP '2026-02-01' ORDER BY id LIMIT 100;
| Rule | Severity | Catches | |---|---|---| | SQL001 | high | SELECT * full column scan | | SQL002 | critical | No WHERE → full table scan | | SQL003 | high | LIKE '%term' non-sargable | | SQL004 | high | Function on column kills index | | SQL005 | critical | CROSS JOIN / comma-join | | SQL006 | medium | SELECT DISTINCT dedup cost | | SQL007 | medium | ORDER BY without LIMIT | | SQL008 | high | NOT IN (SELECT ...) NULL trap | | SQL009 | medium | Implicit type cast | | SQL010 | low | Many ORs (use IN/UNION) | | SQL011 | medium | COUNT(DISTINCT) at scale (use HLL) | | SQL012 | low | LIMIT without ORDER BY | | SQL013 | medium | Scalar subquery in SELECT | | SQL014 | medium | 5+ JOINs broadcast/spill risk | | SQL015 | high | Fact table, no partition filter | | SQL017 | low | String concat in SELECT | | SQL018 | medium | Window OVER () no PARTITION | | SQL020 | critical | DELETE/UPDATE without WHERE | | SQL021 | low | SELECT * in EXISTS/IN | | SQL022 | medium | UNION vs UNION ALL |
Run the test suite to verify each rule fires on real SQL:
bashcd scripts && node test.js # 26 tests, zero dependencies
*_events, *_log) and is advisory, not definitive..sql file.Other measured skills in the registry, with their headline benchmark lift.