원클릭으로
security-audit
Security vulnerability analysis to detect hardcoded secrets, dangerous patterns, and unsafe code practices.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Security vulnerability analysis to detect hardcoded secrets, dangerous patterns, and unsafe code practices.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
Comprehensive static code analysis to enforce architectural patterns, conventions, and code quality standards.
Architecture dependency analysis to ensure proper feature isolation and composition root pattern.
Comprehensive documentation generation through automated codebase analysis, pattern detection, and diagram creation.
Dependency health analysis to detect outdated packages and unused dependencies.
Safe minor dependency updates with validation (lint/test/build) and automatic rollback on failure.
Test coverage analysis to ensure adequate testing, Storybook coverage, and test quality.
SOC 직업 분류 기준
| name | security-audit |
| description | Security vulnerability analysis to detect hardcoded secrets, dangerous patterns, and unsafe code practices. |
Analyze security vulnerabilities in your codebase to ensure:
Rule: Never hardcode secrets in source code. Use environment variables.
Detects:
Violations:
// ❌ WRONG - Hardcoded API key
const API_KEY = "sk_live_1234567890abcdef";
const password = "mypassword123";
// ✅ CORRECT - Use environment variables
const API_KEY = import.meta.env.VITE_API_KEY;
const password = process.env.PASSWORD; // Server-side only
Fix:
Check: check_hardcoded_secrets.mjs
Rule: Never use eval() - it's a major security risk.
Security risks:
Violations:
// ❌ WRONG - eval() is dangerous
const result = eval(userInput);
eval("alert('XSS')");
// ✅ CORRECT - Use safe alternatives
const result = JSON.parse(jsonString);
const func = new Function('return ' + code)(); // Still risky, use carefully
Fix:
Check: check_eval_usage.mjs
Rule: Avoid dangerouslySetInnerHTML and innerHTML - they can cause XSS attacks.
Security risks:
Violations:
// ❌ WRONG - Direct HTML injection
element.innerHTML = userContent;
<div dangerouslySetInnerHTML={{ __html: userInput }} />
// ✅ CORRECT - Use React rendering
<div>{content}</div>
// ✅ ACCEPTABLE - Sanitized HTML
import DOMPurify from 'dompurify';
const clean = DOMPurify.sanitize(dirtyHTML);
<div dangerouslySetInnerHTML={{ __html: clean }} />
Fix:
Check: check_dangerous_html.mjs
Rule: Only expose environment variables prefixed with VITE_ to client code.
Safe variables:
import.meta.env.VITE_* - Explicitly safe for clientimport.meta.env.MODE - Vite built-inimport.meta.env.DEV - Vite built-inimport.meta.env.PROD - Vite built-inViolations:
// ❌ WRONG - Exposing non-VITE_ variable to client
const secret = import.meta.env.API_SECRET;
const key = import.meta.env.DATABASE_URL;
// ✅ CORRECT - Use VITE_ prefix for client-safe values
const apiUrl = import.meta.env.VITE_API_URL;
const appName = import.meta.env.VITE_APP_NAME;
Fix:
Check: check_env_exposure.mjs
node ./.claude/skills/security-audit/scripts/run_all_checks.mjs
# Hardcoded secrets check
node ./.claude/skills/security-audit/scripts/check_hardcoded_secrets.mjs
# eval() usage check
node ./.claude/skills/security-audit/scripts/check_eval_usage.mjs
# Dangerous HTML patterns check
node ./.claude/skills/security-audit/scripts/check_dangerous_html.mjs
# Environment variable exposure check
node ./.claude/skills/security-audit/scripts/check_env_exposure.mjs
To save a comprehensive markdown report of all checks:
node ./.claude/skills/security-audit/scripts/generate_report.mjs
Output: reports/{YYYY-MM-DD_HH-MM}/security-audit-report.md
Report includes:
Environment variable:
# Custom report directory
export REPORT_DIR="reports/my-custom-timestamp"
node ./.claude/skills/security-audit/scripts/generate_report.mjs
Usage patterns:
# Option 1: Console output only (default)
node ./.claude/skills/security-audit/scripts/run_all_checks.mjs
# Option 2: Console output + Save report
node ./.claude/skills/security-audit/scripts/generate_report.mjs
# Option 3: Specific check only
node ./.claude/skills/security-audit/scripts/check_hardcoded_secrets.mjs
Report structure:
reports/
└── 2025-11-01_14-30/ # Includes hours and minutes for multiple runs per day
├── security-audit-report.md # This skill's report
├── code-audit-report.md # Code quality audit (separate)
├── arch-audit-report.md # Architecture audit (separate)
└── ... # Other reports
Each check produces:
Example output:
Hardcoded Secrets Check
================================================================================
Rule: Never hardcode secrets (API keys, passwords, tokens) in source code
Violations
--------------------------------------------------------------------------------
❌ Found 2 hardcoded secret(s)
API_KEY (1 occurrence(s)):
File: src/services/api.ts:15
Snippet: const API_KEY = "sk_live_1234567890abcdef";
PASSWORD (1 occurrence(s)):
File: src/config/database.ts:8
Snippet: password: "mypassword123"
Fix:
1. Move secrets to environment variables
2. Use .env file for local development (never commit .env!)
3. Use process.env.API_KEY or import.meta.env.VITE_API_KEY
================================================================================
Summary: 2 violation(s)
reports/{timestamp}/security-audit-report.md (only when generating reports)reports/ directory