security-sweep
Skill0 starsChanged 46 days agoMITView on GitHub
Audit a SaaS app for the security classes that actually sink companies: payment/billing bypass, webhook integrity (signature + replay), auth gaps (authn/authz, session/JWT/cookie), row-level-security and multi-tenant data isolation, secrets exposure, and IDOR/broken access control. Verifies each finding is real before reporting, ranks by blast radius, and ships a concrete fix per finding. Use when "security audit", "billing security", "is this safe to ship", webhook/auth/RLS review, pre-launch hardening, or when bug-zero / ship-it / project-autopilot route the security class here.
- Reads credentials
11 other projects use a version of this.
Adopted by
Most recently taken up by
- paulocsb/worldcup-fifa-pooltheir own version, first seen Nov 8, 2026
- Bobagi/claude-skillstheir own version, first seen Oct 29, 2026
- archiforge/agent-crafttheir own version, first seen Oct 20, 2026
- sal1391/ai-app-workspacetheir own version, first seen Oct 11, 2026
- jleavers/codervistheir own version, first seen Sep 27, 2026
- eeshsaxena/agent-skillstheir own version, first seen Aug 5, 2026
Used with
Projects with it also use test-first.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
claude-worldSkilltest-first
Drive one feature through a strict TDD Red-Green-Refactor cycle with checklists for each phase. Use when implementing new functionality test-first, or when the user runs /test-first.
Also in 3 projects that use this
Other versions11 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 11
- n24q02m/better-code-review-graph★ 76same name
- n24q02m/crg★ 76same name
- oliwoodman/fable-skills★ 35same name
- eeshsaxena/agent-skills★ 2same name
- 0xmortuex/claude-code-skills★ 0same name
- archiforge/agent-craft★ 0same name
- Bobagi/claude-skills★ 0same name
- ccpowerpack/claude-code-skills★ 0same name
- jleavers/codervis★ 0same name
- paulocsb/worldcup-fifa-pool★ 0same name
1 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository51 other files it gives its agents.
- advisor-councilSkill
- advisor-persona-buildSkill
- agent-exploit-pathsSkill
- agentic-loopsSkill
- ai-receptionist-tenant-onboardingSkill
- audit-lensSkill
- beadsmithSkill
- bug-sweepSkill
- bug-zeroSkill
- build-in-public-scope-guardSkill
- consulting-sales-playbookSkill
- deepenSkill
- deposit-first-shippingSkill
- design-intelSkill
- dueling-idea-forgeSkill
- forgeSkill
- hotspot-scoutSkill
- idea-forgeSkill
- incident-zeroSkill
- kickstartSkill
- local-llm-opsSkill
- memguardSkill
- memory-forgeSkill
- migrate-proofSkill
- no-slop-bug-hunterSkill
- optimize-proofSkill
- perf-maxSkill
- polish-passSkill
- problem-breakthroughSkill
- project-autopilotSkill
- qwen-bug-zeroSkill
- qwen-forgeSkill
- qwen-kickstartSkill
- qwen-perf-maxSkill
- qwen-project-autopilotSkill
- qwen-ship-itSkill
- qwen-ux-maximizerSkill
- readme-realSkill
- reality-checkSkill
- recallSkill
- session-mineSkill
- ship-itSkill
- simplify-proofSkill
- skillifySkill
- stream-demo-prepSkill
- swarm-runSkill
- test-maxSkill
- trace-itSkill
- unslopSkill
- ux-maximizerSkill
- ux-scanSkill
The file
We split this skill into the rules it gives an agent
1 rule. 0 are common, 1 is distinctive, and 0 are very specific to this project.
0
Common
Most of the 9 edited versions we read keep these.
1
Distinctive
This author's own choices. Worth a look.
0
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 45
Read-only against real services: Never fire test webhooks at prod, never exercise a live charge path to "confirm".
“Common” is measured: kept by at least 6 in 10 of the 9 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Security Sweep
Point it at a SaaS app and it finds the holes that cost money or leak tenants, not a generic lint pass. It concentrates fire on the handful of classes with real blast radius (someone pays $0, someone reads another tenant's data, a key leaks), proves each one is actually exploitable before it says a word, ranks by damage, and hands back a fix per finding. Low-risk fixes land under a green ratchet; anything touching a live payment or auth path is queued for the user, never auto-edited.
Core Insight: A security finding is worthless until it's proven reachable. Scanners and smart models both over-report: they flag the shape of a bug without tracing whether an unauthenticated request can actually get there. The hard part isn't listing OWASP categories; it's building the exploit path in your head (who, unauthenticated or cross-tenant, hits which route, bypassing which check) and rejecting the plausible-but-wrong noise. Report only what you'd bet on. And because the highest-value classes (billing and auth) are also the ones where a wrong "fix" causes an outage or a revenue leak, those changes are proposed, not applied: findings auto, payment/auth-critical edits to the decision inbox.
Preconditions / guards
- Know the stack before you grep: Next.js route handlers vs. Edge middleware, Supabase RLS vs. service-role keys, Stripe vs. RevenueCat webhooks each fail differently. Read how auth, billing, and the data layer are wired first; a finding written against the wrong mental model is a phantom.
- Green ratchet on any applied fix: A fix that reds a test reverts. Never weaken a test to pass.
- Payment-flow and auth-critical changes are ask-user: Produce the finding and
the recommended fix, but write the change to
<project>/.autopilot/DECISIONS.md(recommended option first) and DO NOT auto-edit a live billing or session path. A bad auto-fix here is an outage or a free-money bug. - Read-only against real services: Never fire test webhooks at prod, never exercise a live charge path to "confirm". Reason the exploit; reproduce only in a test-mode/local sandbox.
The audit classes (where the fire goes)
Full checklist with Next.js/Supabase/Stripe-specific failure modes in references/CLASSES.md. The seven:
- Payment / billing bypass: entitlement granted without a settled charge; client-trusted price/quantity/plan; webhook-before-payment ordering; refund/ downgrade that never revokes access; RevenueCat receipt trusted unsigned.
- Webhook integrity: missing/incorrect signature verification (Stripe
constructEvent, RevenueCat auth header), no replay/idempotency guard, raw-body mismatch from a framework that already parsed the body. - Auth gaps: authn vs authz confusion, missing server-side check behind a
hidden UI control, JWT not verified /
alg:none/ wrong audience, session fixation, cookies missingHttpOnly/Secure/SameSite,getSession()trusted wheregetUser()/getClaims()is required. - RLS / multi-tenant isolation: RLS disabled or
USING (true), a service-role key reachable from a user-facing path (bypasses RLS entirely), tenant_id taken from the request instead of the verified session, a query that forgets the tenant filter. - Secrets exposure: keys in source / committed
.env/ logs, a server secret prefixedNEXT_PUBLIC_and shipped in the client bundle, service-role key in browser code. - IDOR / broken access control: object id from the URL with no ownership check,
sequential ids, mass-assignment letting a request set
role/tenant_id/is_admin. - Input → injection surface (secondary): only where it crosses into the above (SQL via raw query bypassing RLS, SSRF reaching internal billing APIs).
The Pipeline (staged: issue each phase only when the prior finishes)
Phase 0 MAP Read how auth, billing, the data layer, and webhooks are wired
(guard #1). List every trust boundary: each route handler, each
webhook endpoint, each Supabase query path, each entitlement
gate. This map is the attack surface.
Phase 1 SWEEP Walk the seven classes against the map. For each candidate,
write the EXPLOIT PATH: who (unauth / other tenant / lower role)
hits what, bypassing which absent check, to what effect. No
exploit path = not a finding yet.
Phase 2 VERIFY Adversarially re-check EVERY candidate against the real code:
open the cited file/line, confirm the missing check is actually
missing (not enforced one layer up in middleware / RLS / a
guard). Default to "not a finding" if you can't trace the path.
Doubtful + high-stakes → multi-model-triangulation if installed,
else a second independent trace. Phantoms die
HERE, before anything is written or changed.
Phase 3 RANK Order survivors by blast radius × reachability: unauth remote
money/tenant-leak first, then authed cross-tenant, then
same-tenant escalation, then info-leak. Severity is damage ×
ease, not category name.
Phase 4 REMEDIATE Split by risk:
• Low-risk (add missing authz check on a non-billing route, set
a cookie flag, move a secret, add an ownership filter) → fix
under the green ratchet, each with a regression test that fails
on the vulnerable code and passes on the fix.
• Payment-flow / auth-critical / RLS-policy change → DO NOT EDIT.
Write finding + recommended fix to .autopilot/DECISIONS.md.
Phase 5 PROVE For each applied fix, prove the exploit is now blocked (test-mode
repro / the regression test), not just that the suite is green.
Re-sweep the touched surface; a fix often exposes an adjacent gap.Output (what orchestrators get back)
- Ranked verified findings: each with: class, severity (blast radius × reachability), the exploit path, cited file:line, and the concrete fix.
- Applied fixes: low-risk only, green-ratcheted, each with its regression test.
<project>/.autopilot/DECISIONS.md: appended: every payment-flow / auth- critical / RLS-policy change, recommended option first, for the user to approve. Same inbox project-autopilot and idea-forge drain: one inbox, not three.
Contract (what orchestrators rely on)
- bug-zero routes its security class (auth bypass, webhook integrity, RLS, secrets) here in the SWEEP phase; this skill returns verified findings into bug-zero's own verify/fix loop.
- project-autopilot routes "Billing/payment/webhook security" here. Findings produced AUTO, payment-flow CHANGES ask-user via the decision inbox.
- ship-it calls it as a pre-ship hardening gate.
- Most specific skill wins: chosen over generic audit-lens for any billing / auth / webhook / multi-tenant code.
Skills it composes with
These are optional; use any that are installed, otherwise the provider's own docs cover the same ground. Verify doubtful findings with multi-model-triangulation; for billing flows pair with saas-billing-patterns-for-stripe-and-paypal and stripe-checkout to know the correct shape before calling a deviation a bug; supabase for RLS/auth specifics; prove fixes with testing-real-service-e2e-no-mocks (Stripe test mode, real-DB tenant-isolation tests). It adds the security lens + exploit-path verification; these supply the domain detail.
THE EXACT PROMPT
/security-sweep
Target: <project path or subsystem (e.g. the billing + webhook routes)>
Scope: <whole app | billing/webhooks | auth/session | tenant isolation>
Stack: <e.g. Next.js + Supabase RLS + Stripe webhooks> (optional; it will infer)Anti-Patterns
- Reporting a finding with no exploit path. "Looks risky" is not a vulnerability; trace who reaches it bypassing which check, or drop it.
- Calling a missing check a bug without confirming it isn't enforced one layer up (middleware, RLS policy, a shared guard). The classic phantom.
- Auto-editing a live payment or session path. That's an outage / revenue-leak risk; it goes to the decision inbox, full stop.
- Firing real webhooks or live charges at prod to "confirm". Repro in test mode only.
- Ranking by OWASP category name instead of blast radius × reachability. An unauth remote tenant-leak outranks a same-tenant self-XSS every time.
- Banking a fix with no regression test that fails on the vulnerable code.
- Trusting
getSession()/ client-supplied price / client-supplied tenant_id and not flagging it because "the UI never sends that". The attacker isn't using your UI. - One generic scan instead of walking the seven classes against the actual trust map.
References
- CLASSES.md: the seven audit classes expanded, each with Next.js / Supabase / Stripe / RevenueCat failure modes, what to grep for, and the exploit question that decides whether it's a real finding.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

