---
name: prowler-readme-table
description: >
  Updates the "Prowler at a Glance" table in README.md with accurate provider statistics.
  Trigger: When updating README.md provider stats, checks count, services count, compliance frameworks, or categories.
license: Apache-2.0
metadata:
  author: prowler-cloud
  version: "1.0"
  scope: [root]
  auto_invoke:
    - "Updating README.md provider statistics table"
    - "Updating checks, services, compliance, or categories count in README.md"
allowed-tools: Read, Edit, Bash, Glob, Grep
---

## When to Use

Use this skill when updating the **Prowler at a Glance** table in the root `README.md`. This table tracks the number of checks, services, compliance frameworks, and categories for each supported provider.

## Procedure

### Step 1: Collect Stats via CLI

Run the following command for **each provider** and **each metric**:

```bash
python3 prowler-cli.py <provider> --list-<metric>
```

**Providers:** `aws`, `azure`, `gcp`, `kubernetes`, `github`, `m365`, `oraclecloud`, `alibabacloud`, `cloudflare`, `mongodbatlas`, `openstack`, `nhn`

**Metrics:** `checks`, `services`, `compliance`, `categories`

The CLI output ends with a summary line like:

```text
There are 572 available checks.
There is 1 available Compliance Framework.
```

Extract the number from the summary line. Note that singular results use "There is" instead of "There are".

### Step 2: Batch Extraction

Use this one-liner to collect all stats at once (handles both singular and plural output):

```bash
for provider in aws azure gcp kubernetes github m365 oraclecloud alibabacloud cloudflare mongodbatlas openstack nhn; do
  for metric in checks services compliance categories; do
    result=$(python3 prowler-cli.py $provider --list-$metric 2>&1 | sed -n 's/.*There \(are\|is\) .*\x1b\[33m\([0-9]*\)\x1b\[0m.*/\2/p')
    echo "$provider $metric: $result"
  done
done
```

### Step 3: Update the Table

Edit the table in `README.md` (located in the `# Prowler at a Glance` section) with the collected numbers.

**Table format:**

```markdown
| Provider | Checks | Services | [Compliance Frameworks](...) | [Categories](...) | Support | Interface |
|---|---|---|---|---|---|---|
| AWS | 572 | 83 | 41 | 17 | Official | UI, API, CLI |
```

### Provider Name Mapping

| CLI Provider | Table Display Name |
|---|---|
| `aws` | AWS |
| `azure` | Azure |
| `gcp` | GCP |
| `kubernetes` | Kubernetes |
| `github` | GitHub |
| `m365` | M365 |
| `oraclecloud` | OCI |
| `alibabacloud` | Alibaba Cloud |
| `cloudflare` | Cloudflare |
| `mongodbatlas` | MongoDB Atlas |
| `openstack` | OpenStack |
| `nhn` | NHN |

### Special Rows (No CLI stats)

These providers delegate to external tools and do NOT use CLI stats:

| Provider | Checks Column | Services | Compliance | Categories |
|---|---|---|---|---|
| IaC | `[See trivy docs.](https://trivy.dev/latest/docs/coverage/iac/)` | N/A | N/A | N/A |
| LLM | `[See promptfoo docs.](https://www.promptfoo.dev/docs/red-team/plugins/)` | N/A | N/A | N/A |

### Support and Interface Columns

- **Support**: `Official` for all providers except `NHN` which is `Unofficial`
- **Interface**: Most providers use `UI, API, CLI`. Exceptions with `CLI` only: `Cloudflare`, `OpenStack`, `NHN`, `LLM`

## Rules

- **ALWAYS** use the CLI (`python3 prowler-cli.py`) to obtain numbers. Do NOT count files manually.
- **NEVER** commit changes unless explicitly asked.
- **NEVER** modify the IaC or LLM rows (they link to external docs).
- Verify the CLI is working by running one provider first before batch-processing all.

## Resources

- **CLI entry point**: `prowler-cli.py` in the repository root
- **Table location**: `README.md`, section `# Prowler at a Glance` (around line 100)
