appsec-review
Skill0 starsChanged 43 days agoApache-2.0View on GitHub
Evidence-based application security review for any codebase, pull request or diff. Use when the user asks for a security review, security audit, vulnerability assessment, secure code review, pentest preparation, threat model, OWASP check, or "is this code secure", or before shipping auth, payment, upload, API or AI/LLM features. Detects the tech stack, routes to installed framework skills (e.g. laravel-security), and otherwise applies built-in checklists for authentication and sessions, access control, injection, XSS/CSRF/CORS, SSRF and file uploads, secrets and configuration, cryptography, APIs, dependencies and CI/CD supply chain, business logic, and LLM/agent features. Produces findings with evidence, severity, confidence, fixes and verification steps, and keeps false positives low.
2 other projects use a version of this.
Adopted by
Most recently taken up by
- ibrahimabdallatif/appsec-reviewtheir own version, first seen Oct 25, 2026
- alebgl77/claude-inctheir own version, first seen Jul 28, 2026
Other versions2 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 2
- alebgl77/claude-inc★ 21same name
- ibrahimabdallatif/appsec-review★ 3same name
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 repository11 other files it gives its agents.
- aspnet-core-securitySkill
- django-securitySkill
- flutter-securitySkill
- laravel-securitySkill
- nestjs-securitySkill
- nextjs-securitySkill
- nodejs-securitySkill
- react-securitySkill
- spring-boot-securitySkill
- supabase-securitySkill
- wordpress-securitySkill
The file
We split this skill into the rules it gives an agent
11 rules. About 0 are common, 5 are distinctive, and 6 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈5
Distinctive · estimate
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
- Very specific: line 17
All paths in this skill (references/...) are relative to the directory containing this SKILL.md.
- Distinctive: line 22
Evidence over speculation: Never report something you haven't traced in the actual code or config.
- Very specific: line 27
Read references/methodology.md once per review.
- Very specific: line 36
Diff / PR review: only changed files plus the code they call and are called by.
- Very specific: line 41
Use references/stack-detection.md.
- Very specific: line 45
If a matching framework skill is installed (e.g.
- Very specific: line 79
Use references/report-template.md.
- Distinctive: line 87
When you are writing code rather than reviewing it, apply these defaults without being asked:
- Distinctive: line 91
Use parameterized queries and ORM APIs.
- Distinctive: line 94
Use framework-provided auth, session, CSRF and crypto.
- Distinctive: line 97
Add a test that proves the security boundary.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
AppSec Review
A repeatable method for finding, explaining, fixing and verifying security issues, with evidence instead of speculation.
All paths in this skill (references/...) are relative to the directory containing this SKILL.md.
Ground rules
- Authorized scope only. Review code the user owns or is authorized to assess. Dynamic testing only against environments the user controls, with non-destructive, low-volume checks. No denial-of-service, no data destruction, no attacks on third-party systems.
- Evidence over speculation. Never report something you haven't traced in the actual code or config. Never invent files, routes, packages or settings.
- Separate vulnerabilities from hardening. A missing best practice is not a vulnerability unless you can show impact.
- Redact secrets in all output (
sk_live_****). - Explain before changing code. Fix only when asked, or when the user's request implies it.
Read references/methodology.md once per review. It defines the evidence standard, confidence levels and the severity rubric used below.
Workflow
1. Scope
Establish what is being reviewed. If the user didn't say, infer it and state the assumption:
- Full review: the whole repository.
- Diff / PR review: only changed files plus the code they call and are called by. Use
git diff <base>...HEADor the PR. Report pre-existing issues only if the change makes them reachable or worse. - Feature review: one flow (e.g. checkout, file upload, login), traced end to end.
2. Detect the stack
Use references/stack-detection.md. Record languages, frameworks with versions from lock files, auth mechanism, data stores, deployment/infra files, and AI/LLM usage.
3. Load the right knowledge
- If a matching framework skill is installed (e.g.
laravel-security), use it for that part of the code. It has the framework-specific locations, APIs, defaults and false positives. - For anything without a framework skill, use the built-in checklists:
| Area | Reference |
| Authentication, sessions, tokens, OAuth/OIDC, JWT, MFA | references/authentication-sessions.md |
| Authorization, IDOR/BOLA, multi-tenancy | references/authorization.md |
| SQL/NoSQL/command/template injection, deserialization, path traversal, XXE | references/injection.md |
| XSS, CSRF, CORS, clickjacking, open redirects, client-side issues | references/client-side.md |
| SSRF and file uploads/downloads | references/ssrf-files.md |
| Secrets, configuration, headers, logging, rate limiting, cryptography | references/secrets-config-crypto.md |
| API-specific risks (REST, GraphQL, WebSockets, webhooks) | references/api-security.md |
| Dependencies, lock files, CI/CD and supply chain, containers | references/supply-chain.md |
| Business logic, race conditions, payments, workflows | references/business-logic.md |
| LLM / AI agent features (prompt injection, tool use, RAG, MCP) | references/llm-security.md |
Load a reference only when you reach that area.
4. Map the attack surface
List entry points (HTTP routes, GraphQL resolvers, WebSocket handlers, queue consumers, webhooks, CLI/cron, mobile deep links, LLM tools) and mark: authentication required? role required? takes identifiers, URLs, files, HTML or queries? Prioritize unauthenticated → authenticated → admin and money / PII / credentials / code execution paths.
For a quick threat model (when asked, or for new features), answer: what are the assets, who are the actors (anonymous, user, other tenant, admin, integration), where are the trust boundaries, and what is the worst outcome per boundary?
5. Review and trace
For each candidate issue, trace source → transformations/controls → sink with file:line references. Check that the control isn't applied somewhere else (middleware, decorators, base classes, gateways, ORM scopes, framework defaults) before reporting it missing.
6. Classify
Assign confidence (Confirmed / Likely / Hardening / Informational) and severity (Critical / High / Medium / Low / Info) using references/methodology.md. Drop anything you can't support with evidence, or move it to "Needs verification" with the specific question that would settle it.
7. Report
Use references/report-template.md. Order findings by severity and put Confirmed before Likely. Be concise: one finding per root cause, listing all affected locations.
8. Fix and verify (when asked)
Make the smallest change using the framework's own security mechanism. Add a regression test that fails before and passes after. Search for and fix sibling occurrences. Rotate any exposed secret. Report what was verified and what couldn't be.
Build mode (writing secure code)
When you are writing code rather than reviewing it, apply these defaults without being asked:
- Validate input at the boundary with an allow-list schema. Use only the validated object downstream.
- Enforce authorization server-side on every request and object. Scope queries by owner/tenant.
- Use parameterized queries and ORM APIs. Never build SQL, shell commands or templates with string concatenation.
- Encode output for its context. Avoid raw-HTML APIs (
innerHTML,dangerouslySetInnerHTML,v-html,|safe,{!! !!}) unless the content is sanitized. - Store secrets in environment or secret managers, never in code or client bundles.
- Use framework-provided auth, session, CSRF and crypto. Never write custom crypto.
- Make outbound requests to user-supplied URLs only through an allow-list. Treat uploads as hostile (random names, type allow-list, private storage).
- For LLM features: treat model output as untrusted input, give tools least privilege, and require human confirmation for destructive actions.
- Add a test that proves the security boundary.
References
- OWASP Top 10 (2025): https://owasp.org/Top10/2025/
- OWASP ASVS 5.0: https://owasp.org/www-project-application-security-verification-standard/
- OWASP API Security Top 10 (2023): https://owasp.org/API-Security/
- OWASP Top 10 for LLM Applications (2025): https://genai.owasp.org/llm-top-10/
- OWASP Cheat Sheet Series: https://cheatsheetseries.owasp.org/
- CWE: https://cwe.mitre.org/
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.

