@raishin/vanguard-frontier-agentic 2.0.0 → 2.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/plugin.json +14 -0
- package/.cursor-plugin/plugin.json +14 -0
- package/.github/plugin/marketplace.json +1 -1
- package/README.md +7 -2
- package/agents/marketing/README.md +44 -0
- package/agents/marketing/ai-advertising-targeting-fairness-review-agent/AGENT.md +53 -0
- package/agents/marketing/ai-advertising-targeting-fairness-review-agent/harnesses/claude-code.agent.md +36 -0
- package/agents/marketing/ai-advertising-targeting-fairness-review-agent/harnesses/codex.toml +33 -0
- package/agents/marketing/ai-advertising-targeting-fairness-review-agent/harnesses/copilot.agent.md +36 -0
- package/agents/marketing/ai-advertising-targeting-fairness-review-agent/harnesses/cursor.agent.md +36 -0
- package/agents/marketing/ai-advertising-targeting-fairness-review-agent/harnesses/gemini.agent.md +36 -0
- package/agents/marketing/ai-advertising-targeting-fairness-review-agent/harnesses/kiro-cli.agent.json +5 -0
- package/agents/marketing/ai-advertising-targeting-fairness-review-agent/harnesses/kiro-ide.agent.md +36 -0
- package/agents/marketing/ai-advertising-targeting-fairness-review-agent/metadata.json +31 -0
- package/agents/marketing/analytics-data-minimization-review-agent/AGENT.md +51 -0
- package/agents/marketing/analytics-data-minimization-review-agent/harnesses/claude-code.agent.md +34 -0
- package/agents/marketing/analytics-data-minimization-review-agent/harnesses/codex.toml +33 -0
- package/agents/marketing/analytics-data-minimization-review-agent/harnesses/copilot.agent.md +34 -0
- package/agents/marketing/analytics-data-minimization-review-agent/harnesses/cursor.agent.md +34 -0
- package/agents/marketing/analytics-data-minimization-review-agent/harnesses/gemini.agent.md +34 -0
- package/agents/marketing/analytics-data-minimization-review-agent/harnesses/kiro-cli.agent.json +5 -0
- package/agents/marketing/analytics-data-minimization-review-agent/harnesses/kiro-ide.agent.md +34 -0
- package/agents/marketing/analytics-data-minimization-review-agent/metadata.json +31 -0
- package/agents/marketing/email-sender-authentication-review-agent/AGENT.md +50 -0
- package/agents/marketing/email-sender-authentication-review-agent/harnesses/claude-code.agent.md +33 -0
- package/agents/marketing/email-sender-authentication-review-agent/harnesses/codex.toml +32 -0
- package/agents/marketing/email-sender-authentication-review-agent/harnesses/copilot.agent.md +33 -0
- package/agents/marketing/email-sender-authentication-review-agent/harnesses/cursor.agent.md +33 -0
- package/agents/marketing/email-sender-authentication-review-agent/harnesses/gemini.agent.md +33 -0
- package/agents/marketing/email-sender-authentication-review-agent/harnesses/kiro-cli.agent.json +5 -0
- package/agents/marketing/email-sender-authentication-review-agent/harnesses/kiro-ide.agent.md +33 -0
- package/agents/marketing/email-sender-authentication-review-agent/metadata.json +31 -0
- package/agents/marketing/eu-ai-act-marketing-system-review-agent/AGENT.md +54 -0
- package/agents/marketing/eu-ai-act-marketing-system-review-agent/harnesses/claude-code.agent.md +37 -0
- package/agents/marketing/eu-ai-act-marketing-system-review-agent/harnesses/codex.toml +33 -0
- package/agents/marketing/eu-ai-act-marketing-system-review-agent/harnesses/copilot.agent.md +37 -0
- package/agents/marketing/eu-ai-act-marketing-system-review-agent/harnesses/cursor.agent.md +37 -0
- package/agents/marketing/eu-ai-act-marketing-system-review-agent/harnesses/gemini.agent.md +37 -0
- package/agents/marketing/eu-ai-act-marketing-system-review-agent/harnesses/kiro-cli.agent.json +5 -0
- package/agents/marketing/eu-ai-act-marketing-system-review-agent/harnesses/kiro-ide.agent.md +37 -0
- package/agents/marketing/eu-ai-act-marketing-system-review-agent/metadata.json +31 -0
- package/agents/marketing/influencer-disclosure-compliance-review-agent/AGENT.md +52 -0
- package/agents/marketing/influencer-disclosure-compliance-review-agent/harnesses/claude-code.agent.md +35 -0
- package/agents/marketing/influencer-disclosure-compliance-review-agent/harnesses/codex.toml +33 -0
- package/agents/marketing/influencer-disclosure-compliance-review-agent/harnesses/copilot.agent.md +35 -0
- package/agents/marketing/influencer-disclosure-compliance-review-agent/harnesses/cursor.agent.md +35 -0
- package/agents/marketing/influencer-disclosure-compliance-review-agent/harnesses/gemini.agent.md +35 -0
- package/agents/marketing/influencer-disclosure-compliance-review-agent/harnesses/kiro-cli.agent.json +5 -0
- package/agents/marketing/influencer-disclosure-compliance-review-agent/harnesses/kiro-ide.agent.md +35 -0
- package/agents/marketing/influencer-disclosure-compliance-review-agent/metadata.json +31 -0
- package/agents/marketing/lookalike-audience-upload-compliance-review-agent/AGENT.md +54 -0
- package/agents/marketing/lookalike-audience-upload-compliance-review-agent/harnesses/claude-code.agent.md +37 -0
- package/agents/marketing/lookalike-audience-upload-compliance-review-agent/harnesses/codex.toml +34 -0
- package/agents/marketing/lookalike-audience-upload-compliance-review-agent/harnesses/copilot.agent.md +37 -0
- package/agents/marketing/lookalike-audience-upload-compliance-review-agent/harnesses/cursor.agent.md +37 -0
- package/agents/marketing/lookalike-audience-upload-compliance-review-agent/harnesses/gemini.agent.md +37 -0
- package/agents/marketing/lookalike-audience-upload-compliance-review-agent/harnesses/kiro-cli.agent.json +5 -0
- package/agents/marketing/lookalike-audience-upload-compliance-review-agent/harnesses/kiro-ide.agent.md +37 -0
- package/agents/marketing/lookalike-audience-upload-compliance-review-agent/metadata.json +31 -0
- package/agents/marketing/marketing-consent-data-collection-review-agent/AGENT.md +51 -0
- package/agents/marketing/marketing-consent-data-collection-review-agent/harnesses/claude-code.agent.md +34 -0
- package/agents/marketing/marketing-consent-data-collection-review-agent/harnesses/codex.toml +33 -0
- package/agents/marketing/marketing-consent-data-collection-review-agent/harnesses/copilot.agent.md +34 -0
- package/agents/marketing/marketing-consent-data-collection-review-agent/harnesses/cursor.agent.md +34 -0
- package/agents/marketing/marketing-consent-data-collection-review-agent/harnesses/gemini.agent.md +34 -0
- package/agents/marketing/marketing-consent-data-collection-review-agent/harnesses/kiro-cli.agent.json +5 -0
- package/agents/marketing/marketing-consent-data-collection-review-agent/harnesses/kiro-ide.agent.md +34 -0
- package/agents/marketing/marketing-consent-data-collection-review-agent/metadata.json +31 -0
- package/agents/marketing/marketing-conversion-flow-dark-pattern-review-agent/AGENT.md +51 -0
- package/agents/marketing/marketing-conversion-flow-dark-pattern-review-agent/harnesses/claude-code.agent.md +34 -0
- package/agents/marketing/marketing-conversion-flow-dark-pattern-review-agent/harnesses/codex.toml +33 -0
- package/agents/marketing/marketing-conversion-flow-dark-pattern-review-agent/harnesses/copilot.agent.md +34 -0
- package/agents/marketing/marketing-conversion-flow-dark-pattern-review-agent/harnesses/cursor.agent.md +34 -0
- package/agents/marketing/marketing-conversion-flow-dark-pattern-review-agent/harnesses/gemini.agent.md +34 -0
- package/agents/marketing/marketing-conversion-flow-dark-pattern-review-agent/harnesses/kiro-cli.agent.json +5 -0
- package/agents/marketing/marketing-conversion-flow-dark-pattern-review-agent/harnesses/kiro-ide.agent.md +34 -0
- package/agents/marketing/marketing-conversion-flow-dark-pattern-review-agent/metadata.json +31 -0
- package/agents/marketing/marketing-email-list-retention-review-agent/AGENT.md +50 -0
- package/agents/marketing/marketing-email-list-retention-review-agent/harnesses/claude-code.agent.md +33 -0
- package/agents/marketing/marketing-email-list-retention-review-agent/harnesses/codex.toml +32 -0
- package/agents/marketing/marketing-email-list-retention-review-agent/harnesses/copilot.agent.md +33 -0
- package/agents/marketing/marketing-email-list-retention-review-agent/harnesses/cursor.agent.md +33 -0
- package/agents/marketing/marketing-email-list-retention-review-agent/harnesses/gemini.agent.md +33 -0
- package/agents/marketing/marketing-email-list-retention-review-agent/harnesses/kiro-cli.agent.json +5 -0
- package/agents/marketing/marketing-email-list-retention-review-agent/harnesses/kiro-ide.agent.md +33 -0
- package/agents/marketing/marketing-email-list-retention-review-agent/metadata.json +31 -0
- package/agents/marketing/marketing-gpc-signal-honoring-review-agent/AGENT.md +50 -0
- package/agents/marketing/marketing-gpc-signal-honoring-review-agent/harnesses/claude-code.agent.md +33 -0
- package/agents/marketing/marketing-gpc-signal-honoring-review-agent/harnesses/codex.toml +32 -0
- package/agents/marketing/marketing-gpc-signal-honoring-review-agent/harnesses/copilot.agent.md +33 -0
- package/agents/marketing/marketing-gpc-signal-honoring-review-agent/harnesses/cursor.agent.md +33 -0
- package/agents/marketing/marketing-gpc-signal-honoring-review-agent/harnesses/gemini.agent.md +33 -0
- package/agents/marketing/marketing-gpc-signal-honoring-review-agent/harnesses/kiro-cli.agent.json +5 -0
- package/agents/marketing/marketing-gpc-signal-honoring-review-agent/harnesses/kiro-ide.agent.md +33 -0
- package/agents/marketing/marketing-gpc-signal-honoring-review-agent/metadata.json +31 -0
- package/agents/marketing/marketing-maestro-agent/AGENT.md +62 -0
- package/agents/marketing/marketing-maestro-agent/PERMISSIONS.md +75 -0
- package/agents/marketing/marketing-maestro-agent/README.md +62 -0
- package/agents/marketing/marketing-maestro-agent/harnesses/claude-code.agent.md +43 -0
- package/agents/marketing/marketing-maestro-agent/harnesses/codex.toml +35 -0
- package/agents/marketing/marketing-maestro-agent/harnesses/copilot.agent.md +43 -0
- package/agents/marketing/marketing-maestro-agent/harnesses/cursor.agent.md +43 -0
- package/agents/marketing/marketing-maestro-agent/harnesses/gemini.agent.md +43 -0
- package/agents/marketing/marketing-maestro-agent/harnesses/kiro-cli.agent.json +5 -0
- package/agents/marketing/marketing-maestro-agent/harnesses/kiro-ide.agent.md +43 -0
- package/agents/marketing/marketing-maestro-agent/metadata.json +38 -0
- package/agents/marketing/marketing-pixel-data-leakage-review-agent/AGENT.md +50 -0
- package/agents/marketing/marketing-pixel-data-leakage-review-agent/harnesses/claude-code.agent.md +33 -0
- package/agents/marketing/marketing-pixel-data-leakage-review-agent/harnesses/codex.toml +32 -0
- package/agents/marketing/marketing-pixel-data-leakage-review-agent/harnesses/copilot.agent.md +33 -0
- package/agents/marketing/marketing-pixel-data-leakage-review-agent/harnesses/cursor.agent.md +33 -0
- package/agents/marketing/marketing-pixel-data-leakage-review-agent/harnesses/gemini.agent.md +33 -0
- package/agents/marketing/marketing-pixel-data-leakage-review-agent/harnesses/kiro-cli.agent.json +5 -0
- package/agents/marketing/marketing-pixel-data-leakage-review-agent/harnesses/kiro-ide.agent.md +33 -0
- package/agents/marketing/marketing-pixel-data-leakage-review-agent/metadata.json +31 -0
- package/agents/marketing/martech-access-governance-review-agent/AGENT.md +51 -0
- package/agents/marketing/martech-access-governance-review-agent/harnesses/claude-code.agent.md +34 -0
- package/agents/marketing/martech-access-governance-review-agent/harnesses/codex.toml +33 -0
- package/agents/marketing/martech-access-governance-review-agent/harnesses/copilot.agent.md +34 -0
- package/agents/marketing/martech-access-governance-review-agent/harnesses/cursor.agent.md +34 -0
- package/agents/marketing/martech-access-governance-review-agent/harnesses/gemini.agent.md +34 -0
- package/agents/marketing/martech-access-governance-review-agent/harnesses/kiro-cli.agent.json +5 -0
- package/agents/marketing/martech-access-governance-review-agent/harnesses/kiro-ide.agent.md +34 -0
- package/agents/marketing/martech-access-governance-review-agent/metadata.json +31 -0
- package/agents/marketing/programmatic-supply-chain-integrity-review-agent/AGENT.md +50 -0
- package/agents/marketing/programmatic-supply-chain-integrity-review-agent/harnesses/claude-code.agent.md +33 -0
- package/agents/marketing/programmatic-supply-chain-integrity-review-agent/harnesses/codex.toml +32 -0
- package/agents/marketing/programmatic-supply-chain-integrity-review-agent/harnesses/copilot.agent.md +33 -0
- package/agents/marketing/programmatic-supply-chain-integrity-review-agent/harnesses/cursor.agent.md +33 -0
- package/agents/marketing/programmatic-supply-chain-integrity-review-agent/harnesses/gemini.agent.md +33 -0
- package/agents/marketing/programmatic-supply-chain-integrity-review-agent/harnesses/kiro-cli.agent.json +5 -0
- package/agents/marketing/programmatic-supply-chain-integrity-review-agent/harnesses/kiro-ide.agent.md +33 -0
- package/agents/marketing/programmatic-supply-chain-integrity-review-agent/metadata.json +31 -0
- package/catalog/agents.json +765 -197
- package/catalog/asset-integrity.json +859 -29
- package/catalog/install-roles.json +38 -2
- package/catalog/skill-manifest.json +318 -0
- package/catalog/skills.json +596 -199
- package/package.json +1 -1
- package/plugins/vanguard-frontier-agentic/.codex-plugin/plugin.json +1 -1
- package/skills/marketing/ai-advertising-targeting-fairness-review/SKILL.md +43 -0
- package/skills/marketing/ai-advertising-targeting-fairness-review/metadata.json +21 -0
- package/skills/marketing/ai-advertising-targeting-fairness-review/references/workflow-and-output.md +150 -0
- package/skills/marketing/analytics-data-minimization-review/SKILL.md +44 -0
- package/skills/marketing/analytics-data-minimization-review/metadata.json +22 -0
- package/skills/marketing/analytics-data-minimization-review/references/workflow-and-output.md +187 -0
- package/skills/marketing/email-sender-authentication-review/SKILL.md +43 -0
- package/skills/marketing/email-sender-authentication-review/metadata.json +22 -0
- package/skills/marketing/email-sender-authentication-review/references/workflow-and-output.md +152 -0
- package/skills/marketing/eu-ai-act-marketing-system-review/SKILL.md +43 -0
- package/skills/marketing/eu-ai-act-marketing-system-review/metadata.json +21 -0
- package/skills/marketing/eu-ai-act-marketing-system-review/references/workflow-and-output.md +176 -0
- package/skills/marketing/influencer-disclosure-compliance-review/SKILL.md +43 -0
- package/skills/marketing/influencer-disclosure-compliance-review/metadata.json +22 -0
- package/skills/marketing/influencer-disclosure-compliance-review/references/workflow-and-output.md +156 -0
- package/skills/marketing/lookalike-audience-upload-compliance-review/SKILL.md +44 -0
- package/skills/marketing/lookalike-audience-upload-compliance-review/metadata.json +21 -0
- package/skills/marketing/lookalike-audience-upload-compliance-review/references/workflow-and-output.md +203 -0
- package/skills/marketing/marketing-consent-data-collection-review/SKILL.md +44 -0
- package/skills/marketing/marketing-consent-data-collection-review/metadata.json +21 -0
- package/skills/marketing/marketing-consent-data-collection-review/references/workflow-and-output.md +139 -0
- package/skills/marketing/marketing-conversion-flow-dark-pattern-review/SKILL.md +45 -0
- package/skills/marketing/marketing-conversion-flow-dark-pattern-review/metadata.json +22 -0
- package/skills/marketing/marketing-conversion-flow-dark-pattern-review/references/workflow-and-output.md +160 -0
- package/skills/marketing/marketing-email-list-retention-review/SKILL.md +43 -0
- package/skills/marketing/marketing-email-list-retention-review/metadata.json +22 -0
- package/skills/marketing/marketing-email-list-retention-review/references/workflow-and-output.md +144 -0
- package/skills/marketing/marketing-gpc-signal-honoring-review/SKILL.md +42 -0
- package/skills/marketing/marketing-gpc-signal-honoring-review/metadata.json +22 -0
- package/skills/marketing/marketing-gpc-signal-honoring-review/references/workflow-and-output.md +145 -0
- package/skills/marketing/marketing-maestro/README.md +37 -0
- package/skills/marketing/marketing-maestro/SKILL.md +49 -0
- package/skills/marketing/marketing-maestro/metadata.json +26 -0
- package/skills/marketing/marketing-maestro/references/safety-checklist.md +67 -0
- package/skills/marketing/marketing-maestro/references/workflow-and-output.md +110 -0
- package/skills/marketing/marketing-pixel-data-leakage-review/SKILL.md +43 -0
- package/skills/marketing/marketing-pixel-data-leakage-review/metadata.json +21 -0
- package/skills/marketing/marketing-pixel-data-leakage-review/references/workflow-and-output.md +129 -0
- package/skills/marketing/martech-access-governance-review/SKILL.md +45 -0
- package/skills/marketing/martech-access-governance-review/metadata.json +21 -0
- package/skills/marketing/martech-access-governance-review/references/workflow-and-output.md +116 -0
- package/skills/marketing/programmatic-supply-chain-integrity-review/SKILL.md +43 -0
- package/skills/marketing/programmatic-supply-chain-integrity-review/metadata.json +22 -0
- package/skills/marketing/programmatic-supply-chain-integrity-review/references/workflow-and-output.md +164 -0
- package/tests/fixtures/marketing-maestro-routing/expected/001-happy-ai-advertising-targeting-fairness-review.json +6 -0
- package/tests/fixtures/marketing-maestro-routing/expected/002-happy-analytics-data-minimization-review.json +6 -0
- package/tests/fixtures/marketing-maestro-routing/expected/003-happy-consent-data-collection-review.json +6 -0
- package/tests/fixtures/marketing-maestro-routing/expected/004-happy-conversion-flow-dark-pattern-review.json +6 -0
- package/tests/fixtures/marketing-maestro-routing/expected/005-happy-email-list-retention-review.json +6 -0
- package/tests/fixtures/marketing-maestro-routing/expected/006-happy-email-sender-authentication-review.json +6 -0
- package/tests/fixtures/marketing-maestro-routing/expected/007-happy-eu-ai-act-marketing-system-review.json +6 -0
- package/tests/fixtures/marketing-maestro-routing/expected/008-happy-gpc-signal-honoring-review.json +6 -0
- package/tests/fixtures/marketing-maestro-routing/expected/009-happy-influencer-disclosure-compliance-review.json +6 -0
- package/tests/fixtures/marketing-maestro-routing/expected/010-happy-lookalike-audience-upload-compliance-review.json +6 -0
- package/tests/fixtures/marketing-maestro-routing/expected/011-happy-martech-access-governance-review.json +6 -0
- package/tests/fixtures/marketing-maestro-routing/expected/012-happy-pixel-data-leakage-review.json +6 -0
- package/tests/fixtures/marketing-maestro-routing/expected/013-happy-programmatic-supply-chain-integrity-review.json +6 -0
- package/tests/fixtures/marketing-maestro-routing/expected/adv-ambiguous.json +4 -0
- package/tests/fixtures/marketing-maestro-routing/expected/adv-instruction-injection.json +7 -0
- package/tests/fixtures/marketing-maestro-routing/expected/adv-live-guard-gate.json +4 -0
- package/tests/fixtures/marketing-maestro-routing/expected/adv-persona-replacement.json +6 -0
- package/tests/fixtures/marketing-maestro-routing/expected/adv-secrets-bait.json +7 -0
- package/tests/fixtures/marketing-maestro-routing/inputs/001-happy-ai-advertising-targeting-fairness-review.json +7 -0
- package/tests/fixtures/marketing-maestro-routing/inputs/002-happy-analytics-data-minimization-review.json +7 -0
- package/tests/fixtures/marketing-maestro-routing/inputs/003-happy-consent-data-collection-review.json +7 -0
- package/tests/fixtures/marketing-maestro-routing/inputs/004-happy-conversion-flow-dark-pattern-review.json +7 -0
- package/tests/fixtures/marketing-maestro-routing/inputs/005-happy-email-list-retention-review.json +7 -0
- package/tests/fixtures/marketing-maestro-routing/inputs/006-happy-email-sender-authentication-review.json +7 -0
- package/tests/fixtures/marketing-maestro-routing/inputs/007-happy-eu-ai-act-marketing-system-review.json +7 -0
- package/tests/fixtures/marketing-maestro-routing/inputs/008-happy-gpc-signal-honoring-review.json +7 -0
- package/tests/fixtures/marketing-maestro-routing/inputs/009-happy-influencer-disclosure-compliance-review.json +7 -0
- package/tests/fixtures/marketing-maestro-routing/inputs/010-happy-lookalike-audience-upload-compliance-review.json +7 -0
- package/tests/fixtures/marketing-maestro-routing/inputs/011-happy-martech-access-governance-review.json +7 -0
- package/tests/fixtures/marketing-maestro-routing/inputs/012-happy-pixel-data-leakage-review.json +7 -0
- package/tests/fixtures/marketing-maestro-routing/inputs/013-happy-programmatic-supply-chain-integrity-review.json +7 -0
- package/tests/fixtures/marketing-maestro-routing/inputs/adv-ambiguous.json +7 -0
- package/tests/fixtures/marketing-maestro-routing/inputs/adv-instruction-injection.json +7 -0
- package/tests/fixtures/marketing-maestro-routing/inputs/adv-live-guard-gate.json +7 -0
- package/tests/fixtures/marketing-maestro-routing/inputs/adv-persona-replacement.json +7 -0
- package/tests/fixtures/marketing-maestro-routing/inputs/adv-secrets-bait.json +7 -0
- package/tests/fixtures/marketing-maestro-routing/taxonomy.json +183 -0
- package/tests/validate-catalog.py +1 -0
- package/tests/validate-maestro-routing.py +4 -0
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: programmatic-supply-chain-integrity-review
|
|
3
|
+
description: Use this skill when reviewing ads.txt, app-ads.txt, and sellers.json files for a publisher or advertiser's programmatic supply chain to detect unauthorized resellers, domain-spoofing exposure, and SupplyChain Object gaps. Trigger when a user provides an ads.txt file, an app-ads.txt file, a sellers.json endpoint response, or asks whether their programmatic supply chain has unauthorized intermediaries, IVT exposure, domain-spoofing risk, or whether their supply chain declaration satisfies IAB Tech Lab, MRC, or DSP procurement requirements.
|
|
4
|
+
allowed-tools: Read Grep Glob
|
|
5
|
+
metadata:
|
|
6
|
+
author: "github: Raishin"
|
|
7
|
+
version: "0.1.0"
|
|
8
|
+
updated: "2026-05-17"
|
|
9
|
+
category: finops
|
|
10
|
+
lifecycle: experimental
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Programmatic Supply Chain Integrity Review
|
|
14
|
+
|
|
15
|
+
## Purpose
|
|
16
|
+
This skill reviews ads.txt, app-ads.txt, and sellers.json declarations for a publisher's or advertiser's programmatic supply chain to detect unauthorized resellers, domain-spoofing exposure, SupplyChain Object gaps, and IVT-exposure vectors. Ads.txt (IAB Tech Lab v1.1) and app-ads.txt are the publisher's machine-readable authorization of which exchanges and resellers may sell their inventory; sellers.json (IAB Tech Lab v1.0) is the exchange's machine-readable disclosure of which sellers it represents. When these files are inconsistent — an ads.txt RESELLER entry that no exchange discloses in sellers.json, a DIRECT entry that resolves as `is_confidential:1`, or a whitelisted domain whose ads.txt is absent — the supply chain is opaque to buyers, exposing them to unauthorized intermediary fees and exposing publishers to domain spoofing. The SupplyChain Object (OpenRTB extension) enables bid-time audit of the complete reseller path; gaps in the declared path are treated as invalid traffic by MRC-compliant measurement vendors and many DSP procurement teams. The review works from the raw text of the artifact files pasted as input and produces severity-labelled findings with remediation.
|
|
17
|
+
|
|
18
|
+
## Lean operating rules
|
|
19
|
+
- Treat ads.txt RESELLER entries for exchange accounts that do not appear in any sellers.json file for that exchange as HIGH — these are undisclosed intermediaries whose presence in the resale chain cannot be verified by buyers, constituting unauthorized supply path opacity under IAB Tech Lab ads.txt 1.1.
|
|
20
|
+
- Treat a whitelisted publisher domain whose ads.txt file is entirely absent as HIGH — the absence means buyers cannot verify any authorized seller relationship; the domain is categorically IVT-exposed per MRC Invalid Traffic Detection guidelines and most DSP whitelisting criteria.
|
|
21
|
+
- Treat a DIRECT entry in ads.txt where the corresponding seller account in sellers.json carries `is_confidential:1` as HIGH — a DIRECT relationship by definition requires transparent publisher identity; confidential resolution contradicts the DIRECT classification and is a domain-spoofing risk vector.
|
|
22
|
+
- Treat ads.txt entries that reference exchange account IDs not present in the exchange's sellers.json at all (orphaned account IDs) as HIGH — the account cannot be verified as a legitimate seller, which is a signal of domain spoofing or stale declarations.
|
|
23
|
+
- Treat a `seller_type: INTERMEDIARY` entry in sellers.json that has no corresponding ads.txt RESELLER entry on the publisher domain as MEDIUM — the intermediary is declared by the exchange but not authorized by the publisher, creating a supply path discrepancy.
|
|
24
|
+
- Treat SupplyChain Object declarations with incomplete node chains (missing `asi`, `sid`, or `rid` fields in intermediate nodes) as MEDIUM — incomplete chains reduce bid-time auditability and may cause DSP procurement filters to reject the bid.
|
|
25
|
+
- Flag MEDIUM when the ads.txt file has not been updated within twelve months and active exchange relationships are known to have changed — stale declarations expose revenue to unauthorized resellers who retain old account relationships.
|
|
26
|
+
- Flag the absence of app-ads.txt for a mobile app publisher as MEDIUM when the publisher's ads.txt covers only web inventory — app inventory without app-ads.txt is unprotected by IAB Tech Lab supply-chain controls.
|
|
27
|
+
- Do not recommend removing a RESELLER entry without first confirming whether it represents a legitimate revenue path that can be replaced with a DIRECT relationship or a disclosed intermediary.
|
|
28
|
+
- Label every finding with evidence basis: ads.txt provided, sellers.json provided, documentation-based, or inference from absent file.
|
|
29
|
+
|
|
30
|
+
## References
|
|
31
|
+
Load these only when needed:
|
|
32
|
+
- [Workflow and output contract](references/workflow-and-output.md) — use when executing the full review or formatting the final answer.
|
|
33
|
+
|
|
34
|
+
## Response minimum
|
|
35
|
+
Return, at minimum:
|
|
36
|
+
- RESELLER-to-sellers.json consistency assessment (unauthorized intermediaries)
|
|
37
|
+
- DIRECT-entry confidentiality conflict assessment (domain-spoofing risk)
|
|
38
|
+
- Orphaned account ID assessment (account IDs in ads.txt not in sellers.json)
|
|
39
|
+
- Absent ads.txt / app-ads.txt assessment for whitelisted domains
|
|
40
|
+
- SupplyChain Object completeness assessment
|
|
41
|
+
- Stale declaration assessment
|
|
42
|
+
- Severity-labelled finding list (critical / high / medium / low)
|
|
43
|
+
- Safe next actions
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "programmatic-supply-chain-integrity-review",
|
|
3
|
+
"name": "Programmatic Supply Chain Integrity Review",
|
|
4
|
+
"type": "skill",
|
|
5
|
+
"provider": "marketing",
|
|
6
|
+
"harnesses": ["codex", "claude-code", "cursor", "gemini", "kiro", "other"],
|
|
7
|
+
"summary": "Review ads.txt, app-ads.txt, and sellers.json files for a publisher or advertiser's programmatic supply chain to detect unauthorized resellers, domain-spoofing exposure, and SupplyChain Object gaps.",
|
|
8
|
+
"source_type": "original",
|
|
9
|
+
"official_docs": [
|
|
10
|
+
"https://iabtechlab.com/ads-txt/",
|
|
11
|
+
"https://iabtechlab.com/sellers-json/",
|
|
12
|
+
"https://iabtechlab.com/supplychain-object/",
|
|
13
|
+
"https://mediaratingcouncil.org/sites/default/files/Standards/MRC%20Invalid%20Traffic%20Detection%20and%20Filtration%20Guidelines%20Addendum.pdf",
|
|
14
|
+
"https://iabtechlab.com/app-ads-txt/"
|
|
15
|
+
],
|
|
16
|
+
"security_notes": "Supply chain integrity reviews work from the raw text of ads.txt, app-ads.txt, and sellers.json files pasted as input. Never request DSP credentials, exchange account tokens, or bid-stream logs. ads.txt and sellers.json are publicly resolvable files; the artifact is the publisher's or exchange's own exported text, not a live crawl of production endpoints.",
|
|
17
|
+
"last_verified": "2026-05-17",
|
|
18
|
+
"path": "skills/marketing/programmatic-supply-chain-integrity-review",
|
|
19
|
+
"author": "github: Raishin",
|
|
20
|
+
"version": "0.1.0",
|
|
21
|
+
"lifecycle": "experimental"
|
|
22
|
+
}
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
# Workflow and Output Contract
|
|
2
|
+
|
|
3
|
+
## Workflow
|
|
4
|
+
|
|
5
|
+
### Step 1 — Collect inputs
|
|
6
|
+
|
|
7
|
+
Ask the user to provide the following as raw pasted text (these are public files; no credentials required):
|
|
8
|
+
- The full content of `ads.txt` from the publisher domain root (e.g., `example.com/ads.txt`)
|
|
9
|
+
- The full content of `app-ads.txt` if the publisher has mobile app inventory
|
|
10
|
+
- The relevant excerpt or full content of the exchange's `sellers.json` endpoint response — at minimum the entries corresponding to the publisher's account IDs
|
|
11
|
+
- The list of exchanges and resellers the publisher has active relationships with, to identify stale or missing entries
|
|
12
|
+
- SupplyChain Object node declarations if the user has access to bid-stream samples or SSP configuration exports
|
|
13
|
+
|
|
14
|
+
If only ads.txt is provided without sellers.json, note that RESELLER-to-sellers.json consistency findings are inference only.
|
|
15
|
+
|
|
16
|
+
### Step 2 — ads.txt structural audit
|
|
17
|
+
|
|
18
|
+
Parse each line of the ads.txt file. Each valid entry has the format:
|
|
19
|
+
```
|
|
20
|
+
<exchange domain>, <publisher account ID>, <relationship>, <certification authority ID>
|
|
21
|
+
```
|
|
22
|
+
Where `<relationship>` is `DIRECT` or `RESELLER`.
|
|
23
|
+
|
|
24
|
+
Check for:
|
|
25
|
+
- Malformed lines (missing fields, incorrect field count, invalid relationship value).
|
|
26
|
+
- Duplicate entries (same exchange domain + account ID combination appearing more than once).
|
|
27
|
+
- Entries using IP addresses instead of domain names (not permitted by the spec).
|
|
28
|
+
- Entries missing the certification authority ID (optional per spec, but flag absence as informational).
|
|
29
|
+
|
|
30
|
+
```text
|
|
31
|
+
# MALFORMED — missing account ID field
|
|
32
|
+
openx.com, RESELLER
|
|
33
|
+
|
|
34
|
+
# DUPLICATE — same entry appears twice
|
|
35
|
+
appnexus.com, 12345, DIRECT, f08c47fec0942fa0
|
|
36
|
+
appnexus.com, 12345, DIRECT, f08c47fec0942fa0
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
### Step 3 — RESELLER-to-sellers.json consistency audit
|
|
40
|
+
|
|
41
|
+
For every RESELLER entry in ads.txt, cross-reference with the corresponding exchange's sellers.json:
|
|
42
|
+
- Does the account ID appear in the exchange's sellers.json?
|
|
43
|
+
- If present, does the `seller_type` match the expected value (PUBLISHER, INTERMEDIARY, or BOTH)?
|
|
44
|
+
- Is the seller domain in sellers.json consistent with the publisher's domain?
|
|
45
|
+
|
|
46
|
+
```text
|
|
47
|
+
# HIGH — RESELLER entry with no sellers.json disclosure
|
|
48
|
+
ads.txt: rubicon.com, 98765, RESELLER, 0bfd66d529a55807
|
|
49
|
+
sellers.json (rubicon.com): account ID 98765 — not found
|
|
50
|
+
→ unauthorized intermediary; buyer cannot verify the resale relationship
|
|
51
|
+
|
|
52
|
+
# CORRECT — RESELLER disclosed in sellers.json
|
|
53
|
+
ads.txt: rubicon.com, 11111, RESELLER, 0bfd66d529a55807
|
|
54
|
+
sellers.json: { "seller_id": "11111", "name": "Example Publisher", "seller_type": "PUBLISHER", "domain": "example.com" }
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
Each RESELLER entry absent from sellers.json is a separate HIGH finding with the exchange domain and account ID as the finding identifier.
|
|
58
|
+
|
|
59
|
+
### Step 4 — DIRECT entry confidentiality conflict audit
|
|
60
|
+
|
|
61
|
+
For every DIRECT entry in ads.txt, cross-reference with sellers.json:
|
|
62
|
+
- Is the account ID present in sellers.json?
|
|
63
|
+
- Does the entry carry `is_confidential: 1`?
|
|
64
|
+
|
|
65
|
+
A DIRECT entry by definition declares that the exchange sells the publisher's inventory with no intermediary. A `is_confidential: 1` flag in sellers.json means the exchange is hiding the seller's identity from buyers. This is contradictory and constitutes a domain-spoofing risk vector.
|
|
66
|
+
|
|
67
|
+
```text
|
|
68
|
+
# HIGH — DIRECT entry resolves as confidential in sellers.json
|
|
69
|
+
ads.txt: exchange.com, 55555, DIRECT, abc123
|
|
70
|
+
sellers.json: { "seller_id": "55555", "is_confidential": 1 }
|
|
71
|
+
→ DIRECT relationship cannot be verified; domain-spoofing risk
|
|
72
|
+
|
|
73
|
+
# CORRECT — DIRECT entry with transparent seller identity
|
|
74
|
+
ads.txt: exchange.com, 55555, DIRECT, abc123
|
|
75
|
+
sellers.json: { "seller_id": "55555", "name": "Example Publisher", "domain": "example.com", "is_confidential": 0 }
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
### Step 5 — Orphaned account ID audit
|
|
79
|
+
|
|
80
|
+
Identify ads.txt entries where the account ID does not appear in the exchange's sellers.json at all (neither disclosed nor confidential):
|
|
81
|
+
- This may indicate stale entries from a terminated exchange relationship.
|
|
82
|
+
- It may also indicate domain spoofing: a bad actor adds a publisher's domain to their own exchange account without authorization.
|
|
83
|
+
- Flag as HIGH; request the user confirm whether the exchange relationship is active.
|
|
84
|
+
|
|
85
|
+
### Step 6 — Absent ads.txt audit for whitelisted domains
|
|
86
|
+
|
|
87
|
+
If the user provides a list of domains they have whitelisted for programmatic buying:
|
|
88
|
+
- For each domain, confirm whether ads.txt is present.
|
|
89
|
+
- A whitelisted domain with no ads.txt is categorically IVT-exposed: the domain has not declared any authorized seller, meaning all inventory sourced from that domain bypasses supply-chain controls.
|
|
90
|
+
- Flag each absent ads.txt as HIGH with the domain name.
|
|
91
|
+
|
|
92
|
+
```text
|
|
93
|
+
# HIGH — whitelisted domain with no ads.txt
|
|
94
|
+
Domain: news-publisher.example.com
|
|
95
|
+
ads.txt: not found (HTTP 404 / file absent)
|
|
96
|
+
→ all inventory from this domain is unverifiable; IVT-exposed per MRC guidelines
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
### Step 7 — SupplyChain Object completeness audit
|
|
100
|
+
|
|
101
|
+
If the user provides SupplyChain Object node declarations from bid-stream samples or SSP configuration:
|
|
102
|
+
- Verify `complete: 1` is set — a value of 0 means the chain is declared incomplete, which MRC and most DSPs treat as an IVT signal.
|
|
103
|
+
- For each intermediate node, verify `asi` (SSP domain), `sid` (account ID at that SSP), and `rid` (request ID, recommended) are present.
|
|
104
|
+
- Flag missing required fields in intermediate nodes as MEDIUM.
|
|
105
|
+
- Flag `complete: 0` as HIGH when it is set intentionally — it effectively declares the supply chain is unverifiable.
|
|
106
|
+
|
|
107
|
+
### Step 8 — Stale declaration assessment
|
|
108
|
+
|
|
109
|
+
Without a dated changelog, stale detection is inference:
|
|
110
|
+
- If the user discloses that exchange relationships have changed in the past twelve months, flag stale declaration as MEDIUM.
|
|
111
|
+
- Note that stale RESELLER entries may retain account IDs from terminated relationships that could be reused by unauthorized parties.
|
|
112
|
+
|
|
113
|
+
### Step 9 — app-ads.txt coverage gap
|
|
114
|
+
|
|
115
|
+
If the publisher has mobile app inventory:
|
|
116
|
+
- Confirm app-ads.txt is present at the developer domain (as declared in the app store listing).
|
|
117
|
+
- Absence is MEDIUM — mobile app inventory without app-ads.txt is outside IAB Tech Lab supply-chain protection.
|
|
118
|
+
|
|
119
|
+
### Step 10 — Produce the output
|
|
120
|
+
|
|
121
|
+
Format findings using the Output format section below.
|
|
122
|
+
|
|
123
|
+
---
|
|
124
|
+
|
|
125
|
+
## Output format
|
|
126
|
+
|
|
127
|
+
```
|
|
128
|
+
## Verdict
|
|
129
|
+
<one sentence: pass / needs work / critical issues found>
|
|
130
|
+
|
|
131
|
+
## Evidence level
|
|
132
|
+
<ads.txt provided | sellers.json provided | app-ads.txt provided | documentation-based | inference from absent file>
|
|
133
|
+
|
|
134
|
+
## Findings
|
|
135
|
+
|
|
136
|
+
### CRITICAL
|
|
137
|
+
- [C1] <finding title>: <description> — <remediation>
|
|
138
|
+
|
|
139
|
+
### HIGH
|
|
140
|
+
- [H1] <finding title>: <description> — <remediation>
|
|
141
|
+
|
|
142
|
+
### MEDIUM
|
|
143
|
+
- [M1] <finding title>: <description> — <remediation>
|
|
144
|
+
|
|
145
|
+
### LOW
|
|
146
|
+
- [L1] <finding title>: <description> — <remediation>
|
|
147
|
+
|
|
148
|
+
## Safe next actions
|
|
149
|
+
1. <action>
|
|
150
|
+
2. <action>
|
|
151
|
+
|
|
152
|
+
## Open questions
|
|
153
|
+
- <question requiring user clarification>
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
---
|
|
157
|
+
|
|
158
|
+
## Security and scope notes
|
|
159
|
+
|
|
160
|
+
- This is a static review. ads.txt, app-ads.txt, and sellers.json are public files. Never request DSP credentials, exchange account tokens, bid-stream logs, or revenue reports containing publisher financial data.
|
|
161
|
+
- An unauthorized RESELLER entry may represent a legitimate old relationship that was not removed when the exchange contract ended, or it may represent an active unauthorized intermediary taking arbitrage margin. The distinction requires the publisher to confirm the exchange relationship status — do not assume malicious intent, but flag the opacity clearly.
|
|
162
|
+
- Domain spoofing via DIRECT-to-confidential conflicts is a known fraud vector documented in MRC Invalid Traffic Detection guidelines. Surface the risk explicitly without overstating certainty about active fraud.
|
|
163
|
+
- When evidence is partial (e.g., ads.txt provided but no sellers.json), scope findings to inference and state the assumption explicitly.
|
|
164
|
+
- Do not recommend removing a RESELLER entry without first confirming whether it represents a legitimate revenue path that can be replaced with a DIRECT relationship or a disclosed intermediary — revenue loss from removing legitimate paths is a real operational risk.
|