iso27001-sdlc
Scan a software repository for ISO 27001:2022 compliance of its software development controls. Produces a per-control compliance report covering Annex A controls 8.4, 8.25–8.33 (source code access, secure SDLC, application security requirements, secure architecture, secure coding, security testing, outsourced development, environment separation, change management, and test data). Use this skill whenever a user mentions ISO 27001, ISMS compliance, security audit readiness, Annex A controls, secure SDLC compliance, or wants to check whether their codebase meets information security standards. Also trigger when the user asks about audit preparation for software development, security control gaps, or compliance posture of a repository — even if they don't mention ISO 27001 by name but describe wanting to verify security practices against a standard.
What this skill does
# ISO 27001:2022 Software Development Compliance Scanner Scans a repository and produces a compliance gap report against the ISO 27001:2022 Annex A software development controls (8.4, 8.25–8.33). ## Before you start Read `references/controls.md` — it contains the per-control scoring rules, example fix suggestions, and the mapping from evidence to status. For 8.28 (Secure Coding) checks, also read `references/secure-coding-patterns.md` which contains the per-language/framework lookup tables for libraries, config locations, and unsafe code patterns. ## Architecture: two-phase scan → score The skill separates evidence collection (deterministic) from compliance scoring (judgment-based). This eliminates inconsistency where the same file gets assessed differently for different controls. **Phase 1 — Scan** runs `scripts/scan_repo.py` to collect all file evidence into a single JSON structure. This is the only phase that touches the filesystem. **Phase 2 — Score** reads the JSON evidence and applies the scoring rules from `references/controls.md` to produce the markdown report. Evidence is mapped to controls, not re-discovered per control. ## Phase 1: Collect evidence Run the scanning script: ```bash python /path/to/skill/scripts/scan_repo.py /path/to/repo --output /tmp/iso27001-evidence.json ``` The script indexes the entire repo and produces structured evidence covering: file pattern matches, linter configs, security analysis tools, faker/synthetic data libraries, hardcoded secret patterns, .gitignore checks, CI/CD config analysis, ADR security content, security test files, language/container/IaC detection, and monorepo detection. Review the scan summary printed to stderr. If the repo is a monorepo (the script detects this), see the Monorepo Handling section below before proceeding. If the script fails or the repo is not locally available, fall back to manual scanning: use `find`, `grep`, and `cat` to collect the same evidence described in `references/controls.md`. The script is a convenience, not a hard dependency. ## Phase 2: Score and report Read the evidence JSON produced by Phase 1. For each of the 10 core controls (8.4, 8.25, 8.26, 8.27, 8.28, 8.29, 8.30, 8.31, 8.32, 8.33), apply the scoring rules in `references/controls.md`. The evidence JSON maps to controls like this: | Evidence key | Used by controls | |---|---| | `file_evidence.codeowners` | 8.4, 8.32 | | `file_evidence.pr_template`, `pr_template_security` | 8.25, 8.32 | | `file_evidence.issue_template` | 8.25, 8.26 | | `file_evidence.security_policy` | 8.25 | | `architecture_security`, `adr_findings` | 8.27 | | `file_evidence.threat_model` | 8.27 | | `linter_evidence`, `security_analysis` | 8.28 | | `secrets_findings`, `env_gitignore` | 8.28 | | `file_evidence.lockfiles`, `file_evidence.dependency_scanning_config` | 8.28 | | `secure_coding_practices.secure_coding_deps.input_validation` | 8.28, 8.26 | | `secure_coding_practices.secure_coding_deps.authentication` | 8.28 | | `secure_coding_practices.secure_coding_deps.password_hashing` | 8.28 | | `secure_coding_practices.secure_coding_deps.security_headers` | 8.28 | | `secure_coding_practices.secure_coding_deps.rate_limiting` | 8.28 | | `secure_coding_practices.secure_coding_deps.sanitization` | 8.28 | | `secure_coding_practices.secure_coding_deps.orm` | 8.28 | | `secure_coding_practices.secure_coding_deps.structured_logging` | 8.28, supporting 8.16 | | `secure_coding_practices.source_patterns.unsafe_functions` | 8.28 | | `secure_coding_practices.source_patterns.raw_sql` | 8.28 | | `secure_coding_practices.source_patterns.deprecated_crypto` | 8.28 | | `secure_coding_practices.source_patterns.xss_template_escapes` | 8.28 | | `secure_coding_practices.source_patterns.insecure_cors` | 8.28 | | `secure_coding_practices.source_patterns.insecure_config` | 8.28 | | `secure_coding_practices.csrf_evidence` | 8.28 | | `secure_coding_practices.sbom_tooling` | 8.28, supporting 8.8 | | `ci_evidence.security_jobs` | 8.25, 8.28, 8.29 | | `security_test_files` | 8.29 | | `file_evidence.env_specific_configs`, `file_evidence.env_dirs` | 8.31 | | `file_evidence.changelog`, `file_evidence.commitlint_config` | 8.32 | | `faker_evidence`, `file_evidence.test_fixtures_dirs` | 8.33 | When a single piece of evidence is relevant to multiple controls, reference it consistently — do not re-assess or describe it differently in each section. Example: if CI has CodeQL configured, that's SAST evidence for 8.29, a security gate for 8.25, and supporting evidence for 8.28. State the fact once, reference it in each control. After scoring core controls, do a lighter pass on supporting controls (5.8, 8.7, 8.8, 8.9, 8.16) — present if found, flag if absent, but don't fail the report over them. ### Handling absent infrastructure If no CI/CD configuration is found, do not attempt CI-related checks. Instead flag CI/CD as an analysis gap and include this guidance: > ISO 27001:2022 expects automated security controls integrated into the > build and deployment pipeline: static analysis (SAST), dependency scanning > (SCA), and approval gates before production deployment. Without CI/CD > configuration in the repository, these controls cannot be verified. The > organization should document its CI/CD approach and ensure security scans > are mandatory pipeline stages. The same principle applies to any absent infrastructure — flag the gap, explain the ISO requirement, move on. ## Report format Produce a single markdown report. Use this structure: ```markdown # ISO 27001:2022 Software Development Compliance Report **Repository:** <name> **Scan date:** <date> **Languages/frameworks:** <detected> **CI/CD system:** <detected or "None detected"> **Repository type:** <single project / monorepo with N sub-projects> ## Executive Summary <Lead with the highest-risk gap. State overall posture. Name the #1 priority action.> **Overall posture:** <STRONG / MODERATE / WEAK / CRITICAL GAPS> | Status | Count | |--------|-------| | PASS | X | | WARNING | X | | FAIL | X | | MANUAL REVIEW NEEDED | X | | NOT APPLICABLE | X | ## Detailed Findings ### 8.X — <Control Name> **Status:** PASS / FAIL / WARNING / NOT APPLICABLE / MANUAL REVIEW NEEDED **What this control requires:** <1-2 sentences from the control intent in controls.md> **Evidence found:** - <file path or config with brief description> **Gaps identified:** - <what is missing> **Recommended actions:** - <concrete fix suggestion from controls.md> - <if templates would help: "A template for <X> can be generated on request."> --- [repeat for each of the 10 controls] ## Supporting Controls | Control | Status | Notes | |---------|--------|-------| | 5.8 — Info security in project mgmt | ... | ... | | 8.8 — Vulnerability management | ... | ... | | ... | ... | ... | ## Next Steps <Top 3-5 prioritized actions. Be specific: "Add a .bandit config for Python SAST" not "improve security testing."> ## Appendix: Analysis Limitations <What the scan could not verify: platform-level access controls, process adherence, training records, contractual controls, etc.> ``` Keep the report concise. For large repos, summarize evidence per control (e.g., "14 workflow files found, 3 contain security scanning stages") rather than listing every file. Only list individual files when they're notable (secrets found, key configs present/absent). ## Example control output This example shows the expected quality bar for a single control finding: ```markdown ### 8.28 — Secure Coding **Status:** WARNING **What this control requires:** Apply secure coding principles to prevent common vulnerabilities. Enforce coding standards, use static analysis, manage dependencies securely, and prevent hardcoded secrets. **Evidence found:** - `.eslintrc.json` — ESLint configured but no security plugin (`eslint-plugin-security` absent) - `package-lock.json` — dependency lock file present - `.github/dependabot.yml` — automated dependency updates configured - `.
Related in Security
mac-ops
IncludedComprehensive macOS workstation operations — diagnose kernel panics, identify failing drives, audit launchd startup items, decode wake reasons, triage TCC permission denials, manage APFS snapshots, recover from no-boot. Use for: Mac is slow, slow bootup, won't boot, kernel panic, kernel_task hot, mds_stores CPU, photoanalysisd, cloudd, login loop, gray screen, sleep wake failure, drive failing, IO errors, APFS snapshots eating space, Time Machine local snapshots, Spotlight indexing, launchd, LaunchAgent, LaunchDaemon, login items, TCC permissions, Full Disk Access, Screen Recording denied, Gatekeeper, quarantine, com.apple.quarantine, app is damaged, helper tool, /Library/PrivilegedHelperTools, pmset, wake reasons, dark wake, sysdiagnose, panic.ips, DiagnosticReports, configuration profile, MDM profile, remote diagnostics over SSH.
a11y-audit
IncludedRun accessibility audits on web projects combining automated scanning (axe-core, Lighthouse) with WCAG 2.1 AA compliance mapping, manual check guidance, and structured reporting. Output is configurable: markdown report only, markdown plus machine-readable JSON, or markdown plus issue tracker integration. Use this skill whenever the user mentions "accessibility audit", "a11y audit", "WCAG audit", "accessibility check", "compliance scan", or asks to check a web project for accessibility issues. Also trigger when the user wants to verify WCAG conformance or map findings to a specific standard (CAN-ASC-6.2, EN 301 549, ADA/AODA).
erpclaw
IncludedAI-native ERP system with self-extending OS. Full accounting, invoicing, inventory, purchasing, tax, billing, HR, payroll, advanced accounting (ASC 606/842, intercompany, consolidation), and financial reporting. 413 actions across 14 domains, 43 expansion modules. Constitutional guardrails, adversarial audit, schema migration. Double-entry GL, immutable audit trail, US GAAP.
assess
IncludedAssesses and rates quality 0-10 across multiple dimensions (correctness, maintainability, security, performance, testability, simplicity) with pros/cons analysis. Compares against project conventions and prior decisions from memory. Produces structured evaluation reports with actionable improvement suggestions. Use when evaluating code, designs, architectures, or comparing alternative approaches.
spring-boot-security-jwt
IncludedProvides JWT authentication and authorization patterns for Spring Boot 3.5.x covering token generation with JJWT, Bearer/cookie authentication, database/OAuth2 integration, and RBAC/permission-based access control using Spring Security 6.x. Use when implementing authentication or authorization in Spring Boot applications.
code-hardcode-audit
IncludedDetect hardcoded values, magic numbers, and leaked secrets. TRIGGERS - hardcode audit, magic numbers, PLR2004, secret scanning.