Ensure accessibility in UI components including semantic HTML, ARIA attributes, keyboard navigation, and WCAG 2.2 AA compliance.
日本語の概要は準備中です。原文の説明を表示しています。
Perform security-focused review of code diffs and pull requests, identifying newly introduced vulnerabilities, security regressions, and unsafe patterns in changed code.
インストールする前に、エージェントに与えられる指示の中身を確認できます。
AUTHORIZED USE ONLY: These skills are for DEFENSIVE security analysis and authorized research:
NEVER use for:
# Review staged changes
git diff --cached
# Review specific commit
git diff HEAD~1..HEAD
# Review pull request (GitHub)
gh pr diff <PR-NUMBER>
# Review specific files
git diff --cached -- src/auth/ src/api/
# Review with context (10 lines)
git diff -U10 HEAD~1..HEAD
# Show only changed file names
git diff --name-only HEAD~1..HEAD
# Show stats (insertions/deletions per file)
git diff --stat HEAD~1..HEAD
Prioritize review by security sensitivity:
| Priority | File Patterns | Reason |
|---|---|---|
| P0 | **/auth/**, **/security/**, **/crypto/** | Direct security code |
| P0 | *.env*, **/config/**, **/secrets/** | Configuration and secrets |
| P0 | **/middleware/**, **/guards/**, **/validators/** | Security controls |
| P1 | **/api/**, **/routes/**, **/controllers/** | Attack surface |
| P1 | package.json, requirements.txt, go.mod | Dependency changes |
| P1 | Dockerfile, docker-compose.yml, *.yaml | Infrastructure config |
| P2 | **/models/**, **/db/**, **/queries/** | Data access layer |
| P2 | **/utils/**, **/helpers/** | Shared utility code |
| P3 | **/tests/**, **/docs/** | Tests and documentation |
For each changed file, evaluate these security dimensions:
CHECK: Did the change modify input validation?
- Added validation: POSITIVE (verify correctness)
- Removed validation: CRITICAL (likely regression)
- Changed validation: INVESTIGATE (may weaken security)
- No validation on new input: WARNING (missing validation)
Red Flags:
strict mode to looseany type or disabling type checksCHECK: Did the change affect auth?
- New endpoint without auth middleware: CRITICAL
- Removed auth check: CRITICAL
- Changed permission levels: INVESTIGATE
- Modified token handling: INVESTIGATE
- Added new auth bypass: CRITICAL
Red Flags:
isAdmin checks removed or weakenedCHECK: Did the change introduce new data flows?
- User input to database: CHECK for injection
- User input to HTML: CHECK for XSS
- User input to file system: CHECK for path traversal
- User input to command execution: CHECK for command injection
- User input to redirect: CHECK for open redirect
CHECK: Did the change affect cryptography?
- Algorithm downgrade: CRITICAL (e.g., SHA-256 to MD5)
- Key size reduction: CRITICAL
- Removed encryption: CRITICAL
- Changed to ECB mode: CRITICAL
- Hardcoded key/IV: CRITICAL
CHECK: Did the change affect error handling?
- Removed try/catch: WARNING
- Added stack trace in response: CRITICAL (info disclosure)
- Changed error to success: CRITICAL (fail-open)
- Swallowed exceptions: WARNING
CHECK: Did dependencies change?
- New dependency: CHECK for known CVEs
- Version downgrade: INVESTIGATE
- Removed security dependency: CRITICAL
- Changed to fork/alternative: INVESTIGATE
# Check new dependencies for known vulnerabilities
npm audit
pip audit
go list -m -json all | nancy sleuth
For each finding, provide a structured inline comment:
**SECURITY [SEVERITY]**: [Brief description]
**Location**: `file.js:42` (in diff hunk)
**Category**: [OWASP/CWE category]
**Impact**: [What could go wrong]
**Remediation**: [How to fix]
```diff
- // Current (vulnerable)
- db.query("SELECT * FROM users WHERE id = " + userId);
+ // Suggested (safe)
+ db.query("SELECT * FROM users WHERE id = $1", [userId]);
```
### Severity Levels for Diff Findings
| Severity | Criteria | Action |
|----------|----------|--------|
| **CRITICAL** | Exploitable vulnerability introduced | Block merge |
| **HIGH** | Security regression or missing control | Block merge |
| **MEDIUM** | Weak pattern that could lead to vulnerability | Request changes |
| **LOW** | Style issue with security implications | Suggest improvement |
| **INFO** | Security observation, no immediate risk | Note for awareness |
## Step 4: Differential Security Report
### Report Template
```markdown
## Differential Security Review
**PR/Commit**: [reference]
**Author**: [author]
**Reviewer**: security-architect
**Date**: YYYY-MM-DD
**Files Changed**: X | Additions: +Y | Deletions: -Z
### Security Impact Summary
| Category | Before | After | Change |
|----------|--------|-------|--------|
| Input validation | X checks | Y checks | +/-N |
| Auth-protected routes | X routes | Y routes | +/-N |
| SQL parameterization | X% | Y% | +/-N% |
| Secrets exposure | X | Y | +/-N |
### Findings
#### CRITICAL
1. [Finding with full details and remediation]
#### HIGH
1. [Finding with full details and remediation]
#### MEDIUM
1. [Finding with full details and remediation]
### Verdict
- [ ] APPROVE: No security issues found
- [ ] APPROVE WITH CONDITIONS: Minor issues, fix before deploy
- [ ] REQUEST CHANGES: Security issues must be addressed
- [ ] BLOCK: Critical vulnerability introduced
# Scan only changed files
semgrep scan --config=p/security-audit --baseline-commit=main
# Scan diff between branches
semgrep scan --config=p/security-audit --baseline-commit=origin/main
# Output as SARIF for CI integration
semgrep scan --config=p/security-audit --baseline-commit=main --sarif --output=diff-results.sarif
# Check for secrets in diff
git diff --cached | grep -iE "(password|secret|api.?key|token|credential)\s*[=:]"
# Check for dangerous function additions
git diff --cached | grep -E "^\+" | grep -iE "(eval|exec|system|innerHTML|dangerouslySetInnerHTML)"
# Check for removed security middleware
git diff --cached | grep -E "^\-" | grep -iE "(authenticate|authorize|validate|sanitize|escape)"
# Check for new deferred security items (unresolved markers)
git diff --cached | grep -E "^\+" | grep -iE "(T0D0|F1XME|HACK|XXX).*(security|auth|vuln)"
name: Security Diff Review
on: [pull_request]
jobs:
security-diff:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Semgrep diff scan
uses: returntocorp/semgrep-action@v1
with:
config: p/security-audit
- name: Check for secrets
run: |
git diff origin/main..HEAD | grep -iE "(password|secret|api.?key|token)\s*[=:]" && exit 1 || exit 0
</instructions>
| Pattern | What Changed | Risk |
|---|---|---|
Removed helmet() middleware | Security headers removed | Header injection, clickjacking |
Changed sameSite: 'strict' to 'none' | Cookie policy weakened | CSRF attacks |
| Removed rate limiting middleware | Rate limit removed | Brute force, DoS |
Added cors({ origin: '*' }) | CORS wildcard | Cross-origin attacks |
Removed csrf() middleware | CSRF protection removed | CSRF attacks |
Changed httpOnly: true to false | Cookie accessible to JS | XSS token theft |
static-analysis - Full codebase static analysisvariant-analysis - Pattern-based vulnerability discoverysemgrep-rule-creator - Custom detection rulesinsecure-defaults - Hardcoded credentials detectionsecurity-architect - STRIDE threat modelinggit diff -U10 for context-extended diffs — the default 3-line context is insufficient to detect security regressions from function reordering or middleware removal.| Anti-Pattern | Why It Fails | Correct Approach |
|---|---|---|
| Reviewing only changed lines without reading surrounding context | Security regressions appear as refactors when surrounding auth/middleware is removed | Use git diff -U10; read full function scope before and after the change |
| Treating security dependency removal as a dependency update | Removing a security package (helmet, csurf) eliminates its protections silently | Classify all dependency changes; flag security-package removals as CRITICAL |
| Skipping deleted-line review | Removed input validation, auth checks, or logging are invisible in addition-only review | Review deletions first; build the "what protections were removed" list |
| Approving new routes without auth check verification | New endpoints skip existing middleware when not explicitly added | Verify middleware chain for every new route/controller in the diff |
| Using informal severity like "looks fine" without CWE/OWASP reference | Severity ambiguity makes remediation prioritization inconsistent | Use the structured format: SECURITY [SEVERITY], CWE, OWASP category, remediation |
Before starting:
Read .claude/context/memory/learnings.md
After completing:
.claude/context/memory/learnings.md.claude/context/memory/issues.md.claude/context/memory/decisions.mdASSUME INTERRUPTION: If it's not in memory, it didn't happen.
まだレビューはありません。使ってみた感想をお寄せください。
概要と使いどころ
Ensure accessibility in UI components including semantic HTML, ARIA attributes, keyboard navigation, and WCAG 2.2 AA compliance.
日本語の概要は準備中です。原文の説明を表示しています。
Use when you want to improve response quality through meta-cognitive reasoning. Applies 15+ reasoning methods to reconsider and refine initial outputs.
日本語の概要は準備中です。原文の説明を表示しています。
N-round opposing-stance debates for trade-off analysis. Assigns pro/con roles to agents, runs structured debate rounds with quality scoring, and produces a moderator synthesis with confidence-rated recommendation. Generalizable to architecture, technology, security, and design decisions.
日本語の概要は準備中です。原文の説明を表示しています。
Force adversarial code review stance that eliminates confirmation bias — reviewer must find issues or re-analyze
日本語の概要は準備中です。原文の説明を表示しています。
Creates specialized AI agents on-demand when no existing agent matches a request. Use when the Router cannot find a suitable agent for a task. Enables self-evolution by generating persistent agents.
日本語の概要は準備中です。原文の説明を表示しています。
LLM-as-judge evaluation framework with 5-dimension rubric (accuracy, groundedness, coherence, completeness, helpfulness) for scoring AI-generated content quality with weighted composite scores and evidence citations
日本語の概要は準備中です。原文の説明を表示しています。