@raishin/vanguard-frontier-agentic 2.0.0 → 2.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (223) hide show
  1. package/.claude-plugin/plugin.json +14 -0
  2. package/.cursor-plugin/plugin.json +14 -0
  3. package/.github/plugin/marketplace.json +1 -1
  4. package/README.md +7 -2
  5. package/agents/marketing/README.md +44 -0
  6. package/agents/marketing/ai-advertising-targeting-fairness-review-agent/AGENT.md +53 -0
  7. package/agents/marketing/ai-advertising-targeting-fairness-review-agent/harnesses/claude-code.agent.md +36 -0
  8. package/agents/marketing/ai-advertising-targeting-fairness-review-agent/harnesses/codex.toml +33 -0
  9. package/agents/marketing/ai-advertising-targeting-fairness-review-agent/harnesses/copilot.agent.md +36 -0
  10. package/agents/marketing/ai-advertising-targeting-fairness-review-agent/harnesses/cursor.agent.md +36 -0
  11. package/agents/marketing/ai-advertising-targeting-fairness-review-agent/harnesses/gemini.agent.md +36 -0
  12. package/agents/marketing/ai-advertising-targeting-fairness-review-agent/harnesses/kiro-cli.agent.json +5 -0
  13. package/agents/marketing/ai-advertising-targeting-fairness-review-agent/harnesses/kiro-ide.agent.md +36 -0
  14. package/agents/marketing/ai-advertising-targeting-fairness-review-agent/metadata.json +31 -0
  15. package/agents/marketing/analytics-data-minimization-review-agent/AGENT.md +51 -0
  16. package/agents/marketing/analytics-data-minimization-review-agent/harnesses/claude-code.agent.md +34 -0
  17. package/agents/marketing/analytics-data-minimization-review-agent/harnesses/codex.toml +33 -0
  18. package/agents/marketing/analytics-data-minimization-review-agent/harnesses/copilot.agent.md +34 -0
  19. package/agents/marketing/analytics-data-minimization-review-agent/harnesses/cursor.agent.md +34 -0
  20. package/agents/marketing/analytics-data-minimization-review-agent/harnesses/gemini.agent.md +34 -0
  21. package/agents/marketing/analytics-data-minimization-review-agent/harnesses/kiro-cli.agent.json +5 -0
  22. package/agents/marketing/analytics-data-minimization-review-agent/harnesses/kiro-ide.agent.md +34 -0
  23. package/agents/marketing/analytics-data-minimization-review-agent/metadata.json +31 -0
  24. package/agents/marketing/email-sender-authentication-review-agent/AGENT.md +50 -0
  25. package/agents/marketing/email-sender-authentication-review-agent/harnesses/claude-code.agent.md +33 -0
  26. package/agents/marketing/email-sender-authentication-review-agent/harnesses/codex.toml +32 -0
  27. package/agents/marketing/email-sender-authentication-review-agent/harnesses/copilot.agent.md +33 -0
  28. package/agents/marketing/email-sender-authentication-review-agent/harnesses/cursor.agent.md +33 -0
  29. package/agents/marketing/email-sender-authentication-review-agent/harnesses/gemini.agent.md +33 -0
  30. package/agents/marketing/email-sender-authentication-review-agent/harnesses/kiro-cli.agent.json +5 -0
  31. package/agents/marketing/email-sender-authentication-review-agent/harnesses/kiro-ide.agent.md +33 -0
  32. package/agents/marketing/email-sender-authentication-review-agent/metadata.json +31 -0
  33. package/agents/marketing/eu-ai-act-marketing-system-review-agent/AGENT.md +54 -0
  34. package/agents/marketing/eu-ai-act-marketing-system-review-agent/harnesses/claude-code.agent.md +37 -0
  35. package/agents/marketing/eu-ai-act-marketing-system-review-agent/harnesses/codex.toml +33 -0
  36. package/agents/marketing/eu-ai-act-marketing-system-review-agent/harnesses/copilot.agent.md +37 -0
  37. package/agents/marketing/eu-ai-act-marketing-system-review-agent/harnesses/cursor.agent.md +37 -0
  38. package/agents/marketing/eu-ai-act-marketing-system-review-agent/harnesses/gemini.agent.md +37 -0
  39. package/agents/marketing/eu-ai-act-marketing-system-review-agent/harnesses/kiro-cli.agent.json +5 -0
  40. package/agents/marketing/eu-ai-act-marketing-system-review-agent/harnesses/kiro-ide.agent.md +37 -0
  41. package/agents/marketing/eu-ai-act-marketing-system-review-agent/metadata.json +31 -0
  42. package/agents/marketing/influencer-disclosure-compliance-review-agent/AGENT.md +52 -0
  43. package/agents/marketing/influencer-disclosure-compliance-review-agent/harnesses/claude-code.agent.md +35 -0
  44. package/agents/marketing/influencer-disclosure-compliance-review-agent/harnesses/codex.toml +33 -0
  45. package/agents/marketing/influencer-disclosure-compliance-review-agent/harnesses/copilot.agent.md +35 -0
  46. package/agents/marketing/influencer-disclosure-compliance-review-agent/harnesses/cursor.agent.md +35 -0
  47. package/agents/marketing/influencer-disclosure-compliance-review-agent/harnesses/gemini.agent.md +35 -0
  48. package/agents/marketing/influencer-disclosure-compliance-review-agent/harnesses/kiro-cli.agent.json +5 -0
  49. package/agents/marketing/influencer-disclosure-compliance-review-agent/harnesses/kiro-ide.agent.md +35 -0
  50. package/agents/marketing/influencer-disclosure-compliance-review-agent/metadata.json +31 -0
  51. package/agents/marketing/lookalike-audience-upload-compliance-review-agent/AGENT.md +54 -0
  52. package/agents/marketing/lookalike-audience-upload-compliance-review-agent/harnesses/claude-code.agent.md +37 -0
  53. package/agents/marketing/lookalike-audience-upload-compliance-review-agent/harnesses/codex.toml +34 -0
  54. package/agents/marketing/lookalike-audience-upload-compliance-review-agent/harnesses/copilot.agent.md +37 -0
  55. package/agents/marketing/lookalike-audience-upload-compliance-review-agent/harnesses/cursor.agent.md +37 -0
  56. package/agents/marketing/lookalike-audience-upload-compliance-review-agent/harnesses/gemini.agent.md +37 -0
  57. package/agents/marketing/lookalike-audience-upload-compliance-review-agent/harnesses/kiro-cli.agent.json +5 -0
  58. package/agents/marketing/lookalike-audience-upload-compliance-review-agent/harnesses/kiro-ide.agent.md +37 -0
  59. package/agents/marketing/lookalike-audience-upload-compliance-review-agent/metadata.json +31 -0
  60. package/agents/marketing/marketing-consent-data-collection-review-agent/AGENT.md +51 -0
  61. package/agents/marketing/marketing-consent-data-collection-review-agent/harnesses/claude-code.agent.md +34 -0
  62. package/agents/marketing/marketing-consent-data-collection-review-agent/harnesses/codex.toml +33 -0
  63. package/agents/marketing/marketing-consent-data-collection-review-agent/harnesses/copilot.agent.md +34 -0
  64. package/agents/marketing/marketing-consent-data-collection-review-agent/harnesses/cursor.agent.md +34 -0
  65. package/agents/marketing/marketing-consent-data-collection-review-agent/harnesses/gemini.agent.md +34 -0
  66. package/agents/marketing/marketing-consent-data-collection-review-agent/harnesses/kiro-cli.agent.json +5 -0
  67. package/agents/marketing/marketing-consent-data-collection-review-agent/harnesses/kiro-ide.agent.md +34 -0
  68. package/agents/marketing/marketing-consent-data-collection-review-agent/metadata.json +31 -0
  69. package/agents/marketing/marketing-conversion-flow-dark-pattern-review-agent/AGENT.md +51 -0
  70. package/agents/marketing/marketing-conversion-flow-dark-pattern-review-agent/harnesses/claude-code.agent.md +34 -0
  71. package/agents/marketing/marketing-conversion-flow-dark-pattern-review-agent/harnesses/codex.toml +33 -0
  72. package/agents/marketing/marketing-conversion-flow-dark-pattern-review-agent/harnesses/copilot.agent.md +34 -0
  73. package/agents/marketing/marketing-conversion-flow-dark-pattern-review-agent/harnesses/cursor.agent.md +34 -0
  74. package/agents/marketing/marketing-conversion-flow-dark-pattern-review-agent/harnesses/gemini.agent.md +34 -0
  75. package/agents/marketing/marketing-conversion-flow-dark-pattern-review-agent/harnesses/kiro-cli.agent.json +5 -0
  76. package/agents/marketing/marketing-conversion-flow-dark-pattern-review-agent/harnesses/kiro-ide.agent.md +34 -0
  77. package/agents/marketing/marketing-conversion-flow-dark-pattern-review-agent/metadata.json +31 -0
  78. package/agents/marketing/marketing-email-list-retention-review-agent/AGENT.md +50 -0
  79. package/agents/marketing/marketing-email-list-retention-review-agent/harnesses/claude-code.agent.md +33 -0
  80. package/agents/marketing/marketing-email-list-retention-review-agent/harnesses/codex.toml +32 -0
  81. package/agents/marketing/marketing-email-list-retention-review-agent/harnesses/copilot.agent.md +33 -0
  82. package/agents/marketing/marketing-email-list-retention-review-agent/harnesses/cursor.agent.md +33 -0
  83. package/agents/marketing/marketing-email-list-retention-review-agent/harnesses/gemini.agent.md +33 -0
  84. package/agents/marketing/marketing-email-list-retention-review-agent/harnesses/kiro-cli.agent.json +5 -0
  85. package/agents/marketing/marketing-email-list-retention-review-agent/harnesses/kiro-ide.agent.md +33 -0
  86. package/agents/marketing/marketing-email-list-retention-review-agent/metadata.json +31 -0
  87. package/agents/marketing/marketing-gpc-signal-honoring-review-agent/AGENT.md +50 -0
  88. package/agents/marketing/marketing-gpc-signal-honoring-review-agent/harnesses/claude-code.agent.md +33 -0
  89. package/agents/marketing/marketing-gpc-signal-honoring-review-agent/harnesses/codex.toml +32 -0
  90. package/agents/marketing/marketing-gpc-signal-honoring-review-agent/harnesses/copilot.agent.md +33 -0
  91. package/agents/marketing/marketing-gpc-signal-honoring-review-agent/harnesses/cursor.agent.md +33 -0
  92. package/agents/marketing/marketing-gpc-signal-honoring-review-agent/harnesses/gemini.agent.md +33 -0
  93. package/agents/marketing/marketing-gpc-signal-honoring-review-agent/harnesses/kiro-cli.agent.json +5 -0
  94. package/agents/marketing/marketing-gpc-signal-honoring-review-agent/harnesses/kiro-ide.agent.md +33 -0
  95. package/agents/marketing/marketing-gpc-signal-honoring-review-agent/metadata.json +31 -0
  96. package/agents/marketing/marketing-maestro-agent/AGENT.md +62 -0
  97. package/agents/marketing/marketing-maestro-agent/PERMISSIONS.md +75 -0
  98. package/agents/marketing/marketing-maestro-agent/README.md +62 -0
  99. package/agents/marketing/marketing-maestro-agent/harnesses/claude-code.agent.md +43 -0
  100. package/agents/marketing/marketing-maestro-agent/harnesses/codex.toml +35 -0
  101. package/agents/marketing/marketing-maestro-agent/harnesses/copilot.agent.md +43 -0
  102. package/agents/marketing/marketing-maestro-agent/harnesses/cursor.agent.md +43 -0
  103. package/agents/marketing/marketing-maestro-agent/harnesses/gemini.agent.md +43 -0
  104. package/agents/marketing/marketing-maestro-agent/harnesses/kiro-cli.agent.json +5 -0
  105. package/agents/marketing/marketing-maestro-agent/harnesses/kiro-ide.agent.md +43 -0
  106. package/agents/marketing/marketing-maestro-agent/metadata.json +38 -0
  107. package/agents/marketing/marketing-pixel-data-leakage-review-agent/AGENT.md +50 -0
  108. package/agents/marketing/marketing-pixel-data-leakage-review-agent/harnesses/claude-code.agent.md +33 -0
  109. package/agents/marketing/marketing-pixel-data-leakage-review-agent/harnesses/codex.toml +32 -0
  110. package/agents/marketing/marketing-pixel-data-leakage-review-agent/harnesses/copilot.agent.md +33 -0
  111. package/agents/marketing/marketing-pixel-data-leakage-review-agent/harnesses/cursor.agent.md +33 -0
  112. package/agents/marketing/marketing-pixel-data-leakage-review-agent/harnesses/gemini.agent.md +33 -0
  113. package/agents/marketing/marketing-pixel-data-leakage-review-agent/harnesses/kiro-cli.agent.json +5 -0
  114. package/agents/marketing/marketing-pixel-data-leakage-review-agent/harnesses/kiro-ide.agent.md +33 -0
  115. package/agents/marketing/marketing-pixel-data-leakage-review-agent/metadata.json +31 -0
  116. package/agents/marketing/martech-access-governance-review-agent/AGENT.md +51 -0
  117. package/agents/marketing/martech-access-governance-review-agent/harnesses/claude-code.agent.md +34 -0
  118. package/agents/marketing/martech-access-governance-review-agent/harnesses/codex.toml +33 -0
  119. package/agents/marketing/martech-access-governance-review-agent/harnesses/copilot.agent.md +34 -0
  120. package/agents/marketing/martech-access-governance-review-agent/harnesses/cursor.agent.md +34 -0
  121. package/agents/marketing/martech-access-governance-review-agent/harnesses/gemini.agent.md +34 -0
  122. package/agents/marketing/martech-access-governance-review-agent/harnesses/kiro-cli.agent.json +5 -0
  123. package/agents/marketing/martech-access-governance-review-agent/harnesses/kiro-ide.agent.md +34 -0
  124. package/agents/marketing/martech-access-governance-review-agent/metadata.json +31 -0
  125. package/agents/marketing/programmatic-supply-chain-integrity-review-agent/AGENT.md +50 -0
  126. package/agents/marketing/programmatic-supply-chain-integrity-review-agent/harnesses/claude-code.agent.md +33 -0
  127. package/agents/marketing/programmatic-supply-chain-integrity-review-agent/harnesses/codex.toml +32 -0
  128. package/agents/marketing/programmatic-supply-chain-integrity-review-agent/harnesses/copilot.agent.md +33 -0
  129. package/agents/marketing/programmatic-supply-chain-integrity-review-agent/harnesses/cursor.agent.md +33 -0
  130. package/agents/marketing/programmatic-supply-chain-integrity-review-agent/harnesses/gemini.agent.md +33 -0
  131. package/agents/marketing/programmatic-supply-chain-integrity-review-agent/harnesses/kiro-cli.agent.json +5 -0
  132. package/agents/marketing/programmatic-supply-chain-integrity-review-agent/harnesses/kiro-ide.agent.md +33 -0
  133. package/agents/marketing/programmatic-supply-chain-integrity-review-agent/metadata.json +31 -0
  134. package/catalog/agents.json +765 -197
  135. package/catalog/asset-integrity.json +859 -29
  136. package/catalog/install-roles.json +38 -2
  137. package/catalog/skill-manifest.json +318 -0
  138. package/catalog/skills.json +596 -199
  139. package/package.json +1 -1
  140. package/plugins/vanguard-frontier-agentic/.codex-plugin/plugin.json +1 -1
  141. package/skills/marketing/ai-advertising-targeting-fairness-review/SKILL.md +43 -0
  142. package/skills/marketing/ai-advertising-targeting-fairness-review/metadata.json +21 -0
  143. package/skills/marketing/ai-advertising-targeting-fairness-review/references/workflow-and-output.md +150 -0
  144. package/skills/marketing/analytics-data-minimization-review/SKILL.md +44 -0
  145. package/skills/marketing/analytics-data-minimization-review/metadata.json +22 -0
  146. package/skills/marketing/analytics-data-minimization-review/references/workflow-and-output.md +187 -0
  147. package/skills/marketing/email-sender-authentication-review/SKILL.md +43 -0
  148. package/skills/marketing/email-sender-authentication-review/metadata.json +22 -0
  149. package/skills/marketing/email-sender-authentication-review/references/workflow-and-output.md +152 -0
  150. package/skills/marketing/eu-ai-act-marketing-system-review/SKILL.md +43 -0
  151. package/skills/marketing/eu-ai-act-marketing-system-review/metadata.json +21 -0
  152. package/skills/marketing/eu-ai-act-marketing-system-review/references/workflow-and-output.md +176 -0
  153. package/skills/marketing/influencer-disclosure-compliance-review/SKILL.md +43 -0
  154. package/skills/marketing/influencer-disclosure-compliance-review/metadata.json +22 -0
  155. package/skills/marketing/influencer-disclosure-compliance-review/references/workflow-and-output.md +156 -0
  156. package/skills/marketing/lookalike-audience-upload-compliance-review/SKILL.md +44 -0
  157. package/skills/marketing/lookalike-audience-upload-compliance-review/metadata.json +21 -0
  158. package/skills/marketing/lookalike-audience-upload-compliance-review/references/workflow-and-output.md +203 -0
  159. package/skills/marketing/marketing-consent-data-collection-review/SKILL.md +44 -0
  160. package/skills/marketing/marketing-consent-data-collection-review/metadata.json +21 -0
  161. package/skills/marketing/marketing-consent-data-collection-review/references/workflow-and-output.md +139 -0
  162. package/skills/marketing/marketing-conversion-flow-dark-pattern-review/SKILL.md +45 -0
  163. package/skills/marketing/marketing-conversion-flow-dark-pattern-review/metadata.json +22 -0
  164. package/skills/marketing/marketing-conversion-flow-dark-pattern-review/references/workflow-and-output.md +160 -0
  165. package/skills/marketing/marketing-email-list-retention-review/SKILL.md +43 -0
  166. package/skills/marketing/marketing-email-list-retention-review/metadata.json +22 -0
  167. package/skills/marketing/marketing-email-list-retention-review/references/workflow-and-output.md +144 -0
  168. package/skills/marketing/marketing-gpc-signal-honoring-review/SKILL.md +42 -0
  169. package/skills/marketing/marketing-gpc-signal-honoring-review/metadata.json +22 -0
  170. package/skills/marketing/marketing-gpc-signal-honoring-review/references/workflow-and-output.md +145 -0
  171. package/skills/marketing/marketing-maestro/README.md +37 -0
  172. package/skills/marketing/marketing-maestro/SKILL.md +49 -0
  173. package/skills/marketing/marketing-maestro/metadata.json +26 -0
  174. package/skills/marketing/marketing-maestro/references/safety-checklist.md +67 -0
  175. package/skills/marketing/marketing-maestro/references/workflow-and-output.md +110 -0
  176. package/skills/marketing/marketing-pixel-data-leakage-review/SKILL.md +43 -0
  177. package/skills/marketing/marketing-pixel-data-leakage-review/metadata.json +21 -0
  178. package/skills/marketing/marketing-pixel-data-leakage-review/references/workflow-and-output.md +129 -0
  179. package/skills/marketing/martech-access-governance-review/SKILL.md +45 -0
  180. package/skills/marketing/martech-access-governance-review/metadata.json +21 -0
  181. package/skills/marketing/martech-access-governance-review/references/workflow-and-output.md +116 -0
  182. package/skills/marketing/programmatic-supply-chain-integrity-review/SKILL.md +43 -0
  183. package/skills/marketing/programmatic-supply-chain-integrity-review/metadata.json +22 -0
  184. package/skills/marketing/programmatic-supply-chain-integrity-review/references/workflow-and-output.md +164 -0
  185. package/tests/fixtures/marketing-maestro-routing/expected/001-happy-ai-advertising-targeting-fairness-review.json +6 -0
  186. package/tests/fixtures/marketing-maestro-routing/expected/002-happy-analytics-data-minimization-review.json +6 -0
  187. package/tests/fixtures/marketing-maestro-routing/expected/003-happy-consent-data-collection-review.json +6 -0
  188. package/tests/fixtures/marketing-maestro-routing/expected/004-happy-conversion-flow-dark-pattern-review.json +6 -0
  189. package/tests/fixtures/marketing-maestro-routing/expected/005-happy-email-list-retention-review.json +6 -0
  190. package/tests/fixtures/marketing-maestro-routing/expected/006-happy-email-sender-authentication-review.json +6 -0
  191. package/tests/fixtures/marketing-maestro-routing/expected/007-happy-eu-ai-act-marketing-system-review.json +6 -0
  192. package/tests/fixtures/marketing-maestro-routing/expected/008-happy-gpc-signal-honoring-review.json +6 -0
  193. package/tests/fixtures/marketing-maestro-routing/expected/009-happy-influencer-disclosure-compliance-review.json +6 -0
  194. package/tests/fixtures/marketing-maestro-routing/expected/010-happy-lookalike-audience-upload-compliance-review.json +6 -0
  195. package/tests/fixtures/marketing-maestro-routing/expected/011-happy-martech-access-governance-review.json +6 -0
  196. package/tests/fixtures/marketing-maestro-routing/expected/012-happy-pixel-data-leakage-review.json +6 -0
  197. package/tests/fixtures/marketing-maestro-routing/expected/013-happy-programmatic-supply-chain-integrity-review.json +6 -0
  198. package/tests/fixtures/marketing-maestro-routing/expected/adv-ambiguous.json +4 -0
  199. package/tests/fixtures/marketing-maestro-routing/expected/adv-instruction-injection.json +7 -0
  200. package/tests/fixtures/marketing-maestro-routing/expected/adv-live-guard-gate.json +4 -0
  201. package/tests/fixtures/marketing-maestro-routing/expected/adv-persona-replacement.json +6 -0
  202. package/tests/fixtures/marketing-maestro-routing/expected/adv-secrets-bait.json +7 -0
  203. package/tests/fixtures/marketing-maestro-routing/inputs/001-happy-ai-advertising-targeting-fairness-review.json +7 -0
  204. package/tests/fixtures/marketing-maestro-routing/inputs/002-happy-analytics-data-minimization-review.json +7 -0
  205. package/tests/fixtures/marketing-maestro-routing/inputs/003-happy-consent-data-collection-review.json +7 -0
  206. package/tests/fixtures/marketing-maestro-routing/inputs/004-happy-conversion-flow-dark-pattern-review.json +7 -0
  207. package/tests/fixtures/marketing-maestro-routing/inputs/005-happy-email-list-retention-review.json +7 -0
  208. package/tests/fixtures/marketing-maestro-routing/inputs/006-happy-email-sender-authentication-review.json +7 -0
  209. package/tests/fixtures/marketing-maestro-routing/inputs/007-happy-eu-ai-act-marketing-system-review.json +7 -0
  210. package/tests/fixtures/marketing-maestro-routing/inputs/008-happy-gpc-signal-honoring-review.json +7 -0
  211. package/tests/fixtures/marketing-maestro-routing/inputs/009-happy-influencer-disclosure-compliance-review.json +7 -0
  212. package/tests/fixtures/marketing-maestro-routing/inputs/010-happy-lookalike-audience-upload-compliance-review.json +7 -0
  213. package/tests/fixtures/marketing-maestro-routing/inputs/011-happy-martech-access-governance-review.json +7 -0
  214. package/tests/fixtures/marketing-maestro-routing/inputs/012-happy-pixel-data-leakage-review.json +7 -0
  215. package/tests/fixtures/marketing-maestro-routing/inputs/013-happy-programmatic-supply-chain-integrity-review.json +7 -0
  216. package/tests/fixtures/marketing-maestro-routing/inputs/adv-ambiguous.json +7 -0
  217. package/tests/fixtures/marketing-maestro-routing/inputs/adv-instruction-injection.json +7 -0
  218. package/tests/fixtures/marketing-maestro-routing/inputs/adv-live-guard-gate.json +7 -0
  219. package/tests/fixtures/marketing-maestro-routing/inputs/adv-persona-replacement.json +7 -0
  220. package/tests/fixtures/marketing-maestro-routing/inputs/adv-secrets-bait.json +7 -0
  221. package/tests/fixtures/marketing-maestro-routing/taxonomy.json +183 -0
  222. package/tests/validate-catalog.py +1 -0
  223. package/tests/validate-maestro-routing.py +4 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@raishin/vanguard-frontier-agentic",
3
- "version": "2.0.0",
3
+ "version": "2.0.1",
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": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vanguard-frontier-agentic",
3
- "version": "2.0.0",
3
+ "version": "2.0.1",
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,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
+ }
@@ -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
+ }
@@ -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
+ }