VibeRaven

io.github.ohad6k由 GitHub 帳號 ohad6k 發布v1.1.0更新於 Nov 6, 2026

Check Supabase migrations for RLS and grant gaps; fixes for Supabase, Vercel, Stripe errors.

已驗證Streamable HTTP可網頁執行資料庫開發者工具安全與監控

概覽

AI 產生的概覽

託管式 VibeRaven MCP 伺服器,可檢查 Supabase 遷移中的 RLS 與授權缺口,並提供 Supabase、Vercel、Stripe 上線問題的已發布指南。

可以做什麼
  • 檢查 Supabase 遷移 SQL 中缺少的 RLS、過於寬鬆的原則、暴露的 security definer 函式與 Data API 授權缺口
  • 用帶版本號的 playbook 規劃 provider 的設定與整合(目前有 Supabase 套件)
  • 解釋 VibeRaven 報告中的特定問題(如 rls_disabled、env_var_drift),說明影響、修正建議與涵蓋範圍限制
  • 搜尋已發布的排錯指南,涵蓋 Supabase RLS、Realtime、驗證回呼、Vercel 環境變數與 Stripe webhook
  • 回傳 Lovable 或 Next.js + Supabase + Vercel 應用程式的上線清單,並附可選的本機儲存庫檢查指令
適用情境
適合在 AI 打造的 Vercel + Supabase 應用程式上線或交接前、遷移或原則變更後,或正式環境錯誤指向 RLS、環境變數、連線池連接埠、Stripe webhook 時使用。它只提供靜態建議,不能取代對線上資料庫的檢查或安全稽核。
執行需求
遠端 streamable HTTP 端點位於 viberaven.dev;託管工具未宣告需要帳號、API 金鑰或請求標頭。它提到的可選本機檢查需要 Node.js 20 或更新版本,並在專案資料夾中透過 npx 執行。
安裝前請注意
此伺服器無法讀取你的儲存庫、執行 SQL 或驗證線上行為,結果乾淨不等於安全稽核或應用程式可用。傳給檢查工具的遷移檔案內容會送到遠端服務。可選的本機檢查會把結果寫入 .viberaven 資料夾,其修正指令可能新增遷移檔,套用前請先審閱。託管版 Studio 是另外的付費產品。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 VibeRaven,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Web executable,透過 Streamable HTTP。 遠端服務在工作區中設定後即可從網頁執行環境執行。

交給代理程式安裝

把這段提示詞貼上到 Claude Code、Codex、Cursor 等代理程式,或 SourceWeft 對話中。代理程式會讀取該伺服器的安裝指南,先向你展示發布者、端點和登入方式,經你同意後再把它新增到你的客戶端。金鑰不會寫進任何命令。

閱讀 https://sourceweft.com/mcp/io.github.ohad6k%2Fviberaven-guides/install.md,並按其中說明把這個 MCP 伺服器接入我的客戶端。修改任何設定之前,先告訴我它的發布者、端點和登入方式,等我確認。不要把 API 金鑰寫進命令或我會提交的檔案;問我金鑰應從哪裡取得。

檢視代理程式所依據的安裝指南

其他 MCP 客戶端

把它新增到你客戶端的 mcpServers 設定中。

{
  "mcpServers": {
    "viberaven": {
      "type": "http",
      "url": "https://viberaven.dev/mcp"
    }
  }
}

README

[VibeRaven]

VibeRaven

VibeRaven checks AI-built apps on Vercel + Supabase for launch gaps before you ship: tables without RLS, permissive policies such as using (true), service_role keys in client code, anon-callable security definer functions, the wrong pooler port and unverified Stripe webhooks.

Run npx -y [email protected] check in your app's folder. It reads the repository on your machine, needs no account, and names the file and line for each gap.

[Install from npm]   [Try it on viberaven.dev]   [Join the Discord]

[npm version] [npm downloads] [GitHub stars] [MIT license] [skills.sh pack] [Follow on X]

Website · What it checks · When to use it · How it compares · Local Studio · Agent skills · Releases

Quick start

Requires Node.js 20 or newer. From your app's project root:

