Security audit
Skill Marcdaou/claude-qa-suite/qa-suite/skills/security-audit
Claude Code plugin marketplace: qa-suite — end-to-end QA (API, E2E, SEO, security, payments) for Next.js + Supabase + Stripe apps
npx -y skills add Marcdaou/claude-qa-suite --skill security-auditAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Run a defensive security audit of a full-stack web app — exposed secrets and service-role keys, Supabase RLS gaps, auth bypass and IDOR on routes, Stripe webhook signature handling, input validation, insecure direct object references, and vulnerable dependencies. Use this skill whenever the user wants a security audit, a vulnerability check, to review auth, to find exposed keys/secrets, or to harden the app before launch. Trigger on asks like "is my app secure" or "check for leaked keys" too. Defensive use only.
SKILL.md
3.8 KB, as published. Nobody here has run it
Security Audit
This is a defensive audit: the goal is to find weaknesses in your own app so you can fix them before launch, not to attack anyone. The highest-value findings for a Supabase + Stripe + Next.js booking app cluster in four places — leaked secrets, RLS gaps, broken object-level authorization (IDOR), and webhook trust. Those four are where real incidents on this stack actually happen, so weight the audit there.
Workflow
-
Scan for exposed secrets and risky config (fast, static, no dependencies):
python3 ${CLAUDE_PLUGIN_ROOT}/scripts/security/scan_secrets.py <project-dir>It flags: Supabase service-role keys / JWT secrets in client-reachable code, Stripe secret keys (
sk_live/sk_test) outside server-only files, generic API keys and private keys,.envfiles that look committed, and use of theNEXT_PUBLIC_prefix on values that must stay server-side (this prefix ships the value to the browser — a service-role key behind it is a full database breach). -
Review the four high-risk areas by hand using
references/threat-model.md, which walks each one with what to grep for and what "good" looks like:- Secrets & env — confirm service-role key is server-only; client uses anon key.
- Supabase RLS — every table with user data has RLS enabled and policies that scope rows to the owner. RLS disabled = the anon key reads everything.
- Authorization / IDOR — route handlers check that the caller owns the
resource (
/api/bookings/[id]must verify the booking belongs to the user), not just that they're logged in. - Stripe webhooks — handler verifies the signature with the webhook secret and dedupes on event id; amounts are taken from Stripe, never trusted from the client.
-
Check dependencies for known vulnerabilities:
npm audit --omit=dev || trueReport high/critical advisories with the upgrade path; don't drown the user in transitive low-severity noise.
-
Report by severity. Use the structure below. For each finding give the concrete location, why it's exploitable (the scenario), and the fix. Be precise about severity — a
sk_livekey in client code is Critical; a missing security header is Low.
Report structure
ALWAYS use this template so findings are scannable and actionable:
# Security Audit — <app>
## Summary
<one-paragraph posture: what's solid, what's urgent>
## Critical
- [finding] — location · scenario · fix
## High
## Medium
## Low / Hardening
## Verified-safe
<things checked that were fine — so the user knows coverage>
Scope and ethics
This skill only inspects code and configuration the user owns and runs read-only checks. It does not exploit, exfiltrate, or attack live systems, and it will not produce attack tooling. If a check needs to hit a running endpoint (e.g. probing an IDOR), do it against the user's own dev/staging environment with their go-ahead.
When to hand off to the agent
For a full standing audit, delegate to the security-auditor agent — it runs the scanners, works through the threat model against the codebase, checks dependencies, and returns the severity-ranked report.
Gives 0 of the 12 instructions most quality gates skills give
Counted across 1,195 of the 2,094 authors here whose files we hold, read 2026-08-06
- read the output and check the exit codein 55 of 1195, across 14 files
- verify requirements using a line-by-line checklistin 53 of 1195, across 12 files
- identify the verification command proving the claimin 53 of 1195, across 12 files
- run the full verification commandin 51 of 1195, across 11 files
- verify output confirms the claimin 49 of 1195, across 10 files
- check version control diff after agent delegationin 45 of 1195, across 5 files
- state claim with evidencein 43 of 1195, across 3 files
- run the test suitein 32 of 1195, across 24 files
- keep state in memory by defaultin 27 of 1195, across 6 files
- make prototype runnable with one commandin 26 of 1195, across 5 files
- detect the package manager from lockfilesin 24 of 1195, across 5 files
- produce a verification reportin 23 of 1195, across 12 files
Said here and by no other author read
- review secrets and environment configuration manually
- verify every database table has row level security enabled
- confirm route handlers verify resource ownership
- take transaction amounts from stripe not the client
- report only high or critical dependency advisories
- list verified-safe areas in the report
Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once.