From vcp
Runs comprehensive audits against VCP standards including full scans, compliance checks (GDPR, PCI-DSS, HIPAA), and quick release readiness with false positive validation.
How this skill is triggered — by the user, by Claude, or both
Slash command
/vcp:vcp-auditThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Comprehensive codebase audit against VCP standards. Uses team mode to parallelize scanning, then validates findings to eliminate false positives before reporting.
Comprehensive codebase audit against VCP standards. Uses team mode to parallelize scanning, then validates findings to eliminate false positives before reporting.
/vcp-audit or /vcp-audit [path] — Full audit against all applicable standards/vcp-audit compliance [gdpr|pci-dss|hipaa] — Compliance audit with regulation citations/vcp-audit quick — Release readiness check (critical + high rules, no team mode, READY/NOT READY verdict).vcp/config.json from the project root. Extract the pluginRoot field..vcp/config.json does not exist or pluginRoot is missing: Stop and tell the user: "No VCP configuration found. Run /vcp-init to configure VCP for this project."pluginRoot: The path must be absolute, contain /.claude/ (or \.claude\ on Windows) as a path segment, and contain only safe path characters (letters, digits, /, \, -, _, ., :, and spaces). Reject any path with shell metacharacters (;, &, |, $, `, (, ), {, }, <, >, !, ~, #, *, ?, [, ], ', "). If validation fails, stop and tell the user: "Invalid pluginRoot — must be within ~/.claude/ and contain no shell metacharacters. Run /vcp-init to fix." Also verify the file <pluginRoot>/lib/vcp-context-core.ts exists using Glob. If it does not exist, stop and tell the user: "pluginRoot points to an invalid VCP installation. Run /vcp-init to fix."bun "<pluginRoot>/lib/resolve-config.ts" "<project-root>"
applicableStandards, ignoredRules, severity, exclude.Determine mode from $ARGUMENTS:
$ARGUMENTS starts with compliance → Compliance mode. Extract the framework name after compliance (e.g., gdpr, pci-dss, hipaa). If no framework specified, ask the user which compliance framework to audit.$ARGUMENTS is quick → Quick mode$ARGUMENTS is treated as an optional path)No tag filter — load ALL entries from applicableStandards.
Map the framework argument to standard id:
gdpr → compliance-gdprpci-dss → compliance-pci-dsshipaa → compliance-hipaaKeep entries where:
id matches the mapped compliance standard, ORtags array includes "security" (security standards are cross-referenced with compliance)If the mapped compliance standard is not in applicableStandards, stop and tell the user: "Compliance framework '[name]' is not configured in .vcp/config.json. Run /vcp-init to add it."
No tag filter — load ALL entries from applicableStandards.
For each selected standard, use WebFetch to fetch its content from:
{entry.url}
Extract the Rules section from each fetched standard.
Quick mode scans directly without team mode for speed.
exclude).Target path: $ARGUMENTS if provided and not a mode keyword. Default: project root.
Create a team named vcp-audit using TeamCreate.
Group applicable standards into domains. Only create domains where standards exist:
| Domain | Standards |
|---|---|
backend | core-security, core-secure-defaults, core-api-design-security, core-data-flow-security, core-attack-surface, web-backend-security, web-backend-structure, web-backend-data-access, web-backend-api-design, web-backend-realtime, web-backend-caching |
frontend | web-frontend-security, web-frontend-structure, web-frontend-performance, web-frontend-accessibility |
architecture | core-architecture, core-code-quality, core-error-handling, core-testing, core-root-cause-analysis, core-concurrency-security |
database | database-encryption, database-schema-security, core-dependency-management |
compliance | compliance-gdpr, compliance-pci-dss, compliance-hipaa (whichever are in applicableStandards) |
mobile | mobile-security, mobile-platform-configuration |
desktop | desktop-security |
cli | cli-security-and-quality |
devops | devops-container-security, devops-cicd-security, devops-iac-security, devops-kubernetes-security |
agentic-ai | agentic-ai-agent-security, agentic-ai-tool-security, agentic-ai-permissions, agentic-ai-supply-chain, agentic-ai-communication |
Every standard in applicableStandards must be assigned to exactly one domain. If a future standard does not fit any domain above, add it to the most relevant domain or create a new one. Never silently drop a standard.
For each domain:
subagent_type="Explore" and team_name="vcp-audit".Each scanner agent prompt must include:
FINDING: {standard-id}/rule-{N} ({severity})
FILE: {path}:{line}
EVIDENCE: {exact code snippet read from the file, 3-5 relevant lines}
ISSUE: {specific problem description}
FIX: {suggested fix}
Critical: Instruct agents to include the literal code they read as EVIDENCE. Findings without evidence cannot be validated.
Wait for all scanner agents to report back. Messages are delivered automatically.
Failure handling: If an agent fails, stalls, or returns no findings after a reasonable wait:
**WARNING: [domain] scan did not complete. Results may be incomplete.**Once all available results are collected, aggregate all findings.
In addition to standard-based scanning, the backend domain scanner must also check for secrets already committed to the repository:
.env* files (.env, .env.local, .env.production, etc.) for actual secret values. Skip placeholders like YOUR_API_KEY_HERE, changeme, xxx, TODO, or empty values.config.json, config.yaml, settings.py, application.properties, etc.) for embedded credentials — API keys, passwords, connection strings with credentials, bearer tokens..env, credentials.json, *.pem, *.key, *.p12, service-account.json, .htpasswd.False positive controls:
exclude patterns from config. Skip files matching exclusion globs.test/, tests/, __tests__/, fixtures/, examples/, sample/ directories — test fixtures often contain dummy secrets."ignore": ["CWE-798"] in .vcp/config.json suppresses them consistently with security-gate behavior.sk_live_, AKIA, ghp_, glpat-).This step applies to Full and Compliance modes only. Skip for Quick mode.
After collecting findings from all scanner agents, validate each one. This eliminates false positives before the user sees the report.
For EACH finding, perform these checks in order. Stop at the first check that produces a verdict.
Re-read the flagged file at the reported line (±30 lines context). Does the code match the reported evidence?
Where does the flagged input actually come from? Trace backwards through assignments and function calls:
window.location.*, headers, external API responses, database values from user input) → proceed to next checkCaution: Browser URL properties (window.location.pathname, window.location.hash, document.referrer) are attacker-controlled — an attacker chooses which URL the victim visits. Do NOT treat these as trusted.
Re-read the specific rule that was violated. Does the flagged code match what the rule actually targets?
Examples of scope mismatches:
Search the codebase for factors that reduce or eliminate the risk:
If a mitigating factor fully addresses the concern → FALSE-POSITIVE If a mitigating factor partially addresses the concern → downgrade severity one level
Consider the specific technology stack's behavior:
bcrypt.DefaultCost: verify the actual value for the specific library versionIf the technology already handles the concern → FALSE-POSITIVE
Determine how the flagged code is reachable. Entry points include HTTP routes, WebSocket handlers, CLI argument parsers, message queue consumers, cron jobs, file import handlers, and gRPC/GraphQL resolvers — not just HTTP.
Adjust severity based on exposure:
How to check: Trace backwards from the flagged function. Find all callers using Grep. Follow the call chain to an entry point (route handler, CLI parser, MQ consumer, cron handler). Check what middleware, decorators, or access controls protect that entry point.
Can this finding be exploited end-to-end? Trace the full exploit path:
Check for mitigating factors in the path:
If no viable exploit path exists (e.g., all paths to the sink go through adequate defenses) → mark as UNLIKELY If the exploit path exists but mitigating factors significantly reduce risk → downgrade severity
After all checks, assign one of:
For CONFIRMED and LIKELY findings, adjust severity if warranted:
Always run this step, whether validation succeeded, partially completed, or failed:
If cleanup itself fails, warn the user: **Note: Team cleanup incomplete. Run TeamDelete manually if needed.**
Before outputting findings, remove any that match an entry in the ignoredRules array from the resolved config. If "standard-id/rule-N" is in the list, suppress that specific rule's findings. (Standard-level ignores are already applied by the config resolution script.) After filtering, if any findings were suppressed, append a line: **Suppressed:** X finding(s) by ignore config. If any suppressed findings came from security-scoped standards (tag "security") or compliance standards, also add: **WARNING: Critical security findings suppressed by ignore config. Review .vcp/config.json ignore list.**
### VCP Audit
**Scopes:** core, web-backend, ...
**Standards loaded:** N standards, M rules checked
**Target:** [path or "project root"]
**Validation:** X findings scanned → Y confirmed, Z likely, W false positives removed
#### Standards Summary
| Standard | Status | Critical | High | Medium |
|----------|--------|----------|------|--------|
| core-security | FAIL | 2 | 1 | 0 |
| core-architecture | PASS | 0 | 0 | 0 |
| web-backend-security | WARN | 0 | 3 | 1 |
| ... | ... | ... | ... | ... |
**Overall: X critical, Y high, Z medium findings across N standards.**
#### Findings by Standard
##### core-security
- **Rule 3** (critical) — SQL string concatenation
- **File:** src/db/queries.py:42
- **Issue:** User input concatenated into SQL query
- **Fix:** Use parameterized queries
- **Rule 5** ⚠ LIKELY (high) — JWT secret length
- **File:** src/auth/config.py:12
- **Issue:** No minimum length check for HMAC-SHA256 key
- **Fix:** Enforce minimum 32-byte secret length
- **Note:** Verify actual secret length in deployment config
...
Status per standard: FAIL = has critical findings, WARN = has high findings but no critical, PASS = no findings at or above the severity threshold.
LIKELY findings are marked with ⚠ and include a Note explaining what the user should verify.
### VCP Compliance Audit — GDPR
**Standards loaded:** compliance-gdpr + N security standards
**Rules checked:** M rules
**Validation:** X findings scanned → Y confirmed, Z likely, W false positives removed
| Rule | Status | Regulation Ref | Finding |
|------|--------|----------------|---------|
| Rule 1 | FAIL | GDPR Art. 5(1)(f) | PII stored without encryption in users table |
| Rule 2 | PASS | GDPR Art. 17 | Data deletion endpoint exists |
| Rule 3 | WARN | GDPR Art. 32 | Encryption at rest configured but key rotation not found |
| ... | ... | ... | ... |
**Summary:** X FAIL, Y WARN, Z PASS out of M rules.
### VCP Release Readiness
**Standards loaded:** N standards
**Rules checked:** M critical/high rules (medium skipped)
**Note:** Quick mode does not validate findings. Run `/vcp-audit` for validated results.
| Standard | Verdict | Blocking Issues |
|----------|---------|-----------------|
| core-security | FAIL | 2 critical findings |
| core-architecture | PASS | — |
| web-backend-security | WARN | 1 high finding |
| ... | ... | ... |
---
**Verdict: NOT READY — 2 critical issues must be resolved before release.**
Verdict logic:
If no findings across all standards: "READY — No critical or high issues found across N standards."
npx claudepluginhub z-m-huang/vcp --plugin vcpChecks code against OWASP Top 10, CWE, NIST, PCI-DSS, HIPAA, GDPR, and secure coding practices. Generates compliance reports with checklists and gap analysis.
Conducts security audits on code, infrastructure, and configs: vulnerability scans (OWASP Top 10), compliance checks (HIPAA, PCI DSS, GDPR, SOC 2), cryptography reviews. Use for assessing security posture.
Performs formal security audit of entire codebase, producing prioritized report (H/M/L) with remediation plan covering SAST, OWASP Top 10/LLM Top 10, SCA, Zero Trust, code quality.