bash
npx -y [email protected] check
  • In a terminal or CI: npx -y [email protected] check
  • For coding agents: npx -y [email protected] check
  • Windows PowerShell: use npx.cmd if npx is blocked by the execution policy.
  • In a coding agent you can also just ask: "check this with viberaven".

It reads supabase/migrations, your client and server code, package.json and .env.example. It does not connect to your Supabase project or send requests to your app. It exits 1 when it finds a blocker, so it also works as a CI step.

What it checks

FindingGap IDRelated Supabase Security Advisor lint
A public table created in a migration with row level security never enabledrls_disabledrls_disabled_in_public (guide)
A policy with using (true) that lets anyone read or write every rowrls_policy_allows_all_write, rls_policy_allows_all_readnone
The service_role key in a file that ships to the browser, or under a NEXT_PUBLIC_ nameservice_role_key_in_client_code, service_role_key_in_client_envnone
A security definer function in public that no migration closes to anonsecurity_definer_function_executableanon_security_definer_function_executable (guide)
A direct Postgres connection on port 5432 from serverless code, instead of the transaction pooler on 6543pooler_port_mismatchnone
A Stripe webhook handler that never checks the signature over the raw bodyunverified_stripe_webhooknone
Env vars that code reads but .env.example does not list, queries with no row limit, no error monitoringenv_var_drift, unbounded_query, missing_monitoringnone

Two other Security Advisor lints come up often in the same apps. VibeRaven has no rule for them yet, and the guides explain the fix:

For a before-and-after run on one migration, see the missing-RLS example.

Example output

Historical output from viberaven check 1.7.2 on a synthetic Next.js + Supabase app with one of each gap (project path shortened):

text
viberaven check · ~/my-app
🔴 No RLS policy proof in migrations  (rls_disabled)   1 public table without row level security: public.profiles (supabase/migrations/20260301000000_init.sql:1). The Data API does not enforce row restrictions for roles and operations allowed by the table's grants. Verify those grants to determine who can read or change rows.🔴 A policy lets anyone write every row  (rls_policy_allows_all_write)   Policy "orders are editable" on public.orders (supabase/migrations/20260301000000_init.sql:13) lets anyone, signed in or not, update every row, to any values: using (true).🔴 Service role key used in client code  (service_role_key_in_client_code)   app/admin/page.tsx:4: reads NEXT_PUBLIC_SUPABASE_SERVICE_ROLE_KEY. NEXT_PUBLIC_* variables are exposed to client code by Next.js, and the service role key skips RLS entirely. Move the call behind a server route or edge function and rotate the key.🟡 Security definer function callable by the Data API roles  (security_definer_function_executable)   public.grant_credits(uuid, integer) at supabase/migrations/20260301000000_init.sql:15 is security definer, so it runs with its owner's rights and RLS does not limit what it touches. No migration revokes EXECUTE from public, anon, authenticated, so anyone holding the anon key can call it at /rest/v1/rpc/grant_credits. If only the server calls it, add: revoke execute on function public.grant_credits(uuid, integer) from public, anon, authenticated; Fix: revoke execute on function public.grant_credits(uuid, integer) from public, anon, authenticated;🟡 Stripe webhook does not verify the signature  (unverified_stripe_webhook)   1 Stripe webhook handler without signature verification over the raw body: app/api/stripe/webhook/route.ts (no signature check (constructEvent), no stripe-signature header, no raw body). Anyone who finds the URL can post a fake event, for example a paid checkout.🟡 Env vars used in code but missing from .env.example  (env_var_drift)   Code reads 1 environment variable that .env.example does not document (NEXT_PUBLIC_SUPABASE_SERVICE_ROLE_KEY). Fresh clones, CI, and the production deploy can silently run without them.🟡 Database queries with no row limit  (unbounded_query)   1 file run Supabase selects or Prisma findMany with no .limit()/.range()/take bound (app\admin\page.tsx). These work with 50 test rows and melt with 50,000 production rows.⚪ No error monitoring detected  (missing_monitoring)   No Sentry/PostHog (or similar) instrumentation was found. Production errors will only surface when users complain.
Verdict: ❌ 3 blockers, 4 warnings · score 5Fix: viberaven fix · Details: ~/my-app\.viberaven\agent-tasklist.mdOptional live catalog: npx -y [email protected] live start --provider supabase --project <project-ref> --json (read-only metadata; account required; server availability not checked; user approves in the browser and approves the project read).Keep checks running with your agent: npx -y [email protected] init

