Skip to main content

audit-codebase

Codebase health audit scoring 7 categories with progression plan

소스 정보

저장소
FlorianBruniaux/claude-code-ultimate-guide
최근 소스 활동
2026년 9월 30일 13:41
감지된 SKILL.md 언어
영어
스타
6,390
포크
825

설치 방법

기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.

소스 파일 검토

설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.

SKILL.md 표시 중

SKILL.md
소스 지침 · 읽기 전용 미리보기
name
audit-codebase
description
Codebase health audit scoring 7 categories with progression plan
argument-hint
[path] [--focus security|performance|quality]
effort
medium
disable-model-invocation
true
# Codebase health audit Score your codebase across 7 health categories, identify weak spots, and get a prioritized progression plan. Each category is scored 1-10 with specific, actionable findings. **Time**: 3-8 minutes depending on codebase size | **Scope**: Full project ## Instructions You are a senior engineering consultant performing a codebase health assessment. Analyze the project across all 7 categories (or a subset if `$ARGUMENTS` specifies categories), score each one, and produce a progression plan. If `$ARGUMENTS` contains category names (e.g., "secrets security tests"), only audit those categories. Otherwise, audit all 7. --- ### Category 1: Secrets (weight: 15%) Scan for hardcoded credentials, API keys, and sensitive data in code. ```bash # API keys and tokens in code grep -rn --include="*.{js,ts,py,go,java,rb,php,yaml,yml,json,toml,env,cfg,ini,conf}" \ -E '(?i)(api[_-]?key|apikey|secret[_-]?key|password|passwd|token|bearer)\s*[=:]\s*["'\''"][^"'\'']{8,}' \ --exclude-dir={node_modules,vendor,.git,dist,build,target,__pycache__,.venv} . 2>/dev/null | head -20 # Known provider patterns grep -rn -E 'sk-[a-zA-Z0-9]{20,}|ghp_[a-zA-Z0-9]{36}|AKIA[A-Z0-9]{16}|xox[bps]-[a-zA-Z0-9\-]{20,}' \ --exclude-dir={node_modules,vendor,.git,dist,build,target} . 2>/dev/null | head -10 # .env files committed find . -name ".env*" -not -name ".env.example" -not -path "*/node_modules/*" -not -path "*/.git/*" -type f 2>/dev/null # .gitignore coverage [ -f ".gitignore" ] && { for pattern in ".env" "*.pem" "*.key" "*.p12"; do grep -q "$pattern" .gitignore 2>/dev/null && echo "OK: $pattern in .gitignore" || echo "MISSING: $pattern not in .gitignore" done } ``` **Scoring:** - 10: Zero secrets, .gitignore covers all sensitive patterns, .env.example exists - 7-9: No secrets in code, minor .gitignore gaps - 4-6: 1-3 potential secrets found (may be false positives), or .env committed - 1-3: Multiple secrets in code, private keys committed, no .gitignore protection --- ### Category 2: Security (weight: 15%) Check for OWASP-style vulnerabilities and unsafe patterns. ```bash # SQL injection patterns grep -rn --include="*.{js,ts,py,java,go,rb,php}" \ -E '(query|execute|exec)\s*\(\s*[`"'\''"].*\+|\$\{|%s|\.format\(' \ --exclude-dir={node_modules,vendor,.git,dist,build,target,test,__test__} . 2>/dev/null | head -15 # eval/exec usage grep -rn -E '\b(eval|exec|execSync|Function\(|setTimeout\([^,]*[+`]|setInterval\([^,]*[+`])' \ --include="*.{js,ts,py}" --exclude-dir={node_modules,vendor,.git,dist} . 2>/dev/null | head -10 # Unsafe deserialization grep -rn -E '(pickle\.loads|yaml\.load\(|JSON\.parse\(.*user|unserialize\()' \ --exclude-dir={node_modules,vendor,.git,dist} . 2>/dev/null | head -10 # Missing input validation on routes/endpoints grep -rn -E '(app\.(get|post|put|delete|patch)|router\.(get|post|put|delete))' \ --include="*.{js,ts}" --exclude-dir={node_modules,.git,dist} . 2>/dev/null | wc -l ``` **Scoring:** - 10: No injection patterns, no eval/exec, input validation on all endpoints, CSP headers - 7-9: Minor issues (1-2 eval usages in non-user-facing code) - 4-6: Some injection patterns, missing validation on several endpoints - 1-3: Active SQL injection risk, eval with user input, no input sanitization --- ### Category 3: Dependencies (weight: 15%) Audit package health, known CVEs, and freshness. ```bash # Node.js audit [ -f "package-lock.json" ] && npm audit --json 2>/dev/null | jq '.metadata.vulnerabilities' 2>/dev/null [ -f "package.json" ] && npx npm-check 2>/dev/null | tail -20 # Python [ -f "requirements.txt" ] && pip-audit -r requirements.txt 2>/dev/null | tail -20 [ -f "pyproject.toml" ] && pip-audit 2>/dev/null | tail -20 # Rust [ -f "Cargo.toml" ] && cargo audit 2>/dev/null | tail -20 # Go [ -f "go.mod" ] && govulncheck ./... 2>/dev/null | tail -20 # Lockfile presence for lockfile in package-lock.json yarn.lock pnpm-lock.yaml Cargo.lock go.sum poetry.lock; do [ -f "$lockfile" ] && echo "OK: $lockfile exists" done [ ! -f "package-lock.json" ] && [ ! -f "yarn.lock" ] && [ ! -f "pnpm-lock.yaml" ] && [ -f "package.json" ] && echo "MISSING: No lockfile for Node.js project" ``` **Scoring:** - 10: Zero CVEs, lockfile present, all dependencies <6 months old - 7-9: No critical/high CVEs, minor outdated packages - 4-6: 1-3 high CVEs, or >50% dependencies outdated by a year+ - 1-3: Critical CVEs, no lockfile, abandoned dependencies --- ### Category 4: Structure (weight: 10%) Evaluate file organization, naming conventions, and module boundaries. ```bash # File count per top-level directory for dir in */; do [ -d "$dir" ] && [ "$dir" != "node_modules/" ] && [ "$dir" != ".git/" ] && [ "$dir" != "vendor/" ] && \ echo "$dir: $(find "$dir" -type f -not -path "*/node_modules/*" -not -path "*/.git/*" 2>/dev/null | wc -l) files" done # Deeply nested files (complexity indicator) find . -type f -not -path "*/node_modules/*" -not -path "*/.git/*" -not -path "*/vendor/*" -mindepth 6 2>/dev/null | head -10 # Mixed naming conventions find . -type f -name "*_*" -not -path "*/node_modules/*" -not -path "*/.git/*" 2>/dev/null | head -5 find . -type f -name "*-*" -not -path "*/node_modules/*" -not -path "*/.git/*" 2>/dev/null | head -5 # Circular dependency indicators (for JS/TS projects) [ -f "package.json" ] && npx madge --circular --extensions ts,js src/ 2>/dev/null | head -20 ``` **Scoring:** - 10: Clear module boundaries, consistent naming, no circular deps, flat hierarchy - 7-9: Good structure with minor inconsistencies - 4-6: Mixed conventions, some circular deps, unclear module boundaries - 1-3: No clear structure, deeply nested files, widespread circular deps --- ### Category 5: Tests (weight: 15%) Assess test coverage, test quality, and testing practices. ```bash # Test file count vs source file count TEST_COUNT=$(find . -type f \( -name "*.test.*" -o -name "*.spec.*" -o -name "test_*" -o -path "*/test/*" -o -path "*/__tests__/*" \) \ -not -path "*/node_modules/*" -not -path "*/.git/*" 2>/dev/null | wc -l) SRC_COUNT=$(find . -type f \( -name "*.ts" -o -name "*.js" -o -name "*.py" -o -name "*.go" -o -name "*.java" \) \ -not -name "*.test.*" -not -name "*.spec.*" -not -name "test_*" \ -not -path "*/node_modules/*" -not -path "*/.git/*" -not -path "*/dist/*" 2>/dev/null | wc -l) echo "Test files: $TEST_COUNT | Source files: $SRC_COUNT | Ratio: $(echo "scale=2; $TEST_COUNT / ($SRC_COUNT + 1)" | bc)" # Coverage config presence for cfg in jest.config.* vitest.config.* .nycrc .coveragerc pytest.ini setup.cfg; do [ -f "$cfg" ] && echo "OK: $cfg exists" done # Coverage report (if available) [ -d "coverage" ] && [ -f "coverage/coverage-summary.json" ] && cat coverage/coverage-summary.json | jq '.total' 2>/dev/null # Snapshot test count (potential maintenance burden) find . -name "*.snap" -not -path "*/node_modules/*" 2>/dev/null | wc -l ``` **Scoring:** - 10: >0.8 test ratio, coverage >80%, CI runs tests, no stale snapshots - 7-9: >0.5 test ratio, coverage >60%, coverage config present - 4-6: Some tests exist but gaps are obvious, no coverage tracking - 1-3: <0.2 test ratio or no tests at all --- ### Category 6: Imports (weight: 10%) Check for unused imports, circular dependencies, and type coverage. ```bash # Unused imports (TypeScript/JavaScript) [ -f "tsconfig.json" ] && npx tsc --noEmit 2>&1 | grep -c "declared but" 2>/dev/null [ -f "tsconfig.json" ] && npx tsc --noEmit 2>&1 | grep "declared but" | head -10 # TypeScript strict mode [ -f "tsconfig.json" ] && grep -E '"strict"|"noImplicitAny"|"strictNullChecks"' tsconfig.json 2>/dev/null # Python unused imports [ -f "pyproject.toml" ] || [ -f "setup.py" ] && python -m pyflakes . 2>/dev/null | grep "imported but unused" | head -10 # Wildcard imports (code smell) grep -rn 'import \*' --include="*.{py,ts,js}" --exclude-dir={node_modules,vendor,.git} . 2>/dev/null | head -10 ``` **Scoring:** - 10: Zero unused imports, TypeScript strict mode, no wildcard imports - 7-9: <5 unused imports, strict mode enabled with minor gaps - 4-6: 5-20 unused imports, no strict mode, some wildcard imports - 1-3: >20 unused imports, widespread wildcard imports, no type checking --- ### Category 7: AI patterns (weight: 20%) Evaluate Claude Code configuration maturity and AI-assisted development readiness. ```bash # CLAUDE.md presence and quality [ -f "CLAUDE.md" ] && echo "OK: CLAUDE.md exists ($(wc -l < CLAUDE.md) lines)" || echo "MISSING: No CLAUDE.md" [ -f ".claude/settings.json" ] && echo "OK: .claude/settings.json exists" || echo "MISSING: No .claude/settings.json" # Custom commands COMMANDS=$(find .claude/commands -name "*.md" 2>/dev/null | wc -l) echo "Custom commands: $COMMANDS" # Hooks HOOKS_CFG=$(grep -c "hooks" .claude/settings.json 2>/dev/null || echo "0") echo "Hook configurations: $HOOKS_CFG" # Rules files RULES=$(find .claude/rules -name "*.md" 2>/dev/null | wc -l) echo "Rule files: $RULES" # Agents AGENTS=$(find .claude/agents -name "*.md" 2>/dev/null | wc -l) echo "Agent definitions: $AGENTS" # Skills
GitHub에서 보기
이 SKILL.md는 매우 커서 SkillsMP가 여기에는 첫 섹션만 미리 보여줍니다. GitHub에서 보기