Dockerfile Linter & Best Practices Checker
Dockerfile linter with fixes: non-root user, pinned slim images, secrets in ENV/ARG, apt cache, COPY order, .dockerignore. SARIF + Claude Code skill. $19.
View Dockerfile Linter & Best Practices Checker
See which tables anyone with your public anon key can read or change, and get the migration that fixes them.

Row Level Security is the only thing standing between your Supabase anon key (which is public, in your JavaScript) and your data. This checker reads your migration files and tells you, before you deploy, which tables anyone can read or change, which policies are secretly true for everyone, and which ones will make your queries slow, with the SQL to fix each one.
The screenshot is real output from the kit’s own commands. Tested from a fresh download of this exact zip: ./run_tests.sh ran 11 tests OK on Python 3.13 and 3.10.

python3 -m rlscheck # the project in the current folder
python3 -m rlscheck path/to/app --fix-sql supabase/migrations/20261110000000_fix_rls.sql
python3 -m rlscheck . --format md > RLS-REPORT.md
python3 -m rlscheck . --schema api # also check another exposed schema./demo.sh runs it on a fictional notes app (5 errors, 6 warnings) and the fixed version (clean). ./run_tests.sh runs 11 tests.
| Rule | Level | Finds |
|---|---|---|
| RLS001 | error | table in public without RLS (0013) |
| RLS003 | error | policies exist but RLS is off (0007) |
| RLS004 | error / note | using (true) / with check (true) on update, delete, insert or all (0024); public read noted |
| RLS006 | error | policies that read user_metadata (0015) |
| RLS009 | error | grant ... to anon/authenticated on a table without RLS |
| RLS012 | error | everyone can read a table with sensitive column names (email, phone, token, card_number...) (0023) |
| RLS005 | warning | auth.uid() / auth.jwt() not wrapped in (select ...) (0003) |
| RLS008 | warning | insert policy that doesn't check the owner column |
| RLS010 | warning | views without security_invoker = true (0010) |
| RLS011 | warning | security definer functions without set search_path (0011) |
| RLS013 | warning | security definer functions in public callable by anon (0028) |
| RLS014 | warning | update/delete allowed for any signed-in user |
| RLS002 | note | RLS on but no policies (0008) |
| RLS007 | note | several permissive policies for the same role and action (0006) |
Related: Vibe Coding Security Audit (keys, routes, webhooks): https://youraitools.co/marketplace/vibe-coding-security-audit. Cursor Rules for Supabase: https://youraitools.co/marketplace/cursor-rules-supabase
Zip, 17 KB, v1.0, 16 files. You may use and modify this kit for your own work and for clients you serve, including paid client work. Not affiliated with or endorsed by Supabase.
Supabase RLS checker for migrations: tables without RLS, using (true) policies, user_metadata, slow auth.uid(), definer views. Fix SQL included. $19.
Dockerfile linter with fixes: non-root user, pinned slim images, secrets in ENV/ARG, apt cache, COPY order, .dockerignore. SARIF + Claude Code skill. $19.
View Dockerfile Linter & Best Practices CheckerFree GitHub Actions security checker: script injection, pull_request_target, unpinned actions, token permissions and secrets, with fixes. Offline, SARIF.
View GitHub Actions Security Checker (Free)Free schema markup validator: check JSON-LD against Google's rich result rules, spot retired FAQ and HowTo markup, bad prices and dates. Files, folders or URLs.
View Free Schema Markup ValidatorShort weekly digest of new x402 + MCP tools and free kits, including the MCP OAuth Checker. No spam, unsubscribe any time.