skills/iso-27001-internal-audit/SKILL.md
Run an ISO 27001 internal audit. Walk through controls by domain, identify gaps, collect evidence, and generate findings with corrective action recommendations. Uses NIST SP 800-53 (public domain) as canonical reference. Use when user says "run internal audit," "ISO 27001 audit," "control assessment," "audit findings," or "ISMS assessment."
npx skillsauth add open-agreements/open-agreements iso-27001-internal-auditInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Run a structured internal audit against ISO 27001:2022. This skill walks you through scoping, control assessment, evidence collection, and findings generation — following the same workflow a certified auditor uses.
Activate this skill when:
Do NOT use for:
iso-27001-evidence-collection for evidence gathering firstsoc2-readiness insteadISO 27001:2022 has 93 Annex A controls across 4 domains, plus ISMS clauses 4-10 (30 sub-clauses). This skill covers 48 priority Annex A controls (of 93 total) — the most critical per domain for cloud-native startups. Remaining controls are lower-tier or typically N/A for cloud-native organizations.
| Domain | Controls | Focus | |--------|----------|-------| | A.5 Organizational | 37 | Policies, roles, incident management, supplier relations | | A.6 People | 8 | Screening, training, termination, confidentiality | | A.7 Physical | 14 | Facility security, equipment, media — mostly N/A for cloud startups | | A.8 Technological | 34 | Access control, crypto, logging, SDLC, network security | | Clauses 4-10 | 30 | ISMS management system (context, leadership, planning, support, operation, performance, improvement) |
Is the organization cloud-native (no owned data centers)?
├── YES → Mark A.7.1-A.7.9, A.7.11-A.7.13 as "satisfied by cloud provider SOC 2"
│ Focus evidence on: laptops, home offices, mobile devices
├── NO → Full A.7 assessment required
│
Does the organization develop software?
├── YES → A.8.25-A.8.34 (SDLC controls) are in scope
├── NO → A.8.25-A.8.34 can be scoped out with justification
│
Does the organization handle PII?
├── YES → A.5.34 (privacy) is critical, cross-reference with GDPR/CCPA
├── NO → A.5.34 is checkbox tier
Not all 93 controls fail equally. Prioritize by audit failure frequency:
| Tier | Count | Treatment | |------|-------|-----------| | Critical | ~30 | Full assessment: evidence, interviews, observation | | Relevant | ~30 | Standard check: evidence review, spot-check | | Checkbox | ~33 | Verify policy exists or cloud provider covers it |
For detailed per-control guidance, load rules/<domain>.md.
# If Internal ISO Audit MCP server is available:
list_controls() # Get all controls with tier classifications
get_control_guidance(control_id="Clause 9.2") # Check specific ISMS clause requirements
# If reading local files:
# Check compliance/status/last_refresh.yaml for staleness
Most startups fail here — they treat ISMS as documentation, not a functioning management system.
Auditor hint: Auditors look for a CONNECTED chain — risk assessment → SoA → risk treatment plan → evidence of implementation → monitoring → management review → improvement. Any break in the chain is a nonconformity.
Work through controls by domain, prioritizing Critical tier:
For each Critical control:
For each Relevant control:
For each Checkbox control:
# If Internal ISO Audit MCP server is available:
list_controls(domain="organizational") # List all controls in a domain with tiers
get_control_guidance(control_id="A.5.15") # Full guidance: auditor hints, pitfalls, evidence
search_guidance(query="access review", domain="organizational") # Find related controls by keyword
get_nist_mapping(control_id="A.5.15") # Cross-reference to NIST SP 800-53
For each finding, collect supporting evidence:
Evidence naming convention: {control_id}_{evidence_type}_{date}.{ext}
Example: A.5.15_user-access-list_2026-02-28.json
For detailed collection commands, load rules/ files or use the iso-27001-evidence-collection skill.
For each nonconformity:
## Finding: [Short title]
- **Control**: A.x.x
- **NIST Reference**: [NIST control ID]
- **Severity**: Major / Minor / Observation
- **Description**: [What was found]
- **Evidence**: [What evidence supports the finding]
- **Root Cause**: [Why the control failed]
- **Corrective Action**: [Specific remediation steps]
- **Due Date**: [Agreed timeline]
- **Owner**: [Person responsible]
Severity definitions:
Generate a structured audit report:
| # | Control | Common Failure | Fix | |---|---------|---------------|-----| | 1 | A.5.15 | No periodic access review | Schedule quarterly reviews, export user lists | | 2 | A.8.8 | No vulnerability scanning | Deploy Dependabot/Snyk, schedule infra scans | | 3 | A.5.24 | Incident response plan untested | Run tabletop exercise, document results | | 4 | A.8.5 | MFA not enforced everywhere | Enable MFA on all production + admin accounts | | 5 | A.5.30 | No business continuity test | Run DR failover test, document RTO/RPO results | | 6 | A.8.15 | Audit logs not centralized | Ship logs to SIEM/CloudWatch/Stackdriver | | 7 | A.8.9 | No baseline configuration | Document server/container base images | | 8 | A.6.1 | Background checks incomplete | Verify all employees have completed screening | | 9 | A.8.32 | No change management process | Require PR reviews, document deployment process | | 10 | A.5.9 | Asset inventory incomplete | Export from cloud provider + endpoint management |
screencapture -x ~/evidence/{filename}.png on macOS when screenshots are necessary| Problem | Solution | |---------|----------| | Data is stale (> 7 days old) | Refresh from monitoring dashboard or re-export from source systems | | Can't determine which controls apply | Start with the SoA; if no SoA exists, use the decision tree above | | Too many findings to address before audit | Prioritize: fix all Major nonconformities first, then Critical-tier Minors | | Evidence timestamps don't match audit period | Re-collect evidence within the audit window (typically 12 months) | | Cloud provider controls not documented | Request SOC 2 Type II report from provider; map their controls to your SoA | | Internal audit has never been done | This IS the first internal audit — document that in the report and plan for regular cadence |
For detailed per-control guidance, load the appropriate rules file:
| File | Coverage |
|------|----------|
| rules/access-control.md | A.5.15-A.5.18, A.8.2-A.8.5 — identity, authentication, authorization |
| rules/incident-response.md | A.5.24-A.5.29, A.6.8 — incident lifecycle |
| rules/encryption.md | A.8.24, A.8.10-A.8.12 — cryptographic controls |
| rules/change-management.md | A.8.25-A.8.34, A.8.9, A.8.32 — SDLC and configuration |
| rules/logging-monitoring.md | A.8.15-A.8.17 — audit trails and monitoring |
| rules/business-continuity.md | A.5.30, A.8.13-A.8.14 — backup, DR, BCP |
| rules/people-controls.md | A.6.1-A.6.8 — HR security lifecycle |
| rules/supplier-management.md | A.5.19-A.5.23 — third-party risk |
| rules/isms-management.md | Clauses 4-10 — management system operation |
Audit procedures and control guidance developed with Internal ISO Audit (Hazel Castro, ISO 27001 Lead Auditor, 14+ years, 100+ audits).
This skill operates in three modes, detected automatically:
Internal ISO Audit MCP server available (best) — Live control guidance lookup with auditor hints, NIST cross-references, and full-text search
internalisoaudit MCP server configured in clientget_control_guidance, list_controls, get_nist_mapping, search_guidanceinternalisoaudit.com/api/mcpLocal compliance data available (good) — Reads compliance/ directory directly
compliance/status/last_refresh.yaml existsReference only (baseline) — Uses embedded rules/ files, no live data
For Internal ISO Audit MCP server setup, see CONNECTORS.md.
development
Convert plain markdown contract drafts into OpenAgreements' canonical template.md authoring format — YAML frontmatter, Kind|Label|Value|Show When cover-term tables, oa:clause directives, [[Defined Term]] paragraphs, and oa:signer directives that compile to validated JSON specs and DOCX artifacts. Use when the user says "convert this to canonical markdown," "author a new OpenAgreements template," "migrate template to template.md," or "write a canonical-form contract."
testing
Draft and fill NVCA model documents — stock purchase agreement, certificate of incorporation, investors rights agreement, voting agreement, ROFR, co-sale, indemnification, management rights letter. Series A and venture financing templates. Produces signable DOCX files. Use when user says "Series A documents," "NVCA," "stock purchase agreement," "investors rights agreement," "voting agreement," or "venture financing docs."
documentation
Draft and fill services agreement templates — consulting contract, contractor agreement, SOW, statement of work, professional services agreement. Produces signable DOCX files from Common Paper and Bonterms standard forms. Use when user says "consulting contract," "contractor agreement," "SOW," "statement of work," "services agreement," or "freelancer contract."
documentation
Draft and fill Y Combinator SAFE templates — valuation cap, discount, MFN, pro rata side letter. Standard startup fundraising documents for convertible equity. Produces signable DOCX files. Use when user says "SAFE," "simple agreement for future equity," "YC SAFE," "valuation cap," "seed round documents," or "fundraising paperwork."