尚未收集仓库信息。
尚未检测到更新。GitHub 发布版本后会显示在这里。
Read-only Supabase RLS check that explains, in plain Arabic, which tables anyone can read or change. CLI + MCP server; no keys, no connection.
翻译准备中
正在加载完整 README。
查看完整 README ↗A read-only query you run in your own Supabase SQL Editor, and an analyser that explains the result table by table:
The findings are written in Arabic for non-technical founders, with English labels (exposed, check it,
locked, safe), and each one links to an Arabic lesson on the fix.
lib/rls-check.js is the site's analyser, copied byte for byte.Open the check page, copy the query, run it in Supabase and paste the result. Everything happens in your browser; nothing is sent anywhere.
npx muhandis-rls-check query > query.sql # the query: run it in your SQL Editor
npx muhandis-rls-check result.json # paste the result cell into a file; this explains it
npx muhandis-rls-check result.json --json # the same explanation as JSON
It exits with 1 when a table is exposed, so it can be a CI step.
Add it to Claude, Cursor or any MCP client. The assistant runs the query (through the official Supabase MCP, for example) and this server explains the result. The server itself holds no connection details.
{
"mcpServers": {
"muhandis-rls-check": { "command": "npx", "args": ["-y", "muhandis-rls-check", "mcp"] }
}
}
Tools: rls_check_query returns the query, rls_check_explain explains a result.
The same check as a Claude skill: Claude gives you the query, then runs the pasted result
through skills/rls-check/scripts/rls_check.py, a Python copy of the analyser that the tests hold to the same output
as lib/rls-check.js. It needs no key and makes no network call.
rls-check.zip from the latest release,
then Customize > Skills, upload it and turn it on. Code execution must be enabled./plugin marketplace add Muhandis-online/rls-check
/plugin install rls-check@muhandis
| Label | Arabic | Meaning |
|---|---|---|
exposed | مكشوف | RLS is off and the visitor role has a grant; or a policy whose condition is true on a table with personal columns; or a view without security_invoker that visitors can read; or an update or delete policy open to everyone |
check it | تأكد منه | Data everyone can read that has no personal columns, such as a product list; or inserts without sign-in, such as a contact form |
locked | مقفول | RLS on with no policies, or no grants: the app cannot reach it |
safe | سليم | Policies tied to the row's owner through auth.uid() |
Personal columns are recognised by name (email, phone, user_id, iban, national, iqama and similar).
This checks the rules you can see; it does not replace a test. After it, sign in with two accounts and confirm each one sees only its own rows. Supabase's own Security Advisor flags related issues (RLS disabled, security-definer views, permissive policies); this tool adds an explanation in Arabic for the product's owner, and a link to how to fix each finding.
Found an exposed table and want an engineer to fix it with you? muhandis.online/services/fix
Made by Muhandis, a software company for businesses in Saudi Arabia and the GCC. MIT licence.