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 分