code-safety-scanner/SKILL.md
Scan any codebase for 14 critical safety issues across security vulnerabilities, server stability (500 errors), and payment misconfigurations. Use when auditing code before deployment, reviewing AI-generated code for production readiness, or...
npx skillsauth add peterbamuhigire/skills-web-dev code-safety-scannerInstall 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.
code-safety-scanner or would be better handled by a more specific companion skill.references only as needed.SKILL.md first, then load only the referenced deep-dive files that are necessary for the task.references/ directory for deep detail after reading the core workflow below.Systematic 14-point safety scan for web applications. Covers security, stability, and payment safety across PHP, Node.js/JS/TS, and Python stacks.
Automated Scan (default): Run all 14 checks, produce structured report. Checklist Mode: Reference checks passively during code review. State which mode at start.
Identify the project's tech stack by checking for:
composer.json / *.php = PHPpackage.json / *.js / *.ts = Node.js/JS/TSrequirements.txt / *.py = Python*.html, *.jsx, *.tsx, *.vue, *.svelteLoad the appropriate scan patterns from references/ based on detected stack.
Execute checks in order. For each check, use Grep/Glob to find patterns, then analyze context to confirm true positives. Rate each finding:
| Severity | Meaning | |----------|---------| | CRITICAL | Exploitable now, data loss or unauthorized access possible | | HIGH | Likely exploitable, requires specific conditions | | MEDIUM | Defense-in-depth gap, not immediately exploitable | | LOW | Best practice violation, minimal risk | | PASS | No issues found for this check |
Use this exact format:
# Code Safety Scan Report
**Project:** [name] | **Date:** [date] | **Stack:** [detected]
## Category A: Security Vulnerabilities
| # | Check | Severity | Findings |
|---|-------|----------|----------|
| 1 | Hardcoded API Keys | ... | ... |
| 2 | Inverted Auth Logic | ... | ... |
| 3 | Open Admin Endpoints | ... | ... |
| 4 | Missing Signup/Login Auth | ... | ... |
| 5 | Missing Row-Level Security | ... | ... |
## Category B: Server Stability (500 Error Risks)
| # | Check | Severity | Findings |
|---|-------|----------|----------|
| 6 | Unhandled Runtime Exceptions | ... | ... |
| 7 | Misconfigured Env Variables | ... | ... |
| 8 | Misconfigured File Paths | ... | ... |
| 9 | Database Connection Problems | ... | ... |
| 10 | Infinite Loops/Recursion | ... | ... |
| 11 | Memory Leaks | ... | ... |
| 12 | Concurrency Issues | ... | ... |
| 13 | Data Race Conditions | ... | ... |
## Category C: Payment Safety
| # | Check | Severity | Findings |
|---|-------|----------|----------|
| 14 | Duplicate Charge Risk | ... | ... |
## Summary
- **CRITICAL:** X | **HIGH:** X | **MEDIUM:** X | **LOW:** X | **PASS:** X
- **Top Priority Fixes:** [numbered list of most urgent items]
Check 1 - Hardcoded API Keys in Frontend
Scan frontend files for exposed secrets: API keys, tokens, connection strings.
Grep patterns: (sk_live|sk_test|pk_live|STRIPE|SUPABASE|apiKey|api_key|secret|token|password|firebase|AWS_) in *.js, *.ts, *.jsx, *.tsx, *.vue, *.svelte, *.html, *.env.local
Red flags:
sk_live_, sk_test_ prefixed strings in client codeservice_role key in frontend (anon key is OK)true for allAuthorization: Bearer with hardcoded token values.env files committed to git (check .gitignore)For detailed patterns per stack, see references/security-scans.md. Remediation: Cross-ref vibe-security-skill (Section 4).
Check 2 - Inverted Authentication Logic
Scan auth middleware/guards for logic that accidentally inverts access control.
Look for:
if (!authenticated) granting access instead of blockingif (role !== 'admin') allowing admin routesnext() in the rejection branchtrue on failureallowList / denyList logic reversedRead every auth middleware file fully. Trace the logic path for both authenticated and unauthenticated users.
For detailed patterns, see references/security-scans.md. Remediation: Cross-ref web-app-security-audit (Layer 3).
Check 3 - Open Admin Endpoints
Scan for routes/endpoints with admin functionality that lack auth middleware.
Grep patterns: (admin|dashboard|bulk|delete-all|manage|users/list|export-all|import|migrate|seed|reset) in route files.
Check each matched route for:
Remediation: Cross-ref web-app-security-audit (Layer 3).
Check 4 - Missing User Auth on Signup/Login
Scan auth endpoints for missing verification and validation.
Check for:
Remediation: Cross-ref vibe-security-skill (Section 2).
Check 5 - Missing Row-Level Security
Scan database queries for missing tenant/user isolation.
Grep patterns: (SELECT|UPDATE|DELETE|INSERT) in query files, then check for:
WHERE user_id = or WHERE tenant_id =alter table...enable row level security)For detailed ORM patterns, see references/security-scans.md. Remediation: Cross-ref vibe-security-skill (Section 6).
For all detailed scan patterns per stack, see references/stability-scans.md.
Check 6 - Unhandled Runtime Exceptions
Scan for code paths that can throw without catch/error handling:
JSON.parse, json_decode, json.loads)Check 7 - Misconfigured Environment Variables
Scan for env var usage without validation:
process.env.X / $_ENV['X'] / os.environ['X'] used without fallback or validation.env.example file documenting required variables|| 'localhost').env.exampleCheck 8 - Misconfigured File Paths
Scan for fragile file path references:
/home/user/, C:\Users\)./uploads/, ../config/)path.join / realpath / os.path.joinCheck 9 - Database Connection Problems
Scan for connection pool and lifecycle issues:
finally / destructor)Check 10 - Infinite Loops/Recursion
Scan for unbounded iteration:
while(true) / while(1) without break conditionssetInterval without clearIntervalCheck 11 - Memory Leaks
Scan for resource accumulation patterns:
Check 12 - Concurrency Issues
Analyze for concurrent access problems:
count++ in concurrent context)Check 13 - Data Race Conditions
Analyze for specific race condition patterns:
SELECT ... FOR UPDATE on read-modify-write sequencesCross-ref mysql-best-practices (references/transaction-locking.md) for DB-level fixes.
For detailed patterns, see references/payment-scans.md.
Check 14 - Duplicate Charge Risk
Scan payment flows for double-charge vulnerabilities:
idempotency_key parameterFor deeper remediation guidance on Category A findings:
| Check | Skill | Section | |-------|-------|---------| | Hardcoded API Keys | vibe-security-skill | Section 4: Hardcoded secrets | | Inverted Auth | web-app-security-audit | Layer 3: Authorization | | Open Endpoints | web-app-security-audit | Layer 3: Access Control | | Missing Auth | vibe-security-skill | Section 2: Authentication | | Missing RLS | vibe-security-skill | Section 6: Row-Level Security | | Race Conditions | mysql-best-practices | references/transaction-locking.md |
When used passively during code review, check each file against relevant items:
data-ai
Use when adding AI-powered analytics to a SaaS platform — semantic search over business data, natural language queries, trend detection, anomaly alerts, and AI-generated insights for dashboards. Covers embeddings, NL2SQL, and per-tenant analytics...
data-ai
Design AI-powered analytics dashboards — what metrics to show, how to display AI predictions and confidence, drill-down patterns, KPI cards, trend visualisation, AI Insights panels, export design, and role-based dashboard variants. Invoke when...
development
Use when designing, building, reviewing, or upgrading production software systems that must be secure, performant, maintainable, scalable, and user-centered. Apply before writing specs, code, architecture, APIs, databases, mobile apps, SaaS platforms, or ERP systems.
development
Professional web app UI using commercial templates (Tabler/Bootstrap 5) with strong frontend design direction when needed. Use for CRUD interfaces, dashboards, admin panels with SweetAlert2, DataTables, Flatpickr. Clone seeder-page.php, use...