@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
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
# Workflow and Output Contract
|
|
2
|
+
|
|
3
|
+
## Workflow
|
|
4
|
+
|
|
5
|
+
### Step 1 — Collect inputs
|
|
6
|
+
|
|
7
|
+
Ask the user to provide a sanitized analytics configuration export covering one or more of the following artifacts (replace real user IDs, property IDs, and API keys with placeholders; do not include live event exports or actual user data):
|
|
8
|
+
|
|
9
|
+
- GA4 property data-retention setting (event data and user data retention periods)
|
|
10
|
+
- GA4 custom event definitions: event name, parameters, and the data-layer or gtag call that populates them
|
|
11
|
+
- GA4 user-property definitions: property name, scope (user vs. session), and the value being populated
|
|
12
|
+
- GA4 custom dimension and metric registrations and their mapped event parameters
|
|
13
|
+
- BigQuery export schema: table name, field list with data types, partition strategy, and any scheduled queries or deletion jobs
|
|
14
|
+
- IP anonymization setting (GA4 anonymizes by default; confirm the property has not overridden this via Measurement Protocol or server-side tagging)
|
|
15
|
+
- Linked product integrations (Google Ads, Search Console, Firebase) that may receive exported user data
|
|
16
|
+
|
|
17
|
+
If the user provides only a partial set, note which artifacts are absent and scope findings accordingly. Do not attempt to infer schema from event names alone.
|
|
18
|
+
|
|
19
|
+
This skill is scoped to what analytics platforms collect and retain internally. Outbound pixel payloads to ad networks are out of scope — defer to `marketing-pixel-data-leakage-review`.
|
|
20
|
+
|
|
21
|
+
### Step 2 — User-scoped custom dimension and user-property audit
|
|
22
|
+
|
|
23
|
+
Inspect every user-scoped custom dimension and user property for identifiers that link an analytics profile to a real-world person:
|
|
24
|
+
|
|
25
|
+
```text
|
|
26
|
+
# HIGH — user-scoped custom dimension maps GA4 user_pseudo_id to CRM contact ID
|
|
27
|
+
user_property: crm_contact_id = "C-00123456" # value from logged-in session
|
|
28
|
+
|
|
29
|
+
→ GA4 user_pseudo_id + crm_contact_id = identified natural person.
|
|
30
|
+
GA4 is now a personal-data processor for that contact.
|
|
31
|
+
Requires: documented lawful basis, DPA record of processing, and a valid
|
|
32
|
+
transfer mechanism if the BigQuery project is outside the EEA.
|
|
33
|
+
|
|
34
|
+
# LOWER RISK — session-scoped experiment variant; no persistent identifier
|
|
35
|
+
event_parameter: experiment_variant = "control" # session-scoped, no CRM link
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
Also flag:
|
|
39
|
+
- Persistent advertising identifiers passed as user properties (GCLID, FBCLID stored across sessions).
|
|
40
|
+
- Device fingerprint components (user-agent, screen resolution, timezone combined) stored as user properties.
|
|
41
|
+
- Email addresses or phone numbers collected in user properties, even in hashed form — still personal data.
|
|
42
|
+
|
|
43
|
+
### Step 3 — BigQuery export schema audit
|
|
44
|
+
|
|
45
|
+
For each table in the BigQuery export, assess the combination of fields and retention controls:
|
|
46
|
+
|
|
47
|
+
```text
|
|
48
|
+
# HIGH — raw export retains user_pseudo_id + geo.city + geo.region at full precision
|
|
49
|
+
# with no partition expiry and no anonymization transform
|
|
50
|
+
|
|
51
|
+
Table: events_YYYYMMDD
|
|
52
|
+
Fields: user_pseudo_id (STRING), geo.city (STRING), geo.region (STRING),
|
|
53
|
+
event_timestamp (INTEGER), event_name (STRING)
|
|
54
|
+
Partition expiry: NONE # rows never auto-deleted
|
|
55
|
+
Scheduled deletion job: NONE
|
|
56
|
+
|
|
57
|
+
→ user_pseudo_id is a persistent pseudonymous identifier.
|
|
58
|
+
Combined with geo.city + geo.region it can identify a natural person
|
|
59
|
+
in a small geography. GDPR applies. No ceiling on retention = violation
|
|
60
|
+
of storage limitation (Article 5(1)(e)).
|
|
61
|
+
|
|
62
|
+
# LOWER RISK — export anonymized before landing in BigQuery
|
|
63
|
+
Scheduled query: masks user_pseudo_id to k-anonymized cohort bucket
|
|
64
|
+
Partition expiry: 90 days aligned to GA4 retention setting
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
Check for:
|
|
68
|
+
- user_pseudo_id retention beyond the GA4 property's configured retention period.
|
|
69
|
+
- geo fields at city or finer precision without a coarsening transform.
|
|
70
|
+
- Absence of partition expiry or scheduled deletion query in the BigQuery dataset.
|
|
71
|
+
- Cross-project export to a dataset in a non-EEA GCP region without a valid SCCs or transfer mechanism documented in the DPA record.
|
|
72
|
+
|
|
73
|
+
### Step 4 — Data-retention period audit
|
|
74
|
+
|
|
75
|
+
Assess the GA4 property's retention settings against documented justification:
|
|
76
|
+
|
|
77
|
+
```text
|
|
78
|
+
# HIGH — retention set to 14 months (maximum); no documented justification
|
|
79
|
+
GA4 retention: User data = 14 months, Event data = 14 months
|
|
80
|
+
Justification in DPA record: NONE
|
|
81
|
+
|
|
82
|
+
→ GDPR Article 5(1)(e) requires retention only as long as necessary for the
|
|
83
|
+
stated purpose. The 14-month maximum is not an entitlement; it requires a
|
|
84
|
+
specific analytical purpose (e.g., year-over-year comparison) that justifies
|
|
85
|
+
the full period.
|
|
86
|
+
|
|
87
|
+
# COMPLIANT — 2 months; justification documented
|
|
88
|
+
GA4 retention: 2 months
|
|
89
|
+
DPA record entry: "Session and conversion attribution; 60-day window matches
|
|
90
|
+
last-click attribution window in ad platform; no year-over-year use case."
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
Also verify:
|
|
94
|
+
- Whether the BigQuery export enforces the same or shorter retention via partition expiry.
|
|
95
|
+
- Whether "Reset user data on new activity" is enabled — if so, the effective retention period may be much longer than the configured window for active users.
|
|
96
|
+
|
|
97
|
+
### Step 5 — Event-parameter PII audit
|
|
98
|
+
|
|
99
|
+
Inspect custom event parameters for content that exceeds the analytics collection purpose:
|
|
100
|
+
|
|
101
|
+
```text
|
|
102
|
+
# HIGH — search query parameter captures free-text; may contain PII
|
|
103
|
+
event: site_search
|
|
104
|
+
parameter: search_term = "{{DL - search_term}}" # raw dataLayer value
|
|
105
|
+
|
|
106
|
+
→ Free-text search queries frequently contain full names, email addresses,
|
|
107
|
+
medical terms, or financial account numbers typed by users.
|
|
108
|
+
Collecting raw search terms in GA4 is a data-minimization violation
|
|
109
|
+
unless the value is scrubbed before collection.
|
|
110
|
+
|
|
111
|
+
# HIGH — URL parameter includes email in query string
|
|
112
|
+
event: page_view
|
|
113
|
+
parameter: page_location = "https://example.com/reset?email=user@example.com"
|
|
114
|
+
|
|
115
|
+
→ URL-embedded PII is personal data regardless of intent.
|
|
116
|
+
Strip PII from page_location before it reaches GA4 using a tag-manager
|
|
117
|
+
URL-redaction variable or server-side tagging.
|
|
118
|
+
|
|
119
|
+
# COMPLIANT — search term replaced with a sanitized flag
|
|
120
|
+
event: site_search
|
|
121
|
+
parameter: search_performed = true # no content; confirms intent only
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
### Step 6 — Schema governance audit
|
|
125
|
+
|
|
126
|
+
Assess whether each custom event, parameter, and user property has documented ownership and purpose:
|
|
127
|
+
|
|
128
|
+
- Every custom dimension registered in a GA4 property should have: owner (team or role), collection purpose, retention justification, and a review date.
|
|
129
|
+
- Absence of governance metadata for any field is MEDIUM — it is a proxy indicator of speculative or abandoned collection that cannot be justified in a DPA record of processing.
|
|
130
|
+
- Flag any custom event or user property whose name does not map to a documented analytical use case in the artifact provided.
|
|
131
|
+
|
|
132
|
+
### Step 7 — Cross-border transfer assessment
|
|
133
|
+
|
|
134
|
+
If the BigQuery project or linked export destination is outside the EEA, assess the transfer mechanism:
|
|
135
|
+
|
|
136
|
+
- Standard Contractual Clauses (SCCs) between the controller and Google must be documented.
|
|
137
|
+
- The Austrian DSB (2022), French CNIL (2022), and Italian Garante (2022) have each found that Google Analytics transfers to US-based Google infrastructure violate GDPR Chapter V in the absence of adequacy or valid SCCs with sufficient supplementary measures.
|
|
138
|
+
- If no transfer mechanism is documented in the DPA record of processing, flag as HIGH.
|
|
139
|
+
|
|
140
|
+
### Step 8 — Produce the output
|
|
141
|
+
|
|
142
|
+
Format findings using the Output section below.
|
|
143
|
+
|
|
144
|
+
---
|
|
145
|
+
|
|
146
|
+
## Output
|
|
147
|
+
|
|
148
|
+
Return findings in this structure:
|
|
149
|
+
|
|
150
|
+
```
|
|
151
|
+
## Verdict
|
|
152
|
+
<one sentence: pass / needs work / critical issues found>
|
|
153
|
+
|
|
154
|
+
## Evidence level
|
|
155
|
+
<configuration export provided | schema provided | documentation-based | inference from missing element>
|
|
156
|
+
|
|
157
|
+
## Findings
|
|
158
|
+
|
|
159
|
+
### CRITICAL
|
|
160
|
+
- [C1] <finding title>: <description> — <remediation>
|
|
161
|
+
|
|
162
|
+
### HIGH
|
|
163
|
+
- [H1] <finding title>: <description> — <remediation>
|
|
164
|
+
|
|
165
|
+
### MEDIUM
|
|
166
|
+
- [M1] <finding title>: <description> — <remediation>
|
|
167
|
+
|
|
168
|
+
### LOW
|
|
169
|
+
- [L1] <finding title>: <description> — <remediation>
|
|
170
|
+
|
|
171
|
+
## Safe next actions
|
|
172
|
+
1. <action>
|
|
173
|
+
2. <action>
|
|
174
|
+
|
|
175
|
+
## Open questions
|
|
176
|
+
- <question requiring user clarification>
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
---
|
|
180
|
+
|
|
181
|
+
## Security and scope notes
|
|
182
|
+
|
|
183
|
+
- This is a static review of sanitized configuration exports and schema definitions. Never request live analytics data, raw event exports containing real user identifiers, GA4 admin credentials, BigQuery service-account keys, or OAuth tokens.
|
|
184
|
+
- Findings indicating cross-border transfer violations may require DPA notification or supervisory authority engagement — route remediation and legal assessment to qualified privacy counsel before acting on findings. Do not assess DPA notification obligations yourself.
|
|
185
|
+
- This skill is scoped to what analytics platforms collect and retain internally. Outbound pixel payloads transmitted to ad networks are out of scope — refer to `marketing-pixel-data-leakage-review`.
|
|
186
|
+
- When evidence is partial, scope each finding to what was provided and state the assumption explicitly.
|
|
187
|
+
- A GA4 configuration that is GDPR-compliant for EU users may still create obligations under CCPA/CPRA, LGPD, or other jurisdiction-specific laws — note the applicable framework but limit detailed analysis to GDPR unless the user specifies otherwise.
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: email-sender-authentication-review
|
|
3
|
+
description: Use this skill when reviewing DNS sender-authentication records for a marketing domain to identify policy gaps exposing campaigns to rejection, spoofing, or inbox displacement. Trigger when a user provides DNS TXT record exports for SPF, DKIM, DMARC, or BIMI, or asks whether their email authentication posture meets Google/Yahoo bulk-sender requirements, DMARC enforcement standards, CISA BOD 18-01 obligations, PCI DSS v4.0 Req 5.3.3, or whether their transactional or marketing emails are at risk of spoofing or bulk-sender quarantine.
|
|
4
|
+
allowed-tools: Read Grep Glob
|
|
5
|
+
metadata:
|
|
6
|
+
author: "github: Raishin"
|
|
7
|
+
version: "0.1.0"
|
|
8
|
+
updated: "2026-05-17"
|
|
9
|
+
category: compliance
|
|
10
|
+
lifecycle: experimental
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Email Sender Authentication Review
|
|
14
|
+
|
|
15
|
+
## Purpose
|
|
16
|
+
This skill reviews DNS sender-authentication records (SPF, DKIM, DMARC, BIMI) for a marketing domain and its ESP subdomains to identify policy gaps that expose email campaigns to rejection, spoofing, or inbox displacement. Email authentication failures have grown from a deliverability concern to a compliance obligation: Google and Yahoo bulk-sender requirements (enforced 2024) mandate DMARC alignment for senders exceeding 5,000 messages per day; CISA BOD 18-01 requires federal domains to reach DMARC `p=reject`; and PCI DSS v4.0 Requirement 5.3.3 requires anti-phishing controls for outbound email. A `p=none` DMARC policy with no roadmap to enforcement, a missing DKIM selector for a transactional ESP subdomain, or an SPF record exceeding the ten DNS-lookup limit all constitute policy gaps that range from HIGH spoofing exposure to deliverability failure. The review assesses the full authentication stack from a sanitized DNS record export and surfaces the gap, its severity, and the surgical fix.
|
|
17
|
+
|
|
18
|
+
## Lean operating rules
|
|
19
|
+
- Treat DMARC policy `p=none` with no enforcement on a domain sending bulk marketing email as HIGH — `p=none` provides monitoring only; spoofing is possible, and Google/Yahoo bulk-sender requirements treat senders without at least `p=none` plus DKIM alignment as quarantine candidates; the path to `p=quarantine` or `p=reject` must be explicit.
|
|
20
|
+
- Treat a missing DKIM selector for any active ESP or transactional subdomain as HIGH — emails sent through that path are unauthenticated, cannot pass DMARC alignment, and are treated as unsigned by receiving MTAs; automation and transactional flows are commonly the most impactful to revenue.
|
|
21
|
+
- Treat an SPF record that exceeds ten DNS lookup mechanisms (`include:`, `a:`, `mx:`, `ptr:`) as HIGH — RFC 7208 defines this as a permerror, which receiving MTAs treat as an SPF fail, blocking all mail from that domain that relies on SPF for DMARC alignment.
|
|
22
|
+
- Treat a DMARC record with `rua=` absent (no aggregate reporting URI) as MEDIUM — without aggregate reports, the operator cannot see what is aligning and what is failing; DMARC without visibility is unmanaged.
|
|
23
|
+
- Treat SPF records using `+all` (pass all) as HIGH — this negates SPF entirely by authorizing any sending source; the entire domain is open to spoofing regardless of which sources are explicitly listed.
|
|
24
|
+
- Treat DMARC `pct=` below 100 as MEDIUM when `p=quarantine` or `p=reject` is set — partial enforcement leaves a configured percentage of non-aligning mail unaffected by the policy and creates a false sense of full enforcement.
|
|
25
|
+
- Treat a BIMI record present without a corresponding VMC or CMC certificate as LOW — BIMI without a validated certificate is ignored by major mailbox providers that require certificate-backed BIMI.
|
|
26
|
+
- Flag the absence of DKIM key rotation documentation as MEDIUM — DKIM keys that have never been rotated accumulate risk; PCI DSS v4.0 Req 5.3.3 and general key-hygiene practice require rotation procedures to exist.
|
|
27
|
+
- Do not recommend removing an ESP's SPF include without first confirming a DKIM-only alignment path is available — SPF removal without DKIM coverage breaks DMARC alignment for that sending path.
|
|
28
|
+
- Label every finding with evidence basis: DNS record provided, documentation-based, or inference from absent record.
|
|
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
|
+
- SPF mechanism count and permerror risk assessment
|
|
37
|
+
- DKIM selector coverage assessment for all active sending paths
|
|
38
|
+
- DMARC policy and reporting configuration assessment
|
|
39
|
+
- DMARC alignment mode assessment (strict vs relaxed)
|
|
40
|
+
- BIMI and certificate assessment
|
|
41
|
+
- Bulk-sender requirement compliance status (Google/Yahoo)
|
|
42
|
+
- Severity-labelled finding list (critical / high / medium / low)
|
|
43
|
+
- Safe next actions
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "email-sender-authentication-review",
|
|
3
|
+
"name": "Email Sender Authentication Review",
|
|
4
|
+
"type": "skill",
|
|
5
|
+
"provider": "marketing",
|
|
6
|
+
"harnesses": ["codex", "claude-code", "cursor", "gemini", "kiro", "other"],
|
|
7
|
+
"summary": "Review DNS sender-authentication records (SPF, DKIM, DMARC, BIMI) for a marketing domain to identify policy gaps exposing campaigns to rejection, spoofing, or inbox displacement.",
|
|
8
|
+
"source_type": "original",
|
|
9
|
+
"official_docs": [
|
|
10
|
+
"https://datatracker.ietf.org/doc/html/rfc7489",
|
|
11
|
+
"https://support.google.com/mail/answer/81126",
|
|
12
|
+
"https://www.pcisecuritystandards.org/document_library/",
|
|
13
|
+
"https://www.cisa.gov/sites/default/files/publications/bod-18-01.pdf",
|
|
14
|
+
"https://datatracker.ietf.org/doc/html/rfc7208"
|
|
15
|
+
],
|
|
16
|
+
"security_notes": "Email authentication reviews work from sanitized DNS TXT record exports only. Never request live DMARC aggregate report XML, ESP account credentials, or sending-platform API keys. SPF, DKIM, and DMARC records are publicly resolvable; the artifact is the domain's own export, not live lookups against production DNS.",
|
|
17
|
+
"last_verified": "2026-05-17",
|
|
18
|
+
"path": "skills/marketing/email-sender-authentication-review",
|
|
19
|
+
"author": "github: Raishin",
|
|
20
|
+
"version": "0.1.0",
|
|
21
|
+
"lifecycle": "experimental"
|
|
22
|
+
}
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
# Workflow and Output Contract
|
|
2
|
+
|
|
3
|
+
## Workflow
|
|
4
|
+
|
|
5
|
+
### Step 1 — Collect inputs
|
|
6
|
+
|
|
7
|
+
Ask the user to provide the following as a sanitized DNS record export (replace real selector names with generic placeholders only if the user prefers; SPF/DKIM/DMARC records are public data but never request ESP credentials or DMARC aggregate XML):
|
|
8
|
+
- SPF TXT record for the root sending domain and all active ESP subdomains
|
|
9
|
+
- DKIM TXT record(s) identified by selector name (e.g., `selector1._domainkey.example.com IN TXT "v=DKIM1; k=rsa; p=..."`)
|
|
10
|
+
- DMARC TXT record at `_dmarc.example.com`
|
|
11
|
+
- BIMI TXT record at `default._bimi.example.com` and VMC/CMC certificate URL if present
|
|
12
|
+
- The list of all active ESP and transactional sending paths (e.g., Mailchimp, Salesforce Marketing Cloud, SendGrid transactional, Postmark) and whether each uses a subdomain or the root domain
|
|
13
|
+
|
|
14
|
+
If the user provides only partial records, note which paths are unassessed.
|
|
15
|
+
|
|
16
|
+
### Step 2 — SPF audit
|
|
17
|
+
|
|
18
|
+
Parse the SPF record from `v=spf1` through the terminating `all` mechanism:
|
|
19
|
+
|
|
20
|
+
1. Count every mechanism that requires a DNS lookup: `include:`, `a`, `mx`, `ptr`, `exists`. RFC 7208 mandates a hard limit of ten such lookups; exceeding it produces a permerror treated as an SPF fail by receiving MTAs.
|
|
21
|
+
2. Identify the `all` qualifier: `~all` (softfail), `-all` (hardfail), `+all` (pass all — HIGH), `?all` (neutral).
|
|
22
|
+
3. Identify any mechanisms that are redundant, deprecated (`ptr:`), or that enumerate IP ranges far wider than the actual sending infrastructure.
|
|
23
|
+
|
|
24
|
+
```text
|
|
25
|
+
# HIGH — SPF with +all negates all restrictions
|
|
26
|
+
v=spf1 include:esp1.com include:esp2.com +all
|
|
27
|
+
|
|
28
|
+
# HIGH — SPF with 13 DNS lookups; permerror on receipt
|
|
29
|
+
v=spf1 include:_spf.google.com include:sendgrid.net include:mail.zendesk.com
|
|
30
|
+
include:servers.mcsv.net include:spf.mailjet.com include:_spf.salesforce.com
|
|
31
|
+
include:postmarkapp.com include:emailsig.com include:mktomail.com
|
|
32
|
+
include:smtp.hubspot.net include:spf1.mailchimp.com include:esp12.com
|
|
33
|
+
include:sp.example.com ~all
|
|
34
|
+
# (13 include: mechanisms, each resolves to at least one more lookup → permerror)
|
|
35
|
+
|
|
36
|
+
# CORRECT — SPF with eight lookups and -all
|
|
37
|
+
v=spf1 include:_spf.google.com include:sendgrid.net include:postmarkapp.com -all
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
### Step 3 — DKIM audit
|
|
41
|
+
|
|
42
|
+
For each active sending path identified in Step 1:
|
|
43
|
+
- Confirm a DKIM selector exists and the TXT record is present and well-formed (`v=DKIM1`, key type, public key).
|
|
44
|
+
- Confirm the key length is at least 1024 bits; 2048 bits is recommended.
|
|
45
|
+
- Confirm the signing domain (`d=` tag in the DKIM signature) aligns with the `From:` domain at the level required by the DMARC alignment mode (relaxed: organizational domain match; strict: exact domain match).
|
|
46
|
+
- Flag any sending path with no DKIM selector as HIGH.
|
|
47
|
+
- Flag keys shorter than 1024 bits as HIGH (deprecated, breakable).
|
|
48
|
+
- Note whether key rotation documentation was provided; absence is MEDIUM.
|
|
49
|
+
|
|
50
|
+
```text
|
|
51
|
+
# HIGH — transactional ESP subdomain has no DKIM selector
|
|
52
|
+
tx.example.com: no DKIM TXT record found for any known selector
|
|
53
|
+
DMARC alignment for mail sent via tx.example.com: fails (no signature to align)
|
|
54
|
+
|
|
55
|
+
# CORRECT — selector and key present, 2048-bit key
|
|
56
|
+
selector2._domainkey.example.com IN TXT "v=DKIM1; k=rsa; p=MIIBIjANBgkqh..."
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
### Step 4 — DMARC audit
|
|
60
|
+
|
|
61
|
+
Parse the DMARC record at `_dmarc.<domain>`:
|
|
62
|
+
- `p=` (policy): `none`, `quarantine`, or `reject`. `none` provides monitoring only; it does not prevent spoofing or satisfy Google/Yahoo bulk-sender enforcement requirements when operating at scale.
|
|
63
|
+
- `pct=` (percentage): defaults to 100; values below 100 mean the policy applies to only that fraction of non-aligning mail.
|
|
64
|
+
- `rua=` (aggregate report URI): absence means no visibility into alignment failures.
|
|
65
|
+
- `ruf=` (forensic report URI): optional but useful for debugging.
|
|
66
|
+
- `aspf=` and `adkim=` (alignment modes): `r` (relaxed, default) or `s` (strict); strict requires an exact domain match between the `From:` header and the SPF/DKIM signing domain.
|
|
67
|
+
- `sp=` (subdomain policy): defaults to the `p=` value if absent; explicit `sp=reject` is recommended when subdomains are not used for sending.
|
|
68
|
+
|
|
69
|
+
```text
|
|
70
|
+
# HIGH — p=none with no enforcement path
|
|
71
|
+
_dmarc.example.com IN TXT "v=DMARC1; p=none; rua=mailto:dmarc@example.com"
|
|
72
|
+
→ spoofing is possible; Google/Yahoo bulk-sender requirements not satisfied for enforcement
|
|
73
|
+
|
|
74
|
+
# MEDIUM — p=quarantine with pct=10 and no ruf
|
|
75
|
+
_dmarc.example.com IN TXT "v=DMARC1; p=quarantine; pct=10; rua=mailto:dmarc@example.com"
|
|
76
|
+
→ only 10% of failing mail is quarantined; 90% is unaffected
|
|
77
|
+
|
|
78
|
+
# CORRECT — p=reject, full enforcement, reporting configured
|
|
79
|
+
_dmarc.example.com IN TXT "v=DMARC1; p=reject; pct=100; rua=mailto:dmarc@example.com; ruf=mailto:forensic@example.com"
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
### Step 5 — DMARC alignment verification
|
|
83
|
+
|
|
84
|
+
DMARC requires at least one of SPF or DKIM to align with the `From:` header domain:
|
|
85
|
+
- For SPF alignment: the envelope `MAIL FROM` domain must match the `From:` header domain at the configured alignment level.
|
|
86
|
+
- For DKIM alignment: the `d=` tag in the DKIM signature must match the `From:` header domain at the configured level.
|
|
87
|
+
- If neither SPF nor DKIM aligns, DMARC fails regardless of `p=` value — flag as HIGH if structural misalignment is evident from the record set.
|
|
88
|
+
|
|
89
|
+
### Step 6 — BIMI and certificate audit
|
|
90
|
+
|
|
91
|
+
If a BIMI record is present at `default._bimi.<domain>`:
|
|
92
|
+
- Confirm `v=BIMI1; l=<logo-url>; a=<certificate-url>` syntax.
|
|
93
|
+
- Confirm the certificate URL resolves to a VMC (Verified Mark Certificate) or CMC (Common Mark Certificate).
|
|
94
|
+
- Without a VMC/CMC, BIMI display is ignored by Gmail, Yahoo, and Apple Mail — flag as LOW.
|
|
95
|
+
- If no BIMI record is present, note it as informational (not a deficiency unless the user has a BIMI adoption goal).
|
|
96
|
+
|
|
97
|
+
### Step 7 — Bulk-sender compliance assessment
|
|
98
|
+
|
|
99
|
+
Assess compliance with Google and Yahoo bulk-sender requirements (enforced Feb 2024 for Google, June 2024 for Yahoo):
|
|
100
|
+
- DMARC record present at organizational domain level: required.
|
|
101
|
+
- SPF or DKIM alignment passing: required.
|
|
102
|
+
- Spam complaint rate below 0.10% (0.08% recommended): not assessable from DNS records alone — note as out-of-scope.
|
|
103
|
+
- One-click unsubscribe (RFC 8058 `List-Unsubscribe-Post` header): not assessable from DNS records — note as out-of-scope.
|
|
104
|
+
|
|
105
|
+
Summarize the DNS-assessable compliance gap clearly.
|
|
106
|
+
|
|
107
|
+
### Step 8 — Produce the output
|
|
108
|
+
|
|
109
|
+
Format findings using the Output format section below.
|
|
110
|
+
|
|
111
|
+
---
|
|
112
|
+
|
|
113
|
+
## Output format
|
|
114
|
+
|
|
115
|
+
```
|
|
116
|
+
## Verdict
|
|
117
|
+
<one sentence: pass / needs work / critical issues found>
|
|
118
|
+
|
|
119
|
+
## Evidence level
|
|
120
|
+
<DNS record provided | documentation-based | inference from absent record>
|
|
121
|
+
|
|
122
|
+
## Findings
|
|
123
|
+
|
|
124
|
+
### CRITICAL
|
|
125
|
+
- [C1] <finding title>: <description> — <remediation>
|
|
126
|
+
|
|
127
|
+
### HIGH
|
|
128
|
+
- [H1] <finding title>: <description> — <remediation>
|
|
129
|
+
|
|
130
|
+
### MEDIUM
|
|
131
|
+
- [M1] <finding title>: <description> — <remediation>
|
|
132
|
+
|
|
133
|
+
### LOW
|
|
134
|
+
- [L1] <finding title>: <description> — <remediation>
|
|
135
|
+
|
|
136
|
+
## Safe next actions
|
|
137
|
+
1. <action>
|
|
138
|
+
2. <action>
|
|
139
|
+
|
|
140
|
+
## Open questions
|
|
141
|
+
- <question requiring user clarification>
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
---
|
|
145
|
+
|
|
146
|
+
## Security and scope notes
|
|
147
|
+
|
|
148
|
+
- This is a static review. DNS records are public, but never request ESP account credentials, DMARC aggregate report XML containing real email metadata, or sending-platform API keys.
|
|
149
|
+
- A domain at `p=none` is exploitable for spoofing attacks and phishing campaigns impersonating the brand. Surface this risk explicitly; do not understate it as a deliverability issue only.
|
|
150
|
+
- When evidence is partial (e.g., SPF record provided but no DKIM selectors listed), scope each finding to what was provided and state the inference basis explicitly.
|
|
151
|
+
- Do not recommend removing an active ESP's SPF `include:` to solve the lookup-count problem without first confirming DKIM-only alignment is available for that path — removing SPF coverage without DKIM will break DMARC alignment.
|
|
152
|
+
- Key rotation guidance is advisory hygiene; the urgency depends on key age and organizational risk tolerance; surface it as MEDIUM, not blocking.
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: eu-ai-act-marketing-system-review
|
|
3
|
+
description: Use this skill when reviewing a marketing AI system's description card against EU AI Act risk-tier criteria to classify the system (prohibited / high-risk / limited-risk / minimal-risk), flag documentation obligations, and identify deployment-readiness gaps before the August 2, 2026 full-enforcement date. Trigger when a user provides an AI system description card covering system purpose, input data types, output decisions, human-oversight mechanism, deployment geography, and whether it profiles natural persons — or when they ask whether their marketing AI tool, lead-scoring model, content personalization engine, or automated ad-decisioning system requires a conformity assessment or transparency notice under EU AI Act Regulation 2024/1689.
|
|
4
|
+
allowed-tools: Read Grep Glob
|
|
5
|
+
metadata:
|
|
6
|
+
author: "github: Raishin"
|
|
7
|
+
version: "0.1.0"
|
|
8
|
+
updated: "2026-05-17"
|
|
9
|
+
category: compliance
|
|
10
|
+
lifecycle: experimental
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# EU AI Act Marketing System Review
|
|
14
|
+
|
|
15
|
+
## Purpose
|
|
16
|
+
This skill reviews a marketing AI system's description card against EU AI Act Regulation 2024/1689 risk-tier criteria to classify the system, flag documentation obligations, and identify deployment-readiness gaps before the August 2, 2026 full-enforcement date. Marketing AI systems — lead-quality scorers, content personalization engines, urgency-calibration models, lookalike generators, and automated bidding optimizers — operate at the boundary between Article 5 prohibited practices (subliminal manipulation, exploitation of vulnerabilities), Annex III high-risk systems (AI for access to private services, creditworthiness, and employment when profiling natural persons), and limited-risk systems subject to transparency obligations only. Misclassification is itself a compliance gap: a system internally labeled "low risk" that profiles behavioral and demographic signals for credit or employment routing is Annex III high-risk and requires a conformity assessment. The review ingests the description card, maps system characteristics to the risk taxonomy, flags missing documentation (technical documentation Article 11, conformity assessment Article 43, transparency obligations Article 13/52), and identifies the August 2026 enforcement timeline pressure.
|
|
17
|
+
|
|
18
|
+
## Lean operating rules
|
|
19
|
+
- Treat a system that profiles natural persons using behavioral or demographic signals to produce scores, rankings, or routing decisions used in access to credit, insurance, employment, or essential private services as HIGH — this maps to Annex III categories and requires a conformity assessment, CE marking, and registration in the EU AI database before deployment.
|
|
20
|
+
- Treat urgency or scarcity signals calibrated by real-time engagement data with no human review gate as HIGH — this is a candidate for Article 5(1)(b) prohibited subliminal manipulation or exploitation of psychological vulnerabilities; route to qualified legal counsel without making the prohibition determination yourself.
|
|
21
|
+
- Treat a system classified internally as "low risk" but routing decisions to downstream agents or automated processes with no human override capability as HIGH — the absence of a meaningful human-oversight mechanism invalidates a limited-risk designation under Article 14 requirements.
|
|
22
|
+
- Treat a system that processes biometric, health, racial/ethnic-origin, political-opinion, or religious-belief data as input features or inferred labels for marketing segmentation as HIGH — these are special-category data under GDPR Article 9 and trigger heightened AI Act scrutiny as potential Annex III characteristics.
|
|
23
|
+
- Treat the absence of technical documentation (Article 11) covering system purpose, training data provenance, performance metrics, and limitations for any non-minimal-risk system as HIGH — documentation is a prerequisite for conformity assessment, not a post-deployment obligation.
|
|
24
|
+
- Treat a system with no transparency notice or user-facing disclosure of automated decision-making where the EU AI Act or GDPR Article 22 requires one as HIGH — undisclosed profiling that produces legal or similarly significant effects is both a GDPR and an AI Act violation.
|
|
25
|
+
- Flag a system whose August 2026 enforcement readiness is unknown — no documented conformity-assessment timeline, no assigned responsible person, no EU registration planned — as MEDIUM when the system is potentially high-risk.
|
|
26
|
+
- Flag general-purpose AI models integrated into marketing workflows without a documented system-level risk assessment as MEDIUM — the GPAI provisions under Title VIII require providers to assess downstream systemic risk.
|
|
27
|
+
- Flag systems that collect or process behavioral signals at scale (>1 million natural persons) without a documented fundamental rights impact assessment as MEDIUM.
|
|
28
|
+
- Do not classify a system as prohibited under Article 5 without explicit instruction to qualified counsel; surface the risk and route the determination.
|
|
29
|
+
- Label every finding with evidence basis: description card provided, documentation-based, or inference from missing information.
|
|
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
|
+
- System risk-tier classification (prohibited / high-risk Annex III / limited-risk / minimal-risk) with rationale
|
|
38
|
+
- Profiling and natural-person assessment (Article 22 GDPR intersection)
|
|
39
|
+
- Human-oversight mechanism assessment (Article 14)
|
|
40
|
+
- Documentation gap inventory (Article 11 technical docs, Article 43 conformity assessment, Article 13/52 transparency)
|
|
41
|
+
- August 2026 enforcement readiness assessment
|
|
42
|
+
- Severity-labelled finding list (critical / high / medium / low)
|
|
43
|
+
- Safe next actions
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "eu-ai-act-marketing-system-review",
|
|
3
|
+
"name": "EU AI Act Marketing System Review",
|
|
4
|
+
"type": "skill",
|
|
5
|
+
"provider": "marketing",
|
|
6
|
+
"harnesses": ["codex", "claude-code", "cursor", "gemini", "kiro", "other"],
|
|
7
|
+
"summary": "Review a marketing AI system description card against EU AI Act Regulation 2024/1689 risk-tier criteria — classify the system, flag documentation obligations (Articles 11, 13, 14, 43), and identify deployment-readiness gaps before the August 2, 2026 full-enforcement date.",
|
|
8
|
+
"source_type": "original",
|
|
9
|
+
"official_docs": [
|
|
10
|
+
"https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32024R1689",
|
|
11
|
+
"https://digital-strategy.ec.europa.eu/en/policies/regulatory-framework-ai",
|
|
12
|
+
"https://www.europarl.europa.eu/topics/en/article/20230601STO93804/eu-ai-act-first-regulation-on-artificial-intelligence",
|
|
13
|
+
"https://edpb.europa.eu/our-work-tools/our-documents/guidelines/guidelines-022023-technical-scope-art-22-gdpr_en",
|
|
14
|
+
"https://artificialintelligenceact.eu/the-act/"
|
|
15
|
+
],
|
|
16
|
+
"security_notes": "EU AI Act classification determines conformity assessment, CE marking, and EU AI database registration obligations — misclassification is itself a compliance gap. Review works from sanitized AI system description cards only; never request model weights, training datasets, internal performance logs, or vendor system-access credentials. Legal determination of Article 5 prohibited practices is routed to qualified counsel.",
|
|
17
|
+
"last_verified": "2026-05-17",
|
|
18
|
+
"path": "skills/marketing/eu-ai-act-marketing-system-review",
|
|
19
|
+
"author": "github: Raishin",
|
|
20
|
+
"version": "0.1.0"
|
|
21
|
+
}
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
# Workflow and Output Contract
|
|
2
|
+
|
|
3
|
+
## Workflow
|
|
4
|
+
|
|
5
|
+
### Step 1 — Collect inputs
|
|
6
|
+
|
|
7
|
+
Ask the user to provide an AI system description card as a sanitized document (no model weights, no training data, no vendor credentials). The description card should cover:
|
|
8
|
+
- System purpose and primary use case (what decision or output does it produce?)
|
|
9
|
+
- Input data types (behavioral signals, demographic data, purchase history, engagement metrics, etc.)
|
|
10
|
+
- Output type (score, ranking, binary decision, content recommendation, audience segment)
|
|
11
|
+
- Human-oversight mechanism (is there a human review gate before the output is acted upon?)
|
|
12
|
+
- Deployment geography (EU deployment or EU-resident data subjects?)
|
|
13
|
+
- Whether the system profiles natural persons (produces an evaluation of personal aspects)
|
|
14
|
+
- Internal risk classification, if any
|
|
15
|
+
- Whether the system is integrated into a downstream automated decision chain
|
|
16
|
+
|
|
17
|
+
If the user provides only a partial description card, note which elements are absent and scope findings accordingly.
|
|
18
|
+
|
|
19
|
+
### Step 2 — Determine EU AI Act applicability
|
|
20
|
+
|
|
21
|
+
Confirm whether the Act applies:
|
|
22
|
+
- The system is placed on the market in the EU, used in the EU, or its outputs affect EU-resident natural persons.
|
|
23
|
+
- The operator or deployer is subject to EU jurisdiction, or the provider targets the EU market.
|
|
24
|
+
|
|
25
|
+
If applicability is uncertain, flag as MEDIUM and recommend a legal-jurisdiction assessment.
|
|
26
|
+
|
|
27
|
+
### Step 3 — Article 5 prohibited-practice screening
|
|
28
|
+
|
|
29
|
+
Screen the system description for candidate prohibited practices before proceeding to risk-tier classification:
|
|
30
|
+
|
|
31
|
+
```text
|
|
32
|
+
# Article 5(1)(a) — Subliminal manipulation
|
|
33
|
+
System uses techniques that influence behavior below the threshold of conscious awareness,
|
|
34
|
+
causing decisions persons would not have made otherwise — e.g., urgency signals calibrated
|
|
35
|
+
to anxiety response patterns without the user's knowledge.
|
|
36
|
+
|
|
37
|
+
# Article 5(1)(b) — Exploitation of vulnerabilities
|
|
38
|
+
System exploits specific vulnerabilities of a group (age, disability, social/economic situation)
|
|
39
|
+
to distort behavior in a way that causes harm — e.g., targeting financially distressed segments
|
|
40
|
+
with high-interest offers optimized on engagement signals from that population.
|
|
41
|
+
|
|
42
|
+
# Article 5(1)(e)/(f) — Social scoring / emotion recognition in workplace or public space
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
If any candidate applies, flag as HIGH and route the prohibited-practice determination to qualified legal counsel. Do not determine prohibition yourself.
|
|
46
|
+
|
|
47
|
+
### Step 4 — Annex III high-risk classification
|
|
48
|
+
|
|
49
|
+
Map system characteristics to Annex III categories relevant to marketing AI:
|
|
50
|
+
|
|
51
|
+
```text
|
|
52
|
+
Annex III(1) — Biometric categorisation that infers sensitive characteristics
|
|
53
|
+
Annex III(3) — AI in education or vocational training affecting access
|
|
54
|
+
Annex III(4) — Employment, workers management, access to self-employment
|
|
55
|
+
Annex III(5) — Access to and enjoyment of essential private services and public services
|
|
56
|
+
→ creditworthiness scoring, insurance risk, financial product access
|
|
57
|
+
Annex III(6) — Law enforcement (typically out of scope for marketing)
|
|
58
|
+
Annex III(8) — Administration of justice / democratic processes
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
A marketing AI system that profiles natural persons to determine or influence their access to credit, insurance, employment, or essential services maps to Annex III(5) or Annex III(4). Classify as HIGH-RISK.
|
|
62
|
+
|
|
63
|
+
```text
|
|
64
|
+
# HIGH — lead-quality scorer using behavioral + demographic signals, output routes to credit team
|
|
65
|
+
System purpose: score leads for mortgage pre-qualification routing
|
|
66
|
+
Input: browsing behavior, inferred income tier, device type, engagement rate
|
|
67
|
+
Output: lead-quality score → routed to underwriting queue or rejected
|
|
68
|
+
Classification: Annex III(5) — access to essential private services (credit/mortgage)
|
|
69
|
+
Obligation: Technical documentation (Art. 11), conformity assessment (Art. 43),
|
|
70
|
+
EU AI database registration (Art. 71), transparency to affected persons (Art. 13)
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
### Step 5 — Limited-risk and transparency-only assessment
|
|
74
|
+
|
|
75
|
+
For systems that do not meet Annex III criteria, assess whether limited-risk transparency obligations apply:
|
|
76
|
+
|
|
77
|
+
- Article 52(1): Systems interacting with natural persons must disclose they are AI (chatbots, virtual advisors).
|
|
78
|
+
- Article 52(3): Deep fake / synthetic content must be disclosed as artificially generated.
|
|
79
|
+
- Article 52(4): Emotion recognition or biometric categorisation systems must notify the persons exposed.
|
|
80
|
+
|
|
81
|
+
```text
|
|
82
|
+
# MEDIUM — AI chatbot on marketing site with no AI-disclosure notice
|
|
83
|
+
Obligation: Article 52(1) transparency notice required before interaction begins.
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
### Step 6 — Human oversight and Article 14 assessment
|
|
87
|
+
|
|
88
|
+
Assess whether the system's declared human-oversight mechanism satisfies Article 14 for high-risk systems:
|
|
89
|
+
|
|
90
|
+
```text
|
|
91
|
+
# HIGH — "human in the loop" flag declared but system routes decisions to automated downstream agents
|
|
92
|
+
The human review gate must be meaningful: the human must be able to understand the output,
|
|
93
|
+
detect failures, and override or halt the system. Rubber-stamp review with no override capability
|
|
94
|
+
does not satisfy Article 14.
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
### Step 7 — Documentation gap inventory
|
|
98
|
+
|
|
99
|
+
For any non-minimal-risk system, enumerate required documentation and flag gaps:
|
|
100
|
+
|
|
101
|
+
| Obligation | Article | Status |
|
|
102
|
+
|---|---|---|
|
|
103
|
+
| Technical documentation | Art. 11 | Present / Absent / Partial |
|
|
104
|
+
| Conformity assessment | Art. 43 | Present / Absent / Planned |
|
|
105
|
+
| EU AI database registration | Art. 71 | Present / Absent / Not started |
|
|
106
|
+
| Transparency notice (users) | Art. 13/52 | Present / Absent |
|
|
107
|
+
| Fundamental rights impact assessment | Art. 27 | Present / Absent |
|
|
108
|
+
| Responsible person designation | Art. 26 | Present / Absent |
|
|
109
|
+
|
|
110
|
+
### Step 8 — August 2026 enforcement readiness check
|
|
111
|
+
|
|
112
|
+
Regulation 2024/1689 entered into force August 1, 2024. Key milestones:
|
|
113
|
+
- February 2, 2025: Prohibited practices (Article 5) enforceable.
|
|
114
|
+
- August 2, 2025: GPAI and governance provisions enforceable.
|
|
115
|
+
- August 2, 2026: All provisions including high-risk obligations enforceable.
|
|
116
|
+
|
|
117
|
+
Flag any high-risk system with no documented conformity-assessment timeline, no responsible person, or no EU AI database registration as MEDIUM (if enforcement date is future) or HIGH (if enforcement date has passed at time of review).
|
|
118
|
+
|
|
119
|
+
### Step 9 — Produce the output
|
|
120
|
+
|
|
121
|
+
Format findings using the Output section below.
|
|
122
|
+
|
|
123
|
+
---
|
|
124
|
+
|
|
125
|
+
## Output
|
|
126
|
+
|
|
127
|
+
Return findings in this structure:
|
|
128
|
+
|
|
129
|
+
```
|
|
130
|
+
## Verdict
|
|
131
|
+
<one sentence: pass / needs work / critical issues found>
|
|
132
|
+
|
|
133
|
+
## Evidence level
|
|
134
|
+
<description card provided | documentation-based | inference>
|
|
135
|
+
|
|
136
|
+
## Risk-tier classification
|
|
137
|
+
<Prohibited (Art. 5) candidate | High-risk Annex III | Limited-risk (Art. 52) | Minimal-risk>
|
|
138
|
+
<rationale: which Annex III category or Article 5 provision applies and why>
|
|
139
|
+
|
|
140
|
+
## Documentation gap inventory
|
|
141
|
+
<table: obligation | article | status>
|
|
142
|
+
|
|
143
|
+
## Findings
|
|
144
|
+
|
|
145
|
+
### CRITICAL
|
|
146
|
+
- [C1] <finding title>: <description> — <remediation>
|
|
147
|
+
|
|
148
|
+
### HIGH
|
|
149
|
+
- [H1] <finding title>: <description> — <remediation>
|
|
150
|
+
|
|
151
|
+
### MEDIUM
|
|
152
|
+
- [M1] <finding title>: <description> — <remediation>
|
|
153
|
+
|
|
154
|
+
### LOW
|
|
155
|
+
- [L1] <finding title>: <description> — <remediation>
|
|
156
|
+
|
|
157
|
+
## August 2026 enforcement readiness
|
|
158
|
+
<summary of gaps and timeline pressure>
|
|
159
|
+
|
|
160
|
+
## Safe next actions
|
|
161
|
+
1. <action>
|
|
162
|
+
2. <action>
|
|
163
|
+
|
|
164
|
+
## Open questions
|
|
165
|
+
- <question requiring user clarification>
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
---
|
|
169
|
+
|
|
170
|
+
## Security and scope notes
|
|
171
|
+
|
|
172
|
+
- This is a static review. Never request model weights, training datasets, internal performance logs, or vendor system-access credentials. Work from sanitized description cards only.
|
|
173
|
+
- The prohibited-practice determination under Article 5 is a legal conclusion — flag the candidate risk and route to qualified legal counsel rather than deciding it.
|
|
174
|
+
- EU AI Act obligations are in addition to, not instead of, GDPR obligations. A system that triggers Annex III also implicates GDPR Article 22, Article 35 DPIA obligations, and special-category data restrictions.
|
|
175
|
+
- August 2026 is a hard enforcement deadline; systems requiring conformity assessments need lead time. Flag timeline pressure explicitly.
|
|
176
|
+
- When evidence is partial, scope each finding to what was provided and state the assumption explicitly.
|