Every result also lands in .viberaven/ as markdown and JSON (agent-tasklist.md, gate-result.json, context-map.json), so a coding agent and your git history can read it.

When to use it, and when not to

Use it:

  • before you launch or hand off a Vercel + Supabase app built with Lovable, Bolt, Cursor, Claude Code or Codex;
  • after a Supabase migration or a policy change;
  • when a production error points at RLS, the service_role key, env vars, the database connection or a Stripe webhook;
  • on every push or pull request, through the GitHub Action below.

It is not the right tool when:

  • You need to know what is live in the database. VibeRaven is a repository check, not a live database test. It reads migrations, so it cannot see a policy someone added in the Supabase dashboard. Use Supabase Security Advisor for the live project.
  • You need a full security audit. It does not send requests to your app, test for XSS or CSRF, or look up dependency CVEs. A clear result is not a security audit.
  • You need to know the app works. It does not run your build or click through your pages. Use Playwright or your own tests.
  • The app does not use Supabase. Most of the checks have nothing to read.

How it compares

These tools answer different questions, and most launches need more than one of them.

ToolWhat it checksWhere it runsHow it fits with VibeRaven
Supabase Security AdvisorLints on the live database: RLS disabled, security definer views and functions, mutable search_path and moreSupabase dashboard, against the deployed projectAdvisor sees what is live. VibeRaven reads the migrations before they are applied, plus the client code and env files the database never sees.
OWASP ZAPDynamic scan of a running web app over HTTP: injection, XSS, headers, cookiesAgainst a deployed or local URLZAP tests the app from outside. VibeRaven reads the repo and knows Supabase grants, policies and keys.
Semgrep, Snyk, CodeQLGeneral static analysis and dependency vulnerabilities across many languagesCI or locally, on source codeBroad code rules and CVEs. VibeRaven is narrow: Supabase RLS and grants, service_role exposure, the pooler port and Stripe webhooks.
PlaywrightEnd-to-end tests you write, driving a real browserLocally or in CI, against a running appPlaywright proves the flows you test. A test that signs in as user A and tries to read user B's rows is the live check that VibeRaven's RLS findings point to.

Data: 512 public Lovable apps

We ran the check on the Supabase migrations of 512 public Lovable repos. From the write-up:

In a static read of 512 public Lovable projects on GitHub with a supabase/migrations folder (October 2026), 47.3% (242) define at least one security definer function in the public schema that a signed-out caller with the anon key can run at /rest/v1/rpc.

The post has the method, the limits and the fix. An earlier post covers RLS policies in the same 512 apps.

Fix the gaps

bash
npx -y [email protected] fix                         # list gaps with safe automatic recipesnpx -y [email protected] fix --gap <id> --dry-run    # preview one recipenpx -y [email protected] fix --gap <id>              # apply itnpx -y [email protected] audit --vercel-supabase     # RLS in migrations, pooler port, service_role keynpx -y [email protected] --strict                    # the verdict as an exit code for CI (exit 1 on not_clear; warnings exit 0)

The rls_disabled recipe adds a migration that enables RLS without policies, so browser reads return no rows until you add policies. Agree before applying it, then apply and test it through your database workflow.

In CI: the GitHub Action

Lovable and Bolt push straight to main, so a pull request check alone misses most of their changes. The VibeRaven GitHub Action runs the same check on pull requests and on pushes, in your own runner:

yaml
on:  push:    branches: [main]  pull_request:permissions:  contents: write  pull-requests: writejobs:  check:    runs-on: ubuntu-latest    steps:      - uses: actions/checkout@v5        with:          fetch-depth: 0      - uses: ohad6k/viberaven-action@v1

A pull request gets one comment with what the change added or fixed. A push to main gets a commit comment when there is a blocker. It is advice by default; with fail-on-blockers: 'true' the job fails when it finds a blocker, and your branch protection decides what that means for merging. npx -y [email protected] init --github writes a pull-request-only version of this workflow without the Action.

Install for AI agents

Give coding agents the same context before they patch the repo:

