VibeRaven

io.github.ohad6kPublished by GitHub account ohad6kv1.1.0Updated Nov 6, 2026

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

VerifiedStreamable HTTPWeb executableDatabasesDeveloper ToolsSecurity & Monitoring

Overview

AI-generated overview

Hosted VibeRaven MCP server that reviews Supabase migrations for RLS and grant gaps and returns published guidance on Supabase, Vercel and Stripe launch issues.

What you can do
  • Review Supabase migration SQL for missing RLS, permissive policies, exposed security definer functions and Data API grant gaps
  • Plan provider setup and integration with versioned playbooks and gotchas (Supabase pack)
  • Explain a VibeRaven finding such as rls_disabled or env_var_drift with impact, fix guidance and coverage limits
  • Search published troubleshooting guides for Supabase RLS, Realtime, auth callbacks, Vercel env vars and Stripe webhooks
  • Return a launch checklist for Lovable or Next.js apps on Supabase and Vercel, with an optional local repo check command
When to use it
Useful when preparing an AI-built Vercel + Supabase app for launch or handoff, after a migration or policy change, or when a production error points at RLS, env vars, the pooler port or a Stripe webhook. It gives static advice only, so it does not replace a live database check or a security audit.
Requirements
Remote streamable HTTP endpoint at viberaven.dev; no account, API key or headers are declared for the hosted tools. The optional local check it mentions needs Node.js 20 or newer and runs via npx in the project folder.
Before you install
The server cannot read your repository, run SQL or verify live behavior, so a clear result is not a security audit or proof the app works. Migration file contents you pass to the check tool are sent to the remote service. The optional local check writes results into a .viberaven folder and its fix command can add migrations, so review before applying. The hosted Studio is a separate paid product.

Installation

In SourceWeft

  1. Open VibeRaven in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/io.github.ohad6k%2Fviberaven-guides/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config.

{
  "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.

Source: README.md at commit b83b4ee

Tools

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.

Parameterssqlfiles

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.

Parametersproviderrequired

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.

Parametersgap_idrequired

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.

Parametersqueryrequired

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.

Parametersstackrequired

Version history

2
  1. v1.1.0LatestOct 29, 2026
  2. v1.0.0Oct 1, 2026

Score

100% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts