{"repo":"ValkDB/valk-guard","free":true,"listed":false,"github":"https://github.com/ValkDB/valk-guard","clone":"git clone https://github.com/ValkDB/valk-guard.git","description":"Valk Guard scans raw SQL plus application code and catches risky queries before they merge. It parses real source code, synthesizes SQL from supported ORM/query-builder patterns, runs PostgreSQL-aware checks, and can post findings directly into pull requests.","language":"Go","stars":38,"topics":["database","developer-tools","drift-detection","golang","linter","postgres"],"license":"Apache-2.0","category":"databases-storage","readme_excerpt":"Valk Guard The SQL linter that catches production disasters at PR time. DELETE FROM orders without a WHERE ? SELECT on a 50M-row table? Valk Guard finds them in your code — before your pager does at 3am. --- Why Valk Guard? Most SQL linters use regex and only see raw .sql files. Valk Guard parses real source structure instead. It reads Goqu builder chains, SQLAlchemy ORM calls, Go db.Query invocations, and C# EF Core raw/query-builder calls with source-aware scanners — Go via go/ast , Python via ast , and C# via Roslyn. It synthesizes SQL from your ORM code, feeds it through a real PostgreSQL grammar, and runs every rule against it. That means: if your ORM builds a DELETE without a WHERE , Valk Guard catches it — even though no raw SQL exists anywhere in your source. What it prevents Example --- --- Accidental mass updates UPDATE users SET active = false (no WHERE) Unbounded queries SELECT id, email FROM users (no LIMIT) Index-killing patterns WHERE email LIKE '%@gmail.com' Dangerous migrations DROP TABLE , CREATE INDEX without CONCURRENTLY Schema drift ORM model says email exists, but migration dropped it ORM footguns session.query(User).delete() — no raw SQL, still caught Zero config. No database connection. Runs in CI in seconds. PostgreSQL only. Valk Guard uses a PostgreSQL parser. MySQL, SQLite, and other dialects are not supported. --- Quick Start That's it. All 19 rules are enabled by default. Pass one or more paths to scan only part of a repo: --- What It Catches Valk","default_branch":null,"files":null,"tree":[],"storefront":"/r/ValkDB","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/ValkDB/valk-guard/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}