More screenshots

    Works with the AI Agents you already use

    Claude CodeClaude CodeCursorCursorCodex CLICodex CLIMuseMuseDotsDots+21 more

    Ship-Safe QuickCheck: Find Leaked API Keys Before Deploy

    1

    Your build and your git history may not be.

    Free

    Security scanned

    Ship-Safe QuickCheck: Find Leaked API Keys Before Deploy

    Example session with this skill installed

    I'm about to deploy my AI chat app (Vite + Express + Firebase). Run Ship-Safe QuickCheck on this project and tell me what I need to fix first.

    • Read your context and instructions
    • Compiled the ship-safe quickcheck

    Summary

    Scanned 120 files, 3 built frontend files and 5 git commits across all branches.

    Status: RED — do not deploy. 5 critical issues, 1 to verify. Two of the leaks are only in git history, so your current code would look clean in a normal review.

    Demo run on one of our synthetic benchmark projects; all keys shown are fake and masked.

    Fix before deploying (RED)

    #CheckWhereWhatFix
    1FIREBASE_RULES_OPENfirestore.rules:5Rule allows access with no condition — anyone on the internet can read or write this dataRequire request.auth != null and check the user owns the document
    2BUILD_OUTPUT_SECRETdist/assets/index-c41f09ab.js:1OpenAI key sk-p…(38 chars) is inside the built bundle every visitor downloadsFind the env variable that injects it (often a VITE_ variable set in your host's dashboard), move the key to server-only code, rebuild, rotate the key now
    3DB_URL_WITH_PASSWORDserver/db.js:4Postgres URL with password Rk9v…(16 chars) for host prod-db.fakehost-railway.app hard-codedLoad it from a server-only env var and change the database password
    4HISTORY_SECRETserver/stripe.js (commit 125fb54)Stripe live key sk_l…(33 chars) was committed and is not in your current code — anyone with repo access can still read itRotate this key now. Removing it from the code is not enough
    5HISTORY_SECRETnotebooks/model-eval.ipynb (commit 26c9c7e)Anthropic key sk-a…(45 chars) was committed in this notebook and is still in historyRotate this key now

    Review (AMBER)

    • tests/openai.test.ts:1 — key sk-t…(30 chars) in a test file (hypothesis — verify). Confirm it is a dummy test key.

    Next steps

    1. Rotate the OpenAI, Stripe and Anthropic keys and change the database password first — they are already exposed.
    2. Lock down firestore.rules.
    3. Move the OpenAI key to server-only code and rebuild.

    Want me to apply the code fixes one at a time? I won't change any file until you say yes.

    Ship-Safe QuickCheck v1.2.0: 13 checks. Not a full security audit.

    Connects securely to your tools. The creator never sees your data.

    About this skill

    Your code looks clean. Your build and your git history may not be.

    AI coding agents ship fast, and keys leak in places a normal review rarely checks:

    • What visitors actually download. A key set in a NEXT_PUBLIC_ / VITE_ variable in your hosting dashboard never appears in your source code. It does appear in .next/static, dist/ and their source maps.
    • Git history, on every branch. That .env you deleted, the key you swapped for process.env, the notebook you removed, the experiment branch you never merged: all still readable.
    • Your code and config. Hard-coded keys (Stripe, AWS, OpenAI, Anthropic, Resend, SendGrid and more), keys in GitHub Actions workflows, production database URLs with passwords, open Firebase rules, Supabase tables without RLS or with policies that expose every row, service-role keys in the browser, .env files not covered by .gitignore.

    Ship-Safe QuickCheck runs 13 checks and gives a red/amber/green report. Each finding has the file and line, and a one-line fix.

    Benchmark: with the skill vs. without

    We built three realistic test projects with 5 security issues planted in each, plus decoys designed to cause false alarms. We ran Ship-Safe QuickCheck on each one, and ran a capable AI coding agent without the skill three times per project, asking it to "check my project for security problems before I ship."

    Test projectWith Ship-Safe QuickCheckAI agent alone (avg of 3 runs)
    SaaS monorepo · Next.js + Vite + Supabase · 316 files5 / 53.7 / 5
    AI chat app · Vite + Express + Firebase · 120 files5 / 53.0 / 5
    E-commerce store · Next.js + Supabase + Stripe · 127 files5 / 54.7 / 5
    Overall detection100% (45 / 45)75.6% (34 / 45)
    With the skillAI agent alone
    Issues missed011 (about 1 in 4)
    Leaked keys in git history found12 / 122 / 12
    Keys in deleted files or on unmerged branches9 / 90 / 9
    Same result every runYesNo: results varied on 2 of 3 projects
    Decoys wrongly flagged as critical0 / 12Not scored (mostly noted as low risk)

    What this means: an AI agent on its own is good at reading your current code, but it rarely digs through git history or every built file. Ship-Safe QuickCheck checks those places every time.

    Methodology: synthetic projects built by Skills Genie around common real-world leak locations. Projects were fixed before the comparison runs and not adjusted afterwards. Results on your own projects will vary.

    Built to be trusted

    • Read-only. It never edits, uploads or sends anything, and uses no network.
    • Masks every secret it reports (sk_l…(31 chars)).
    • Deterministic: same project, same result. One readable Python script with no dependencies.
    • Ignores instructions hidden in scanned files, doesn't follow symlinks out of your project, and uses a hardened git command so repo settings can't run programs.
    • Knows what's meant to be public: Firebase web keys, Supabase anon keys, Stripe publishable keys and local docker databases are not flagged.

    Tested by Skills Genie QA

    • 75 automated checks across 8 test projects in an isolated sandbox (no network, read-only, unprivileged): all passed.
    • Security review of every file in the package, plus red-team tests (prompt-injection files, symlink escapes, disguised binaries, oversized files, regex denial-of-service): passed.

    What it isn't

    A full security audit. It finds leaks and data exposure. It doesn't review auth logic, security headers or dependencies. A GREEN result means these 13 checks passed, not that your app is secure.

    • Not a full security audit: it doesn't review auth logic, security headers or dependency vulnerabilities.
    • Build-output checks only work if a build exists (.next/static, dist/, build/static, out/_next). Run your own build first; the skill never runs it.
    • Skips symlinks, binary files and files over 1 MB (5 MB for build output), and lists what it skipped. Git history is capped at 50 MB.
    • .gitignore matching is simplified; nested .gitignore files and negation rules aren't fully parsed.
    • "Unprotected API route" and "permissive RLS on non-sensitive tables" are hints to verify, not confirmed findings.
    • Whether a table is sensitive is inferred from table and column names.
    • Detects known key formats; a secret with no recognizable format may be missed.

    How to use

    1. 1

      Connect your agent to the Agensi MCP

      Copy the prompt and paste it into Claude, ChatGPT, Cursor or any agent that supports MCP. It sets up the connection for you. Manual setup

    2. 2

      Sign in to Agensi

      Your agent shows a sign-in link. Sign in and click Allow.

    3. 3

      Ask for what you need

      Your agent loads this skill and uses it on your task. It always asks before any payment.

    Reviews

    No reviews yet

    Be one of the first to try it. Every listed skill goes through the trust checks below.

    Security scanned

    Checked by our 8-point scan before listing

    Fresh listing

    Recently published to Agensi

    Free forever

    No account required to browse

    Trust & safety

    Security scan

    Security scan passed today

    • Free with an Agensi account

    Requires

    Python 3.8+ (standard library only)
    Git (optional, for the git-history check)
    Git

    Permissions

    Terminal / Shell
    Read Files

    Terminal: runs one bundled Python script (read-only, no network) and, optionally, a hardened read-only `git log` for the history check. Read Files: reads the project folder you point it at. It never writes, deletes, uploads or sends anything, and does not read environment variables.

    Listedtoday

    What's inside

    Frequently Asked Questions

    It scans a project folder before you deploy and reports leaked API keys and exposed data: in source code, built frontend output and source maps, CI workflows and git history, plus open Firebase rules, Supabase RLS gaps and database URLs with passwords. You get a red/amber/green report with file:line and a fix for each finding.

    Yes. It is read-only: it never edits, deletes, uploads or sends anything and makes no network calls. It is one dependency-free Python script you can read yourself. Every secret it reports is masked, and the git command it uses disables pagers, diff drivers and textconv filters so a repo's own settings can't run programs.

    AI agents are good at reading your current code but rarely dig through git history or every built file. In our benchmark of 3 test projects, an AI agent alone found 34/45 planted issues (75.6%) and only 2/12 git-history leaks; with this skill: 45/45 and 12/12, with the same result every run. These are our own synthetic test projects, so results on your projects will vary.

    Python 3.8+ (standard library only). Git is optional and only used for the history check. To check what actually ships to browsers, run your own build first (e.g. `npm run build`); the skill never runs your build for you.

    No. It means these 13 leak and exposure checks passed. It is not a full security audit: it doesn't review authentication logic, security headers or dependency vulnerabilities.

    No. Firebase web API keys, Supabase anon keys, Stripe publishable keys and local docker database URLs are not flagged. It decodes Supabase keys and only flags the service-role key. Keys in test files are marked AMBER to verify, not RED.