Skip to main content

list-gaps

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

Source facts

Repository
DataDog/pathrunner
Last source activity
July 8, 2026 at 11:12
Detected SKILL.md language
English
Stars
48
Forks
2

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
list-gaps
description
List pathfinding-labs scenarios that don't have pathrunner modules yet
context
fork
argument-hint
[service] (optional filter, e.g., lambda, ecs, iam)
allowed-tools
Bash, Read, Glob, Grep
# 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.
View on GitHub