Install
$ agentstack add skill-davila7-claude-with-skills-security-scan ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
Run a security scan on this codebase.
Changed files (focus here first)
!git diff --name-only HEAD~1 2>/dev/null || git diff --name-only origin/main...HEAD 2>/dev/null || echo "all files — no git diff available"
Prioritize scanning the files listed above. If the output says "all files", scan the entire codebase.
Security checks
For each check, search the changed files first. If changed files is "all files", search the entire codebase excluding node_modules/, dist/, .git/, vendor/, and *.min.js.
1. Hardcoded secrets
Search for patterns like password=, api_key=, secret=, token=, passwd=, private_key= followed by a literal value (not a variable reference or environment variable lookup).
Exclude:
- Files in
test/,spec/,__tests__/directories - Files ending in
.example,.sample,.template - Lines that contain
process.env,os.environ,getenv,${,$(, orconfig.get
2. SQL injection risk
Search for SQL keywords (SELECT, INSERT, UPDATE, DELETE, WHERE, FROM) appearing inside f-strings (Python), template literals (JavaScript/TypeScript), or string concatenation patterns where a variable is embedded directly. Look for patterns like:
f"SELECT ... {variable}- `
SELECT ... ${variable}` "SELECT " + variable
3. XSS vectors
Search .js and .ts files for innerHTML being assigned a value that includes a variable: element.innerHTML = , .innerHTML +=. Flag any assignment that does not call a sanitization function (DOMPurify.sanitize, sanitize(, escapeHtml().
4. Unvalidated inputs
Search for patterns where request body or parameters are passed directly to a database function without an intervening validation step. Look for req.body., request.data, request.form, params[ in close proximity (within 5 lines) to database calls (query(, execute(, find(, .save(, .create().
5. Insecure defaults
Search for:
DEBUG = TrueorDEBUG=True(Python)NODE_ENVnot set toproductionin deployment configuration filesverify=Falsein Python requests calls- CORS configured to allow all origins:
cors({ origin: '*' }),Access-Control-Allow-Origin: *in non-development config files
Output format
Output exactly:
SECURITY FINDINGS:
- [CRITICAL|HIGH|MEDIUM|LOW] : —
Use these severity levels:
- CRITICAL: hardcoded secret or SQL injection
- HIGH: XSS or unvalidated input in an auth path
- MEDIUM: unvalidated input in a non-auth path,
DEBUG=Truein a deployed config - LOW: insecure default that is acceptable in development but not production
If no findings: output exactly SECURITY FINDINGS: none
Do not add any prose before or after the findings block.
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: davila7
- Source: davila7/claude-with-skills
- License: MIT
- Homepage: https://claude-with-skills.vercel.app
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.