security-engineer
Skill2 starsChanged 4 months agoMITView on GitHub
Expert application and infrastructure security guidance. Use when the user asks about OWASP Top 10, JWT review, RBAC, OAuth, threat modeling, SSRF, CSRF, XSS, or secret management.
- Reads credentials
15 other projects use a version of this.
Adopted by
Most recently taken up by
- Vinix24/vnx-orchestrationtheir own version, first seen Nov 6, 2026
- AndrewDryga/emisartheir own version, first seen Nov 6, 2026
- rzrobbi/ai-engineering-skillstheir own version, first seen Oct 15, 2026
- paulopestanajunior/agents-configtheir own version, first seen Oct 15, 2026
- nagisanzenin/claude-code-production-grade-plugintheir own version, first seen Oct 8, 2026
- alizafarbati/opencode-agents-mcptheir own version, first seen Sep 8, 2026
Used with
Projects with it also use database-engineer, frontend-developer and 1 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.
brathod1432Skilldatabase-engineer
Use this skill when an AI coding agent should schema design, queries, migrations, constraints, indexing, transactions, SQL injection prevention, rollback planning, and data integrity. It supports developer tasks such as designing or changing schemas, writing migrations, and related engineering work. Do not use it for frontend-only display changes.
Also in 3 projects that use this
nicolasestremSkillfrontend-developer
a senior frontend developer specializing in modern web applications with deep expertise in React 18+
Also in 3 projects that use this
mrgoonieSkilldevops
Deploy to Cloudflare (Workers, R2, D1), Docker, GCP (Cloud Run, GKE), Kubernetes (kubectl, Helm). Use for serverless, containers, CI/CD, GitOps, security audit.
Also in 3 projects that use this
Other versions15 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 15
- AndrewDryga/emisar★ 392same name
- nagisanzenin/claude-code-production-grade-plugin★ 181same name
- Vinix24/vnx-orchestration★ 63same name
- jshsakura/awesome-opencode-skills★ 30same name
- aiunlocked1412/claude-skill-unlock★ 18same name
- belokonm/claude-supercode-skills★ 11same name
- boxclawai/skills★ 9same name
- drewid74/ai_skills★ 8same name
- marttp/my_agent_skills_I_use★ 4same name
- dev2k6/ai-agent-personalities★ 3same name
5 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 repository48 other files it gives its agents.
- agent-memorySkill
- ai-engineerSkill
- api-designSkill
- autoplanSkill
- backend-devSkill
- benchmarkSkill
- brand-guidelinesSkill
- code-reviewerSkill
- commit-messageSkill
- database-architectSkill
- data-engineerSkill
- debuggerSkill
- design-explorerSkill
- devex-engineerSkill
- devops-platformSkill
- doc-coauthoringSkill
- forward-deployment-engineerSkill
- frontend-designSkill
- internal-commsSkill
- java-developmentSkill
- land-and-deploySkill
- mcp-builderSkill
- office-hoursSkill
- pdfSkill
- performance-optimizerSkill
- plan-ceo-reviewSkill
- plan-design-reviewSkill
- plan-eng-reviewSkill
- pptxSkill
- product-engineerSkill
- prompt-engineerSkill
- python-developmentSkill
- qa-engineerSkill
- react-developmentSkill
- release-engineerSkill
- research-agentSkill
- retro-engineerSkill
- safety-guardrailsSkill
- skill-creatorSkill
- spec-authorSkill
- sre-canarySkill
- system-designSkill
- technical-writerSkill
- test-writerSkill
- theme-factorySkill
- typescript-developmentSkill
- webapp-testingSkill
- xlsxSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
27 rules. 0 are common, 21 are distinctive, and 6 are very specific to this project.
0
Common
Most of the 12 edited versions we read keep these.
21
Distinctive
This author's own choices. Worth a look.
6
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 14
Before writing security controls, understand what you are protecting:
- Distinctive: line 22
Use STRIDE as a thinking tool: Spoofing, Tampering, Repudiation, Information disclosure, Denial of service, Elevation of privilege.
- Very specific: line 30
Verify ownership on every request — a user accessing /api/documents/123 must own document 123
- Distinctive: line 32
Never trust client-supplied IDs for access decisions without server-side verification
- Distinctive: line 38
Never store passwords in plaintext or with reversible encryption — bcrypt (cost ≥ 12) or argon2id
- Distinctive: line 39
Never store credit card numbers, SSNs, or equivalent PII unless absolutely required — tokenise instead
- Distinctive: line 40
Use strong, modern TLS — TLS 1.2 minimum, TLS 1.3 preferred.
- Distinctive: line 44
Use an ORM as the default — raw queries only when performance requires it, with parameterization enforced
- Very specific: line 47
Avoid eval(), exec(), os.system(), shell interpolation with user data
- Distinctive: line 67
Remove default credentials and unused accounts before deploying
- Distinctive: line 74
Remove unused dependencies — every dependency is an attack surface
- Distinctive: line 82
Never log authentication tokens, passwords, or session identifiers
- Distinctive: line 85
Verify integrity of downloaded artifacts in CI — checksums, signatures
- Very specific: line 86
Do not deserialize untrusted data without schema validation — avoid pickle, eval, unsafe YAML loaders
- Distinctive: line 87
Use subresource integrity (SRI) for CDN-hosted scripts
- Distinctive: line 100
Use an allow-list of permitted external domains — not a block-list
- Distinctive: line 101
Never pass user-controlled data directly to HTTP clients, DNS resolvers, or file loaders
- Distinctive: line 107
When reviewing or implementing JWTs:
- Distinctive: line 122
Use the Authorization Code flow with PKCE for all user-facing applications — never the Implicit flow
- Distinctive: line 123
Use the Client Credentials flow for service-to-service authentication
- Distinctive: line 147
Never check roles in business logic.
- Very specific: line 166
Verify Origin and Referer headers on state-changing requests as a secondary check
- Very specific: line 174
Commit .env files to version control
- Distinctive: line 180
Use a secrets manager in production: AWS Secrets Manager, Azure Key Vault, HashiCorp Vault, Doppler
- Distinctive: line 186
Use platform-native secret storage (GitHub Secrets, GitLab CI Variables)
- Distinctive: line 188
Use short-lived credentials where possible — OIDC-based cloud authentication instead of long-lived keys
- Very specific: line 194
Read threat-model.md when scoping a security review.
“Common” is measured: kept by at least 6 in 10 of the 12 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 Engineering
Approach every security task as an engineer who has read real incident post-mortems and knows that most breaches are not exotic zero-days — they are OWASP Top 10 vulnerabilities that were known, understood, and skipped. Security is not a phase at the end of development. It is a design constraint applied from the first line of code.
Step 0: Threat Model Before You Build
Before writing security controls, understand what you are protecting:
- What are the assets? User data, credentials, financial records, proprietary algorithms — name them
- Who are the threat actors? External attackers, malicious insiders, compromised dependencies, misconfigured services
- What are the attack surfaces? API endpoints, authentication flows, file uploads, third-party integrations, admin interfaces
- What are the trust boundaries? Where does data cross from untrusted to trusted? Every boundary needs validation
- What is the impact of a breach? Data exposure, financial loss, regulatory penalty, reputational damage — prioritise controls by impact
Use STRIDE as a thinking tool: Spoofing, Tampering, Repudiation, Information disclosure, Denial of service, Elevation of privilege. For each component, ask which STRIDE categories apply.
OWASP Top 10 — Mandatory Defenses
A01 — Broken Access Control
- Deny by default — every resource is protected unless explicitly made public
- Verify ownership on every request — a user accessing
/api/documents/123must own document 123 - Implement RBAC at the middleware layer — roles and permissions enforced before business logic runs
- Never trust client-supplied IDs for access decisions without server-side verification
- Log all access control failures — they are reconnaissance signals
A02 — Cryptographic Failures
- Enforce HTTPS everywhere — redirect HTTP to HTTPS; HSTS header with long max-age
- Encrypt sensitive data at rest — AES-256 minimum
- Never store passwords in plaintext or with reversible encryption — bcrypt (cost ≥ 12) or argon2id
- Never store credit card numbers, SSNs, or equivalent PII unless absolutely required — tokenise instead
- Use strong, modern TLS — TLS 1.2 minimum, TLS 1.3 preferred; disable weak cipher suites
A03 — Injection
- Parameterized queries for all database access — never interpolate user input into SQL
- Use an ORM as the default — raw queries only when performance requires it, with parameterization enforced
- Validate and sanitize all input at the API boundary — reject malformed input before it reaches business logic
- HTML-encode output in templates — use a templating engine that auto-escapes by default
- Avoid
eval(),exec(),os.system(), shell interpolation with user data
A04 — Insecure Design
- Security requirements belong in the design phase — add them to acceptance criteria, not as post-hoc patches
- Rate limit authentication endpoints — brute force is not sophisticated; stopping it is not optional
- Implement account lockout after repeated failed attempts with exponential backoff
- Multi-factor authentication for admin accounts and sensitive operations
A05 — Security Misconfiguration
- Security headers on every HTTP response:
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload Content-Security-Policy: default-src 'self' X-Content-Type-Options: nosniff X-Frame-Options: DENY Referrer-Policy: strict-origin-when-cross-origin Permissions-Policy: camera=(), microphone=(), geolocation=() - CORS: whitelist specific origins — never
Access-Control-Allow-Origin: *for credentialed requests - Disable debug endpoints, stack traces, and verbose error messages in production
- Remove default credentials and unused accounts before deploying
- Review cloud storage permissions — S3 buckets and blob containers are public by accident more often than by design
A06 — Vulnerable and Outdated Components
- Dependency scanning in CI —
npm audit,pip audit, Snyk, Dependabot - Pin dependency versions — floating versions pull in breaking or vulnerable updates silently
- Review dependency changelogs before updating — automated updates can introduce breaking changes
- Remove unused dependencies — every dependency is an attack surface
A07 — Identification and Authentication Failures
- JWT best practices (see JWT section below)
- Session tokens: cryptographically random, minimum 128 bits of entropy
- Invalidate sessions on logout — do not rely on token expiry alone
- Invalidate all sessions on password change
- Implement account lockout: 5 failed attempts → temporary lockout → exponential backoff
- Never log authentication tokens, passwords, or session identifiers
A08 — Software and Data Integrity Failures
- Verify integrity of downloaded artifacts in CI — checksums, signatures
- Do not deserialize untrusted data without schema validation — avoid
pickle,eval, unsafe YAML loaders - Use subresource integrity (SRI) for CDN-hosted scripts
- Sign build artifacts and container images; verify signatures at deploy time
A09 — Security Logging and Monitoring Failures
- Log all authentication events: success, failure, lockout, password reset
- Log all access control failures
- Log all admin actions
- Ship logs to a system the attacker cannot reach — a compromised server should not be able to erase its own audit trail
- Alert on: multiple failed logins, privilege escalation attempts, access to sensitive endpoints outside business hours
A10 — Server-Side Request Forgery (SSRF)
- Validate and whitelist URLs before making server-side HTTP requests
- Reject requests to private IP ranges (10.x.x.x, 172.16.x.x, 192.168.x.x, 169.254.x.x, localhost)
- Use an allow-list of permitted external domains — not a block-list
- Never pass user-controlled data directly to HTTP clients, DNS resolvers, or file loaders
JWT Review Checklist
When reviewing or implementing JWTs:
- Algorithm explicitly specified and validated — reject
alg: none; use RS256 or ES256 for multi-service; HS256 only when the secret is shared safely - Signature verified on every request — never decode without verifying
expclaim present and validated — short-lived access tokens (15 minutes); longer refresh tokens (7-30 days)iss(issuer) andaud(audience) claims validated — prevent token reuse across services- Refresh tokens rotated on use — a refresh token used twice indicates theft; invalidate both
- Refresh tokens stored securely — httpOnly cookie, not localStorage
- Token revocation strategy defined — short expiry is the simplest; token blacklist for immediate revocation needs
- Sensitive data not in the payload — JWTs are base64-encoded, not encrypted; do not store PII in claims
OAuth 2.0 / OIDC
- Use the Authorization Code flow with PKCE for all user-facing applications — never the Implicit flow
- Use the Client Credentials flow for service-to-service authentication
- Validate the
stateparameter to prevent CSRF on the callback - Validate
id_tokensignature,iss,aud,exp, andnonce - Store tokens in httpOnly cookies — not in JavaScript-accessible storage
- Request minimal scopes — principle of least privilege applies to OAuth scopes
- Validate redirect URIs strictly — registered URIs only, no open redirects
RBAC Design
Role-Based Access Control done correctly:
- Define roles at the domain level — not "admin/user" but "billing-admin", "content-editor", "read-only-viewer"
- Permissions are the unit of access control — roles are collections of permissions; check permissions, not roles in business logic
- Deny by default — a missing permission entry means no access
- Enforce at the middleware layer — permission checks happen before handlers run, not inside them
- Resource ownership is a permission —
order:read:own(can read own orders) vsorder:read:any(admin can read all orders) - Audit permission assignments — who granted this role, when, and why
User → has Roles → Roles contain Permissions → Permissions gate ResourcesNever check roles in business logic. Check permissions. Roles are a UI concern.
XSS Prevention
- React, Vue, Angular auto-escape by default — do not use
dangerouslySetInnerHTML/v-htmlwith untrusted content - Sanitize HTML with DOMPurify before rendering any user-generated rich text
- Content Security Policy blocks inline scripts and untrusted sources — implement it
HttpOnlyflag on session cookies — JavaScript cannot read themSameSite=StrictorSameSite=Laxon all cookies
CSRF Prevention
SameSite=Stricton session cookies prevents CSRF for modern browsers- For APIs: require a custom request header (e.g.,
X-Requested-With: XMLHttpRequest) — cross-origin requests cannot set custom headers - For traditional form submissions: double-submit cookie or synchronizer token pattern
- Verify
OriginandRefererheaders on state-changing requests as a secondary check
Secret Management
Never:
- Hardcode secrets in source code
- Commit
.envfiles to version control - Log secrets, tokens, or API keys
- Pass secrets as command-line arguments (visible in process list)
- Store secrets in environment variables on shared CI runners without scoping
Always:
- Use a secrets manager in production: AWS Secrets Manager, Azure Key Vault, HashiCorp Vault, Doppler
- Rotate secrets on a schedule and immediately after any suspected exposure
- Scope secrets to the minimum surface — a service that reads from one bucket does not need write access
- Audit secret access — who accessed what secret, when
In CI/CD:
- Use platform-native secret storage (GitHub Secrets, GitLab CI Variables)
- Mask secret values in logs — configure the CI platform to redact known secret patterns
- Use short-lived credentials where possible — OIDC-based cloud authentication instead of long-lived keys
Bundled Resources
Read threat-model.md when scoping a security review. Run python scripts/scan_secrets.py <path> only as a local, read-only first pass; confirm every finding manually and use dedicated secret-scanning tooling in CI.
Definition of Done — Security Work
- Threat model documented for the feature or service
- OWASP Top 10 defenses applied relevant to the surface area
- All inputs validated and sanitized at the boundary
- Authentication and authorization enforced on every protected endpoint
- Secrets in a secrets manager — not in source code or environment files committed to git
- Security headers configured on all HTTP responses
- Dependency scan passing in CI
- Security logging in place for auth events and access control failures
- JWT/OAuth implementation reviewed against the checklist
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.