bash
npx -y [email protected] init --agents all --dry-run   # previewnpx -y [email protected] init --agents allnpx -y [email protected] doctor --agents

This installs bounded rules (<!-- VIBERAVEN:START --> ... <!-- VIBERAVEN:END -->) into:

  • AGENTS.md, CLAUDE.md, GEMINI.md
  • .cursor/rules/viberaven-core.mdc (plus scoped Supabase, deploy, and payments rules)
  • .github/copilot-instructions.md
  • .viberaven/agent-context.md, .viberaven/mission-map.md

The rules say when a pass helps (an AI-built app on Vercel + Supabase, before launch or handoff, or after a migration or policy change) and teach the loop: check, read .viberaven/, fix one gap, then check again once per batch of fixes. They are advice, not a gate: the user decides when to ship.

Agent skills

Six skills.sh skills route agents through architecture questions, version evidence, and launch proof:

SkillJob
viberavenThe router: local check/fix loop, Studio, and MCP context.
architecture-contextAsk the missing product questions before any edit.
architecture-planTurn answers plus repo evidence into a workstream plan.
what-brokeFind which version broke the app before patching.
production-contextKeep compact production memory in .viberaven/production-context.md.
go-liveLocal app to GitHub to Vercel, with live-URL proof.
bash
npx -y [email protected] add ohad6k/VibeRaven --skill viberaven

See agent-skills/ for the full pack.

This repo also works as an agent plugin: plugin.yaml, .claude-plugin/, .codex-plugin/, and gemini-extension.json expose the six skills plus /viberaven-work, /viberaven-help, /viberaven-production-context, and /viberaven-launch commands to Claude Code, Codex, and Gemini CLI.

For a smaller install, plugins/viberaven is a standalone plugin for Claude Code and Cursor: one skill that says when a pre-launch pass fits a Vercel + Supabase app, plus a version-pinned MCP server. Its manifests specify the package version; the plugin release is separate from the quick start above.

MCP

VibeRaven is listed in the MCP registry for agents that prefer tools over terminal commands:

json
{ "viberaven": { "command": "npx", "args": ["-y", "@viberaven/[email protected]"] } }

Key tools: viberaven_check_readiness (runs the local check), viberaven_heal_apply, viberaven_verify, viberaven_audit, viberaven_gate_result, and viberaven_validate_npm_package (run it before adding npm dependencies).

Provider context for AI SDK agents

Building an agent that answers provider errors? The AI SDK provider-context example adds search_guides and recent_provider_changes from the hosted MCP endpoint. It returns published guidance and dated sources, without installing the VibeRaven CLI or Studio. Its documented tests run locally with a scripted model; live retrieval is optional. It does not inspect your repository or verify a fix.

The local Studio

npx -y [email protected] with no command opens the Studio: a local page where your own coding agent (Claude Code, Codex or Gemini CLI) makes a change in your folder, and you see the steps, your checks, the running app and the diff, with Undo one click away.

