security
Skill4 starsChanged 15 days agoMITView on GitHub
Use when touching auth, sessions, permissions, secrets, payments, user data, DB writes, webhooks or deploy config, or when asked for a security audit.
- Reads credentials
We split this skill into the rules it gives an agent
3 rules. 0 are common, 2 are distinctive, and 1 is very specific to this project.
0
Common
Most of the 100 edited versions we read keep these.
2
Distinctive
This author's own choices. Worth a look.
1
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 29
Read the diff and its callers against each line that applies:
- Distinctive: line 34
Webhooks verify signatures: Verify the provider signature over the raw request body with a constant-time compare, reject stale timestamps …
- Very specific: line 36
SQL is parameterized: Use bound parameters or the ORM's query builder.
“Common” is measured: kept by at least 6 in 10 of the 100 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
Think like an attacker and report like a defender: every finding names the exploit path, then the fix.
| Ask | Branch |
| A change touches a sensitive surface | Sanity check (below) |
| "Security audit", "threat model", "OWASP", "pentest review", a pre-launch review | Full audit: read references/audit.md |
On Claude Code, the built-in /security-review command reviews the pending changes on the current branch. Suggest it as a second opinion before a PR that touches these surfaces. On Codex, use the review skill.
1. Map the trust boundary
Name where untrusted data enters the changed code: request params, body and headers, cookies, webhooks, file uploads, fetched URLs, third-party API responses, LLM output. Then name where it reaches something privileged: the database, a shell, the filesystem, rendered HTML, redirects, outbound requests, money, or another user's records.
Done when: you can list each entry point and each privileged sink the diff touches.
2. Check the change
Read the diff and its callers against each line that applies:
- Authorization on every route. Each route, handler, server action, RPC method and GraphQL resolver checks on the server that the caller is authenticated and allowed to act on this specific record (owner, tenant or role check against the object id). "Logged in" is not "allowed". A new route copies the guard its siblings use. Client-side checks are UX, not security.
- Input validated at the trust boundary. Parse input into typed data with the repo's schema library (zod, pydantic, and so on) where it enters. Allowlist the fields a write may set; never spread a request body into an ORM update. Inside the boundary, trust the types instead of re-checking at every layer.
- Secrets stay out of code, logs and clients. No keys in source, committed
.envfiles, URLs, error messages, logs or client bundles (NEXT_PUBLIC_*,VITE_*). Read them from the environment or a secret store. A secret that reached git is leaked: rotate it, because removing the commit doesn't un-leak it. - Webhooks verify signatures. Verify the provider signature over the raw request body with a constant-time compare, reject stale timestamps to stop replays, and dedupe on the event id so a retry can't apply twice.
- Payments trust the server. Amounts, prices, currency and paid status come from the server or the provider, never from the client.
- SQL is parameterized. Use bound parameters or the ORM's query builder. No string interpolation into SQL, shell commands, templates or
eval. Raw HTML sinks (dangerouslySetInnerHTML,v-html,innerHTML) get sanitized input only. - Outbound requests and redirects are allowlisted. A user-supplied URL is checked against allowed schemes and hosts before the server fetches it (SSRF). Redirect targets are relative paths or allowlisted hosts.
- Sessions and tokens. Cookies are
HttpOnly,SecureandSameSite. Rotate the session id on login and privilege change, and invalidate it on logout and password change. JWTs: verify the signature with a pinned algorithm and checkexp. Cookie-authenticated writes need CSRF protection. - Least privilege. DB roles, API keys, OAuth scopes, IAM policies and CI tokens get only what this feature needs. No wildcard actions. Service-role keys stay server-side.
- Safe defaults. Deny by default and fail closed: an error in an auth check denies. No
*CORS origin on credentialed routes, debug mode off in production, generic error messages to clients with detail kept in server logs. Login, sign-up, password reset and OTP endpoints are rate-limited. - User data. Responses carry only the fields this caller may see: no password hashes, tokens, or other users' emails. PII stays out of logs and analytics.
- LLM features. User text stays out of system prompts and tool schemas. Model output is untrusted: never
evalit or render it as raw HTML. Tool calls are validated before they run, and spend per user is capped.
Done when: every applicable line is checked, and each failure is fixed or recorded as a finding.
3. Prove the negative path
Positive tests show the feature works; negative tests show it's safe. For each boundary touched, run at least one check that must be refused:
- unauthenticated request: 401
- another user's or tenant's id: 403 or 404
- invalid or extra-field payload: 400 with nothing written
- bad or replayed webhook signature: rejected with nothing applied
Scan the staged diff for secrets with the repo's scanner (gitleaks, trufflehog) when one is installed, otherwise grep for known key shapes:
git diff --staged | grep -nE 'AKIA[0-9A-Z]{16}|sk_live_|sk-ant-|ghp_|github_pat_|xox[abp]-|-----BEGIN [A-Z ]*PRIVATE KEY-----'Done when: each touched boundary has a negative check that ran this turn and was refused as expected, and the secret scan is clean.
4. Report
One line per finding: severity (critical, high, medium), file:line, the exploit path in one sentence, and the fix. A finding without a concrete exploit path is a note, not a finding. For a leaked secret, include the playbook in references/audit.md.
Other versions122 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 122
- BuilderIO/agent-native★ 7.4ksame name
- parcadei/Continuous-Claude★ 3.9ksame name
- parcadei/Continuous-Claude-v2★ 3.9ksame name
- parcadei/Continuous-Claude-v3★ 3.9ksame name
- gridaco/grida★ 2.7ksame name
- static-web-server/static-web-server★ 2.4ksame name
- BankrBot/skills★ 1.2ksame name
- BankrBot/openclaw-skills★ 1.2ksame name
- alinaqi/maggy★ 711same name
- alinaqi/claude-bootstrap★ 708same name
112 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.
Used alongsideProjects with it also use cost-reducer, albert-dm and 10 more.
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.
huyvpSkillcost-reducer
Reduce cloud, infrastructure, and operational costs while maintaining performance. Use when writing database queries, configuring cloud resources, optimizing bundles, setting up caching, choosing between services, sizing instances, configuring CDN, managing storage, or reviewing code for cost inefficiencies. Covers AWS/GCP/Vercel pricing, database optimization, serverless tuning, image pipelines, observability costs, and FinOps practices.
Also in 12 projects that use this
vikneshwaran16032005-altSkillalbert-dm
Reply to DMs and messages the way Albert would. Use when the user asks "how would Albert reply to this", pastes a conversation and wants an Albert-style response, or asks you to draft/write a DM in Albert's voice. Albert sells AI voice agents / automations to local service businesses (Go High Level, lead follow-up, bookings).
Also in 6 projects that use this
vikneshwaran16032005-altSkillnew-client-system
Scaffold a new client's full stack — Next.js 16 frontend dashboard + Trigger.dev backend worker — from the Shiney automations template. Use when the user says "new client", "onboard a client", "scaffold a client system", "set up <client-name>", or wants to start a fresh frontend+backend project styled and structured like the Shiney automations dashboard. Produces structure only; no automations are scaffolded — those are added later.
Also in 6 projects that use this
ffsshhttiikkSkillscalability
Core foundational concepts and principles for Scalability
Also in 11 projects that use this
xfstudioSkilltrigger-dev
Trigger.dev expert for background jobs, AI workflows, and reliable async execution with excellent developer experience and TypeScript-first design. Use when: trigger.dev, trigger dev, background task, ai background job, long running task.
Also in 11 projects that use this
xfstudioSkillcustomer-support
Elite AI-powered customer support specialist mastering
Also in 12 projects that use this
- +4 more from vikneshwaran16032005-alt
In this repository39 other files it gives its agents.
- migrate/AGENTS.mdAGENTS.md
- migrate/CLAUDE.mdCLAUDE.md
- api-designSkill
- architectureSkill
- databaseSkill
- debugSkill
- deploySkill
- docsSkill
- domainSkill
- executeSkill
- frontendSkill
- grillSkill
- handoffSkill
- honeySkill
- incidentSkill
- observabilitySkill
- opensrcSkill
- perfSkill
- planSkill
- principlesSkill
- project-verifySkill
- prototypeSkill
- qaSkill
- researchSkill
- reverse-engineerSkill
- reviewSkill
- rsiSkill
- shipSkill
- stageshowSkill
- statechartSkill
- tddSkill
- teachSkill
- test-designSkill
- toolingSkill
- triageSkill
- unslopSkill
- upgradeSkill
- verifySkill
- write-skillSkill
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.

