PR

prowler-compliance-review

Validates compliance framework JSON files and reviews PRs for security standards.

Install

mkdir -p .claude/skills/prowler-compliance-review && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/7923" && unzip -o skill.zip -d .claude/skills/prowler-compliance-review && rm skill.zip

Installs to .claude/skills/prowler-compliance-review

Activation

This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.

Reviews Pull Requests that add or modify compliance frameworks. Trigger: When reviewing PRs with compliance framework changes, CIS/NIST/PCI-DSS additions, or compliance JSON files.
180 chars · catalog description✓ has a “when” trigger
Advanced

Key capabilities

  • Validate JSON syntax for compliance framework files
  • Check for missing or duplicate security requirement IDs
  • Verify framework metadata completeness
  • Compare new dashboard files against established patterns
  • Test compliance frameworks using Prowler CLI

How it works

The skill uses a validation script to check JSON structure and requirement IDs, followed by a manual review process for changelogs and dashboard patterns.

Inputs & outputs

You give it
Compliance framework JSON file
You get back
Validation status and approval decision

When to use prowler-compliance-review

  • Validate JSON schema for compliance frameworks
  • Check for missing or duplicate security requirement IDs
  • Compare new framework dashboards with existing patterns
  • Automate PR reviews for CIS or NIST updates

About this skill

When to Use

  • Reviewing PRs that add new compliance frameworks
  • Reviewing PRs that modify existing compliance frameworks
  • Validating compliance framework JSON structure before merge

Review Checklist (Critical)

CheckCommand/MethodPass Criteria
JSON Validpython3 -m json.tool file.jsonNo syntax errors
All Checks ExistRun validation script0 missing checks
No Duplicate IDsRun validation script0 duplicate requirement IDs
Changelog fragmentManual reviewFragment present under prowler/changelog.d/
Dashboard FileCompare with existingFollows established pattern
Framework MetadataManual reviewAll required fields populated

Commands

# 1. Validate JSON syntax
python3 -m json.tool prowler/compliance/{provider}/{framework}.json > /dev/null \
  && echo "Valid JSON" || echo "INVALID JSON"

# 2. Run full validation script
python3 skills/prowler-compliance-review/assets/validate_compliance.py \
  prowler/compliance/{provider}/{framework}.json

# 3. Compare dashboard with existing (find similar framework)
diff dashboard/compliance/{new_framework}.py \
     dashboard/compliance/{existing_framework}.py

Decision Tree

JSON Valid?
├── No → FAIL: Fix JSON syntax errors
└── Yes ↓
    All Checks Exist in Codebase?
    ├── Missing checks → FAIL: Add missing checks or remove from framework
    └── All exist ↓
        Duplicate Requirement IDs?
        ├── Yes → FAIL: Fix duplicate IDs
        └── No ↓
            Changelog Fragment Present?
            ├── No → REQUEST CHANGES: Add changelog fragment
            └── Yes ↓
                Dashboard File Follows Pattern?
                ├── No → REQUEST CHANGES: Fix dashboard pattern
                └── Yes ↓
                    Framework Metadata Complete?
                    ├── No → REQUEST CHANGES: Add missing metadata
                    └── Yes → APPROVE

Framework Structure Reference

Compliance frameworks are JSON files in: prowler/compliance/{provider}/{framework}.json

{
  "Framework": "CIS",
  "Name": "CIS Provider Benchmark vX.Y.Z",
  "Version": "X.Y",
  "Provider": "AWS|Azure|GCP|...",
  "Description": "Framework description...",
  "Requirements": [
    {
      "Id": "1.1",
      "Description": "Requirement description",
      "Checks": ["check_name_1", "check_name_2"],
      "Attributes": [
        {
          "Section": "1 Section Name",
          "SubSection": "1.1 Subsection (optional)",
          "Profile": "Level 1|Level 2",
          "AssessmentStatus": "Automated|Manual",
          "Description": "...",
          "RationaleStatement": "...",
          "ImpactStatement": "...",
          "RemediationProcedure": "...",
          "AuditProcedure": "...",
          "AdditionalInformation": "...",
          "References": "...",
          "DefaultValue": "..."
        }
      ]
    }
  ]
}

Common Issues

