From compliance
Review and assess a vendor's SOC 2 Type 1 or Type 2 report against the security and operational maturity that's reasonable for a company of their size, stage, industry, and customer base — not against Fortune 500 standards. Use whenever the user shares a SOC 2 report (PDF, attestation letter, bridge letter) along with any context about the vendor — even casually, like "can you look over this SOC 2 from a 40-person fintech startup we're evaluating" or "diligence this vendor's SOC 2 for me." Also trigger for related vendor security diligence requests where a SOC 2 is the primary artifact — gap analysis, peer-cohort comparison, drafting follow-up questions for the vendor's security team, or producing a write-up to share with stakeholders. Produces a structured markdown report with risk-rated findings, a recommendation, and follow-up questions to send to the vendor.
How this skill is triggered — by the user, by Claude, or both
Slash command
/compliance:soc2-vendor-reviewThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
A skill for assessing a SOC 2 report in the context of who the vendor actually is — their stage, size, industry, and customer base — and surfacing gaps that matter for vendor diligence.
A skill for assessing a SOC 2 report in the context of who the vendor actually is — their stage, size, industry, and customer base — and surfacing gaps that matter for vendor diligence.
Most SOC 2 reviews fail in one of two directions: either they rubber-stamp the report ("it has a SOC 2, ship it") or they hold a 30-person startup to the standards of a Fortune 500 enterprise and flag everything as a problem. Neither is useful.
A good SOC 2 review answers a different question: given who this vendor actually is, does their security program look like what a reasonable peer would have — and where it doesn't, does that matter for our use case?
That's what this skill produces.
Confidentiality. SOC 2 reports are typically NDA-protected. This skill operates on local files only and produces a local markdown report; it does not transmit report contents anywhere. Don't paste report contents into third-party tools or chat surfaces outside this session.
The user provides:
One or more SOC 2 documents — typically PDFs. The primary artifact is a Type 1 or Type 2 report. Vendors commonly share several documents together; handle them as follows:
Note all documents received in the report header.
A vendor context blurb — describes who the vendor is across four required dimensions: company size/stage, industry/data sensitivity, customer base, and intended use case (what data the vendor will hold, how critical they are to your operations).
If any of the four dimensions is missing, run a structured intake using AskUserQuestion rather than a free-form ask. Skip questions for dimensions the user already supplied. Keep the option labels short — the tool surfaces them as buttons.
After collecting answers, echo back the assembled profile in one sentence — e.g., "Treating this vendor as a Series B health-tech vendor selling to hospitals, calibrating against that bar." Then proceed.
A reasonable minimum to proceed: size/stage, industry, customer base, and intended use case. Without these the gap analysis becomes generic and loses most of its value — the whole point is calibrating expectations to peers.
Before reading deeply, confirm the document is what we can actually work with. Read the first 2–3 pages and check:
Is it a SOC 2 at all? Look for telltale strings: "Independent service auditor's report," "SSAE-18" (or "SSAE No. 18"), "Trust Services Criteria," "AICPA," "Service Organization Control." If absent, the user has shared something else — most likely an ISO 27001 cert, a pen test report, a vendor security questionnaire, or a customer-trust whitepaper. Stop and tell the user what they appear to have shared and that this skill needs a SOC 2 specifically. (If it's an ISO 27001 cert, say so plainly — there isn't an ISO skill yet, but pretending the SOC 2 review will work is worse.)
Is it a SOC 2 Type 1, Type 2, or something else? Type 3 reports and "executive summary" / prospect-facing condensed versions exist but lack the Section IV control listing and exceptions that this skill depends on. If the document is dramatically shorter than typical (under ~30 pages), labeled "executive summary" or "for prospects," or lacks Section IV, decline gracefully — explain the skill needs a full Type 1 or Type 2 to produce useful findings.
Is the PDF text-extractable? Some scanned SOC 2 PDFs have no embedded text layer. If the first read returns empty or near-empty content for pages that visually contain text, the PDF is image-only. Stop and tell the user: "This PDF appears to be image-only with no text layer. Run it through OCR (e.g., ocrmypdf input.pdf output.pdf) and re-share." Don't try to produce a report from no content.
If the document passes all three checks, proceed to Step 1.
Most SOC 2 reports run 50–150 pages and follow a predictable structure:
Reading the PDF. Claude Code's Read tool requires a pages parameter for PDFs over 10 pages. Read the table of contents first (pages: "1-3"), use it to locate Sections I, III, and IV, then read each in 10–20 page chunks. Don't try to read the whole PDF in one call — it'll fail. A typical pattern:
Read(file_path, pages: "1-3") # ToC + opinion letter
Read(file_path, pages: "4-8") # finish opinion + management assertion
Read(file_path, pages: "9-30") # system description (Section III)
Read(file_path, pages: "31-50") # controls + exceptions (Section IV)
... continue until Section IV is fully covered
The reference docs live alongside this SKILL.md; resolve their absolute path so reads work in both Claude Code and Codex:
SKILL_DIR="${CLAUDE_SKILL_DIR:-${SKILL_DIR}}"
# References to load on demand:
# $SKILL_DIR/references/soc2-fundamentals.md
# $SKILL_DIR/references/peer-cohort-heuristics.md
# $SKILL_DIR/references/report-template.md
If unfamiliar with how to read these reports, read $SKILL_DIR/references/soc2-fundamentals.md for a primer on what to look for in each section, what trust service criteria mean, what counts as a real exception, the difference between Type 1 and Type 2, and common terms (CUEC, subservice organization, carve-out vs inclusive, etc.).
Pull the following from the report. Capture page references using the format Section IV.5, p. 47 when the section is useful, or p. 47 when section context isn't needed. Consistent format makes the report's evidence citations skimmable and lets the reader jump to the source quickly.
Using the vendor blurb, sketch what a reasonable peer at this stage looks like. The goal is to set the expectation bar fairly.
For detailed peer-cohort heuristics (what's reasonable at seed vs Series A vs Series B+ vs late-stage vs public; SaaS vs fintech vs healthtech vs infra; SMB vs mid-market vs enterprise customer base), read $SKILL_DIR/references/peer-cohort-heuristics.md. Use those heuristics — don't make up your own bar.
A few principles worth holding onto:
Walk through the extracted findings against peer expectations. For each gap or notable item, classify:
Avoid the trap of importing enterprise expectations wholesale. If you find yourself flagging "no 24/7 SOC" or "no dedicated security team of 10+" at a Series A, that's enterprise-grade reasoning misapplied. Fix it.
CUECs deserve their own rating pass. Walk through the CUECs from Step 2 with the same severity lens. A CUEC that shifts material responsibility — "customer is responsible for backing up exported data," "customer is responsible for monitoring authentication anomalies," "customer is responsible for retaining audit logs beyond 30 days" — should generate a Medium or High finding, not just a "CUECs that matter" bullet, when the user is not realistically going to operate that control. The CUEC list documents the boundary; the finding is that the boundary lands somewhere the user wasn't expecting.
Use the template structure in $SKILL_DIR/references/report-template.md. The report is markdown, designed to be readable and skimmable — pasted into Notion or attached to a vendor risk ticket.
Do not include findings the vendor handled well unless they're notable strengths for their stage. The report should be honest, calibrated, and actionable — not a comprehensive control-by-control audit (that's what the SOC 2 itself is).
CUECs in the report. Material CUECs you rated as findings in Step 4 belong in Findings under their assigned severity. The separate CUECs that matter report section is the curated list of user-side controls verbatim from the report — reference for whoever owns the vendor relationship — not a duplicate of the findings.
Recommendation rubric. End the report with one of: Proceed / Proceed with conditions / Hold pending follow-up / Do not proceed. The recommendation is a judgment call, not a calculation, but the following is a reasonable default starting point — deviate when use case demands it:
| Severity tally | Default recommendation |
|---|---|
| Any Critical | Hold pending follow-up — or Do not proceed if the Critical is structural (adverse opinion, scope mismatch, repeat criticals, RLS-equivalent base failures) |
| 0 Critical, 2+ High | Proceed with conditions |
| 0 Critical, 0–1 High, several Medium | Proceed with conditions or Proceed, depending on use case |
| 0 Critical, 0 High, mostly Low / Observation | Proceed |
The use case can promote or demote the default by one level. A single Medium can warrant a Hold if the user is putting their entire customer database in this vendor's hands. A single Critical can warrant Conditions if the user's exposure is trivial. State the reasoning explicitly when deviating.
Follow-up questions. Phrase them specifically — not "tell us about your incident response process" but "your SOC 2 doesn't describe a formal incident response runbook; can you share your IR plan and details on the last tabletop exercise?" Aim for 5–10. More than that and the vendor will treat it as a questionnaire rather than a focused diligence conversation.
Vendor slug. Lowercase ASCII alphanumerics + hyphens, derived from the vendor's primary name, max 40 chars. Examples: "Acme Corp." → acme-corp; "Datadog, Inc." → datadog; "Health-Stream Analytics LLC" → health-stream-analytics.
Filename. soc2-review-<vendor-slug>-<YYYY-MM-DD>-<HHMM>.md, saved to the working directory. Always include time, so same-day re-reviews (vendor sends an updated report, re-run after their remediation) don't overwrite the original.
In-chat handoff. Don't paste the entire report inline. Give the user the verdict at a glance, then point at the file. Use this format:
SOC 2 review for [Vendor] saved to: ./soc2-review-<slug>-<date>-<time>.md
- Critical: [N] High: [N] Medium: [N] Low: [N] Strengths: [N]
- **Recommendation: [Proceed / Conditions / Hold / Do not proceed]**
- [One-line headline — the single most important thing the user should know.]
Three lines plus the file path. The user gets the verdict instantly and reads the file for detail.
The report follows this fixed structure (full template in references/report-template.md):
Provides CDSS development patterns for drug interaction checking, dose validation, clinical scoring (NEWS2, qSOFA), and alert classification integrated into EMR workflows.
npx claudepluginhub fencer-security/skills --plugin compliance