Build-an-X for PCI DSS v4.0 scope verification - cardholder data environment (CDE) boundary tests, segmentation tests (PCI Req 1), prohibited-data-storage assertions per Req 3 (no full track data, no CVV/CAV2/CVC2/CID, no PIN/PIN block post-authorization), key-management tests per Req 3.6, encryption-of-transmissions per Req 4; includes the scope catalog (SAQ A / A-EP / D levels, PAN-storage rules, hosted-fields / tokenization scope-reduction patterns) in references/pci-scope.md. Use when authoring PCI DSS scope-reduction + control tests for any system handling payment-card data, or when determining a payment integration's SAQ level.
72
91%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
Low
Low-risk findings worth noting
The skill exposes the agent to untrusted, user-generated content from public third-party sources, creating a risk of indirect prompt injection. This includes browsing arbitrary URLs, reading social media posts or forum comments, and analyzing content from unknown websites.
The workflow reads database dumps and recent logs via export_database() and recent_logs(), which can contain outsider-authored transaction data or log messages.
database dump (export_database)
content-type · 2 sites
The plugin reads database dumps via export_database() which can contain outsider-authored transaction data (e.g., payment webhooks, user-submitted card data) that could be used for indirect prompt injection if processed by an LLM.
SKILL.md
19
def export_database() -> DatabaseDump: ...
SKILL.md
90
db_dump = export_database()
recent logs (recent_logs)
content-type · 2 sites
The plugin reads recent logs via recent_logs() which can contain outsider-authored log messages (e.g., error messages with user input, webhook payloads, API request bodies) that could be used for indirect prompt injection if processed by an LLM.
SKILL.md
20
def recent_logs() -> list[LogEntry]: ...
SKILL.md
99
log_entries = recent_logs()