Install any skill in seconds. Free to start, no credit card required.
Get Started Free →SOC2 Type II compliance - Trust Service Criteria, access controls, audit logging, change management, incident response, evidence collection
.claude/skills/soc2-compliance/SKILL.md| Model | Eval pass | Runs |
|---|---|---|
| gemini-3.6-flashlowest | 82% | 34 |
| gemini-3.1-pro-preview | 100% | 1 |
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-07 | ✗→✓ | ▲ Improved | 49% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 86% | 0% |
| case-15 | ✗→✓ | ▲ Improved | 112% | 0% |
| case-13 | ✗→✓ | ▲ Improved | 153% | 0% |
| case-14 | ✗→✓ | ▲ Improved | 160% | 0% |
| Control | Requirement | Implementation | |---------|-------------|----------------| | CC1.1 | COSO principles | Documented security policies | | CC2.1 | Information communication | Security awareness training | | CC3.1 | Risk assessment | Annual risk assessment process | | CC5.1 | Control activities | Technical + administrative controls | | CC6.1 | Logical access | RBAC, MFA, least privilege | | CC6.2 | Auth mechanisms | SSO, password policy, key rotation | | CC6.3 | Access revocation | Automated deprovisioning | | CC7.1 | Threat detection | IDS/IPS, SIEM, vulnerability scanning | | CC7.2 | System monitoring | Real-time alerting, log aggregation | | CC7.3 | Incident evaluation | Severity classification, escalation | | CC7.4 | Incident response | Documented IR plan, tabletop exercises | | CC8.1 | Change management | PR review, CI/CD gates, rollback plan | | CC9.1 | Risk mitigation | Business continuity, DR plan |
typescript// MFA enforcement middleware async function requireMFA(req: Request, res: Response, next: NextFunction) { const user = req.user; if (!user) return res.status(401).json({ error: 'Unauthenticated' }); if (!user.mfaVerified) { await auditLog({ action: 'auth.mfa.required', actor: user.id, resource: req.path, result: 'blocked', }); return res.status(403).json({ error: 'MFA verification required' }); } next(); }
typescriptinterface Permission { resource: string; action: 'read' | 'write' | 'delete' | 'admin'; } interface Role { name: string; permissions: Permission[]; } function checkPermission(user: User, resource: string, action: string): boolean { const role = getRoleByName(user.role); const hasPermission = role.permissions.some( (p) => p.resource === resource && p.action === action ); auditLog({ action: `authz.${action}.${hasPermission ? 'granted' : 'denied'}`, actor: user.id, resource, }); return hasPermission; }
| Event Category | Examples | Retention | |---------------|----------|-----------| | Authentication | Login, logout, MFA, password reset | 1 yil | | Authorization | Permission grants, denials, role changes | 1 yil | | Data access | PII reads, exports, downloads | 1 yil | | Data modification | Create, update, delete operations | 1 yil | | System events | Config changes, deployments, restarts | 1 yil | | Admin actions | User management, policy changes | 3 yil |
typescriptinterface AuditLogEntry { id: string; // UUID timestamp: string; // ISO 8601 action: string; // 'user.login.success' actor: { id: string; email: string; ip: string; userAgent: string; }; resource: { type: string; // 'user', 'document', 'config' id: string; name?: string; }; result: 'success' | 'failure' | 'error'; details?: Record<string, unknown>; correlationId?: string; // Request tracing } async function writeAuditLog(entry: AuditLogEntry): Promise<void> { // Append-only, tamper-evident storage await auditStore.append({ ...entry, hash: computeHash(entry), // Chain hash for integrity }); }
| Anti-Pattern | Neden Yanlis | Dogru Yol | |-------------|-------------|-----------| | Logging PII in plaintext | Data exposure riski | Mask/hash sensitive fields | | Mutable audit logs | Tampering riski | Append-only, immutable store | | No correlation ID | Trace edilemez | Her request'e UUID ata | | Missing failure logs | Saldiri tespiti zorlasiyor | Basarisiz denemeleri de logla | | Client-side only logging | Manipule edilebilir | Server-side zorunlu |
markdown## Change Request **Requester:** [isim] **Date:** [tarih] **Priority:** [P0-P3] **Type:** [Standard | Emergency | Normal] ### Description [Ne degisecek] ### Impact Assessment - Affected systems: [liste] - Affected users: [kac kisi, hangi roller] - Risk level: [Low | Medium | High | Critical] - Rollback plan: [nasil geri alinir] ### Approval - [ ] Engineering lead - [ ] Security review (High/Critical risk) - [ ] Business owner (user-facing changes) ### Implementation - [ ] Changes tested in staging - [ ] Monitoring dashboards checked - [ ] Rollback procedure verified - [ ] Post-deployment verification
yaml# SOC2 compliant pipeline deployment: stages: - lint-and-test - security-scan - code-review-approval # Min 1 reviewer - staging-deploy - staging-verification - production-approval # Manual gate - production-deploy - post-deploy-verification rules: - require_code_review: true - require_passing_tests: true - require_security_scan: true - no_direct_push_to_main: true - branch_protection: true
| Severity | Definition | Response Time | Examples | |----------|-----------|--------------|---------| | SEV-1 | Service down, data breach | 15 min | Production outage, unauthorized access | | SEV-2 | Major degradation | 1 saat | Feature broken, performance issue | | SEV-3 | Minor impact | 4 saat | Non-critical bug, cosmetic issue | | SEV-4 | No user impact | Next business day | Internal tool issue |
1. DETECT → Monitoring alert / user report
2. TRIAGE → Classify severity, assign IC (Incident Commander)
3. CONTAIN → Stop the bleeding (isolate, rollback, block)
4. ERADICATE → Root cause fix
5. RECOVER → Restore normal operations
6. REVIEW → Post-incident review within 48 saat
7. IMPROVE → Action items tracked to completionmarkdown## Post-Incident Review **Incident:** [INC-XXXX] **Date:** [tarih] **Duration:** [suresi] **Severity:** [SEV-1/2/3/4] **IC:** [isim] ### Timeline - HH:MM - Event detected - HH:MM - IC assigned - HH:MM - Root cause identified - HH:MM - Fix deployed - HH:MM - Service restored ### Root Cause [Detayli aciklama] ### Impact - Users affected: [sayi] - Duration: [sure] - Data impact: [varsa] ### Action Items - [ ] [Action 1] - Owner: [isim] - Due: [tarih] - [ ] [Action 2] - Owner: [isim] - Due: [tarih] ### Lessons Learned [Ne ogrendi]
| Evidence Type | Source | Frequency | Tool | |--------------|--------|-----------|------| | Access reviews | IAM provider | Quarterly | Okta/Auth0 export | | Change logs | Git, CI/CD | Continuous | GitHub audit log | | Security scans | SAST/DAST | Per deploy | Snyk, SonarQube | | Penetration tests | External auditor | Annual | Report PDF | | Training records | LMS | Annual | Completion certs | | Incident reports | Incident tracker | Per incident | PagerDuty, Jira | | Backup tests | DR runbook | Quarterly | Restore verification | | Uptime metrics | Monitoring | Continuous | Datadog, Grafana | | Vulnerability patches | Dependency manager | Continuous | Dependabot, Renovate |
typescript// Automated evidence collector async function collectMonthlyEvidence(): Promise<EvidencePackage> { const [accessLogs, changeLog, securityScans, uptimeMetrics] = await Promise.all([ fetchAccessReviewReport(), fetchGitChangeLog(), fetchSecurityScanResults(), fetchUptimeMetrics(), ]); return { period: getCurrentMonth(), accessReview: accessLogs, changeManagement: changeLog, securityScanning: securityScans, availability: uptimeMetrics, generatedAt: new Date().toISOString(), }; }
| Finding | Risk | Fix | |---------|------|-----| | No MFA for admin accounts | High | Enable MFA for all privileged users | | Missing access reviews | Medium | Implement quarterly review process | | No encryption at rest | High | Enable disk/database encryption | | Inadequate logging | Medium | Implement centralized audit logging | | No change management | High | Require PR reviews, approval gates | | Missing incident response plan | High | Document and test IR procedures | | No vulnerability scanning | Medium | Add SAST/DAST to CI/CD | | Shared service accounts | Medium | Individual accounts with RBAC | | No backup verification | Medium | Quarterly restore tests | | Missing security training | Low | Annual security awareness program |
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-04 | pass→pass | 19,603 | 18,122 | -8% | 1 | 1 | 0% | 2,507 | 6,094 | +143% | 0 | 0 | — |
case-05 | pass→pass | 17,295 | 15,720 | -9% | 1 | 1 | 0% | 2,786 | 5,737 | +106% | 0 | 0 | — |
case-16 | pass→pass | 10,893 | 5,112 | -53% | 1 | 1 | 0% | 1,964 | 3,687 | +88% | 0 | 0 | — |
case-06 | pass→pass | 13,532 | 10,384 | -23% | 1 | 1 | 0% | 2,498 | 4,769 | +91% | 0 | 0 | — |
case-02 | fail→fail | 24,744 | 19,382 | -22% | 1 | 1 | 0% | 4,683 | 6,444 | +38% | 0 | 0 | — |
case-03 | pass→pass | 13,205 | 17,672 | +34% | 1 | 1 | 0% | 2,234 | 5,943 | +166% | 0 | 0 | — |
case-01 | fail→fail | 15,260 | 11,770 | -23% | 1 | 1 | 0% | 3,193 | 5,280 | +65% | 0 | 0 | — |
case-07 | fail→pass | 12,474 | 3,264 | -74% | 1 | 1 | 0% | 2,225 | 3,311 | +49% | 0 | 0 | — |
case-08 | fail→pass | 10,606 | 3,043 | -71% | 1 | 1 | 0% | 1,826 | 3,392 | +86% | 0 | 0 | — |
case-09 | pass→pass | 11,519 | 3,126 | -73% | 1 | 1 | 0% | 1,887 | 3,379 | +79% | 0 | 0 | — |
case-10 | pass→pass | 9,897 | 9,764 | -1% | 1 | 1 | 0% | 1,762 | 4,587 | +160% | 0 | 0 | — |
case-15 | fail→pass | 13,365 | 12,451 | -7% | 1 | 1 | 0% | 2,276 | 4,815 | +112% | 0 | 0 | — |
case-11 | pass→pass | 6,251 | 4,996 | -20% | 1 | 1 | 0% | 1,019 | 3,684 | +262% | 0 | 0 | — |
case-12 | pass→pass | 9,655 | 3,518 | -64% | 1 | 1 | 0% | 1,672 | 3,434 | +105% | 0 | 0 | — |
case-13 | fail→pass | 8,847 | 4,777 | -46% | 1 | 1 | 0% | 1,452 | 3,669 | +153% | 0 | 0 | — |
case-14 | fail→pass | 7,692 | 2,506 | -67% | 1 | 1 | 0% | 1,233 | 3,210 | +160% | 0 | 0 | — |
case-17 | pass→pass | 12,613 | 3,272 | -74% | 1 | 1 | 0% | 1,861 | 3,398 | +83% | 0 | 0 | — |
case-18 | pass→pass | 12,166 | 15,080 | +24% | 1 | 1 | 0% | 2,185 | 5,481 | +151% | 0 | 0 | — |
case-19 | pass→pass | 13,518 | 12,372 | -8% | 1 | 1 | 0% | 2,430 | 5,114 | +110% | 0 | 0 | — |
case-20 | pass→pass | 10,106 | 3,531 | -65% | 1 | 1 | 0% | 1,828 | 3,488 | +91% | 0 | 0 | — |
case-21 | pass→pass | 7,639 | 3,478 | -54% | 1 | 1 | 0% | 1,197 | 3,408 | +185% | 0 | 0 | — |
case-22 | pass→pass | 11,268 | 2,196 | -81% | 1 | 1 | 0% | 1,917 | 3,098 | +62% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted. The headline lift of +23 percentage points is the difference between those two pass rates over the 22 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
| Model | Method | Date | Lift |
|---|---|---|---|
| gemini-3.6-flash | verified | 7/29/2026 | +45% |
Other measured skills in the registry, with their headline benchmark lift.