[The VibeRaven Studio: the app's providers on the board, one-click starting actions, and the change box with Claude Code]

Your first app change

The same workflow, fully local, with no account:

  1. Open your project. Run npx -y [email protected] in its folder. The Studio opens in your browser.
  2. Connect your agent. Open Agents, select your installed CLI, run Test connection, then choose Use this agent.
  3. Show your app. Choose Show my app to start its development server.
  4. Ask for a small change. Pick Ask to get a plan without edits, or Edit to let the agent change files, then select Make the change.
  5. Check the result. Try the running app, read the check results and open Review for the diff. Missing tests are reported as unchecked; a page that loads does not prove every feature works.

On Windows PowerShell, use npx.cmd if execution policy blocks npx.

The Studio also runs on viberaven.dev: sign in with Google, bring your repo, and connect your computer once. Your agent still works on your computer. The site includes 2 free changes, then Pro at $20 a month for 300 changes a month. Both need a coding agent you are signed in to; its own account and limits apply.

What the Studio gives you
Your agent, your machineClaude Code, Codex or Gemini CLI make the edit in your folder, with a connection test and Ask or Edit access.
Proof next to the changeThe real steps, your project's checks, the running app and the diff, in one place.
Review and UndoRead every changed file. Undo restores attributed Claude Code edits; anything else stays for you to review.
Your app's servicesVercel, Supabase, Stripe, auth, monitoring and analytics on one map, each marked found in the code, chosen, or missing. Repo evidence is never shown as a live provider check.
Versions and releasesCompare release points and see what changed since an earlier version (local Studio).

Checks and accounts

  • Local Studio and repository checks. These run on your machine without a VibeRaven account. The CLI has no telemetry.
  • Changes from viberaven.dev. Sign in with Google. Free includes 2 changes per account; Pro includes 300 a month. Your coding agent's account and usage are separate. The site stores requests, progress, check results, file paths and redacted, size-limited diffs so you can review them.
  • Hosted full checks. Optional: 2 on Free, 50 a month on Pro, separate from changes.
  • Markdown on disk. All context lives in .viberaven/ as plain files that your agent and your git history can read.
  • Evidence over vibes. Findings point at repo evidence. Provider dashboard state is never claimed from repo edits alone.
  • Changes under your control. Review the plan and access mode before the agent edits your project. Cleanup is plan-only. A clear repository check is not a security audit or proof that the deployed app works.

Contributing

Contributions are welcome, and most of them need no private source access:

Resources

License

MIT. Current public release: [email protected].

Built by Ohad Krispin (github.com/ohad6k).

If VibeRaven helps you ship, star the repo so other AI app builders can find it. Use Watch → Custom → Releases for release notifications.

VibeRaven public repo is the agent discovery and installation surface. Product source code and service internals live in a private repository.

來源:README.md,提交 b83b4ee

工具

5

check_supabase_migrations

Check Supabase migrations for RLS and grant gaps

Review Supabase migration changes for missing RLS or policies, unrestricted read/write policies, exposed security definer functions and Data API grant gaps. Pass file contents: sql contains one migration's SQL text; files contains path and content for each file. Runs the VibeRaven 1.6.12 SQL rules and returns finding id, severity, file, line, a suggested fix and a guide link. For missing Data API grants, include the migration revoking default privileges or supabase/config.toml, plus browser files using supabase.from(...) (a "use client" file, or src files with package.json for Vite). Limits: supplied text only, up to 200 KB/50 files; cannot access your repository or database, does not execute SQL, and does not store or log file contents.

輸入參數sqlfiles

provider_playbook

Get a provider playbook

Plan setup and integration before implementing a feature that touches a provider. Returns versioned setup guidance, gotchas, dated changes, integration seams, existing repo checks and planned live checks with official sources. Available packs: supabase. Limits: guidance only; does not connect to providers, read your project, run checks or verify that a feature works.

輸入參數provider必填

explain_finding

Explain a VibeRaven finding

Understand and fix a finding from a VibeRaven 1.6.12 report, such as rls_disabled or env_var_drift. Returns detection scope, impact, fix guidance and coverage limits quoted from viberaven.dev with source links. Known ids: rls_disabled, rls_no_policies, rls_policy_allows_all_read, rls_policy_allows_all_write, security_definer_function_executable, pooler_port_mismatch, service_role_key_in_client_code, env_var_drift. Unknown ids return found: false and known ids. Limits: explains published rules only; does not read your repo, database or Vercel project.

輸入參數gap_id必填

search_guides

Search VibeRaven launch guides

Find troubleshooting steps for Supabase RLS, Realtime and auth callbacks, Vercel environment variables and deployment errors, or Stripe webhooks after deploy. Search published viberaven.dev guides by keyword; returns up to 5 titles, URLs and short answers. Also covers Lovable + Supabase launch checks and client handoff. No match returns an empty list. Limits: searches the indexed published guides only; does not browse the web or read your project.

輸入參數query必填

launch_checklist

Get a launch checklist

Prepare a Lovable + Supabase app or a Next.js + Supabase app on Vercel for launch. Returns a published manual checklist with sources and an optional local repo check (`npx -y [email protected] check`). Limits: checklist guidance only; does not run checks or verify dashboards, code or launch readiness.

輸入參數stack必填

版本歷史

2
  1. v1.1.0最新Oct 29, 2026
  2. v1.0.0Oct 1, 2026

評分

已滿足適用檢查項的 100%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通必需25 分
  • 已宣告認證方式必需10 分
  • 已列出工具必需15 分
  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分