open-agreements 0.2.0 → 0.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +10 -2
- package/content/templates/closing-checklist/metadata.yaml +6 -13
- package/content/templates/closing-checklist/template.docx +0 -0
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +47 -10
- package/dist/cli/index.js.map +1 -1
- package/dist/commands/checklist.d.ts +21 -1
- package/dist/commands/checklist.d.ts.map +1 -1
- package/dist/commands/checklist.js +175 -44
- package/dist/commands/checklist.js.map +1 -1
- package/dist/commands/recipe.js +3 -11
- package/dist/commands/recipe.js.map +1 -1
- package/dist/core/checklist/index.d.ts +22 -14
- package/dist/core/checklist/index.d.ts.map +1 -1
- package/dist/core/checklist/index.js +79 -39
- package/dist/core/checklist/index.js.map +1 -1
- package/dist/core/checklist/jsonl-stores.d.ts +3 -0
- package/dist/core/checklist/jsonl-stores.d.ts.map +1 -0
- package/dist/core/checklist/jsonl-stores.js +16 -0
- package/dist/core/checklist/jsonl-stores.js.map +1 -0
- package/dist/core/checklist/schemas.d.ts +2 -2
- package/dist/core/checklist/schemas.js +1 -1
- package/dist/core/checklist/schemas.js.map +1 -1
- package/dist/core/checklist/state-manager.d.ts +146 -0
- package/dist/core/checklist/state-manager.d.ts.map +1 -0
- package/dist/core/checklist/state-manager.js +147 -0
- package/dist/core/checklist/state-manager.js.map +1 -0
- package/dist/core/checklist/status-labels.d.ts +6 -0
- package/dist/core/checklist/status-labels.d.ts.map +1 -0
- package/dist/core/checklist/status-labels.js +29 -0
- package/dist/core/checklist/status-labels.js.map +1 -0
- package/dist/core/validation/recipe.d.ts.map +1 -1
- package/dist/core/validation/recipe.js +47 -61
- package/dist/core/validation/recipe.js.map +1 -1
- package/package.json +1 -1
- package/skills/cloud-service-agreement/SKILL.md +9 -0
- package/skills/data-privacy-agreement/SKILL.md +9 -0
- package/skills/delaware-franchise-tax/SKILL.md +56 -19
- package/skills/delaware-franchise-tax/reference/ecorp-portal-playwright-notes.md +136 -0
- package/skills/edit-docx-agreement/CONNECTORS.md +20 -0
- package/skills/edit-docx-agreement/SKILL.md +77 -0
- package/skills/employment-contract/SKILL.md +9 -0
- package/skills/iso-27001-evidence-collection/CONNECTORS.md +23 -0
- package/skills/iso-27001-evidence-collection/SKILL.md +300 -0
- package/skills/iso-27001-evidence-collection/rules/api-exports.md +191 -0
- package/skills/iso-27001-evidence-collection/rules/evidence-types.md +107 -0
- package/skills/iso-27001-evidence-collection/rules/screenshot-guide.md +77 -0
- package/skills/iso-27001-internal-audit/CONNECTORS.md +23 -0
- package/skills/iso-27001-internal-audit/SKILL.md +272 -0
- package/skills/iso-27001-internal-audit/rules/access-control.md +191 -0
- package/skills/iso-27001-internal-audit/rules/business-continuity.md +94 -0
- package/skills/iso-27001-internal-audit/rules/change-management.md +211 -0
- package/skills/iso-27001-internal-audit/rules/encryption.md +93 -0
- package/skills/iso-27001-internal-audit/rules/incident-response.md +127 -0
- package/skills/iso-27001-internal-audit/rules/isms-management.md +164 -0
- package/skills/iso-27001-internal-audit/rules/logging-monitoring.md +96 -0
- package/skills/iso-27001-internal-audit/rules/people-controls.md +161 -0
- package/skills/iso-27001-internal-audit/rules/supplier-management.md +92 -0
- package/skills/nda/SKILL.md +9 -0
- package/skills/open-agreements/SKILL.md +9 -0
- package/skills/safe/SKILL.md +9 -0
- package/skills/services-agreement/SKILL.md +9 -0
- package/skills/soc2-readiness/CONNECTORS.md +23 -0
- package/skills/soc2-readiness/SKILL.md +289 -0
- package/skills/soc2-readiness/rules/trust-services.md +230 -0
- package/skills/venture-financing/SKILL.md +9 -0
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
# API Export Commands by Platform
|
|
2
|
+
|
|
3
|
+
Quick reference for evidence collection CLI commands. All commands output JSON or CSV for audit-ready evidence.
|
|
4
|
+
|
|
5
|
+
## GitHub
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
# Org settings
|
|
9
|
+
gh api orgs/{org} | jq '{name, two_factor_requirement_enabled, default_repository_permission, members_can_create_public_repositories}'
|
|
10
|
+
|
|
11
|
+
# Members with roles
|
|
12
|
+
gh api orgs/{org}/members --paginate | jq '.[] | {login, type, site_admin}'
|
|
13
|
+
|
|
14
|
+
# Org admins
|
|
15
|
+
gh api orgs/{org}/members?role=admin --paginate | jq '.[].login'
|
|
16
|
+
|
|
17
|
+
# Branch protection
|
|
18
|
+
gh api repos/{owner}/{repo}/branches/{branch}/protection
|
|
19
|
+
|
|
20
|
+
# Recent merged PRs
|
|
21
|
+
gh pr list --state merged --limit 50 --json number,title,author,reviewDecision,mergedAt,mergedBy
|
|
22
|
+
|
|
23
|
+
# Dependabot alerts (open)
|
|
24
|
+
gh api repos/{owner}/{repo}/dependabot/alerts?state=open
|
|
25
|
+
|
|
26
|
+
# Code scanning alerts
|
|
27
|
+
gh api repos/{owner}/{repo}/code-scanning/alerts --paginate
|
|
28
|
+
|
|
29
|
+
# Secret scanning alerts
|
|
30
|
+
gh api orgs/{org}/secret-scanning/alerts --paginate
|
|
31
|
+
|
|
32
|
+
# Audit log (enterprise/org)
|
|
33
|
+
gh api orgs/{org}/audit-log?per_page=100
|
|
34
|
+
|
|
35
|
+
# Repository list with visibility
|
|
36
|
+
gh repo list {org} --json name,visibility,isArchived --limit 100
|
|
37
|
+
|
|
38
|
+
# Team membership
|
|
39
|
+
gh api orgs/{org}/teams --paginate | jq '.[].slug'
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## GCP (Google Cloud)
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
# IAM policy (who has access)
|
|
46
|
+
gcloud projects get-iam-policy {project} --format=json
|
|
47
|
+
|
|
48
|
+
# Service accounts
|
|
49
|
+
gcloud iam service-accounts list --format=json
|
|
50
|
+
|
|
51
|
+
# Service account keys (key rotation evidence)
|
|
52
|
+
gcloud iam service-accounts keys list --iam-account={sa_email} --format=json
|
|
53
|
+
|
|
54
|
+
# Compute instances (asset inventory)
|
|
55
|
+
gcloud compute instances list --format=json
|
|
56
|
+
|
|
57
|
+
# Firewall rules
|
|
58
|
+
gcloud compute firewall-rules list --format=json
|
|
59
|
+
|
|
60
|
+
# Cloud SQL instances
|
|
61
|
+
gcloud sql instances list --format=json
|
|
62
|
+
|
|
63
|
+
# Cloud SQL backups
|
|
64
|
+
gcloud sql backups list --instance={instance} --format=json
|
|
65
|
+
|
|
66
|
+
# Log sinks (centralization)
|
|
67
|
+
gcloud logging sinks list --format=json
|
|
68
|
+
|
|
69
|
+
# Audit config
|
|
70
|
+
gcloud projects get-iam-policy {project} --format=json | jq '.auditConfigs'
|
|
71
|
+
|
|
72
|
+
# Alerting policies
|
|
73
|
+
gcloud monitoring policies list --format=json
|
|
74
|
+
|
|
75
|
+
# Cloud KMS keys
|
|
76
|
+
gcloud kms keys list --location=global --keyring={keyring} --format=json
|
|
77
|
+
|
|
78
|
+
# VPC networks
|
|
79
|
+
gcloud compute networks list --format=json
|
|
80
|
+
|
|
81
|
+
# Cloud Storage buckets
|
|
82
|
+
gcloud storage ls --json
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
## Azure
|
|
86
|
+
|
|
87
|
+
```bash
|
|
88
|
+
# Role assignments
|
|
89
|
+
az role assignment list --all --output json
|
|
90
|
+
|
|
91
|
+
# Users (Azure AD)
|
|
92
|
+
az ad user list --output json | jq '.[] | {displayName, userPrincipalName, accountEnabled}'
|
|
93
|
+
|
|
94
|
+
# Global admins (via MS Graph)
|
|
95
|
+
az rest --method GET \
|
|
96
|
+
--url "https://graph.microsoft.com/v1.0/directoryRoles/$(az rest --method GET --url 'https://graph.microsoft.com/v1.0/directoryRoles' --query "value[?displayName=='Global Administrator'].id" -o tsv)/members" \
|
|
97
|
+
--query "value[].{displayName:displayName,upn:userPrincipalName}" -o json
|
|
98
|
+
|
|
99
|
+
# Activity log
|
|
100
|
+
az monitor activity-log list --max-events 100 --output json
|
|
101
|
+
|
|
102
|
+
# Network security groups
|
|
103
|
+
az network nsg list --output json
|
|
104
|
+
|
|
105
|
+
# Storage account encryption
|
|
106
|
+
az storage account list --query "[].{name:name, encryption:encryption}" --output json
|
|
107
|
+
|
|
108
|
+
# Backup jobs
|
|
109
|
+
az backup job list --resource-group {rg} --vault-name {vault} --output json
|
|
110
|
+
|
|
111
|
+
# Key Vault access policies
|
|
112
|
+
az keyvault show --name {vault} --query "properties.accessPolicies" --output json
|
|
113
|
+
|
|
114
|
+
# Alert rules
|
|
115
|
+
az monitor alert list --output json
|
|
116
|
+
|
|
117
|
+
# Subscriptions (environment separation)
|
|
118
|
+
az account list --output json
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
## Google Workspace (GAM)
|
|
122
|
+
|
|
123
|
+
```bash
|
|
124
|
+
# Users with MFA status
|
|
125
|
+
gam print users fields primaryEmail,name,isEnrolledIn2Sv,isEnforcedIn2Sv,lastLoginTime,creationTime,suspended
|
|
126
|
+
|
|
127
|
+
# Admin roles
|
|
128
|
+
gam print admins
|
|
129
|
+
|
|
130
|
+
# Mobile devices
|
|
131
|
+
gam print mobile fields email,deviceId,type,status,os
|
|
132
|
+
|
|
133
|
+
# Groups and membership
|
|
134
|
+
gam print groups fields email,name,directMembersCount
|
|
135
|
+
|
|
136
|
+
# OAuth tokens (third-party app access)
|
|
137
|
+
gam all users print tokens
|
|
138
|
+
|
|
139
|
+
# Login activity
|
|
140
|
+
gam report login user all start {date} end {date}
|
|
141
|
+
|
|
142
|
+
# Admin activity
|
|
143
|
+
gam report admin start {date} end {date}
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
## macOS Endpoint
|
|
147
|
+
|
|
148
|
+
```bash
|
|
149
|
+
# FileVault status
|
|
150
|
+
fdesetup status
|
|
151
|
+
|
|
152
|
+
# Hardware/software info
|
|
153
|
+
system_profiler SPHardwareDataType SPSoftwareDataType
|
|
154
|
+
|
|
155
|
+
# Configuration profiles (MDM policies)
|
|
156
|
+
profiles show -type configuration
|
|
157
|
+
|
|
158
|
+
# Firewall status
|
|
159
|
+
/usr/libexec/ApplicationFirewall/socketfilterfw --getglobalstate
|
|
160
|
+
|
|
161
|
+
# SIP (System Integrity Protection) status
|
|
162
|
+
csrutil status
|
|
163
|
+
|
|
164
|
+
# Gatekeeper status
|
|
165
|
+
spctl --status
|
|
166
|
+
|
|
167
|
+
# Software updates available
|
|
168
|
+
softwareupdate --list 2>&1
|
|
169
|
+
|
|
170
|
+
# Installed applications
|
|
171
|
+
system_profiler SPApplicationsDataType -json
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
## General / Cross-Platform
|
|
175
|
+
|
|
176
|
+
```bash
|
|
177
|
+
# TLS configuration check
|
|
178
|
+
openssl s_client -connect {host}:443 -tls1_2 < /dev/null 2>&1 | grep -E "Protocol|Cipher"
|
|
179
|
+
|
|
180
|
+
# DNS records (for domain ownership)
|
|
181
|
+
dig +short {domain} ANY
|
|
182
|
+
|
|
183
|
+
# SSL certificate details
|
|
184
|
+
echo | openssl s_client -connect {host}:443 2>/dev/null | openssl x509 -noout -dates -subject
|
|
185
|
+
|
|
186
|
+
# NTP sync status (Linux)
|
|
187
|
+
timedatectl status | grep -E "NTP|synchronized"
|
|
188
|
+
|
|
189
|
+
# NTP sync status (macOS)
|
|
190
|
+
sntp -d time.apple.com 2>&1 | head -5
|
|
191
|
+
```
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
# Evidence Types by Control Domain
|
|
2
|
+
|
|
3
|
+
Map of what evidence is expected for each control domain, with format requirements.
|
|
4
|
+
|
|
5
|
+
## Access Control Domain (A.5.15-A.5.18, A.8.2-A.8.5)
|
|
6
|
+
|
|
7
|
+
| Evidence | Format | Refresh | Controls |
|
|
8
|
+
|----------|--------|---------|----------|
|
|
9
|
+
| User access list (all systems) | JSON/CSV export from IdP | Quarterly | A.5.15, A.5.18 |
|
|
10
|
+
| Privileged user list | JSON export from IAM | Quarterly | A.8.2 |
|
|
11
|
+
| Access review records | Spreadsheet with reviewer decisions | Quarterly | A.5.15, A.5.18 |
|
|
12
|
+
| MFA enrollment report | CSV from IdP | Quarterly | A.5.17, A.8.5 |
|
|
13
|
+
| Terminated user access revocation | Cross-reference: HR list vs. active accounts | On termination | A.5.18 |
|
|
14
|
+
| Service account inventory | JSON from cloud IAM | Quarterly | A.5.16 |
|
|
15
|
+
| Access control policy | PDF/markdown (versioned) | Annual review | A.5.15 |
|
|
16
|
+
|
|
17
|
+
## Incident Response Domain (A.5.24-A.5.29, A.6.8)
|
|
18
|
+
|
|
19
|
+
| Evidence | Format | Refresh | Controls |
|
|
20
|
+
|----------|--------|---------|----------|
|
|
21
|
+
| Incident response plan | PDF/markdown (versioned) | Annual review | A.5.24 |
|
|
22
|
+
| Tabletop exercise records | Meeting notes with date, scenario, participants | Annual | A.5.24 |
|
|
23
|
+
| Incident log/register | Ticketing system export | Continuous | A.5.25, A.5.26 |
|
|
24
|
+
| Post-incident review reports | Document per incident | Per incident | A.5.27 |
|
|
25
|
+
| Incident communication records | Email/chat exports | Per incident | A.5.26 |
|
|
26
|
+
| Event reporting channel config | Screenshot of Slack channel / email alias | Annual | A.6.8 |
|
|
27
|
+
|
|
28
|
+
## Cryptographic Controls (A.8.24, A.8.10-A.8.12)
|
|
29
|
+
|
|
30
|
+
| Evidence | Format | Refresh | Controls |
|
|
31
|
+
|----------|--------|---------|----------|
|
|
32
|
+
| Encryption at rest configuration | JSON from cloud API | Quarterly | A.8.24 |
|
|
33
|
+
| TLS configuration scan | `openssl` output or SSL Labs report | Quarterly | A.8.24 |
|
|
34
|
+
| Key management policy | PDF/markdown | Annual | A.8.24 |
|
|
35
|
+
| Certificate inventory | Export from cert manager | Quarterly | A.8.24 |
|
|
36
|
+
| Data classification policy | PDF/markdown | Annual | A.8.10, A.8.12 |
|
|
37
|
+
| DLP tool configuration | Screenshot or config export | Annual | A.8.12 |
|
|
38
|
+
|
|
39
|
+
## Logging and Monitoring (A.8.15-A.8.17)
|
|
40
|
+
|
|
41
|
+
| Evidence | Format | Refresh | Controls |
|
|
42
|
+
|----------|--------|---------|----------|
|
|
43
|
+
| Audit log configuration | JSON from cloud API | Quarterly | A.8.15 |
|
|
44
|
+
| Log centralization (sink config) | JSON from cloud API | Quarterly | A.8.15 |
|
|
45
|
+
| Log retention settings | Screenshot or config export | Annual | A.8.15 |
|
|
46
|
+
| Alert configuration | JSON from monitoring tool | Quarterly | A.8.16 |
|
|
47
|
+
| Sample alert + response | Ticketing system export | Quarterly | A.8.16 |
|
|
48
|
+
| NTP sync evidence | CLI output from servers | Annual | A.8.17 |
|
|
49
|
+
|
|
50
|
+
## Change Management (A.8.25-A.8.34, A.8.9)
|
|
51
|
+
|
|
52
|
+
| Evidence | Format | Refresh | Controls |
|
|
53
|
+
|----------|--------|---------|----------|
|
|
54
|
+
| Change management policy | PDF/markdown | Annual | A.8.32 |
|
|
55
|
+
| Branch protection config | JSON from GitHub API | Quarterly | A.8.32 |
|
|
56
|
+
| Recent merged PRs with reviews | JSON from GitHub API | Quarterly | A.8.32 |
|
|
57
|
+
| CI/CD pipeline configuration | YAML file export | Quarterly | A.8.25 |
|
|
58
|
+
| Dependency scan results | JSON from Dependabot/Snyk | Monthly | A.8.8 |
|
|
59
|
+
| Code scanning results | JSON from CodeQL/SAST | Monthly | A.8.28 |
|
|
60
|
+
| Deployment history | JSON from deployment tool | Quarterly | A.8.32 |
|
|
61
|
+
| Configuration baseline | IaC files (Terraform, etc.) | On change | A.8.9 |
|
|
62
|
+
|
|
63
|
+
## Business Continuity (A.5.30, A.8.13-A.8.14)
|
|
64
|
+
|
|
65
|
+
| Evidence | Format | Refresh | Controls |
|
|
66
|
+
|----------|--------|---------|----------|
|
|
67
|
+
| Business continuity plan | PDF/markdown | Annual | A.5.30 |
|
|
68
|
+
| Business impact analysis | Spreadsheet with RTO/RPO | Annual | A.5.30 |
|
|
69
|
+
| DR test records | Document with date, results | Annual | A.5.30 |
|
|
70
|
+
| Backup configuration | JSON from cloud API | Quarterly | A.8.13 |
|
|
71
|
+
| Backup test/restore records | Document with restore time | Annual | A.8.13 |
|
|
72
|
+
| Redundancy architecture | Diagram + cloud resource export | Annual | A.8.14 |
|
|
73
|
+
|
|
74
|
+
## People Controls (A.6.1-A.6.8)
|
|
75
|
+
|
|
76
|
+
| Evidence | Format | Refresh | Controls |
|
|
77
|
+
|----------|--------|---------|----------|
|
|
78
|
+
| Background check records | HR system export (redacted) | Per hire | A.6.1 |
|
|
79
|
+
| Employment agreements | Signed documents (sample) | Per hire | A.6.2 |
|
|
80
|
+
| Training completion records | LMS export or spreadsheet | Annual | A.6.3 |
|
|
81
|
+
| Disciplinary policy | PDF/markdown (in handbook) | Annual | A.6.4 |
|
|
82
|
+
| Offboarding checklist records | HR system export | Per termination | A.6.5 |
|
|
83
|
+
| NDA/confidentiality agreements | Signed documents (sample) | Per hire/engagement | A.6.6 |
|
|
84
|
+
| Remote work policy | PDF/markdown | Annual | A.6.7 |
|
|
85
|
+
|
|
86
|
+
## Supplier Management (A.5.19-A.5.23)
|
|
87
|
+
|
|
88
|
+
| Evidence | Format | Refresh | Controls |
|
|
89
|
+
|----------|--------|---------|----------|
|
|
90
|
+
| Vendor inventory/register | Spreadsheet | Quarterly | A.5.19 |
|
|
91
|
+
| Vendor security assessments | Per-vendor questionnaire | Annual per vendor | A.5.22 |
|
|
92
|
+
| Vendor SOC 2 / ISO reports | PDF from vendor | Annual | A.5.22 |
|
|
93
|
+
| Vendor contracts (security clauses) | Signed agreements (sample) | Per engagement | A.5.20 |
|
|
94
|
+
| Vendor DPAs | Signed agreements | Per vendor handling PII | A.5.20 |
|
|
95
|
+
|
|
96
|
+
## ISMS Management (Clauses 4-10)
|
|
97
|
+
|
|
98
|
+
| Evidence | Format | Refresh | Controls |
|
|
99
|
+
|----------|--------|---------|----------|
|
|
100
|
+
| ISMS scope document | PDF/markdown | Annual | C.4.3 |
|
|
101
|
+
| Information security policy | Signed PDF | Annual | C.5.2 |
|
|
102
|
+
| Risk assessment | Spreadsheet/register | Annual | C.6.1.2, C.8.2 |
|
|
103
|
+
| Statement of Applicability | Spreadsheet | Annual | C.6.1.3 |
|
|
104
|
+
| Risk treatment plan | Document with status | Ongoing | C.6.1.3, C.8.3 |
|
|
105
|
+
| Management review minutes | Meeting notes | Annual minimum | C.9.3 |
|
|
106
|
+
| Internal audit report | Document with findings | Annual | C.9.2 |
|
|
107
|
+
| Corrective action log | Spreadsheet/tracker | Ongoing | C.10.2 |
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
# Screenshot Evidence Guide
|
|
2
|
+
|
|
3
|
+
When API exports are not available, screenshots are acceptable evidence — but they must meet specific requirements to be accepted by auditors.
|
|
4
|
+
|
|
5
|
+
## When to Use Screenshots
|
|
6
|
+
|
|
7
|
+
Screenshots are the evidence of LAST RESORT. Use them only when:
|
|
8
|
+
|
|
9
|
+
1. The system has no API or CLI export capability
|
|
10
|
+
2. You need to show a UI-specific configuration (e.g., portal settings page)
|
|
11
|
+
3. The API export doesn't capture what the auditor needs to see
|
|
12
|
+
4. You're documenting a process (step-by-step walkthrough)
|
|
13
|
+
|
|
14
|
+
**Always prefer API exports** — they're timestamped, machine-readable, and harder to forge.
|
|
15
|
+
|
|
16
|
+
## Requirements for Audit-Ready Screenshots
|
|
17
|
+
|
|
18
|
+
### Mandatory
|
|
19
|
+
- **System clock visible** — the macOS menu bar (top-right) or Windows taskbar (bottom-right) must show the current date and time
|
|
20
|
+
- **Full context** — show the complete page/panel, not a cropped section. Auditors need to verify WHAT system the screenshot is from
|
|
21
|
+
- **URL bar visible** — for web applications, the browser URL bar must be visible to confirm the system
|
|
22
|
+
- **User identity visible** — the logged-in user should be visible (top-right corner in most portals)
|
|
23
|
+
|
|
24
|
+
### Recommended
|
|
25
|
+
- **High resolution** — at least 1920x1080 to ensure text is readable
|
|
26
|
+
- **No annotations on the evidence copy** — annotated versions can be provided separately for reference
|
|
27
|
+
- **Dark mode off** — light backgrounds print more clearly for auditors who print evidence
|
|
28
|
+
|
|
29
|
+
## macOS Screenshot Commands
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
# Full screen capture (includes menu bar with clock)
|
|
33
|
+
screencapture -x ~/evidence/{filename}.png
|
|
34
|
+
|
|
35
|
+
# Specific window capture (add -w flag, then click the window)
|
|
36
|
+
screencapture -xw ~/evidence/{filename}.png
|
|
37
|
+
|
|
38
|
+
# Timed capture (10 second delay — useful for capturing dropdown menus)
|
|
39
|
+
screencapture -xT 10 ~/evidence/{filename}.png
|
|
40
|
+
|
|
41
|
+
# Capture specific screen region (drag to select)
|
|
42
|
+
screencapture -xs ~/evidence/{filename}.png
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
**Tip**: The `-x` flag prevents the screenshot sound, which is less disruptive.
|
|
46
|
+
|
|
47
|
+
## Naming Convention
|
|
48
|
+
|
|
49
|
+
```
|
|
50
|
+
{control_id}_{system}_{description}_{YYYY-MM-DD}.png
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
Examples:
|
|
54
|
+
- `A.5.17_google-workspace_mfa-enforcement_2026-02-28.png`
|
|
55
|
+
- `A.8.9_aws-console_security-group-config_2026-02-28.png`
|
|
56
|
+
- `A.8.32_github_branch-protection-settings_2026-02-28.png`
|
|
57
|
+
|
|
58
|
+
## Common Screenshot Evidence
|
|
59
|
+
|
|
60
|
+
| Control | What to Screenshot | System |
|
|
61
|
+
|---------|-------------------|--------|
|
|
62
|
+
| A.5.17 | MFA enforcement settings | Google Workspace Admin / Azure AD |
|
|
63
|
+
| A.8.5 | Password policy configuration | IdP settings page |
|
|
64
|
+
| A.8.9 | Security group / firewall rules | Cloud console (when CLI unavailable) |
|
|
65
|
+
| A.8.15 | Log retention settings | CloudWatch / Stackdriver / Azure Monitor |
|
|
66
|
+
| A.8.24 | Encryption at rest configuration | Database / storage settings |
|
|
67
|
+
| A.8.32 | Branch protection rules | GitHub repository settings |
|
|
68
|
+
|
|
69
|
+
## Rejection Reasons
|
|
70
|
+
|
|
71
|
+
Auditors commonly reject screenshots for:
|
|
72
|
+
|
|
73
|
+
1. **No timestamp** — "When was this taken?" → Include system clock
|
|
74
|
+
2. **Cropped too tightly** — "What system is this from?" → Show URL bar and surrounding context
|
|
75
|
+
3. **Edited or annotated** — "Is this authentic?" → Provide clean + annotated versions separately
|
|
76
|
+
4. **Wrong environment** — "Is this production?" → URL should show production hostname
|
|
77
|
+
5. **Stale** — "This is from 6 months ago" → Re-capture within the audit window
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# Connectors
|
|
2
|
+
|
|
3
|
+
## How tool references work
|
|
4
|
+
|
|
5
|
+
This skill uses `~~category` placeholders for optional integrations. The skill works without any connectors configured — they enhance the experience when available.
|
|
6
|
+
|
|
7
|
+
## Connectors for this skill
|
|
8
|
+
|
|
9
|
+
| Category | Placeholder | Recommended server | Other options |
|
|
10
|
+
|----------|-------------|-------------------|---------------|
|
|
11
|
+
| Compliance data | `~~compliance` | Compliance MCP server (planned — not yet available) | Local `compliance/` directory files |
|
|
12
|
+
|
|
13
|
+
### Local compliance data (current default)
|
|
14
|
+
|
|
15
|
+
If the `compliance/` directory exists with status and evidence files, the skill reads those directly. No MCP server needed — just ensure `compliance/status/last_refresh.yaml` is current.
|
|
16
|
+
|
|
17
|
+
### Compliance MCP server (planned)
|
|
18
|
+
|
|
19
|
+
A dedicated compliance MCP server with live test results, evidence freshness tracking, and real-time gap analysis is planned but not yet available. When released, it will be installable as a standard MCP server. Until then, the skill operates in local-data or reference-only mode.
|
|
20
|
+
|
|
21
|
+
### Fallback: Reference only
|
|
22
|
+
|
|
23
|
+
Without any connector, the skill uses embedded `rules/` files for procedural guidance, control descriptions, and evidence checklists. No organization-specific status data is available in this mode.
|
|
@@ -0,0 +1,272 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: iso-27001-internal-audit
|
|
3
|
+
description: >-
|
|
4
|
+
Run an ISO 27001 internal audit. Walk through controls by domain, identify
|
|
5
|
+
gaps, collect evidence, and generate findings with corrective action
|
|
6
|
+
recommendations. Uses NIST SP 800-53 (public domain) as canonical reference.
|
|
7
|
+
license: MIT
|
|
8
|
+
compatibility: >-
|
|
9
|
+
Works with any AI agent. Enhanced with compliance MCP server for live
|
|
10
|
+
dashboard data. Falls back to embedded reference files when no live data
|
|
11
|
+
is available.
|
|
12
|
+
metadata:
|
|
13
|
+
author: open-agreements
|
|
14
|
+
version: "0.1.0"
|
|
15
|
+
frameworks:
|
|
16
|
+
- ISO 27001:2022
|
|
17
|
+
- SOC 2 Type II
|
|
18
|
+
- NIST SP 800-53 Rev 5
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
# ISO 27001 Internal Audit
|
|
22
|
+
|
|
23
|
+
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.
|
|
24
|
+
|
|
25
|
+
## Security Model
|
|
26
|
+
|
|
27
|
+
- **No scripts executed** — this skill is markdown-only procedural guidance
|
|
28
|
+
- **No secrets required** — works with public reference data
|
|
29
|
+
- **IP-clean** — all control descriptions are original writing referencing NIST SP 800-53 (public domain). ISO 27001:2022 controls are referenced by section ID only (e.g., "A.5.15"), never by copyrighted title or description
|
|
30
|
+
- **Evidence stays local** — all evidence collection commands output to local filesystem
|
|
31
|
+
|
|
32
|
+
## When to Use
|
|
33
|
+
|
|
34
|
+
Activate this skill when:
|
|
35
|
+
|
|
36
|
+
1. **Preparing for a surveillance or certification audit** — run 4-6 weeks before the external audit
|
|
37
|
+
2. **Performing quarterly internal audit** — ISO 27001 requires at least annual internal audits; quarterly is best practice
|
|
38
|
+
3. **Post-incident review** — assess whether controls failed and what corrective actions are needed
|
|
39
|
+
4. **New framework adoption** — map existing controls to ISO 27001 requirements
|
|
40
|
+
5. **Onboarding a new compliance tool** — validate that automated checks cover the right controls
|
|
41
|
+
|
|
42
|
+
Do NOT use for:
|
|
43
|
+
- Generating the ISO 27001 Statement of Applicability (SoA) from scratch — use `iso-27001-evidence-collection` for evidence gathering first
|
|
44
|
+
- SOC 2-only audits — use `soc2-readiness` instead
|
|
45
|
+
- Reading or interpreting a specific contract clause — use legal agreement skills
|
|
46
|
+
|
|
47
|
+
## Core Concepts
|
|
48
|
+
|
|
49
|
+
### Control Domains (ISO 27001:2022 Annex A)
|
|
50
|
+
|
|
51
|
+
ISO 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.
|
|
52
|
+
|
|
53
|
+
| Domain | Controls | Focus |
|
|
54
|
+
|--------|----------|-------|
|
|
55
|
+
| A.5 Organizational | 37 | Policies, roles, incident management, supplier relations |
|
|
56
|
+
| A.6 People | 8 | Screening, training, termination, confidentiality |
|
|
57
|
+
| A.7 Physical | 14 | Facility security, equipment, media — mostly N/A for cloud startups |
|
|
58
|
+
| A.8 Technological | 34 | Access control, crypto, logging, SDLC, network security |
|
|
59
|
+
| Clauses 4-10 | 30 | ISMS management system (context, leadership, planning, support, operation, performance, improvement) |
|
|
60
|
+
|
|
61
|
+
### Decision Tree: Startup Scoping
|
|
62
|
+
|
|
63
|
+
```
|
|
64
|
+
Is the organization cloud-native (no owned data centers)?
|
|
65
|
+
├── YES → Mark A.7.1-A.7.9, A.7.11-A.7.13 as "satisfied by cloud provider SOC 2"
|
|
66
|
+
│ Focus evidence on: laptops, home offices, mobile devices
|
|
67
|
+
├── NO → Full A.7 assessment required
|
|
68
|
+
│
|
|
69
|
+
Does the organization develop software?
|
|
70
|
+
├── YES → A.8.25-A.8.34 (SDLC controls) are in scope
|
|
71
|
+
├── NO → A.8.25-A.8.34 can be scoped out with justification
|
|
72
|
+
│
|
|
73
|
+
Does the organization handle PII?
|
|
74
|
+
├── YES → A.5.34 (privacy) is critical, cross-reference with GDPR/CCPA
|
|
75
|
+
├── NO → A.5.34 is checkbox tier
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
### Control Tiering
|
|
79
|
+
|
|
80
|
+
Not all 93 controls fail equally. Prioritize by audit failure frequency:
|
|
81
|
+
|
|
82
|
+
| Tier | Count | Treatment |
|
|
83
|
+
|------|-------|-----------|
|
|
84
|
+
| **Critical** | ~30 | Full assessment: evidence, interviews, observation |
|
|
85
|
+
| **Relevant** | ~30 | Standard check: evidence review, spot-check |
|
|
86
|
+
| **Checkbox** | ~33 | Verify policy exists or cloud provider covers it |
|
|
87
|
+
|
|
88
|
+
For detailed per-control guidance, load `rules/<domain>.md`.
|
|
89
|
+
|
|
90
|
+
## Step-by-Step Workflow
|
|
91
|
+
|
|
92
|
+
### Step 1: Scope and Context
|
|
93
|
+
|
|
94
|
+
1. **Identify the ISMS scope** — What systems, processes, locations, and people are in scope?
|
|
95
|
+
2. **Gather the Statement of Applicability (SoA)** — Which of the 93 Annex A controls apply?
|
|
96
|
+
3. **Review previous audit findings** — What was flagged last time? Are corrective actions closed?
|
|
97
|
+
4. **Check data freshness** — If using a monitoring dashboard or automated testing system, verify data is < 7 days old
|
|
98
|
+
|
|
99
|
+
```
|
|
100
|
+
# If compliance MCP is available:
|
|
101
|
+
check_compliance_status(framework="iso27001_2022")
|
|
102
|
+
|
|
103
|
+
# If reading local files:
|
|
104
|
+
# Check compliance/status/last_refresh.yaml for staleness
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
### Step 2: ISMS Clause Assessment (Clauses 4-10)
|
|
108
|
+
|
|
109
|
+
Most startups fail here — they treat ISMS as documentation, not a functioning management system.
|
|
110
|
+
|
|
111
|
+
1. **Clause 5 (Leadership)** — Is there a signed security policy? Who is the ISMS owner? Is there evidence of management review?
|
|
112
|
+
2. **Clause 6 (Planning)** — Is there a risk assessment? Is it current (< 12 months)? Does it reference the SoA?
|
|
113
|
+
3. **Clause 7 (Support)** — Is there a competence matrix? Are training records current?
|
|
114
|
+
4. **Clause 8 (Operation)** — Is the risk treatment plan being executed?
|
|
115
|
+
5. **Clause 9 (Performance)** — Are there metrics? Has an internal audit been done? Is there a management review record?
|
|
116
|
+
6. **Clause 10 (Improvement)** — Are nonconformities tracked? Are corrective actions implemented?
|
|
117
|
+
|
|
118
|
+
**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.
|
|
119
|
+
|
|
120
|
+
### Step 3: Annex A Control Assessment
|
|
121
|
+
|
|
122
|
+
Work through controls by domain, prioritizing Critical tier:
|
|
123
|
+
|
|
124
|
+
1. **For each Critical control**:
|
|
125
|
+
- Check: Is there a documented policy/procedure?
|
|
126
|
+
- Check: Is there evidence of implementation?
|
|
127
|
+
- Check: Is there evidence of monitoring/review?
|
|
128
|
+
- Record finding: Conformity / Minor nonconformity / Major nonconformity / Observation
|
|
129
|
+
|
|
130
|
+
2. **For each Relevant control**:
|
|
131
|
+
- Check: Is there evidence of implementation?
|
|
132
|
+
- Spot-check one or two items
|
|
133
|
+
- Record finding
|
|
134
|
+
|
|
135
|
+
3. **For each Checkbox control**:
|
|
136
|
+
- Verify policy exists or cloud provider SOC 2 covers it
|
|
137
|
+
- Record as conforming or note exception
|
|
138
|
+
|
|
139
|
+
```
|
|
140
|
+
# If compliance MCP is available:
|
|
141
|
+
get_domain_overview(domain="organizational")
|
|
142
|
+
get_control_guidance(control_id="A.5.15")
|
|
143
|
+
list_evidence_gaps(framework="iso27001_2022", tier="critical")
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
### Step 4: Evidence Collection
|
|
147
|
+
|
|
148
|
+
For each finding, collect supporting evidence:
|
|
149
|
+
|
|
150
|
+
1. **API exports** (preferred) — timestamped JSON/CSV from source systems
|
|
151
|
+
2. **Screenshots** (when API unavailable) — must include visible system clock
|
|
152
|
+
3. **Interview notes** — summarize who said what, when
|
|
153
|
+
4. **Document review** — note document name, version, date reviewed
|
|
154
|
+
|
|
155
|
+
**Evidence naming convention**: `{control_id}_{evidence_type}_{date}.{ext}`
|
|
156
|
+
Example: `A.5.15_user-access-list_2026-02-28.json`
|
|
157
|
+
|
|
158
|
+
For detailed collection commands, load `rules/` files or use the `iso-27001-evidence-collection` skill.
|
|
159
|
+
|
|
160
|
+
### Step 5: Generate Findings
|
|
161
|
+
|
|
162
|
+
For each nonconformity:
|
|
163
|
+
|
|
164
|
+
```markdown
|
|
165
|
+
## Finding: [Short title]
|
|
166
|
+
|
|
167
|
+
- **Control**: A.x.x
|
|
168
|
+
- **NIST Reference**: [NIST control ID]
|
|
169
|
+
- **Severity**: Major / Minor / Observation
|
|
170
|
+
- **Description**: [What was found]
|
|
171
|
+
- **Evidence**: [What evidence supports the finding]
|
|
172
|
+
- **Root Cause**: [Why the control failed]
|
|
173
|
+
- **Corrective Action**: [Specific remediation steps]
|
|
174
|
+
- **Due Date**: [Agreed timeline]
|
|
175
|
+
- **Owner**: [Person responsible]
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
**Severity definitions**:
|
|
179
|
+
- **Major nonconformity**: Control is missing or completely ineffective. Audit failure risk.
|
|
180
|
+
- **Minor nonconformity**: Control exists but has gaps. Must fix before next surveillance audit.
|
|
181
|
+
- **Observation**: Potential improvement. Not required but recommended.
|
|
182
|
+
|
|
183
|
+
### Step 6: Audit Report
|
|
184
|
+
|
|
185
|
+
Generate a structured audit report:
|
|
186
|
+
|
|
187
|
+
1. **Executive summary** — overall ISMS maturity, key findings, recommendation
|
|
188
|
+
2. **Scope** — what was audited, what was excluded
|
|
189
|
+
3. **Methodology** — controls assessed, evidence reviewed, people interviewed
|
|
190
|
+
4. **Findings** — grouped by domain, with severity and corrective actions
|
|
191
|
+
5. **Positive observations** — what's working well (auditors do note these)
|
|
192
|
+
6. **Conclusion** — readiness for external audit, recommended timeline
|
|
193
|
+
|
|
194
|
+
## Quick Reference: Top 10 Controls That Fail Most Often
|
|
195
|
+
|
|
196
|
+
| # | Control | Common Failure | Fix |
|
|
197
|
+
|---|---------|---------------|-----|
|
|
198
|
+
| 1 | A.5.15 | No periodic access review | Schedule quarterly reviews, export user lists |
|
|
199
|
+
| 2 | A.8.8 | No vulnerability scanning | Deploy Dependabot/Snyk, schedule infra scans |
|
|
200
|
+
| 3 | A.5.24 | Incident response plan untested | Run tabletop exercise, document results |
|
|
201
|
+
| 4 | A.8.5 | MFA not enforced everywhere | Enable MFA on all production + admin accounts |
|
|
202
|
+
| 5 | A.5.30 | No business continuity test | Run DR failover test, document RTO/RPO results |
|
|
203
|
+
| 6 | A.8.15 | Audit logs not centralized | Ship logs to SIEM/CloudWatch/Stackdriver |
|
|
204
|
+
| 7 | A.8.9 | No baseline configuration | Document server/container base images |
|
|
205
|
+
| 8 | A.6.1 | Background checks incomplete | Verify all employees have completed screening |
|
|
206
|
+
| 9 | A.8.32 | No change management process | Require PR reviews, document deployment process |
|
|
207
|
+
| 10 | A.5.9 | Asset inventory incomplete | Export from cloud provider + endpoint management |
|
|
208
|
+
|
|
209
|
+
## DO / DON'T
|
|
210
|
+
|
|
211
|
+
### DO
|
|
212
|
+
- Collect evidence via API exports with ISO 8601 timestamps — always preferred over screenshots
|
|
213
|
+
- Test controls, don't just review documentation — auditors check implementation, not just policies
|
|
214
|
+
- Interview people at different levels — manager says one thing, engineer may say another
|
|
215
|
+
- Document positive findings — shows the audit is balanced and thorough
|
|
216
|
+
- Keep the SoA aligned with actual controls — gaps between SoA and implementation are major findings
|
|
217
|
+
- Use `screencapture -x ~/evidence/{filename}.png` on macOS when screenshots are necessary
|
|
218
|
+
|
|
219
|
+
### DON'T
|
|
220
|
+
- Screenshot portals without visible system clock — auditors will reject undated evidence
|
|
221
|
+
- Accept "we have a policy" without checking implementation — "show me" > "tell me"
|
|
222
|
+
- Audit your own work — independence requirement (Clause 9.2) means auditors can't audit their own area
|
|
223
|
+
- Treat checkbox controls as zero-effort — even N/A controls need justification in the SoA
|
|
224
|
+
- Skip ISMS clauses to focus only on Annex A — most first-time failures are in clauses 4-10
|
|
225
|
+
|
|
226
|
+
## Troubleshooting
|
|
227
|
+
|
|
228
|
+
| Problem | Solution |
|
|
229
|
+
|---------|----------|
|
|
230
|
+
| Data is stale (> 7 days old) | Refresh from monitoring dashboard or re-export from source systems |
|
|
231
|
+
| Can't determine which controls apply | Start with the SoA; if no SoA exists, use the decision tree above |
|
|
232
|
+
| Too many findings to address before audit | Prioritize: fix all Major nonconformities first, then Critical-tier Minors |
|
|
233
|
+
| Evidence timestamps don't match audit period | Re-collect evidence within the audit window (typically 12 months) |
|
|
234
|
+
| Cloud provider controls not documented | Request SOC 2 Type II report from provider; map their controls to your SoA |
|
|
235
|
+
| Internal audit has never been done | This IS the first internal audit — document that in the report and plan for regular cadence |
|
|
236
|
+
|
|
237
|
+
## Rules
|
|
238
|
+
|
|
239
|
+
For detailed per-control guidance, load the appropriate rules file:
|
|
240
|
+
|
|
241
|
+
| File | Coverage |
|
|
242
|
+
|------|----------|
|
|
243
|
+
| `rules/access-control.md` | A.5.15-A.5.18, A.8.2-A.8.5 — identity, authentication, authorization |
|
|
244
|
+
| `rules/incident-response.md` | A.5.24-A.5.29, A.6.8 — incident lifecycle |
|
|
245
|
+
| `rules/encryption.md` | A.8.24, A.8.10-A.8.12 — cryptographic controls |
|
|
246
|
+
| `rules/change-management.md` | A.8.25-A.8.34, A.8.9, A.8.32 — SDLC and configuration |
|
|
247
|
+
| `rules/logging-monitoring.md` | A.8.15-A.8.17 — audit trails and monitoring |
|
|
248
|
+
| `rules/business-continuity.md` | A.5.30, A.8.13-A.8.14 — backup, DR, BCP |
|
|
249
|
+
| `rules/people-controls.md` | A.6.1-A.6.8 — HR security lifecycle |
|
|
250
|
+
| `rules/supplier-management.md` | A.5.19-A.5.23 — third-party risk |
|
|
251
|
+
| `rules/isms-management.md` | Clauses 4-10 — management system operation |
|
|
252
|
+
|
|
253
|
+
## Attribution
|
|
254
|
+
|
|
255
|
+
Audit procedures and control guidance developed with [Internal ISO Audit](https://internalisoaudit.com) (Hazel Castro, ISO 27001 Lead Auditor, 14+ years, 100+ audits).
|
|
256
|
+
|
|
257
|
+
## Runtime Detection
|
|
258
|
+
|
|
259
|
+
This skill operates in three modes, detected automatically:
|
|
260
|
+
|
|
261
|
+
1. **Compliance MCP server available** (best) — Live dashboard data, automated test results, real-time gap analysis
|
|
262
|
+
- Detected by: `check_compliance_status()` returns data
|
|
263
|
+
- Benefits: Current test pass/fail status, evidence freshness, SLA tracking
|
|
264
|
+
|
|
265
|
+
2. **Local compliance data available** (good) — Reads `compliance/` directory directly
|
|
266
|
+
- Detected by: `compliance/status/last_refresh.yaml` exists
|
|
267
|
+
- Benefits: Historical test data, evidence status, control mappings
|
|
268
|
+
|
|
269
|
+
3. **Reference only** (baseline) — Uses embedded `rules/` files, no live data
|
|
270
|
+
- Always available
|
|
271
|
+
- Benefits: Procedural guidance, control descriptions, evidence checklists
|
|
272
|
+
- Limitation: No organization-specific status data
|