IssueHow to DetectResolution
Missing checksValidation script reports missingAdd check implementation or remove from Checks array
Duplicate IDsValidation script reports duplicatesEnsure each requirement has unique ID
Empty Checks for AutomatedAssessmentStatus is Automated but Checks is emptyAdd checks or change to Manual
Wrong file locationFramework not in prowler/compliance/{provider}/Move to correct directory
Missing dashboard fileNo corresponding dashboard/compliance/{framework}.pyCreate dashboard file following pattern
Changelog fragment missingNo fragment file in the PR diffAdd a fragment under prowler/changelog.d/

Dashboard File Pattern

Dashboard files must be in dashboard/compliance/ and follow this exact pattern:

import warnings

from dashboard.common_methods import get_section_containers_cis

warnings.filterwarnings("ignore")


def get_table(data):

    aux = data[
        [
            "REQUIREMENTS_ID",
            "REQUIREMENTS_DESCRIPTION",
            "REQUIREMENTS_ATTRIBUTES_SECTION",
            "CHECKID",
            "STATUS",
            "REGION",
            "ACCOUNTID",
            "RESOURCEID",
        ]
    ].copy()

    return get_section_containers_cis(
        aux, "REQUIREMENTS_ID", "REQUIREMENTS_ATTRIBUTES_SECTION"
    )

Testing the Compliance Framework

After validation passes, test the framework with Prowler:

# Verify framework is detected
uv run python prowler-cli.py {provider} --list-compliance | grep {framework}

# Run a quick test with a single check from the framework
uv run python prowler-cli.py {provider} --compliance {framework} --check {check_name}

# Run full compliance scan (dry-run with limited checks)
uv run python prowler-cli.py {provider} --compliance {framework} --checks-limit 5

# Generate compliance report in multiple formats
uv run python prowler-cli.py {provider} --compliance {framework} -M csv json html

Resources

When not to use it

  • Reviewing non-compliance related pull requests

Prerequisites

python3

Limitations

  • Requires manual review of changelog fragments
  • Dashboard files must follow a specific Python pattern

How it compares

It automates the validation of compliance framework structure and metadata, which would otherwise require manual verification against the codebase.

Compared to similar skills

prowler-compliance-review side by side with the closest alternatives in the catalog.

SkillInstallsUpdatedSafetyDifficulty
prowler-compliance-review (this skill)02moReviewAdvanced
fix-dependabot-alerts186moReviewIntermediate
semgrep-rule-variant-creator12moReviewAdvanced
hooks-system16moReviewAdvanced

Try saying

Example prompts that trigger this skill in your AI assistant.

You might also like

fix-dependabot-alerts

microsoft

Fix Dependabot security alerts by updating vulnerable npm dependencies. Use when the user mentions "dependabot", "security alerts", "vulnerability", "CVE", or wants to update packages with security issues.

1872

semgrep-rule-variant-creator

trailofbits

Creates language variants of existing Semgrep rules. Use when porting a Semgrep rule to specified target languages. Takes an existing rule and target languages as input, produces independent rule+test directories for each language.

10

hooks-system

MadAppGang

Comprehensive lifecycle hook patterns for Claude Code workflows. Use when configuring PreToolUse, PostToolUse, UserPromptSubmit, Stop, or SubagentStop hooks. Covers hook matchers, command hooks, prompt hooks, validation, metrics, auto-formatting, and security patterns. Trigger keywords - "hooks", "PreToolUse", "PostToolUse", "lifecycle", "tool matcher", "hook template", "auto-format", "security hook", "validation hook".

10

moai-workflow-loop

modu-ai

Ralph Engine - Automated feedback loop with LSP diagnostics and AST-grep integration for continuous code quality improvement. Use when implementing error-driven development, automated fixing, or continuous quality validation workflows.

10

yes

sstklen

Use when any task involves modifying files, configs, databases, or deployments. Use when debugging hits 2+ failures. Use when about to guess or assume without evidence ('probably', 'might be', 'I think', 'should be'). Use when deflecting to user ('please check...', 'you should manually...', 'you may

00

1password

openclaw

Set up and use 1Password CLI (op). Use when installing the CLI, enabling desktop app integration, signing in (single or multi-account), or reading/injecting/running secrets via op.

2799

Search skills

Search the agent skills registry