security-scan
Scan the codebase for common security issues: hardcoded secrets, SQL injection vectors, XSS, unvalidated inputs, and insecure defaults. Use before deploying, as part of code quality review, or when asked to check for security issues.
- License 许可
- MIT
- 最近更新
- 2026-05-15
- Stars
- ★ 13
- Forks
- 1
01 前言 Front Matter
- name
- security-scan
- agent
- Explore
- title
- security-scan
- context
- fork
- description
- Scan the codebase for common security issues: hardcoded secrets, SQL injection vectors, XSS, unvalidated inputs, and insecure defaults. Use before deploying, as part of code quality review, or when asked to check for security issues.
- allowed-tools
- Grep Glob Read Bash(git diff *) Bash(git log *)
02 资源文件 1
- 其他SKILL.md.tmpl9.1 KB
03 SKILL.md 正文
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] <file>:<line> — <description>
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.
04 同仓库更多 Skills
tag-version
Bump the package version and create an annotated git tag. Accepts a semantic version number (1.2.0) or a bump type (patch, minor, major). Does not push — use the publish skill to push. Use as part of a release workflow.
release
Run the complete release workflow: changelog entry, version bump, git tag, and GitHub release. Invokes changelog-entry, tag-version, and publish in sequence. Use when releasing a new version of the project.
publish
Push the current branch and all tags to origin, then create a GitHub release using the latest tag and its CHANGELOG.md entry. Use after tag-version to complete a release.
changelog-entry
Draft the changelog entry for all unreleased commits in Keep a Changelog format. Groups commits into Added, Changed, Fixed, Removed, and Security. Use before releasing a new version or when updating CHANGELOG.md.
auto-format-on-edit
Automatically format code files after every edit using Prettier and ESLint. Active in the background whenever Claude edits a file. Formatting is silent — no prompts, no output unless a formatter fails. Use when you want consistent formatting enforced automatically during a coding session.
code-quality-audit
Run a comprehensive code quality audit covering security, performance, and maintainability. Use for quarterly audits, pre-release reviews, or when onboarding to a large codebase.