# List Gaps

> List pathfinding-labs scenarios that don't have pathrunner modules yet

- Skill: `datadog/list-gaps` (Agent Skill)
- Install (CLI): `npx skillmds@latest add datadog/list-gaps`
- Raw SKILL.md: https://api.skillmd.com/api/skills/datadog/list-gaps/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: datadog (https://skillmd.com/u/datadog)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/datadog/list-gaps

---


# List Coverage Gaps

Cross-reference pathfinding-labs scenarios against pathrunner's module registry to find gaps.

## Steps

### Step 1: Get All Pathfinding-Labs Scenarios

List all scenario.yaml files and extract their pathfinding-cloud-id:

Paths are relative to the pathrunner repo root (siblings `../pathfinding.cloud/` and `../pathfinding-labs/` under a shared `pathfinding/` parent).

```bash
# Note: scenarios/ has multi-level nesting (single-account/, cross-account/, ctf/, etc.)
# — must use `find` recursively, NOT a single-level glob.
# The plabs scenario ID is "{pathfinding-cloud-id}-{goal}" where goal is the parent
# directory name (to-admin, to-bucket, etc.), NOT the scenario directory name.
find ../pathfinding-labs/modules/scenarios/ -name "scenario.yaml" | while read -r f; do
    ID=$(grep 'pathfinding-cloud-id' "$f" 2>/dev/null | head -1 | sed 's/.*: *//' | tr -d '"' | tr -d "'")
    GOAL=$(basename "$(dirname "$(dirname "$f")")")
    if [ -n "$ID" ]; then
        echo "$ID|${ID}-${GOAL}"
    fi
done | sort
```

### Step 2: Get All Pathrunner Modules

List registered module IDs:

```bash
grep -r 'modules.Register(' pkg/exploits/*/module.go | sed 's/.*Register("\([^"]*\)".*/\1/' | sort
```

Or read `pkg/exploits/register.go` directly — it's the auto-generated fan-out of every registered module directory.

### Step 3: Cross-Reference

For each scenario ID, check if a pathrunner module exists.

### Step 4: Check Deployment Status

For scenarios without modules, check if they're deployed (useful for prioritizing):

```bash
(cd ../pathfinding-labs && ./plabs scenarios list) 2>&1
```

### Step 5: Apply Service Filter

If the user provided a service filter argument (`$ARGUMENTS`), only show gaps for that service.

### Step 6: Output Table

Format as a markdown table:

| Path ID | Scenario | Module Exists | Category | Services |
|---------|----------|--------------|----------|----------|
| ecs-001 | ecs-001-to-admin | No | new-passrole | iam, ecs |
| ecs-002 | ecs-002-to-admin | No | new-passrole | iam, ecs |
| ... | ... | ... | ... | ... |

Also show summary stats:
- Total paths with scenarios: X
- Paths with pathrunner modules: Y
- Gaps: Z
- Coverage: Y/X (percentage)

If filtered by service, show service-specific stats.

