skills/reviewing-security/SKILL.md
OWASP Top 10 security review. Use when: security, OWASP, XSS, SQL injection, セキュリティ, 脆弱性, cloud security, AWS, IAM, Terraform, クラウドセキュリティ, インフラ. Do NOT use for readability (reviewing-readability), type errors (reviewing-type-safety), or test design (reviewing-testability).
npx skillsauth add thkt/claude-config reviewing-securityInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
| ID | Category | Pattern | Fix |
| --- | ------------------------- | -------------------------------------------------------- | --------------------------------------- |
| A01 | Broken Access Control | Missing auth, IDOR, path traversal | Auth middleware, ownership check |
| A02 | Cryptographic Failures | password: 'plaintext' | bcrypt/argon2 hashing |
| A03 | Injection | db.query(\SELECT...${id}`) | Parameterized query, ORM | | A03 | Injection |exec(`ping ${host}`) | Input validation, library instead | | A03 | XSS |dangerouslySetInnerHTML(static presence) | Default escaping, DOMPurify | | A05 | Security Misconfiguration |cors({ origin: '*' }) | Explicit origin allowlist | | A05 | Security Misconfiguration |cookie: {}(no options) | secure, httpOnly, sameSite: 'strict' | | A05 | Security Misconfiguration |err.stackin error response withoutNODE_ENVguard | Generic message in prod, log internally | | A09 | Logging Failures |logger.info({ password }) | Exclude sensitive fields | | A10 | SSRF |fetch(userInputUrl) | URL validation, allowlist | | A03 | XSS (Taint) |dangerouslySetInnerHTML={{ __html }}without sanitizer | DOMPurify.sanitize() at boundary | | A03 | XSS (Taint) | Function arg →innerHTMLwithout sanitization | Sanitize at function boundary | | A03 | XSS (Taint) |<a href={variable}>with user-controlled URL | Protocol allowlist (https/http only) | | A01 | Open Redirect (Taint) | URL param →location.hrefwithout validation | Domain allowlist or relative-only | | A04 | Insecure Design |postMessagehandler without origin check | Strictevent.origin` comparison |
| A02 | Sensitive Data Exposure | JWT stored in localStorage/sessionStorage | httpOnly cookie instead |
Report findings with confidence >=0.60. For 0.60-0.80: include verification_hint. For >=0.80: include full exploit scenario and fix recommendation. Always include file:line.
| Topic | Scope | File |
| --------- | ---------------- | ------------------------------------------------------------ |
| Basic | A01, A02, A07 | ${CLAUDE_SKILL_DIR}/references/owasp-basic.md |
| Injection | A03 | ${CLAUDE_SKILL_DIR}/references/owasp-injection.md |
| Advanced | A04-A06, A08-A10 | ${CLAUDE_SKILL_DIR}/references/owasp-advanced.md |
| Cloud | IAM, IaC, CI/CD | ${CLAUDE_SKILL_DIR}/references/cloud-infrastructure.md |
| Frontend | Taint analysis | ${CLAUDE_SKILL_DIR}/references/frontend-taint-checklist.md |
documentation
Generates and updates .claude/OUTCOME.md interactively. When the file is absent or empty (no Behavior / all sections TBD), collects content via AskUserQuestion and writes the stub; when present, shows the current state and applies updates.
development
Judge a SKILL.md against craft axes (single responsibility, description distinctiveness, imperative voice, verifiable completion, calibration, progressive disclosure) and apply the fixes the audit surfaces. Do not use for format-presence-only checks (use reviewer-prompt) or reproducibility loops (use /tuning).
tools
Internal helper for /think Step 11. Renders SOW.md + Spec.md as an integrated Astro view and returns a dev server URL.
development
Extract repository spec while detecting bugs, spec gaps, and consistency drift via dual-purpose documentation. OUTCOME.md-axis question-driven exploration with ephemeral output. Do NOT use for code review (use /audit or /polish), feature implementation (use /code), planning only (use /think), or single-bug fix (use /fix).