@raishin/vanguard-frontier-agentic 2.0.0 → 2.1.0
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 +25 -1
- package/.cursor-plugin/plugin.json +25 -1
- package/.github/plugin/marketplace.json +1 -1
- package/README.md +26 -7
- 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/agents/qa/README.md +51 -0
- package/agents/qa/ci-test-pipeline-review-agent/AGENT.md +51 -0
- package/agents/qa/ci-test-pipeline-review-agent/harnesses/claude-code.agent.md +35 -0
- package/agents/qa/ci-test-pipeline-review-agent/harnesses/codex.toml +34 -0
- package/agents/qa/ci-test-pipeline-review-agent/harnesses/copilot.agent.md +35 -0
- package/agents/qa/ci-test-pipeline-review-agent/harnesses/cursor.agent.md +35 -0
- package/agents/qa/ci-test-pipeline-review-agent/harnesses/gemini.agent.md +35 -0
- package/agents/qa/ci-test-pipeline-review-agent/harnesses/kiro-cli.agent.json +5 -0
- package/agents/qa/ci-test-pipeline-review-agent/harnesses/kiro-ide.agent.md +35 -0
- package/agents/qa/ci-test-pipeline-review-agent/metadata.json +33 -0
- package/agents/qa/helm-chart-quality-review-agent/AGENT.md +56 -0
- package/agents/qa/helm-chart-quality-review-agent/harnesses/claude-code.agent.md +40 -0
- package/agents/qa/helm-chart-quality-review-agent/harnesses/codex.toml +39 -0
- package/agents/qa/helm-chart-quality-review-agent/harnesses/copilot.agent.md +40 -0
- package/agents/qa/helm-chart-quality-review-agent/harnesses/cursor.agent.md +40 -0
- package/agents/qa/helm-chart-quality-review-agent/harnesses/gemini.agent.md +40 -0
- package/agents/qa/helm-chart-quality-review-agent/harnesses/kiro-cli.agent.json +5 -0
- package/agents/qa/helm-chart-quality-review-agent/harnesses/kiro-ide.agent.md +40 -0
- package/agents/qa/helm-chart-quality-review-agent/metadata.json +35 -0
- package/agents/qa/kubernetes-manifest-quality-review-agent/AGENT.md +55 -0
- package/agents/qa/kubernetes-manifest-quality-review-agent/harnesses/claude-code.agent.md +32 -0
- package/agents/qa/kubernetes-manifest-quality-review-agent/harnesses/codex.toml +38 -0
- package/agents/qa/kubernetes-manifest-quality-review-agent/harnesses/copilot.agent.md +32 -0
- package/agents/qa/kubernetes-manifest-quality-review-agent/harnesses/cursor.agent.md +32 -0
- package/agents/qa/kubernetes-manifest-quality-review-agent/harnesses/gemini.agent.md +32 -0
- package/agents/qa/kubernetes-manifest-quality-review-agent/harnesses/kiro-cli.agent.json +5 -0
- package/agents/qa/kubernetes-manifest-quality-review-agent/harnesses/kiro-ide.agent.md +32 -0
- package/agents/qa/kubernetes-manifest-quality-review-agent/metadata.json +35 -0
- package/agents/qa/llm-ai-pipeline-test-review-agent/AGENT.md +52 -0
- package/agents/qa/llm-ai-pipeline-test-review-agent/harnesses/claude-code.agent.md +36 -0
- package/agents/qa/llm-ai-pipeline-test-review-agent/harnesses/codex.toml +36 -0
- package/agents/qa/llm-ai-pipeline-test-review-agent/harnesses/copilot.agent.md +36 -0
- package/agents/qa/llm-ai-pipeline-test-review-agent/harnesses/cursor.agent.md +36 -0
- package/agents/qa/llm-ai-pipeline-test-review-agent/harnesses/gemini.agent.md +36 -0
- package/agents/qa/llm-ai-pipeline-test-review-agent/harnesses/kiro-cli.agent.json +5 -0
- package/agents/qa/llm-ai-pipeline-test-review-agent/harnesses/kiro-ide.agent.md +36 -0
- package/agents/qa/llm-ai-pipeline-test-review-agent/metadata.json +35 -0
- package/agents/qa/playwright-e2e-execution-run-agent/AGENT.md +50 -0
- package/agents/qa/playwright-e2e-execution-run-agent/harnesses/claude-code.agent.md +39 -0
- package/agents/qa/playwright-e2e-execution-run-agent/harnesses/cursor.agent.md +39 -0
- package/agents/qa/playwright-e2e-execution-run-agent/metadata.json +28 -0
- package/agents/qa/playwright-e2e-suite-review-agent/AGENT.md +51 -0
- package/agents/qa/playwright-e2e-suite-review-agent/harnesses/claude-code.agent.md +35 -0
- package/agents/qa/playwright-e2e-suite-review-agent/harnesses/codex.toml +34 -0
- package/agents/qa/playwright-e2e-suite-review-agent/harnesses/copilot.agent.md +35 -0
- package/agents/qa/playwright-e2e-suite-review-agent/harnesses/cursor.agent.md +35 -0
- package/agents/qa/playwright-e2e-suite-review-agent/harnesses/gemini.agent.md +35 -0
- package/agents/qa/playwright-e2e-suite-review-agent/harnesses/kiro-cli.agent.json +5 -0
- package/agents/qa/playwright-e2e-suite-review-agent/harnesses/kiro-ide.agent.md +35 -0
- package/agents/qa/playwright-e2e-suite-review-agent/metadata.json +35 -0
- package/agents/qa/plc-control-logic-safety-review-agent/AGENT.md +53 -0
- package/agents/qa/plc-control-logic-safety-review-agent/harnesses/claude-code.agent.md +37 -0
- package/agents/qa/plc-control-logic-safety-review-agent/harnesses/codex.toml +36 -0
- package/agents/qa/plc-control-logic-safety-review-agent/harnesses/copilot.agent.md +37 -0
- package/agents/qa/plc-control-logic-safety-review-agent/harnesses/cursor.agent.md +37 -0
- package/agents/qa/plc-control-logic-safety-review-agent/harnesses/gemini.agent.md +37 -0
- package/agents/qa/plc-control-logic-safety-review-agent/harnesses/kiro-cli.agent.json +5 -0
- package/agents/qa/plc-control-logic-safety-review-agent/harnesses/kiro-ide.agent.md +37 -0
- package/agents/qa/plc-control-logic-safety-review-agent/metadata.json +33 -0
- package/agents/qa/rpa-workflow-resilience-review-agent/AGENT.md +52 -0
- package/agents/qa/rpa-workflow-resilience-review-agent/harnesses/claude-code.agent.md +36 -0
- package/agents/qa/rpa-workflow-resilience-review-agent/harnesses/codex.toml +35 -0
- package/agents/qa/rpa-workflow-resilience-review-agent/harnesses/copilot.agent.md +36 -0
- package/agents/qa/rpa-workflow-resilience-review-agent/harnesses/cursor.agent.md +36 -0
- package/agents/qa/rpa-workflow-resilience-review-agent/harnesses/gemini.agent.md +36 -0
- package/agents/qa/rpa-workflow-resilience-review-agent/harnesses/kiro-cli.agent.json +5 -0
- package/agents/qa/rpa-workflow-resilience-review-agent/harnesses/kiro-ide.agent.md +36 -0
- package/agents/qa/rpa-workflow-resilience-review-agent/metadata.json +34 -0
- package/agents/qa/test-coverage-quality-review-agent/AGENT.md +50 -0
- package/agents/qa/test-coverage-quality-review-agent/harnesses/claude-code.agent.md +34 -0
- package/agents/qa/test-coverage-quality-review-agent/harnesses/codex.toml +33 -0
- package/agents/qa/test-coverage-quality-review-agent/harnesses/copilot.agent.md +34 -0
- package/agents/qa/test-coverage-quality-review-agent/harnesses/cursor.agent.md +34 -0
- package/agents/qa/test-coverage-quality-review-agent/harnesses/gemini.agent.md +34 -0
- package/agents/qa/test-coverage-quality-review-agent/harnesses/kiro-cli.agent.json +5 -0
- package/agents/qa/test-coverage-quality-review-agent/harnesses/kiro-ide.agent.md +34 -0
- package/agents/qa/test-coverage-quality-review-agent/metadata.json +33 -0
- package/agents/qa/test-flakiness-triage-agent/AGENT.md +52 -0
- package/agents/qa/test-flakiness-triage-agent/harnesses/claude-code.agent.md +36 -0
- package/agents/qa/test-flakiness-triage-agent/harnesses/codex.toml +33 -0
- package/agents/qa/test-flakiness-triage-agent/harnesses/copilot.agent.md +36 -0
- package/agents/qa/test-flakiness-triage-agent/harnesses/cursor.agent.md +36 -0
- package/agents/qa/test-flakiness-triage-agent/harnesses/gemini.agent.md +36 -0
- package/agents/qa/test-flakiness-triage-agent/harnesses/kiro-cli.agent.json +5 -0
- package/agents/qa/test-flakiness-triage-agent/harnesses/kiro-ide.agent.md +36 -0
- package/agents/qa/test-flakiness-triage-agent/metadata.json +33 -0
- package/catalog/agents.json +1047 -197
- package/catalog/asset-integrity.json +2950 -1675
- package/catalog/install-roles.json +65 -1
- package/catalog/skill-manifest.json +538 -0
- package/catalog/skills.json +685 -0
- package/package.json +5 -2
- package/plugins/vanguard-frontier-agentic/.codex-plugin/plugin.json +1 -1
- package/scripts/generate-readme-counts.mjs +162 -0
- 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/skills/qa/ci-test-pipeline-review/SKILL.md +45 -0
- package/skills/qa/ci-test-pipeline-review/metadata.json +21 -0
- package/skills/qa/ci-test-pipeline-review/references/workflow-and-output.md +124 -0
- package/skills/qa/helm-chart-quality-review/SKILL.md +61 -0
- package/skills/qa/helm-chart-quality-review/metadata.json +23 -0
- package/skills/qa/helm-chart-quality-review/references/workflow-and-output.md +174 -0
- package/skills/qa/kubernetes-manifest-quality-review/SKILL.md +92 -0
- package/skills/qa/kubernetes-manifest-quality-review/metadata.json +23 -0
- package/skills/qa/kubernetes-manifest-quality-review/references/workflow-and-output.md +246 -0
- package/skills/qa/llm-ai-pipeline-test-review/SKILL.md +52 -0
- package/skills/qa/llm-ai-pipeline-test-review/metadata.json +23 -0
- package/skills/qa/llm-ai-pipeline-test-review/references/workflow-and-output.md +221 -0
- package/skills/qa/playwright-e2e-execution-run/SKILL.md +54 -0
- package/skills/qa/playwright-e2e-execution-run/metadata.json +24 -0
- package/skills/qa/playwright-e2e-execution-run/references/workflow-and-output.md +133 -0
- package/skills/qa/playwright-e2e-suite-review/SKILL.md +44 -0
- package/skills/qa/playwright-e2e-suite-review/metadata.json +23 -0
- package/skills/qa/playwright-e2e-suite-review/references/workflow-and-output.md +176 -0
- package/skills/qa/plc-control-logic-safety-review/SKILL.md +47 -0
- package/skills/qa/plc-control-logic-safety-review/metadata.json +21 -0
- package/skills/qa/plc-control-logic-safety-review/references/workflow-and-output.md +231 -0
- package/skills/qa/rpa-workflow-resilience-review/SKILL.md +47 -0
- package/skills/qa/rpa-workflow-resilience-review/metadata.json +22 -0
- package/skills/qa/rpa-workflow-resilience-review/references/workflow-and-output.md +210 -0
- package/skills/qa/test-coverage-quality-review/SKILL.md +44 -0
- package/skills/qa/test-coverage-quality-review/metadata.json +21 -0
- package/skills/qa/test-coverage-quality-review/references/workflow-and-output.md +139 -0
- package/skills/qa/test-flakiness-triage/SKILL.md +43 -0
- package/skills/qa/test-flakiness-triage/metadata.json +21 -0
- package/skills/qa/test-flakiness-triage/references/workflow-and-output.md +114 -0
- package/tests/eval-qa-cluster.mjs +111 -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
- package/tests/validate-readme-counts.mjs +179 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@raishin/vanguard-frontier-agentic",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.1.0",
|
|
4
4
|
"description": "Cloud and zero-trust agentic workflow marketplace for skills, agents, rules, MCP references, and compliance-aware architecture.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"repository": {
|
|
@@ -56,6 +56,9 @@
|
|
|
56
56
|
"validate:multi-harness-marketplace": "python3 tests/validate-multi-harness-marketplace.py",
|
|
57
57
|
"validate:codex-marketplace": "python3 tests/validate-codex-marketplace.py",
|
|
58
58
|
"validate:finops-fixtures": "python3 tests/validate-finops-price-fixtures.py",
|
|
59
|
+
"validate:readme-counts": "node tests/validate-readme-counts.mjs",
|
|
60
|
+
"validate:qa-cluster": "node tests/eval-qa-cluster.mjs",
|
|
61
|
+
"readme-counts:write": "node scripts/generate-readme-counts.mjs",
|
|
59
62
|
"test:marketplace-validators": "python3 tests/test-marketplace-validators.py",
|
|
60
63
|
"maestro-routing:write": "python3 tests/_generate_maestro_routing_fixtures.py",
|
|
61
64
|
"plugin-manifest:write": "node scripts/generate-plugin-manifest.mjs",
|
|
@@ -66,7 +69,7 @@
|
|
|
66
69
|
"test:gemini-bundling": "python3 tests/test-gemini-skill-bundling.py",
|
|
67
70
|
"test:cursor-kiro-notices": "node tests/export-cursor-kiro-skill-notice.test.mjs",
|
|
68
71
|
"test:fuzz": "node tests/fuzz-properties.test.mjs",
|
|
69
|
-
"validate": "npm run validate:catalog && npm run validate:aws && npm run manifest:check && npm run validate:allowed-tools && npm run validate:skill-schema && npm run validate:agent-schema && npm run validate:links && npm run validate:asset-integrity && npm run validate:mcp-trust-matrix && npm run validate:no-lifecycle-scripts && npm run validate:promotion-gatekeeper && npm run validate:install-coverage && npm run validate:maestro-routing && npm run validate:plugin-manifest && npm run validate:kiro-powers && npm run validate:multi-harness-marketplace && npm run validate:codex-marketplace && npm run validate:finops-fixtures",
|
|
72
|
+
"validate": "npm run validate:catalog && npm run validate:aws && npm run manifest:check && npm run validate:allowed-tools && npm run validate:skill-schema && npm run validate:agent-schema && npm run validate:links && npm run validate:asset-integrity && npm run validate:mcp-trust-matrix && npm run validate:no-lifecycle-scripts && npm run validate:promotion-gatekeeper && npm run validate:install-coverage && npm run validate:maestro-routing && npm run validate:plugin-manifest && npm run validate:kiro-powers && npm run validate:multi-harness-marketplace && npm run validate:codex-marketplace && npm run validate:finops-fixtures && npm run validate:readme-counts && npm run validate:qa-cluster",
|
|
70
73
|
"release:sbom": "command -v syft >/dev/null 2>&1 && syft scan dir:. -o spdx-json=sbom.spdx.json || echo 'syft not installed; SBOM is generated in CI by anchore/sbom-action'",
|
|
71
74
|
"lint:md": "npx --yes markdownlint-cli2 \"**/*.md\" \"#node_modules\" \"#.git\" \"#.code-review-graph\" \"#CHANGELOG.md\"",
|
|
72
75
|
"lint:spell": "codespell",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "vanguard-frontier-agentic",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.1.0",
|
|
4
4
|
"description": "Curated marketplace for cloud and zero-trust AI workflows. 331 agents, 286 skills, and rules across AWS, Azure, OCI, GCP, Alibaba Cloud, Huawei Cloud, Kubernetes, and Terraform.",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Raishin",
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Generate catalog counts and inject them into README.md.
|
|
4
|
+
*
|
|
5
|
+
* Counts:
|
|
6
|
+
* skills = SKILL.md files under skills/ (recursive)
|
|
7
|
+
* agents = metadata.json files under agents/ (recursive)
|
|
8
|
+
* providers = distinct `provider` values across agents metadata files
|
|
9
|
+
* roles = keys under `.roles` in catalog/install-roles.json
|
|
10
|
+
* rules = length of JSON array in catalog/rules.json
|
|
11
|
+
* mcp = length of JSON array in catalog/mcp-references.json
|
|
12
|
+
*
|
|
13
|
+
* Mode:
|
|
14
|
+
* (default) overwrite README.md in place
|
|
15
|
+
* --check compare expected vs actual, exit 1 if stale, 0 if current
|
|
16
|
+
*
|
|
17
|
+
* Run: npm run readme-counts:write
|
|
18
|
+
*/
|
|
19
|
+
|
|
20
|
+
import fs from "node:fs";
|
|
21
|
+
import path from "node:path";
|
|
22
|
+
import { fileURLToPath } from "node:url";
|
|
23
|
+
|
|
24
|
+
const repoRoot = path.resolve(path.dirname(fileURLToPath(import.meta.url)), "..");
|
|
25
|
+
const readmePath = path.join(repoRoot, "README.md");
|
|
26
|
+
const check = process.argv.includes("--check");
|
|
27
|
+
|
|
28
|
+
// ---------------------------------------------------------------------------
|
|
29
|
+
// Helpers
|
|
30
|
+
// ---------------------------------------------------------------------------
|
|
31
|
+
|
|
32
|
+
/** Recursively list all files under `dir`. Returns relative paths from `dir`. */
|
|
33
|
+
function listFiles(dir) {
|
|
34
|
+
return fs.readdirSync(dir, { recursive: true }).map(String);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
// ---------------------------------------------------------------------------
|
|
38
|
+
// Compute counts
|
|
39
|
+
// ---------------------------------------------------------------------------
|
|
40
|
+
|
|
41
|
+
const skillFiles = listFiles(path.join(repoRoot, "skills"));
|
|
42
|
+
const skillCount = skillFiles.filter((f) => f.endsWith("SKILL.md")).length;
|
|
43
|
+
|
|
44
|
+
const agentFiles = listFiles(path.join(repoRoot, "agents"));
|
|
45
|
+
const agentMetaFiles = agentFiles.filter((f) => f.endsWith("metadata.json"));
|
|
46
|
+
const agentCount = agentMetaFiles.length;
|
|
47
|
+
|
|
48
|
+
const allProviders = new Set();
|
|
49
|
+
for (const f of agentMetaFiles) {
|
|
50
|
+
const fullPath = path.join(repoRoot, "agents", f);
|
|
51
|
+
const m = JSON.parse(fs.readFileSync(fullPath, "utf8"));
|
|
52
|
+
if (m.provider) allProviders.add(m.provider);
|
|
53
|
+
}
|
|
54
|
+
const providerCount = allProviders.size;
|
|
55
|
+
|
|
56
|
+
const rolesData = JSON.parse(
|
|
57
|
+
fs.readFileSync(path.join(repoRoot, "catalog", "install-roles.json"), "utf8"),
|
|
58
|
+
);
|
|
59
|
+
const roleCount = Object.keys(rolesData.roles).length;
|
|
60
|
+
|
|
61
|
+
const rulesData = JSON.parse(
|
|
62
|
+
fs.readFileSync(path.join(repoRoot, "catalog", "rules.json"), "utf8"),
|
|
63
|
+
);
|
|
64
|
+
const ruleCount = Array.isArray(rulesData) ? rulesData.length : 0;
|
|
65
|
+
|
|
66
|
+
const mcpData = JSON.parse(
|
|
67
|
+
fs.readFileSync(path.join(repoRoot, "catalog", "mcp-references.json"), "utf8"),
|
|
68
|
+
);
|
|
69
|
+
const mcpCount = Array.isArray(mcpData) ? mcpData.length : 0;
|
|
70
|
+
|
|
71
|
+
const counts = {
|
|
72
|
+
skills: skillCount,
|
|
73
|
+
agents: agentCount,
|
|
74
|
+
providers: providerCount,
|
|
75
|
+
roles: roleCount,
|
|
76
|
+
rules: ruleCount,
|
|
77
|
+
mcp: mcpCount,
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
// ---------------------------------------------------------------------------
|
|
81
|
+
// Build the marker block
|
|
82
|
+
// ---------------------------------------------------------------------------
|
|
83
|
+
|
|
84
|
+
const markerBlock =
|
|
85
|
+
`<!-- readme-counts:start -->\n` +
|
|
86
|
+
`<!-- Generated by scripts/generate-readme-counts.mjs — do not edit by hand. Run: npm run readme-counts:write -->\n` +
|
|
87
|
+
`| Catalog | Count |\n` +
|
|
88
|
+
`| --- | --- |\n` +
|
|
89
|
+
`| Skills | ${skillCount} |\n` +
|
|
90
|
+
`| Agents | ${agentCount} |\n` +
|
|
91
|
+
`| Providers | ${providerCount} |\n` +
|
|
92
|
+
`| Install roles | ${roleCount} |\n` +
|
|
93
|
+
`| Rules | ${ruleCount} |\n` +
|
|
94
|
+
`| MCP references | ${mcpCount} |\n` +
|
|
95
|
+
`<!-- readme-counts:end -->`;
|
|
96
|
+
|
|
97
|
+
// ---------------------------------------------------------------------------
|
|
98
|
+
// Transform README content
|
|
99
|
+
// ---------------------------------------------------------------------------
|
|
100
|
+
|
|
101
|
+
function buildExpectedContent(original) {
|
|
102
|
+
let content = original;
|
|
103
|
+
|
|
104
|
+
// 1. Replace the marker block (markers preserved, inner content replaced)
|
|
105
|
+
const markerStartRe = /<!-- readme-counts:start -->[\s\S]*?<!-- readme-counts:end -->/;
|
|
106
|
+
if (markerStartRe.test(content)) {
|
|
107
|
+
content = content.replace(markerStartRe, markerBlock);
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
// 2. Replace inline count spans <!-- count:KEY -->OLDNUMBER<!-- /count -->
|
|
111
|
+
const inlineRe = /<!-- count:(skills|agents|providers|roles|rules|mcp) -->\d+<!-- \/count -->/g;
|
|
112
|
+
content = content.replace(inlineRe, (_, key) => {
|
|
113
|
+
return `<!-- count:${key} -->${counts[key]}<!-- /count -->`;
|
|
114
|
+
});
|
|
115
|
+
|
|
116
|
+
return content;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
// ---------------------------------------------------------------------------
|
|
120
|
+
// Main
|
|
121
|
+
// ---------------------------------------------------------------------------
|
|
122
|
+
|
|
123
|
+
const original = fs.readFileSync(readmePath, "utf8");
|
|
124
|
+
const expected = buildExpectedContent(original);
|
|
125
|
+
|
|
126
|
+
if (check) {
|
|
127
|
+
if (original === expected) {
|
|
128
|
+
console.log("OK: README counts current");
|
|
129
|
+
process.exit(0);
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
// Print a basic diff-style report to stderr
|
|
133
|
+
const origLines = original.split("\n");
|
|
134
|
+
const expLines = expected.split("\n");
|
|
135
|
+
const maxLen = Math.max(origLines.length, expLines.length);
|
|
136
|
+
const diffLines = [];
|
|
137
|
+
for (let i = 0; i < maxLen; i++) {
|
|
138
|
+
const o = origLines[i];
|
|
139
|
+
const e = expLines[i];
|
|
140
|
+
if (o !== e) {
|
|
141
|
+
diffLines.push(`Line ${i + 1}:`);
|
|
142
|
+
if (o !== undefined) diffLines.push(` - ${o}`);
|
|
143
|
+
if (e !== undefined) diffLines.push(` + ${e}`);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
process.stderr.write(
|
|
147
|
+
`ERROR: README.md counts are stale. Run: npm run readme-counts:write\n\n` +
|
|
148
|
+
diffLines.join("\n") +
|
|
149
|
+
"\n",
|
|
150
|
+
);
|
|
151
|
+
process.exit(1);
|
|
152
|
+
} else {
|
|
153
|
+
if (original === expected) {
|
|
154
|
+
console.log("OK: README.md already up to date — no changes written.");
|
|
155
|
+
} else {
|
|
156
|
+
fs.writeFileSync(readmePath, expected, "utf8");
|
|
157
|
+
console.log(
|
|
158
|
+
`OK: README.md updated (skills=${skillCount}, agents=${agentCount}, ` +
|
|
159
|
+
`providers=${providerCount}, roles=${roleCount}, rules=${ruleCount}, mcp=${mcpCount})`,
|
|
160
|
+
);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ai-advertising-targeting-fairness-review
|
|
3
|
+
description: Use this skill when reviewing ad-platform audience targeting configurations and declared AI feature usage for protected-class discrimination risk. Trigger when a user provides a Meta Ads Manager audience definition, Google Ads targeting layer export, DSP deal config, or any ad platform audience spec annotated with AI features enabled (Advantage+ Audience, broad match, automated bidding, lookalike seeds). Use when a campaign is in housing, credit, employment, or insurance verticals, or when automated bidding or AI audience expansion is active on any campaign reaching the US or EU and the user needs to assess Fair Housing Act, ECOA, or EU AI Act Article 5 exposure.
|
|
4
|
+
allowed-tools: Read Grep Glob
|
|
5
|
+
metadata:
|
|
6
|
+
author: "github: Raishin"
|
|
7
|
+
version: "0.1.0"
|
|
8
|
+
updated: "2026-05-17"
|
|
9
|
+
category: ai
|
|
10
|
+
lifecycle: experimental
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# AI Advertising Targeting Fairness Review
|
|
14
|
+
|
|
15
|
+
## Purpose
|
|
16
|
+
This skill reviews ad-platform audience targeting configurations and declared AI feature usage for protected-class discrimination risk under the Fair Housing Act (42 U.S.C. §3604), the Equal Credit Opportunity Act (ECOA), and EU AI Act Article 5. Ad platforms increasingly offer AI-driven audience expansion features — Meta Advantage+ Audience, Google broad match and Performance Max, DSP algorithmic deal targeting — that optimize delivery based on historical conversion patterns. When historical converters skew along protected-class lines (race, sex, age, national origin, familial status, disability, religion), algorithmic optimization propagates that skew without explicit intent. The review examines declared AI feature usage, audience seed composition, interest-segment proxy risk, and the absence of protected-category exclusion declarations on special-category campaigns before the configuration ships.
|
|
17
|
+
|
|
18
|
+
## Lean operating rules
|
|
19
|
+
- Treat Meta Advantage+ Audience enabled on a housing, credit, employment, or insurance campaign with no declared protected-category exclusions as HIGH — the system expands targeting beyond the declared audience using engagement signals that may correlate with race, sex, or national origin.
|
|
20
|
+
- Treat interest-based segments that function as proxies for health conditions, religion, national origin, or familial status used on an insurance or financial-services campaign as HIGH — proxy targeting on protected classes is substantively equivalent to explicit targeting under FHA and ECOA case law.
|
|
21
|
+
- Treat automated bidding (Target CPA, Target ROAS, Smart Bidding) optimizing a credit-offer, rental, or employment campaign on lookalike audiences seeded from historical converters as HIGH — disparate impact is propagated algorithmically when the seed population reflects historical discriminatory patterns.
|
|
22
|
+
- Treat any AI-generated audience expansion (broad match, Performance Max audience signals, DSP algorithmic reach extension) active on a special-category campaign (housing, credit, employment, insurance) with no fairness audit trail as HIGH — the optimization objective does not include disparate-impact minimization.
|
|
23
|
+
- Treat geofencing or geographic exclusion zones that closely follow racially or ethnically concentrated neighborhood boundaries on a housing or credit campaign as HIGH — geographic redlining is prohibited under FHA regardless of whether intent is declared.
|
|
24
|
+
- Treat the absence of a Special Ad Category declaration on a Meta campaign reasonably classifiable as housing, employment, or credit as HIGH — the declaration unlocks mandatory fairness restrictions; omitting it circumvents them.
|
|
25
|
+
- Flag automated bidding that optimizes on a conversion event defined as a past purchase or application when the historical converter population is not documented for demographic representativeness as MEDIUM — undocumented seed bias is a disparate-impact risk even when not yet proven.
|
|
26
|
+
- Flag interest segments that include health-condition or medication-related categories on campaigns not in the healthcare vertical as MEDIUM — health proxies reach users based on inferred sensitive characteristics.
|
|
27
|
+
- Flag AI feature disclosures that are absent or vague (e.g., "algorithmic optimization enabled" with no named feature, no version, no opt-out path) as MEDIUM — EU AI Act Article 13 and FTC guidance require meaningful transparency.
|
|
28
|
+
- Do not recommend disabling AI features without naming the performance impact and the manual alternative that preserves reach.
|
|
29
|
+
- Label every finding with evidence basis: audience spec provided, AI feature declaration provided, documentation-based, or inference from missing config.
|
|
30
|
+
|
|
31
|
+
## References
|
|
32
|
+
Load these only when needed:
|
|
33
|
+
- [Workflow and output contract](references/workflow-and-output.md) — use when executing the full review or formatting the final answer.
|
|
34
|
+
|
|
35
|
+
## Response minimum
|
|
36
|
+
Return, at minimum:
|
|
37
|
+
- AI feature inventory (named features enabled per campaign, evidence basis)
|
|
38
|
+
- Special-category campaign detection (housing, credit, employment, insurance)
|
|
39
|
+
- Protected-class proxy segment assessment (interest segments, lookalike seeds)
|
|
40
|
+
- Algorithmic disparate-impact assessment (bidding, audience expansion)
|
|
41
|
+
- Special Ad Category declaration check (Meta) or equivalent platform declaration
|
|
42
|
+
- Severity-labelled finding list (critical / high / medium / low)
|
|
43
|
+
- Safe next actions
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "ai-advertising-targeting-fairness-review",
|
|
3
|
+
"name": "AI Advertising Targeting Fairness Review",
|
|
4
|
+
"type": "skill",
|
|
5
|
+
"provider": "marketing",
|
|
6
|
+
"harnesses": ["codex", "claude-code", "cursor", "gemini", "kiro", "other"],
|
|
7
|
+
"summary": "Review ad-platform audience targeting configurations and AI feature usage for protected-class discrimination risk under Fair Housing Act, ECOA, and EU AI Act Article 5 — proxy segments, algorithmic disparate impact, and missing Special Ad Category declarations.",
|
|
8
|
+
"source_type": "original",
|
|
9
|
+
"official_docs": [
|
|
10
|
+
"https://www.ftc.gov/business-guidance/blog/2023/02/ftcs-ai-related-enforcement-actions",
|
|
11
|
+
"https://www.hud.gov/program_offices/fair_housing_equal_opp/fair_housing_act_overview",
|
|
12
|
+
"https://www.consumerfinance.gov/about-us/blog/cfpb-issues-guidance-on-credit-denials-by-lenders-using-artificial-intelligence/",
|
|
13
|
+
"https://digital-strategy.ec.europa.eu/en/policies/regulatory-framework-ai",
|
|
14
|
+
"https://www.federalregister.gov/documents/2023/07/13/2023-14625/civil-rights-principles-for-the-use-of-artificial-intelligence"
|
|
15
|
+
],
|
|
16
|
+
"security_notes": "Ad-platform AI features that optimize on historical converter populations can propagate protected-class disparate impact without explicit discriminatory intent. Review works from sanitized audience spec exports and declared AI feature annotations only; never request live campaign credentials, ad-account access tokens, or real user audience data.",
|
|
17
|
+
"last_verified": "2026-05-17",
|
|
18
|
+
"path": "skills/marketing/ai-advertising-targeting-fairness-review",
|
|
19
|
+
"author": "github: Raishin",
|
|
20
|
+
"version": "0.1.0"
|
|
21
|
+
}
|
package/skills/marketing/ai-advertising-targeting-fairness-review/references/workflow-and-output.md
ADDED
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
# Workflow and Output Contract
|
|
2
|
+
|
|
3
|
+
## Workflow
|
|
4
|
+
|
|
5
|
+
### Step 1 — Collect inputs
|
|
6
|
+
|
|
7
|
+
Ask the user to provide one or more of the following as sanitized exports (replace real values with placeholders; no real user PII, no ad-account credentials, no live audience membership data):
|
|
8
|
+
- Ad platform audience definition export (Meta Ads Manager audience spec, Google Ads targeting layer export, DSP deal config)
|
|
9
|
+
- Declared AI features enabled per campaign (e.g., Advantage+ Audience, broad match, Performance Max, Target CPA, automated bidding strategy)
|
|
10
|
+
- Campaign vertical and ad category (housing, credit, employment, insurance, or other)
|
|
11
|
+
- Seed-list demographics summary if a lookalike audience is in scope (aggregate only — no individual-level data)
|
|
12
|
+
- Interest segment names or IDs included in the targeting stack
|
|
13
|
+
- Platform Special Ad Category or equivalent fairness-restriction declaration, if any
|
|
14
|
+
|
|
15
|
+
If the user provides only a partial set, note which sections are absent and scope findings accordingly.
|
|
16
|
+
|
|
17
|
+
### Step 2 — Campaign vertical classification
|
|
18
|
+
|
|
19
|
+
Classify the campaign into a fairness-risk tier before inspecting AI features:
|
|
20
|
+
|
|
21
|
+
- **Tier 1 — Special category** (highest risk): housing/rental, mortgage/credit, employment/hiring, insurance underwriting or pricing. FHA, ECOA, and analogous EU AI Act provisions impose the strictest obligations.
|
|
22
|
+
- **Tier 2 — Sensitive adjacent**: health products, financial services (non-credit), legal services, political advertising. Protected-class proxies and automated decisions warrant careful scrutiny.
|
|
23
|
+
- **Tier 3 — General commercial**: e-commerce, SaaS, entertainment. Standard fairness hygiene applies but special-category rules do not.
|
|
24
|
+
|
|
25
|
+
Any Tier 1 campaign with AI-driven audience expansion enabled is HIGH by classification — proceed to Step 4 immediately.
|
|
26
|
+
|
|
27
|
+
### Step 3 — AI feature inventory
|
|
28
|
+
|
|
29
|
+
Enumerate every declared AI feature active on the campaign:
|
|
30
|
+
|
|
31
|
+
```text
|
|
32
|
+
# Example inventory table
|
|
33
|
+
| Feature | Platform | Campaign | Opt-out available? |
|
|
34
|
+
|--------------------------|----------|--------------|-------------------|
|
|
35
|
+
| Advantage+ Audience | Meta | Housing_Q2 | Partial |
|
|
36
|
+
| Target CPA bidding | Google | Credit_Lead | Yes |
|
|
37
|
+
| Broad match keywords | Google | Credit_Lead | Yes |
|
|
38
|
+
| Lookalike expansion L1 | Meta | Housing_Q2 | No |
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
For each feature, note: whether it expands beyond declared audience, what optimization signal it uses, and whether a fairness constraint or protected-category exclusion is declared.
|
|
42
|
+
|
|
43
|
+
### Step 4 — Protected-class proxy segment audit
|
|
44
|
+
|
|
45
|
+
Inspect interest and behavioral segments for protected-class proxy risk:
|
|
46
|
+
|
|
47
|
+
```text
|
|
48
|
+
# HIGH — health-condition proxy on insurance campaign
|
|
49
|
+
Interest segment: "Diabetes management apps" → infers health condition → protected under ADA, ECOA
|
|
50
|
+
|
|
51
|
+
# HIGH — national-origin proxy via language and cultural affinity targeting
|
|
52
|
+
Interest segment: "Spanish-language content" + "Latin music" → national origin proxy on housing campaign
|
|
53
|
+
|
|
54
|
+
# MEDIUM — general health interest segment on non-healthcare campaign
|
|
55
|
+
Interest segment: "Fitness & wellness" → weaker proxy; flag for review but lower confidence
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
Flag segments that reliably infer race, sex, age, national origin, familial status, disability, or religion — even when those characteristics are not named explicitly.
|
|
59
|
+
|
|
60
|
+
### Step 5 — Algorithmic disparate-impact assessment
|
|
61
|
+
|
|
62
|
+
Assess whether automated bidding or audience expansion propagates historical bias:
|
|
63
|
+
|
|
64
|
+
```text
|
|
65
|
+
# HIGH — lookalike seeded from historical converters, no demographic audit
|
|
66
|
+
Seed list: "past_mortgage_applicants_2019_2023"
|
|
67
|
+
Lookalike: L1% similarity expansion
|
|
68
|
+
Risk: If historical applicants skew by race or national origin, the lookalike inherits that skew.
|
|
69
|
+
Mitigation: Demographic representativeness audit of seed list required.
|
|
70
|
+
|
|
71
|
+
# HIGH — Target CPA on credit-offer campaign, conversion event = "application_submitted"
|
|
72
|
+
Risk: CPA optimization deprioritizes delivery to audiences with lower historical application rates,
|
|
73
|
+
which may correlate with protected-class membership.
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
### Step 6 — Platform fairness-declaration check
|
|
77
|
+
|
|
78
|
+
For Meta campaigns: confirm whether a Special Ad Category (Housing, Employment, Credit) is declared. Absence on a Tier 1 campaign is HIGH — it circumvents mandatory targeting restrictions.
|
|
79
|
+
|
|
80
|
+
For Google: confirm whether Limited Ad Serving policies are acknowledged and whether sensitive-category restrictions are applied.
|
|
81
|
+
|
|
82
|
+
For DSPs: confirm whether deal-level fairness constraints (e.g., no health-condition targeting, no age exclusions) are documented.
|
|
83
|
+
|
|
84
|
+
### Step 7 — Geographic redlining check
|
|
85
|
+
|
|
86
|
+
Inspect geofencing and location exclusions for patterns that trace protected-class neighborhood boundaries:
|
|
87
|
+
|
|
88
|
+
```text
|
|
89
|
+
# HIGH — exclusion zone matches historic redlining district boundaries
|
|
90
|
+
Excluded ZIP codes: [10031, 10037, 10039] on NYC housing campaign
|
|
91
|
+
These ZIPs are majority-minority neighborhoods; exclusion on a housing campaign = FHA §3604 risk.
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
Compare exclusion zones against publicly available fair-lending geography if the artifact suggests geographic selectivity.
|
|
95
|
+
|
|
96
|
+
### Step 8 — Produce the output
|
|
97
|
+
|
|
98
|
+
Format findings using the Output section below.
|
|
99
|
+
|
|
100
|
+
---
|
|
101
|
+
|
|
102
|
+
## Output
|
|
103
|
+
|
|
104
|
+
Return findings in this structure:
|
|
105
|
+
|
|
106
|
+
```
|
|
107
|
+
## Verdict
|
|
108
|
+
<one sentence: pass / needs work / critical issues found>
|
|
109
|
+
|
|
110
|
+
## Evidence level
|
|
111
|
+
<audience spec provided | AI feature declaration provided | documentation-based | inference>
|
|
112
|
+
|
|
113
|
+
## Campaign tier
|
|
114
|
+
<Tier 1 special-category | Tier 2 sensitive adjacent | Tier 3 general commercial>
|
|
115
|
+
|
|
116
|
+
## AI feature inventory
|
|
117
|
+
<table of features, platform, campaign, opt-out status>
|
|
118
|
+
|
|
119
|
+
## Findings
|
|
120
|
+
|
|
121
|
+
### CRITICAL
|
|
122
|
+
- [C1] <finding title>: <description> — <remediation>
|
|
123
|
+
|
|
124
|
+
### HIGH
|
|
125
|
+
- [H1] <finding title>: <description> — <remediation>
|
|
126
|
+
|
|
127
|
+
### MEDIUM
|
|
128
|
+
- [M1] <finding title>: <description> — <remediation>
|
|
129
|
+
|
|
130
|
+
### LOW
|
|
131
|
+
- [L1] <finding title>: <description> — <remediation>
|
|
132
|
+
|
|
133
|
+
## Safe next actions
|
|
134
|
+
1. <action>
|
|
135
|
+
2. <action>
|
|
136
|
+
|
|
137
|
+
## Open questions
|
|
138
|
+
- <question requiring user clarification>
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
---
|
|
142
|
+
|
|
143
|
+
## Security and scope notes
|
|
144
|
+
|
|
145
|
+
- This is a static review. Never request live campaign credentials, ad-account access tokens, real audience membership lists, or individual-level conversion data.
|
|
146
|
+
- A finding here may constitute a fair lending, fair housing, or EU AI Act compliance violation — flag that possibility and route legal determination to qualified counsel and compliance teams. Do not make the legal determination yourself.
|
|
147
|
+
- Algorithmic disparate impact is a legal theory that can apply even when no protected characteristic is named — proxy targeting and optimized delivery on skewed seed populations are within scope.
|
|
148
|
+
- Hashing or pseudonymizing a seed list does not eliminate the disparate-impact risk from a demographically unrepresentative seed population.
|
|
149
|
+
- When evidence is partial, scope each finding to what was provided and state the assumption explicitly.
|
|
150
|
+
- Do not recommend disabling AI features without naming the performance impact and a manual targeting alternative.
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: analytics-data-minimization-review
|
|
3
|
+
description: Use this skill when reviewing analytics platform configuration — GA4 property settings, BigQuery export schema, custom event-parameter definitions, and user-property declarations — for data-minimization violations, excessive collection, and storage-period over-retention. Trigger when a user provides a GA4 property configuration export, a BigQuery raw-event export schema, a custom event or user-property inventory, data-retention settings, or asks whether their analytics setup collects more personal data than necessary, retains data longer than required, or converts an analytics platform into a personal-data processor. Distinct from marketing-pixel-data-leakage-review: this skill reviews what analytics platforms collect and retain internally, not outbound pixel payloads to ad networks.
|
|
4
|
+
allowed-tools: Read Grep Glob
|
|
5
|
+
metadata:
|
|
6
|
+
author: "github: Raishin"
|
|
7
|
+
version: "0.1.0"
|
|
8
|
+
updated: "2026-05-17"
|
|
9
|
+
category: data
|
|
10
|
+
lifecycle: experimental
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Analytics Data-Minimization Review
|
|
14
|
+
|
|
15
|
+
## Purpose
|
|
16
|
+
This skill reviews analytics platform configuration — GA4 property settings, BigQuery export schema, custom event-parameter definitions, and user-property declarations — for data-minimization violations, excessive collection, and storage-period over-retention. Analytics platforms are a primary regulatory surface for GDPR enforcement: European DPAs (Austrian DSB, French CNIL, Italian Garante) have found that user_pseudo_id, IP address, and precise geo combined with a BigQuery export constitute transfers of personal data requiring a lawful basis, a valid transfer mechanism, and compliance with the storage-limitation principle under GDPR Article 5(1)(e). This skill is distinct from `marketing-pixel-data-leakage-review` — it reviews what analytics platforms collect and retain internally (schema, user properties, retention periods), not outbound pixel payloads transmitted to ad networks. The review works from sanitized configuration exports only; never request live analytics data or real user identifiers.
|
|
17
|
+
|
|
18
|
+
## Lean operating rules
|
|
19
|
+
- Treat a GA4 user-scoped custom dimension populated with a persistent first-party user ID linked to a CRM contact record as HIGH — it converts GA4 into a personal-data processor for identified individuals, triggering DPA obligations and requiring a separate documented lawful basis beyond the analytics purpose.
|
|
20
|
+
- Treat a BigQuery raw-event export retaining user_pseudo_id and geo.city at full precision with no anonymization transform or partitioned deletion job as HIGH — the combination of fields constitutes personal data under GDPR, and uncontrolled raw export creates an unmanaged data store with no retention ceiling.
|
|
21
|
+
- Treat a data-retention period set to the maximum (14 months in GA4) with no documented justification tied to a specific, time-bound analytical purpose as HIGH — GDPR Article 5(1)(e) requires retention only as long as necessary; the maximum is not a default entitlement.
|
|
22
|
+
- Treat user properties collecting device fingerprint components, precise IP, or persistent advertising identifiers (GCLID, FBCLID passed as user properties) in a property lacking a valid transfer mechanism for non-EEA exports as HIGH — these fields individually or in combination constitute personal data with cross-border transfer obligations.
|
|
23
|
+
- Treat event parameters collecting free-text field values from search queries, form inputs, or support chats as HIGH — free-text fields frequently contain names, emails, or health information that exceed the analytics collection purpose.
|
|
24
|
+
- Treat session-scoped custom dimensions collecting full URL paths that include query parameters with PII (e.g., `/reset?email=user@example.com`) as HIGH — URL-embedded PII is personal data regardless of whether it was intentionally collected.
|
|
25
|
+
- Flag custom event schemas that duplicate standard GA4 automatically collected events with additional parameters adding no documented analytical value as MEDIUM — redundant collection without justification violates data minimization under GDPR Article 5(1)(c).
|
|
26
|
+
- Flag BigQuery export schemas that retain raw event data beyond the property's configured retention period because no partition-expiry or scheduled query enforces deletion as MEDIUM — the property setting does not automatically govern the export.
|
|
27
|
+
- Flag user-property schemas with no documented owner, purpose, or review date as MEDIUM — absence of governance documentation is a proxy indicator of speculative or abandoned collection.
|
|
28
|
+
- Do not recommend disabling an event or parameter without naming the analytical purpose it serves and the impact of its removal on measurement continuity.
|
|
29
|
+
- Label every finding with evidence basis: configuration export provided, schema provided, documentation-based, or inference from missing element.
|
|
30
|
+
|
|
31
|
+
## References
|
|
32
|
+
Load these only when needed:
|
|
33
|
+
- [Workflow and output contract](references/workflow-and-output.md) — use when executing the full review or formatting the final answer.
|
|
34
|
+
|
|
35
|
+
## Response minimum
|
|
36
|
+
Return, at minimum:
|
|
37
|
+
- User-scoped custom dimension assessment (CRM linkage, persistent identifiers)
|
|
38
|
+
- BigQuery export schema assessment (field precision, anonymization, partitioned deletion)
|
|
39
|
+
- Data-retention period assessment (documented justification vs. maximum default)
|
|
40
|
+
- User-property and event-parameter PII assessment (free-text, URL-embedded PII, fingerprint components)
|
|
41
|
+
- Cross-border transfer assessment (user_pseudo_id + geo fields in non-EEA export)
|
|
42
|
+
- Schema governance assessment (owner, purpose, review date)
|
|
43
|
+
- Severity-labelled finding list (critical / high / medium / low)
|
|
44
|
+
- Safe next actions
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "analytics-data-minimization-review",
|
|
3
|
+
"name": "Analytics Data-Minimization Review",
|
|
4
|
+
"type": "skill",
|
|
5
|
+
"provider": "marketing",
|
|
6
|
+
"harnesses": ["codex", "claude-code", "cursor", "gemini", "kiro", "other"],
|
|
7
|
+
"summary": "Review analytics platform configuration — GA4 property settings, BigQuery export schema, custom event-parameter definitions, and user-property declarations — for data-minimization violations, excessive collection, and storage-period over-retention under GDPR Article 5(1)(c) and 5(1)(e) and EU DPA enforcement on GA4.",
|
|
8
|
+
"source_type": "original",
|
|
9
|
+
"official_docs": [
|
|
10
|
+
"https://gdpr-info.eu/art-5-gdpr/",
|
|
11
|
+
"https://www.cnil.fr/en/use-google-analytics-and-data-transfers-united-states-cnil-orders-website-manageroperator-comply/",
|
|
12
|
+
"https://www.cnil.fr/en/google-analytics-and-data-transfers-how-make-your-analytics-tool-compliant-gdpr",
|
|
13
|
+
"https://www.garanteprivacy.it/home/docweb/-/docweb-display/docweb/9782874",
|
|
14
|
+
"https://support.google.com/analytics/answer/9019185"
|
|
15
|
+
],
|
|
16
|
+
"security_notes": "Read-only static review of sanitized analytics configuration exports and schema definitions only. Never request live analytics data, raw event exports containing real user identifiers, GA4 admin credentials, or BigQuery service-account keys. Findings may indicate cross-border data transfer violations requiring DPA notification — route remediation and legal assessment to qualified privacy counsel before acting on findings.",
|
|
17
|
+
"last_verified": "2026-05-17",
|
|
18
|
+
"path": "skills/marketing/analytics-data-minimization-review",
|
|
19
|
+
"author": "github: Raishin",
|
|
20
|
+
"version": "0.1.0",
|
|
21
|
+
"lifecycle": "experimental"
|
|
22
|
+
}
|