@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.
Files changed (342) hide show
  1. package/.claude-plugin/plugin.json +25 -1
  2. package/.cursor-plugin/plugin.json +25 -1
  3. package/.github/plugin/marketplace.json +1 -1
  4. package/README.md +26 -7
  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/agents/qa/README.md +51 -0
  135. package/agents/qa/ci-test-pipeline-review-agent/AGENT.md +51 -0
  136. package/agents/qa/ci-test-pipeline-review-agent/harnesses/claude-code.agent.md +35 -0
  137. package/agents/qa/ci-test-pipeline-review-agent/harnesses/codex.toml +34 -0
  138. package/agents/qa/ci-test-pipeline-review-agent/harnesses/copilot.agent.md +35 -0
  139. package/agents/qa/ci-test-pipeline-review-agent/harnesses/cursor.agent.md +35 -0
  140. package/agents/qa/ci-test-pipeline-review-agent/harnesses/gemini.agent.md +35 -0
  141. package/agents/qa/ci-test-pipeline-review-agent/harnesses/kiro-cli.agent.json +5 -0
  142. package/agents/qa/ci-test-pipeline-review-agent/harnesses/kiro-ide.agent.md +35 -0
  143. package/agents/qa/ci-test-pipeline-review-agent/metadata.json +33 -0
  144. package/agents/qa/helm-chart-quality-review-agent/AGENT.md +56 -0
  145. package/agents/qa/helm-chart-quality-review-agent/harnesses/claude-code.agent.md +40 -0
  146. package/agents/qa/helm-chart-quality-review-agent/harnesses/codex.toml +39 -0
  147. package/agents/qa/helm-chart-quality-review-agent/harnesses/copilot.agent.md +40 -0
  148. package/agents/qa/helm-chart-quality-review-agent/harnesses/cursor.agent.md +40 -0
  149. package/agents/qa/helm-chart-quality-review-agent/harnesses/gemini.agent.md +40 -0
  150. package/agents/qa/helm-chart-quality-review-agent/harnesses/kiro-cli.agent.json +5 -0
  151. package/agents/qa/helm-chart-quality-review-agent/harnesses/kiro-ide.agent.md +40 -0
  152. package/agents/qa/helm-chart-quality-review-agent/metadata.json +35 -0
  153. package/agents/qa/kubernetes-manifest-quality-review-agent/AGENT.md +55 -0
  154. package/agents/qa/kubernetes-manifest-quality-review-agent/harnesses/claude-code.agent.md +32 -0
  155. package/agents/qa/kubernetes-manifest-quality-review-agent/harnesses/codex.toml +38 -0
  156. package/agents/qa/kubernetes-manifest-quality-review-agent/harnesses/copilot.agent.md +32 -0
  157. package/agents/qa/kubernetes-manifest-quality-review-agent/harnesses/cursor.agent.md +32 -0
  158. package/agents/qa/kubernetes-manifest-quality-review-agent/harnesses/gemini.agent.md +32 -0
  159. package/agents/qa/kubernetes-manifest-quality-review-agent/harnesses/kiro-cli.agent.json +5 -0
  160. package/agents/qa/kubernetes-manifest-quality-review-agent/harnesses/kiro-ide.agent.md +32 -0
  161. package/agents/qa/kubernetes-manifest-quality-review-agent/metadata.json +35 -0
  162. package/agents/qa/llm-ai-pipeline-test-review-agent/AGENT.md +52 -0
  163. package/agents/qa/llm-ai-pipeline-test-review-agent/harnesses/claude-code.agent.md +36 -0
  164. package/agents/qa/llm-ai-pipeline-test-review-agent/harnesses/codex.toml +36 -0
  165. package/agents/qa/llm-ai-pipeline-test-review-agent/harnesses/copilot.agent.md +36 -0
  166. package/agents/qa/llm-ai-pipeline-test-review-agent/harnesses/cursor.agent.md +36 -0
  167. package/agents/qa/llm-ai-pipeline-test-review-agent/harnesses/gemini.agent.md +36 -0
  168. package/agents/qa/llm-ai-pipeline-test-review-agent/harnesses/kiro-cli.agent.json +5 -0
  169. package/agents/qa/llm-ai-pipeline-test-review-agent/harnesses/kiro-ide.agent.md +36 -0
  170. package/agents/qa/llm-ai-pipeline-test-review-agent/metadata.json +35 -0
  171. package/agents/qa/playwright-e2e-execution-run-agent/AGENT.md +50 -0
  172. package/agents/qa/playwright-e2e-execution-run-agent/harnesses/claude-code.agent.md +39 -0
  173. package/agents/qa/playwright-e2e-execution-run-agent/harnesses/cursor.agent.md +39 -0
  174. package/agents/qa/playwright-e2e-execution-run-agent/metadata.json +28 -0
  175. package/agents/qa/playwright-e2e-suite-review-agent/AGENT.md +51 -0
  176. package/agents/qa/playwright-e2e-suite-review-agent/harnesses/claude-code.agent.md +35 -0
  177. package/agents/qa/playwright-e2e-suite-review-agent/harnesses/codex.toml +34 -0
  178. package/agents/qa/playwright-e2e-suite-review-agent/harnesses/copilot.agent.md +35 -0
  179. package/agents/qa/playwright-e2e-suite-review-agent/harnesses/cursor.agent.md +35 -0
  180. package/agents/qa/playwright-e2e-suite-review-agent/harnesses/gemini.agent.md +35 -0
  181. package/agents/qa/playwright-e2e-suite-review-agent/harnesses/kiro-cli.agent.json +5 -0
  182. package/agents/qa/playwright-e2e-suite-review-agent/harnesses/kiro-ide.agent.md +35 -0
  183. package/agents/qa/playwright-e2e-suite-review-agent/metadata.json +35 -0
  184. package/agents/qa/plc-control-logic-safety-review-agent/AGENT.md +53 -0
  185. package/agents/qa/plc-control-logic-safety-review-agent/harnesses/claude-code.agent.md +37 -0
  186. package/agents/qa/plc-control-logic-safety-review-agent/harnesses/codex.toml +36 -0
  187. package/agents/qa/plc-control-logic-safety-review-agent/harnesses/copilot.agent.md +37 -0
  188. package/agents/qa/plc-control-logic-safety-review-agent/harnesses/cursor.agent.md +37 -0
  189. package/agents/qa/plc-control-logic-safety-review-agent/harnesses/gemini.agent.md +37 -0
  190. package/agents/qa/plc-control-logic-safety-review-agent/harnesses/kiro-cli.agent.json +5 -0
  191. package/agents/qa/plc-control-logic-safety-review-agent/harnesses/kiro-ide.agent.md +37 -0
  192. package/agents/qa/plc-control-logic-safety-review-agent/metadata.json +33 -0
  193. package/agents/qa/rpa-workflow-resilience-review-agent/AGENT.md +52 -0
  194. package/agents/qa/rpa-workflow-resilience-review-agent/harnesses/claude-code.agent.md +36 -0
  195. package/agents/qa/rpa-workflow-resilience-review-agent/harnesses/codex.toml +35 -0
  196. package/agents/qa/rpa-workflow-resilience-review-agent/harnesses/copilot.agent.md +36 -0
  197. package/agents/qa/rpa-workflow-resilience-review-agent/harnesses/cursor.agent.md +36 -0
  198. package/agents/qa/rpa-workflow-resilience-review-agent/harnesses/gemini.agent.md +36 -0
  199. package/agents/qa/rpa-workflow-resilience-review-agent/harnesses/kiro-cli.agent.json +5 -0
  200. package/agents/qa/rpa-workflow-resilience-review-agent/harnesses/kiro-ide.agent.md +36 -0
  201. package/agents/qa/rpa-workflow-resilience-review-agent/metadata.json +34 -0
  202. package/agents/qa/test-coverage-quality-review-agent/AGENT.md +50 -0
  203. package/agents/qa/test-coverage-quality-review-agent/harnesses/claude-code.agent.md +34 -0
  204. package/agents/qa/test-coverage-quality-review-agent/harnesses/codex.toml +33 -0
  205. package/agents/qa/test-coverage-quality-review-agent/harnesses/copilot.agent.md +34 -0
  206. package/agents/qa/test-coverage-quality-review-agent/harnesses/cursor.agent.md +34 -0
  207. package/agents/qa/test-coverage-quality-review-agent/harnesses/gemini.agent.md +34 -0
  208. package/agents/qa/test-coverage-quality-review-agent/harnesses/kiro-cli.agent.json +5 -0
  209. package/agents/qa/test-coverage-quality-review-agent/harnesses/kiro-ide.agent.md +34 -0
  210. package/agents/qa/test-coverage-quality-review-agent/metadata.json +33 -0
  211. package/agents/qa/test-flakiness-triage-agent/AGENT.md +52 -0
  212. package/agents/qa/test-flakiness-triage-agent/harnesses/claude-code.agent.md +36 -0
  213. package/agents/qa/test-flakiness-triage-agent/harnesses/codex.toml +33 -0
  214. package/agents/qa/test-flakiness-triage-agent/harnesses/copilot.agent.md +36 -0
  215. package/agents/qa/test-flakiness-triage-agent/harnesses/cursor.agent.md +36 -0
  216. package/agents/qa/test-flakiness-triage-agent/harnesses/gemini.agent.md +36 -0
  217. package/agents/qa/test-flakiness-triage-agent/harnesses/kiro-cli.agent.json +5 -0
  218. package/agents/qa/test-flakiness-triage-agent/harnesses/kiro-ide.agent.md +36 -0
  219. package/agents/qa/test-flakiness-triage-agent/metadata.json +33 -0
  220. package/catalog/agents.json +1047 -197
  221. package/catalog/asset-integrity.json +2950 -1675
  222. package/catalog/install-roles.json +65 -1
  223. package/catalog/skill-manifest.json +538 -0
  224. package/catalog/skills.json +685 -0
  225. package/package.json +5 -2
  226. package/plugins/vanguard-frontier-agentic/.codex-plugin/plugin.json +1 -1
  227. package/scripts/generate-readme-counts.mjs +162 -0
  228. package/skills/marketing/ai-advertising-targeting-fairness-review/SKILL.md +43 -0
  229. package/skills/marketing/ai-advertising-targeting-fairness-review/metadata.json +21 -0
  230. package/skills/marketing/ai-advertising-targeting-fairness-review/references/workflow-and-output.md +150 -0
  231. package/skills/marketing/analytics-data-minimization-review/SKILL.md +44 -0
  232. package/skills/marketing/analytics-data-minimization-review/metadata.json +22 -0
  233. package/skills/marketing/analytics-data-minimization-review/references/workflow-and-output.md +187 -0
  234. package/skills/marketing/email-sender-authentication-review/SKILL.md +43 -0
  235. package/skills/marketing/email-sender-authentication-review/metadata.json +22 -0
  236. package/skills/marketing/email-sender-authentication-review/references/workflow-and-output.md +152 -0
  237. package/skills/marketing/eu-ai-act-marketing-system-review/SKILL.md +43 -0
  238. package/skills/marketing/eu-ai-act-marketing-system-review/metadata.json +21 -0
  239. package/skills/marketing/eu-ai-act-marketing-system-review/references/workflow-and-output.md +176 -0
  240. package/skills/marketing/influencer-disclosure-compliance-review/SKILL.md +43 -0
  241. package/skills/marketing/influencer-disclosure-compliance-review/metadata.json +22 -0
  242. package/skills/marketing/influencer-disclosure-compliance-review/references/workflow-and-output.md +156 -0
  243. package/skills/marketing/lookalike-audience-upload-compliance-review/SKILL.md +44 -0
  244. package/skills/marketing/lookalike-audience-upload-compliance-review/metadata.json +21 -0
  245. package/skills/marketing/lookalike-audience-upload-compliance-review/references/workflow-and-output.md +203 -0
  246. package/skills/marketing/marketing-consent-data-collection-review/SKILL.md +44 -0
  247. package/skills/marketing/marketing-consent-data-collection-review/metadata.json +21 -0
  248. package/skills/marketing/marketing-consent-data-collection-review/references/workflow-and-output.md +139 -0
  249. package/skills/marketing/marketing-conversion-flow-dark-pattern-review/SKILL.md +45 -0
  250. package/skills/marketing/marketing-conversion-flow-dark-pattern-review/metadata.json +22 -0
  251. package/skills/marketing/marketing-conversion-flow-dark-pattern-review/references/workflow-and-output.md +160 -0
  252. package/skills/marketing/marketing-email-list-retention-review/SKILL.md +43 -0
  253. package/skills/marketing/marketing-email-list-retention-review/metadata.json +22 -0
  254. package/skills/marketing/marketing-email-list-retention-review/references/workflow-and-output.md +144 -0
  255. package/skills/marketing/marketing-gpc-signal-honoring-review/SKILL.md +42 -0
  256. package/skills/marketing/marketing-gpc-signal-honoring-review/metadata.json +22 -0
  257. package/skills/marketing/marketing-gpc-signal-honoring-review/references/workflow-and-output.md +145 -0
  258. package/skills/marketing/marketing-maestro/README.md +37 -0
  259. package/skills/marketing/marketing-maestro/SKILL.md +49 -0
  260. package/skills/marketing/marketing-maestro/metadata.json +26 -0
  261. package/skills/marketing/marketing-maestro/references/safety-checklist.md +67 -0
  262. package/skills/marketing/marketing-maestro/references/workflow-and-output.md +110 -0
  263. package/skills/marketing/marketing-pixel-data-leakage-review/SKILL.md +43 -0
  264. package/skills/marketing/marketing-pixel-data-leakage-review/metadata.json +21 -0
  265. package/skills/marketing/marketing-pixel-data-leakage-review/references/workflow-and-output.md +129 -0
  266. package/skills/marketing/martech-access-governance-review/SKILL.md +45 -0
  267. package/skills/marketing/martech-access-governance-review/metadata.json +21 -0
  268. package/skills/marketing/martech-access-governance-review/references/workflow-and-output.md +116 -0
  269. package/skills/marketing/programmatic-supply-chain-integrity-review/SKILL.md +43 -0
  270. package/skills/marketing/programmatic-supply-chain-integrity-review/metadata.json +22 -0
  271. package/skills/marketing/programmatic-supply-chain-integrity-review/references/workflow-and-output.md +164 -0
  272. package/skills/qa/ci-test-pipeline-review/SKILL.md +45 -0
  273. package/skills/qa/ci-test-pipeline-review/metadata.json +21 -0
  274. package/skills/qa/ci-test-pipeline-review/references/workflow-and-output.md +124 -0
  275. package/skills/qa/helm-chart-quality-review/SKILL.md +61 -0
  276. package/skills/qa/helm-chart-quality-review/metadata.json +23 -0
  277. package/skills/qa/helm-chart-quality-review/references/workflow-and-output.md +174 -0
  278. package/skills/qa/kubernetes-manifest-quality-review/SKILL.md +92 -0
  279. package/skills/qa/kubernetes-manifest-quality-review/metadata.json +23 -0
  280. package/skills/qa/kubernetes-manifest-quality-review/references/workflow-and-output.md +246 -0
  281. package/skills/qa/llm-ai-pipeline-test-review/SKILL.md +52 -0
  282. package/skills/qa/llm-ai-pipeline-test-review/metadata.json +23 -0
  283. package/skills/qa/llm-ai-pipeline-test-review/references/workflow-and-output.md +221 -0
  284. package/skills/qa/playwright-e2e-execution-run/SKILL.md +54 -0
  285. package/skills/qa/playwright-e2e-execution-run/metadata.json +24 -0
  286. package/skills/qa/playwright-e2e-execution-run/references/workflow-and-output.md +133 -0
  287. package/skills/qa/playwright-e2e-suite-review/SKILL.md +44 -0
  288. package/skills/qa/playwright-e2e-suite-review/metadata.json +23 -0
  289. package/skills/qa/playwright-e2e-suite-review/references/workflow-and-output.md +176 -0
  290. package/skills/qa/plc-control-logic-safety-review/SKILL.md +47 -0
  291. package/skills/qa/plc-control-logic-safety-review/metadata.json +21 -0
  292. package/skills/qa/plc-control-logic-safety-review/references/workflow-and-output.md +231 -0
  293. package/skills/qa/rpa-workflow-resilience-review/SKILL.md +47 -0
  294. package/skills/qa/rpa-workflow-resilience-review/metadata.json +22 -0
  295. package/skills/qa/rpa-workflow-resilience-review/references/workflow-and-output.md +210 -0
  296. package/skills/qa/test-coverage-quality-review/SKILL.md +44 -0
  297. package/skills/qa/test-coverage-quality-review/metadata.json +21 -0
  298. package/skills/qa/test-coverage-quality-review/references/workflow-and-output.md +139 -0
  299. package/skills/qa/test-flakiness-triage/SKILL.md +43 -0
  300. package/skills/qa/test-flakiness-triage/metadata.json +21 -0
  301. package/skills/qa/test-flakiness-triage/references/workflow-and-output.md +114 -0
  302. package/tests/eval-qa-cluster.mjs +111 -0
  303. package/tests/fixtures/marketing-maestro-routing/expected/001-happy-ai-advertising-targeting-fairness-review.json +6 -0
  304. package/tests/fixtures/marketing-maestro-routing/expected/002-happy-analytics-data-minimization-review.json +6 -0
  305. package/tests/fixtures/marketing-maestro-routing/expected/003-happy-consent-data-collection-review.json +6 -0
  306. package/tests/fixtures/marketing-maestro-routing/expected/004-happy-conversion-flow-dark-pattern-review.json +6 -0
  307. package/tests/fixtures/marketing-maestro-routing/expected/005-happy-email-list-retention-review.json +6 -0
  308. package/tests/fixtures/marketing-maestro-routing/expected/006-happy-email-sender-authentication-review.json +6 -0
  309. package/tests/fixtures/marketing-maestro-routing/expected/007-happy-eu-ai-act-marketing-system-review.json +6 -0
  310. package/tests/fixtures/marketing-maestro-routing/expected/008-happy-gpc-signal-honoring-review.json +6 -0
  311. package/tests/fixtures/marketing-maestro-routing/expected/009-happy-influencer-disclosure-compliance-review.json +6 -0
  312. package/tests/fixtures/marketing-maestro-routing/expected/010-happy-lookalike-audience-upload-compliance-review.json +6 -0
  313. package/tests/fixtures/marketing-maestro-routing/expected/011-happy-martech-access-governance-review.json +6 -0
  314. package/tests/fixtures/marketing-maestro-routing/expected/012-happy-pixel-data-leakage-review.json +6 -0
  315. package/tests/fixtures/marketing-maestro-routing/expected/013-happy-programmatic-supply-chain-integrity-review.json +6 -0
  316. package/tests/fixtures/marketing-maestro-routing/expected/adv-ambiguous.json +4 -0
  317. package/tests/fixtures/marketing-maestro-routing/expected/adv-instruction-injection.json +7 -0
  318. package/tests/fixtures/marketing-maestro-routing/expected/adv-live-guard-gate.json +4 -0
  319. package/tests/fixtures/marketing-maestro-routing/expected/adv-persona-replacement.json +6 -0
  320. package/tests/fixtures/marketing-maestro-routing/expected/adv-secrets-bait.json +7 -0
  321. package/tests/fixtures/marketing-maestro-routing/inputs/001-happy-ai-advertising-targeting-fairness-review.json +7 -0
  322. package/tests/fixtures/marketing-maestro-routing/inputs/002-happy-analytics-data-minimization-review.json +7 -0
  323. package/tests/fixtures/marketing-maestro-routing/inputs/003-happy-consent-data-collection-review.json +7 -0
  324. package/tests/fixtures/marketing-maestro-routing/inputs/004-happy-conversion-flow-dark-pattern-review.json +7 -0
  325. package/tests/fixtures/marketing-maestro-routing/inputs/005-happy-email-list-retention-review.json +7 -0
  326. package/tests/fixtures/marketing-maestro-routing/inputs/006-happy-email-sender-authentication-review.json +7 -0
  327. package/tests/fixtures/marketing-maestro-routing/inputs/007-happy-eu-ai-act-marketing-system-review.json +7 -0
  328. package/tests/fixtures/marketing-maestro-routing/inputs/008-happy-gpc-signal-honoring-review.json +7 -0
  329. package/tests/fixtures/marketing-maestro-routing/inputs/009-happy-influencer-disclosure-compliance-review.json +7 -0
  330. package/tests/fixtures/marketing-maestro-routing/inputs/010-happy-lookalike-audience-upload-compliance-review.json +7 -0
  331. package/tests/fixtures/marketing-maestro-routing/inputs/011-happy-martech-access-governance-review.json +7 -0
  332. package/tests/fixtures/marketing-maestro-routing/inputs/012-happy-pixel-data-leakage-review.json +7 -0
  333. package/tests/fixtures/marketing-maestro-routing/inputs/013-happy-programmatic-supply-chain-integrity-review.json +7 -0
  334. package/tests/fixtures/marketing-maestro-routing/inputs/adv-ambiguous.json +7 -0
  335. package/tests/fixtures/marketing-maestro-routing/inputs/adv-instruction-injection.json +7 -0
  336. package/tests/fixtures/marketing-maestro-routing/inputs/adv-live-guard-gate.json +7 -0
  337. package/tests/fixtures/marketing-maestro-routing/inputs/adv-persona-replacement.json +7 -0
  338. package/tests/fixtures/marketing-maestro-routing/inputs/adv-secrets-bait.json +7 -0
  339. package/tests/fixtures/marketing-maestro-routing/taxonomy.json +183 -0
  340. package/tests/validate-catalog.py +1 -0
  341. package/tests/validate-maestro-routing.py +4 -0
  342. package/tests/validate-readme-counts.mjs +179 -0
@@ -0,0 +1,139 @@
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 or descriptions (no real visitor identifiers, no analytics account credentials, no consent-string archives):
8
+ - Consent Management Platform (CMP) configuration — vendor, banner layout, button set, default consent state, per-purpose toggles
9
+ - Tag manager container export (e.g. GTM container JSON) showing tags, triggers, and consent settings
10
+ - Google Consent Mode / consent initialization snippet
11
+ - Cookie / privacy policy text, or the disclosed cookie and vendor table
12
+ - Target jurisdictions and the regimes that apply (EEA/UK, California, other US states, Brazil, etc.)
13
+
14
+ If the user provides only a partial set, note which sections are absent and scope findings accordingly.
15
+
16
+ ### Step 2 — Jurisdiction and regime scoping
17
+
18
+ Establish which legal model applies before assessing tags:
19
+ - **Opt-in regimes** (GDPR + ePrivacy, UK GDPR/PECR): non-essential storage and access require prior consent. Default state must be denied.
20
+ - **Opt-out regimes** (CCPA/CPRA and most US state laws): collection may proceed, but a "Do Not Sell or Share" path and Global Privacy Control honoring are required.
21
+ - A global site usually serves both; the CMP must geo-resolve the correct model per visitor.
22
+
23
+ Flag a single consent model applied globally when traffic spans both regimes as MEDIUM.
24
+
25
+ ### Step 3 — Consent-gating audit
26
+
27
+ For every analytics and advertising tag, determine whether it fires before or after the consent signal.
28
+
29
+ Check for:
30
+ - Tags with a firing trigger of "page view" / "DOM ready" and no consent condition (HIGH in opt-in regimes)
31
+ - Tag manager "additional consent checks" left unconfigured
32
+ - A hardcoded analytics or pixel snippet in page source, bypassing the tag manager and the CMP entirely (HIGH)
33
+ - Server-side tagging that forwards events with no consent state propagated
34
+
35
+ ```text
36
+ # RISKY — tag fires on every page view, no consent gate
37
+ Tag: GA4 Configuration
38
+ Trigger: All Pages
39
+ Consent settings: No additional consent required
40
+
41
+ # CORRECT — tag waits for the analytics_storage grant
42
+ Tag: GA4 Configuration
43
+ Trigger: All Pages
44
+ Consent settings: Require additional consent for: analytics_storage
45
+ ```
46
+
47
+ ### Step 4 — Banner design audit
48
+
49
+ Assess the banner against recognized dark-pattern guidance:
50
+ - **Symmetry**: accept and reject must be equally prominent and equally reachable. A prominent "Accept All" with reject buried in a secondary "Manage" screen is HIGH.
51
+ - **Pre-selection**: any consent toggle pre-set to ON, or pre-ticked checkbox, is HIGH.
52
+ - **Implied consent**: "by continuing to browse you agree" or scroll-to-consent is HIGH.
53
+ - **Granularity**: distinct purposes (analytics, advertising, personalization) must be independently refusable. A single on/off is MEDIUM.
54
+ - **Nagging / re-prompting**: re-showing the banner to pressure a reluctant visitor is MEDIUM.
55
+ - **Withdrawal**: withdrawing consent must be as easy as giving it — a persistent preferences link must exist.
56
+
57
+ ### Step 5 — Consent Mode and signal-propagation audit
58
+
59
+ If Google Consent Mode (or an equivalent) is used:
60
+ - Default consent state must be `denied` for `ad_storage`, `analytics_storage`, `ad_user_data`, `ad_personalization` in opt-in regimes.
61
+ - `wait_for_update` must be set so tags hold until the CMP resolves the choice.
62
+ - Verify the CMP actually calls `gtag('consent', 'update', ...)` on the visitor's decision.
63
+
64
+ ```text
65
+ # RISKY — default granted, no wait
66
+ gtag('consent', 'default', { ad_storage: 'granted', analytics_storage: 'granted' });
67
+
68
+ # CORRECT — default denied, wait for the CMP update
69
+ gtag('consent', 'default', {
70
+ ad_storage: 'denied', analytics_storage: 'denied',
71
+ ad_user_data: 'denied', ad_personalization: 'denied',
72
+ wait_for_update: 500
73
+ });
74
+ ```
75
+
76
+ ### Step 6 — Tracker-to-policy disclosure audit
77
+
78
+ Cross-check every tracker observed in the container against the cookie policy and CMP vendor list:
79
+ - Each cookie and pixel must be named, categorized by purpose, and given a stated retention.
80
+ - Vendors receiving data must appear in the disclosed vendor list.
81
+ - A tracker present in the container but absent from disclosure is HIGH — undisclosed processing has no lawful basis and breaches the transparency obligation.
82
+
83
+ ### Step 7 — Opt-out and cross-border audit
84
+
85
+ - Confirm a "Do Not Sell or Share My Personal Information" link (or a Limit-Use link for sensitive data) where opt-out regimes apply.
86
+ - Confirm the CMP honors the Global Privacy Control browser signal.
87
+ - For advertising tags transmitting to ad networks outside the visitor's region, confirm a referenced transfer mechanism exists in the policy (Standard Contractual Clauses, an adequacy decision, or the relevant framework).
88
+
89
+ ### Step 8 — Consent-record audit
90
+
91
+ Confirm the CMP retains, per consent event: a timestamp, the scope/purposes accepted, the consent-string version, and a withdrawal record. Without this the controller cannot demonstrate compliance on request. Missing records is MEDIUM.
92
+
93
+ ### Step 9 — Produce the output
94
+
95
+ Format findings using the Output section below.
96
+
97
+ ---
98
+
99
+ ## Output
100
+
101
+ Return findings in this structure:
102
+
103
+ ```
104
+ ## Verdict
105
+ <one sentence: pass / needs work / critical issues found>
106
+
107
+ ## Evidence level
108
+ <configuration provided | policy text provided | documentation-based | inference>
109
+
110
+ ## Findings
111
+
112
+ ### CRITICAL
113
+ - [C1] <finding title>: <description> — <remediation>
114
+
115
+ ### HIGH
116
+ - [H1] <finding title>: <description> — <remediation>
117
+
118
+ ### MEDIUM
119
+ - [M1] <finding title>: <description> — <remediation>
120
+
121
+ ### LOW
122
+ - [L1] <finding title>: <description> — <remediation>
123
+
124
+ ## Safe next actions
125
+ 1. <action>
126
+ 2. <action>
127
+
128
+ ## Open questions
129
+ - <question requiring user clarification>
130
+ ```
131
+
132
+ ---
133
+
134
+ ## Security and scope notes
135
+
136
+ - This is a static review. Never request real visitor data, raw consent-string archives, analytics account credentials, or tag-manager publish access.
137
+ - Do not provide definitive legal conclusions; surface regulatory risk and route binding determinations to qualified privacy counsel.
138
+ - Never recommend removing a consent gate to recover attribution data.
139
+ - When evidence is partial, scope each finding to what was provided and state the assumption explicitly.
@@ -0,0 +1,45 @@
1
+ ---
2
+ name: marketing-conversion-flow-dark-pattern-review
3
+ description: Use this skill when reviewing marketing conversion flow specifications — subscription sign-up, upsell interstitial, free-trial enrollment, and cancellation path — for dark-pattern practices that invalidate consent or constitute unfair or deceptive acts under FTC Section 5 and state privacy laws. Trigger when a user provides a UX flow specification including step-by-step page descriptions, annotated wireframes, CTA labels, pre-checked options, visual weight of accept vs decline paths, countdown timer specs, or cancellation flow step counts. Scope is limited to marketing conversion flows; consent banner review is handled by a separate skill.
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
+ # Marketing Conversion Flow Dark-Pattern Review
14
+
15
+ ## Purpose
16
+ This skill reviews marketing conversion flow specifications — subscription sign-up, upsell interstitials, free-trial enrollment, and cancellation paths — for dark-pattern practices that invalidate consent or constitute unfair or deceptive acts under FTC Section 5, the FTC Negative Option Rule (ROSCA), the CPRA statutory dark-pattern definition (§ 1798.140(l)), and EU AI Act Article 5(1)(b). Dark patterns in conversion flows are a distinct and high-priority regulatory surface: pre-checked auto-renew boxes, asymmetric cancel vs. subscribe step counts, artificial countdown timers, and visually suppressed decline paths have drawn FTC enforcement, FTC rules with click-to-cancel mandates, and CPRA enforcement advisories. This skill works from a sanitized UX flow specification or annotated wireframe only. It does not review consent banners — that is the domain of `marketing-consent-data-collection-review`.
17
+
18
+ ## Lean operating rules
19
+ - Treat a free-trial or subscription enrollment flow that pre-checks "auto-renew at full price" (or any material recurring-charge term) as HIGH — pre-checked consent for a recurring financial commitment is prohibited under the FTC Negative Option Rule and invalidates consent under CPRA § 1798.140(l).
20
+ - Treat any cancellation path that requires more steps than the enrollment path, or that interposes save-offers between the cancel intent and the cancel confirmation without a direct-cancel alternative, as HIGH — the FTC Negative Option Rule and ROSCA require cancellation to be at least as easy as enrollment.
21
+ - Treat an artificial countdown timer applied to an offer with no real deadline as HIGH — it creates false urgency, a deceptive act under FTC Act Section 5.
22
+ - Treat visual suppression of the decline path (smaller font, lower contrast, grey-out, positioning below the fold, or absence of a visible "no thanks" option) as HIGH when paired with a visually dominant accept CTA — asymmetric visual weight subverts user autonomy under CPRA § 1798.140(l) and constitutes a deceptive format under FTC Section 5.
23
+ - Treat upsell interstitials that make the "continue without upgrade" option absent, invisible, or materially harder to reach than the upgrade CTA as HIGH — the absence of a clear decline path on a mandatory interstitial eliminates meaningful consent.
24
+ - Treat a subscription sign-up flow in which material price, renewal date, and cancellation method are not disclosed clearly and conspicuously before billing information is collected as HIGH — ROSCA requires pre-billing disclosure of all material terms.
25
+ - Flag "confirm-shaming" CTA copy (e.g. "No thanks, I don't want to save money") as MEDIUM — it applies social pressure but may not alone constitute an unfair act; combined with visual suppression it escalates.
26
+ - Flag any save-offer sequence on a cancellation path that does not offer a direct cancel option at each step as MEDIUM — save offers are permissible but must not be the only route.
27
+ - Flag countdown timers whose real deadline is authenticated by server state (session-scoped) as LOW — distinguish from artificial timers which are HIGH.
28
+ - Do not recommend removing a conversion step without naming the revenue or data-collection impact and an FTC-compliant alternative.
29
+ - Label every finding with evidence basis: flow specification provided, wireframe 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
+ - Pre-checked consent assessment (recurring-charge terms, auto-renew)
38
+ - Cancellation path symmetry assessment (step count vs. enrollment path)
39
+ - Countdown timer authenticity assessment
40
+ - Visual weight and decline-path accessibility assessment
41
+ - Upsell interstitial consent assessment
42
+ - Material-term pre-billing disclosure assessment
43
+ - Confirm-shaming CTA assessment
44
+ - Severity-labelled finding list (critical / high / medium / low)
45
+ - Safe next actions
@@ -0,0 +1,22 @@
1
+ {
2
+ "id": "marketing-conversion-flow-dark-pattern-review",
3
+ "name": "Marketing Conversion Flow Dark-Pattern Review",
4
+ "type": "skill",
5
+ "provider": "marketing",
6
+ "harnesses": ["codex", "claude-code", "cursor", "gemini", "kiro", "other"],
7
+ "summary": "Review marketing conversion flow specifications — subscription sign-up, upsell interstitial, free-trial enrollment, and cancellation path — for dark-pattern practices that invalidate consent or constitute unfair or deceptive acts under FTC Section 5, the FTC Negative Option Rule, CPRA, and EU AI Act Article 5(1)(b).",
8
+ "source_type": "original",
9
+ "official_docs": [
10
+ "https://www.ftc.gov/legal-library/browse/rules/negative-option-rule",
11
+ "https://www.ftc.gov/system/files/ftc_gov/pdf/P214800+Dark+Patterns+Report+9.14.2022+-+FINAL.pdf",
12
+ "https://leginfo.legislature.ca.gov/faces/codes_displaySection.xhtml?lawCode=CIV&sectionNum=1798.140.",
13
+ "https://oag.ca.gov/privacy/ccpa",
14
+ "https://eur-lex.europa.eu/eli/reg/2024/1689/oj/eng"
15
+ ],
16
+ "security_notes": "Read-only static review of sanitized UX flow specifications and annotated wireframes only. Never request real payment credentials, live user-session data, or production A/B-test results. Findings may indicate violations of FTC rules carrying civil penalties — route remediation and enforcement-risk assessment to qualified legal counsel before acting on findings.",
17
+ "last_verified": "2026-05-17",
18
+ "path": "skills/marketing/marketing-conversion-flow-dark-pattern-review",
19
+ "author": "github: Raishin",
20
+ "version": "0.1.0",
21
+ "lifecycle": "experimental"
22
+ }
@@ -0,0 +1,160 @@
1
+ # Workflow and Output Contract
2
+
3
+ ## Workflow
4
+
5
+ ### Step 1 — Collect inputs
6
+
7
+ Ask the user to provide a sanitized UX flow specification covering one or more of the following conversion surfaces (replace real copy with representative placeholders; no real payment data, session tokens, or A/B-test PII):
8
+
9
+ - Step-by-step page descriptions for the subscription sign-up or free-trial enrollment flow, including CTA labels and button visual weight
10
+ - Step-by-step page descriptions for the cancellation path, including step count and any save-offer interstitials
11
+ - Upsell interstitial specifications, including whether a "continue without upgrade" option exists and its visual treatment
12
+ - Pre-checked option inventory (checkboxes, toggles, radio buttons preselected at page load)
13
+ - Countdown timer specifications (trigger condition, timer source — server-side session or client-side arbitrary duration, reset behavior)
14
+ - Visual hierarchy notes: font size, color contrast, and positioning of accept vs. decline CTAs
15
+
16
+ If the user provides only a partial set, note which surfaces are absent and scope findings accordingly. Do not attempt to infer full flow structure from a single page description.
17
+
18
+ This skill does not review consent banners or cookie notices — defer those to `marketing-consent-data-collection-review`.
19
+
20
+ ### Step 2 — Pre-checked consent audit
21
+
22
+ Inspect every option that is pre-checked or preselected at page load and assess what obligation or charge it creates:
23
+
24
+ ```text
25
+ # HIGH — auto-renew pre-checked on free-trial enrollment form
26
+ [✓] Automatically renew at $29.99/month after trial ends
27
+ (checkbox is below the fold; CTA reads "Start Free Trial")
28
+
29
+ # COMPLIANT — opt-in explicitly unchecked, above the fold
30
+ [ ] Add annual plan upgrade at $9.99/month
31
+ ```
32
+
33
+ Specifically flag:
34
+ - Any pre-checked option that binds the user to a recurring financial charge without affirmative action — prohibited under the FTC Negative Option Rule and invalidates CPRA consent.
35
+ - Pre-checked add-ons, SMS marketing, or data-sharing agreements — these require affirmative consent under CPRA § 1798.140(l) and FTC Act Section 5.
36
+ - Whether material terms (price, renewal date, cancellation method) appear clearly and conspicuously before billing information is requested — ROSCA pre-billing disclosure requirement.
37
+
38
+ ### Step 3 — Cancellation path symmetry audit
39
+
40
+ Count and compare steps:
41
+
42
+ ```text
43
+ Enrollment path: Landing → Plan select → Account create → Payment → Confirm (4 decision steps)
44
+ Cancellation path: Account → Settings → Cancel? → Save offer 1 → Save offer 2 → Confirm cancel (5 decision steps)
45
+ ```
46
+
47
+ Flag as HIGH when:
48
+ - Cancellation requires more decision steps than enrollment.
49
+ - Save-offer interstitials appear without a direct "Cancel anyway" option at each step, forcing the user through the entire save sequence before reaching a cancel confirmation.
50
+ - The cancellation entrypoint is buried in account settings more than two levels deep while enrollment is available from the top-level navigation or homepage.
51
+
52
+ Flag as MEDIUM when:
53
+ - Save-offer interstitials appear but each step offers a clear "Cancel anyway" option alongside the save offer.
54
+ - Cancellation requires the same step count as enrollment but save offers add latency without hiding the exit.
55
+
56
+ Note: The FTC Negative Option Rule (effective May 14, 2025) requires simple cancellation through the same mechanism as enrollment, and cancellation must be at least as easy as enrollment.
57
+
58
+ ### Step 4 — Countdown timer authenticity audit
59
+
60
+ For every countdown timer in the flow, assess whether the deadline is real:
61
+
62
+ ```text
63
+ # HIGH — client-side timer resets on page reload; offer is always available
64
+ "Offer expires in 09:47" — timer resets to 10:00 on browser refresh
65
+ → Artificial urgency; no real deadline; deceptive act under FTC Act Section 5.
66
+
67
+ # LOW — server-side session timer; offer genuinely expires at session end
68
+ "Your reserved cart expires in 14:53" — server validates expiry at checkout
69
+ → Real deadline; authenticate in server logs; document expiry logic.
70
+ ```
71
+
72
+ Distinguish: a timer whose deadline is backed by server state and enforced at checkout is a legitimate scarcity signal. A timer that resets, never expires, or applies to an always-available offer is a fabricated urgency device — HIGH.
73
+
74
+ ### Step 5 — Visual weight and decline-path audit
75
+
76
+ Assess the visual treatment of accept vs. decline paths:
77
+
78
+ ```text
79
+ # HIGH — decline option visually suppressed
80
+ [Start Free Trial — large, blue, full-width button]
81
+ [no, I don't want savings — 11px grey text, below fold]
82
+
83
+ # COMPLIANT — balanced visual weight
84
+ [Start Free Trial] [No thanks] (equal size, both above fold)
85
+ ```
86
+
87
+ Flag as HIGH when:
88
+ - The decline or "no thanks" option is absent, below the fold, or uses a contrast ratio below 4.5:1 while the accept CTA uses high-contrast primary styling.
89
+ - The accept CTA is a full-width button while the decline option is a text link, creating materially asymmetric affordance.
90
+
91
+ Flag as MEDIUM when:
92
+ - Confirm-shaming copy ("No thanks, I prefer to pay more") is used — note it may escalate to HIGH in combination with visual suppression.
93
+
94
+ ### Step 6 — Upsell interstitial consent audit
95
+
96
+ For each upsell interstitial (a mandatory step between enrollment start and confirmation):
97
+
98
+ - Confirm a "continue without upgrade" option exists and is reachable without completing the upsell flow.
99
+ - Assess whether the interstitial can be bypassed or only dismissed — a mandatory interstitial with no decline path eliminates meaningful consent.
100
+ - Confirm the interstitial does not pre-check the upgrade or add charges to the user's cart without affirmative action.
101
+
102
+ An upsell interstitial with no bypass is HIGH — the user cannot consent to the base product without also being offered (and potentially trapped in) the upsell.
103
+
104
+ ### Step 7 — Material-term pre-billing disclosure audit
105
+
106
+ Before any billing information is collected, confirm the flow discloses clearly and conspicuously:
107
+ - The price and billing frequency after any trial period.
108
+ - The exact trial period length and the date on which recurring charges begin.
109
+ - How to cancel and through what mechanism.
110
+
111
+ ROSCA requires these disclosures before collecting billing information. Absence or relegation to fine print is HIGH.
112
+
113
+ ### Step 8 — Produce the output
114
+
115
+ Format findings using the Output section below.
116
+
117
+ ---
118
+
119
+ ## Output
120
+
121
+ Return findings in this structure:
122
+
123
+ ```
124
+ ## Verdict
125
+ <one sentence: pass / needs work / critical issues found>
126
+
127
+ ## Evidence level
128
+ <flow specification provided | wireframe provided | documentation-based | inference from missing element>
129
+
130
+ ## Findings
131
+
132
+ ### CRITICAL
133
+ - [C1] <finding title>: <description> — <remediation>
134
+
135
+ ### HIGH
136
+ - [H1] <finding title>: <description> — <remediation>
137
+
138
+ ### MEDIUM
139
+ - [M1] <finding title>: <description> — <remediation>
140
+
141
+ ### LOW
142
+ - [L1] <finding title>: <description> — <remediation>
143
+
144
+ ## Safe next actions
145
+ 1. <action>
146
+ 2. <action>
147
+
148
+ ## Open questions
149
+ - <question requiring user clarification>
150
+ ```
151
+
152
+ ---
153
+
154
+ ## Security and scope notes
155
+
156
+ - This is a static review of a sanitized artifact. Never request real payment credentials, live user-session recordings, or production A/B-test data containing real user identities.
157
+ - Findings indicating violation of the FTC Negative Option Rule carry civil penalty exposure — route enforcement-risk assessment to qualified legal counsel before acting on findings. Do not quantify penalty exposure yourself.
158
+ - This skill is scoped to marketing conversion flows: sign-up, upsell, free-trial, and cancellation. Consent banners and cookie notices are out of scope — refer to `marketing-consent-data-collection-review`.
159
+ - When evidence is partial, scope each finding to what was provided and state the assumption explicitly.
160
+ - A flow that is FTC-compliant under the Negative Option Rule may still violate CPRA or EU AI Act Article 5(1)(b) — assess each regulatory frame independently.
@@ -0,0 +1,43 @@
1
+ ---
2
+ name: marketing-email-list-retention-review
3
+ description: Use this skill when reviewing marketing email list segment metadata, consent-record completeness, suppression-list coverage, and documented data-retention schedules for GDPR storage-limitation, CASL record-keeping, and CCPA deletion-right compliance. Trigger when a user provides a CRM or ESP export of list segment metadata fields — consent source, consent timestamp, last-engagement date, subscription status, suppression-list entries — plus the organization's documented email data-retention policy, and asks whether the stored list inventory and retention posture meets regulatory obligations.
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
+ # Marketing Email List Retention Review
14
+
15
+ ## Purpose
16
+ This skill reviews the stored email list inventory and retention posture of a marketing program against GDPR storage-limitation (Article 5(1)(e)), accountability (Article 5(2)), and erasure (Article 17) obligations; CASL section 6 consent requirements and section 11 three-year record-keeping mandate; and CCPA/CPRA section 1798.105 deletion rights. Marketing email lists accumulate contacts whose consent may have lapsed, whose consent source was never recorded, or who were deleted from the CRM but remain in a detached suppression list — all conditions that expose the controller to regulatory enforcement and litigation. This review assesses the metadata fields of an exported list segment, not the consent banner or collection mechanism (defer that to `marketing-consent-data-collection-review`), and it does not process real subscriber PII.
17
+
18
+ ## Lean operating rules
19
+ - Treat contacts with consent timestamps older than 36 months with no documented re-engagement or re-permission event as HIGH — CASL §11 requires demonstrable consent records covering the entire send period, and a gap breaks the chain of proof.
20
+ - Treat any active-send segment where a material proportion of contacts (assess whether the proportion is notable relative to the list size) have no consent-source field populated as HIGH — the controller cannot demonstrate lawful basis, violating GDPR Article 5(2) accountability.
21
+ - Treat suppression lists stored in a separate system with no documented automated sync cadence as HIGH — contacts deleted or unsubscribed from the primary CRM may re-enter active sends through list imports, segment refreshes, or CRM migrations.
22
+ - Treat contacts for whom a deletion request was received but whose record persists beyond the organization's documented deletion SLA as HIGH — a GDPR Article 17 and CCPA §1798.105 violation in progress.
23
+ - Treat a retention schedule that sets no maximum age for active-send contacts, or that retains suppressed contacts beyond what is necessary to enforce suppression, as MEDIUM — GDPR Article 5(1)(e) requires data be kept no longer than necessary.
24
+ - Treat the absence of a last-engagement date field, or engagement dates older than the stated re-permission interval with no re-permission event recorded, as MEDIUM — these contacts may lack a legitimate-interest or consent basis for continued sends.
25
+ - Treat consent-source values that are free-text or inconsistently coded (preventing automated compliance queries) as MEDIUM — the controller must be able to demonstrate lawful basis programmatically at scale.
26
+ - Treat the absence of a documented re-permission workflow for lapsing or aged consent as MEDIUM — without a scheduled re-permission program, the list will accumulate non-compliant contacts over time.
27
+ - Flag any segment exported for a third-party send partner where the third-party processor agreement or data-sharing basis is absent from the metadata as MEDIUM.
28
+ - Label every finding with evidence basis: export provided, policy document provided, documentation-based, or inference from missing fields.
29
+ - Do not recommend deleting contacts without first confirming whether suppression-list entries are needed for ongoing suppression enforcement.
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
+ - Consent-record completeness findings (consent-source field population, timestamp age, re-permission events)
38
+ - CASL record-keeping assessment (three-year demonstrability of consent)
39
+ - GDPR storage-limitation and erasure findings (retention schedule, deletion-request SLA)
40
+ - CCPA deletion-right posture
41
+ - Suppression-list sync and integrity assessment
42
+ - Severity-labelled finding list (critical / high / medium / low)
43
+ - Safe next actions
@@ -0,0 +1,22 @@
1
+ {
2
+ "id": "marketing-email-list-retention-review",
3
+ "name": "Marketing Email List Retention Review",
4
+ "type": "skill",
5
+ "provider": "marketing",
6
+ "harnesses": ["codex", "claude-code", "cursor", "gemini", "kiro", "other"],
7
+ "summary": "Review marketing email list segment metadata, consent-record completeness, suppression-list coverage, and data-retention schedules for GDPR, CASL, and CCPA deletion-right compliance.",
8
+ "source_type": "original",
9
+ "official_docs": [
10
+ "https://gdpr-info.eu/art-5-gdpr/",
11
+ "https://gdpr-info.eu/art-17-gdpr/",
12
+ "https://laws-lois.justice.gc.ca/eng/acts/C-28.65/page-1.html",
13
+ "https://oag.ca.gov/privacy/ccpa",
14
+ "https://www.canada.ca/en/radio-television-telecommunications/news/2014/07/compliance-and-enforcement-information-bulletin-crtc-2014-326.html"
15
+ ],
16
+ "security_notes": "Review works from sanitized CRM/ESP exports only — placeholder values for email addresses, subscriber IDs, and timestamps. Never accept real subscriber PII, live CRM credentials, or ESP API keys. Findings of missing consent records or absent suppression-list sync may constitute an ongoing GDPR or CASL violation requiring legal escalation.",
17
+ "last_verified": "2026-05-17",
18
+ "path": "skills/marketing/marketing-email-list-retention-review",
19
+ "author": "github: Raishin",
20
+ "version": "0.1.0",
21
+ "lifecycle": "experimental"
22
+ }
@@ -0,0 +1,144 @@
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 subscriber email addresses and IDs with placeholders; no real PII, no live CRM credentials):
8
+ - CRM or ESP export of list segment metadata fields, including: consent source, consent timestamp, last-engagement date, subscription status, and suppression-list entry flag
9
+ - The organization's documented email data-retention policy (maximum age for active contacts, suppression-list retention period, deletion-request SLA)
10
+ - Any documented re-permission workflow or re-engagement schedule
11
+ - Suppression-list storage and sync architecture (same system, separate file, sync cadence)
12
+ - Third-party send partner list and data-sharing basis documentation
13
+
14
+ If the user provides only a partial set, note which sections are absent and scope findings accordingly.
15
+
16
+ ### Step 2 — Consent-record completeness audit
17
+
18
+ For the exported segment, assess the completeness of consent records:
19
+ - **Consent-source field**: Is it populated for all active-send contacts? What proportion have a blank or null value? A blank consent-source means the controller cannot demonstrate lawful basis for that contact — a GDPR Article 5(2) accountability failure.
20
+ - **Consent-source values**: Are values standardized and machine-queryable (e.g., `website-signup-form-2024`, `trade-show-paper-form-2023`) or free-text and inconsistent? Inconsistent coding prevents automated compliance queries at scale.
21
+ - **Consent timestamp**: Is it present for all contacts? Are any timestamps absent or obviously implausible (e.g., epoch zero, future dates)?
22
+
23
+ ```text
24
+ # HIGH — material proportion of active-send contacts with blank consent_source
25
+ contact_id | consent_source | consent_timestamp | status
26
+ ------------|----------------|---------------------|-------
27
+ [ID-001] | website-signup | 2022-03-14 09:00:00 | active
28
+ [ID-002] | (null) | (null) | active ← no lawful basis
29
+ [ID-003] | (null) | (null) | active ← no lawful basis
30
+
31
+ # COMPLIANT — all active contacts have a consent source and timestamp
32
+ [ID-004] | trade-show-2024 | 2024-06-01 14:00:00 | active
33
+ ```
34
+
35
+ ### Step 3 — CASL three-year record-keeping audit
36
+
37
+ CASL §11 requires that the organization be able to demonstrate consent for every commercial electronic message sent. The consent record must cover the entire period of the relationship:
38
+ - Identify contacts whose earliest consent timestamp predates the review date by more than 36 months with no documented re-engagement or re-permission event in the intervening period.
39
+ - Identify contacts whose consent basis is "implied" under CASL (e.g., existing business relationship) and assess whether the implied consent window (2 years) has expired.
40
+ - A broken record chain — consent recorded, then a gap, then sends resumed without a re-permission event — is a CASL §6 violation for each message sent during the gap.
41
+
42
+ ```text
43
+ # HIGH — consent older than 36 months, no re-permission event
44
+ contact_id | consent_timestamp | last_repermission | months_since_consent
45
+ ------------|---------------------|-------------------|---------------------
46
+ [ID-010] | 2021-11-05 00:00:00 | (null) | 42 ← CASL risk
47
+
48
+ # COMPLIANT — re-permission event within 36-month window
49
+ [ID-011] | 2020-08-01 00:00:00 | 2024-01-15 | 69, re-permissioned
50
+ ```
51
+
52
+ ### Step 4 — GDPR storage-limitation and erasure audit
53
+
54
+ GDPR Article 5(1)(e) requires personal data be kept no longer than necessary. Article 17 grants data subjects the right to erasure:
55
+ - Review the documented retention policy: does it set a maximum age for active-send contacts? If no maximum age is defined, the list may accumulate contacts indefinitely — a storage-limitation failure.
56
+ - Review the deletion-request SLA: does the policy commit to erasing (or suppressing) within 30 days? Are there contacts in the export whose deletion-request date plus the SLA has passed and who remain in an active segment?
57
+ - Assess whether suppressed contacts are retained only as long as necessary to enforce ongoing suppression, and no longer.
58
+
59
+ ```text
60
+ # HIGH — deletion request received, contact still active past SLA
61
+ contact_id | deletion_requested | status | days_past_sla
62
+ ------------|---------------------|--------|---------------
63
+ [ID-020] | 2026-02-01 | active | 45 ← GDPR Art. 17 violation
64
+
65
+ # MEDIUM — retention policy sets no maximum age
66
+ retention_policy.max_active_contact_age = (not defined)
67
+ ```
68
+
69
+ ### Step 5 — CCPA/CPRA deletion-right posture
70
+
71
+ California Consumer Privacy Act §1798.105 grants consumers the right to request deletion of their personal information. Assess:
72
+ - Whether deletion requests from California residents result in removal from the active-send list within 45 days (or up to 90 days with notice of extension).
73
+ - Whether the export shows any California-resident contacts (where identifiable by state field or domain inference) who submitted deletion requests and remain active.
74
+ - Whether the suppression list is used to enforce deletion (preventing re-addition on next import) rather than merely removing the contact from one segment.
75
+
76
+ ### Step 6 — Suppression-list integrity audit
77
+
78
+ The suppression list is the mechanism that enforces both unsubscribes and deletion requests. Weaknesses here cause compliance failures to recur:
79
+ - Is the suppression list stored in the same system as the active-send list, or separately? A separately stored file that requires manual sync is HIGH — a missed sync cycle allows deleted or unsubscribed contacts to re-enter active sends.
80
+ - What is the documented sync cadence? Real-time or near-real-time sync is the target; periodic batch sync introduces a window of non-compliance.
81
+ - Is the suppression list checked against every list import and segment build, or only against scheduled sends? An import that bypasses the suppression check can re-add suppressed contacts silently.
82
+
83
+ ### Step 7 — Third-party send partner assessment
84
+
85
+ If the segment metadata indicates sends to third-party partners or via third-party ESPs:
86
+ - Confirm a data-processing agreement (DPA) or data-sharing agreement is documented for each partner.
87
+ - Confirm that the consent scope collected covers the specific send type (e.g., consent to marketing emails from the controller does not automatically extend to sends on behalf of a partner brand).
88
+ - Flag absent DPA documentation as MEDIUM.
89
+
90
+ ### Step 8 — Retention schedule and re-permission program assessment
91
+
92
+ - Review whether the organization's documented policy includes a scheduled re-permission workflow for contacts approaching the consent-age threshold.
93
+ - An absence of a re-permission program means the list will accumulate CASL-non-compliant contacts continuously over a 3-year cycle.
94
+ - Flag the absence of a re-permission workflow as MEDIUM with a recommendation to implement a 30-month re-engagement trigger.
95
+
96
+ ### Step 9 — 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
+ <export provided | policy document provided | documentation-based | inference>
112
+
113
+ ## Findings
114
+
115
+ ### CRITICAL
116
+ - [C1] <finding title>: <description> — <remediation>
117
+
118
+ ### HIGH
119
+ - [H1] <finding title>: <description> — <remediation>
120
+
121
+ ### MEDIUM
122
+ - [M1] <finding title>: <description> — <remediation>
123
+
124
+ ### LOW
125
+ - [L1] <finding title>: <description> — <remediation>
126
+
127
+ ## Safe next actions
128
+ 1. <action>
129
+ 2. <action>
130
+
131
+ ## Open questions
132
+ - <question requiring user clarification>
133
+ ```
134
+
135
+ ---
136
+
137
+ ## Security and scope notes
138
+
139
+ - This is a static review of list segment metadata and retention policy documents. Never request real subscriber email addresses, real subscriber IDs, live CRM credentials, or live ESP API keys. Work from sanitized exports with placeholder values.
140
+ - This skill reviews the stored list inventory and retention posture only. For consent collection mechanisms (banners, opt-in forms, consent strings), defer to `marketing-consent-data-collection-review`.
141
+ - A finding of contacts persisting beyond a deletion-request SLA may constitute an ongoing Article 17 or CCPA §1798.105 violation. Surface this and route the determination and remediation to qualified legal counsel and the incident-response process.
142
+ - Never recommend deleting suppression-list entries without confirming that the entries are not needed to enforce ongoing suppression — erasing suppression records can cause previously unsubscribed contacts to be re-added.
143
+ - When evidence is partial (e.g., policy document provided but no export), scope each finding to the available evidence and state assumptions explicitly.
144
+ - CASL record-keeping obligations extend to every commercial electronic message sent; a finding of a broken consent chain covers all messages sent during the gap, not just future sends.
@@ -0,0 +1,42 @@
1
+ ---
2
+ name: marketing-gpc-signal-honoring-review
3
+ description: Use this skill when reviewing the technical path by which a Global Privacy Control opt-out signal travels through the tag stack and CMP to determine whether ad tags, server-side forwarding, and conversion APIs actually cease firing. Trigger when a user provides a tag-manager container export, a CMP opt-out configuration, a server-side tag configuration, or asks whether their GPC implementation actually stops ad tags from firing, whether CPRA opt-out obligations are met technically, or whether the CMP acknowledges GPC but fails to suppress downstream tag execution.
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
+ # Marketing GPC Signal Honoring Review
14
+
15
+ ## Purpose
16
+ This skill reviews the technical signal path by which a Global Privacy Control (GPC) opt-out travels from the browser header through the consent management platform (CMP) and tag manager to determine whether ad tags, server-side conversion forwarding, and conversion API calls actually cease firing. GPC is a legally recognized opt-out signal under CPRA (Cal. Civ. Code §1798.135) and the California CPPA enforcement sweeps of September 2025 confirmed that acknowledging GPC in the CMP UI while failing to suppress downstream tag execution constitutes a violation. The review distinguishes between cosmetic compliance (the CMP reads the GPC header and sets a cookie) and substantive compliance (the GPC state variable gates every ad tag firing rule and every server-side forwarding path). It also catches the pre-first-visit gap: users who set GPC before arriving for the first time receive no opt-out cookie and are therefore not suppressed. Artifact inputs: tag-manager container export and CMP opt-out configuration, annotated with which firing rules reference the GPC/opt-out variable.
17
+
18
+ ## Lean operating rules
19
+ - Treat ad conversion tags that remain in active firing rules with no GPC-state condition as HIGH — if the CMP acknowledges the opt-out in the UI but the tag-manager container has no GPC variable guard on those rules, the opt-out is not honored technically and constitutes a CPRA violation per CPPA Sept 2025 enforcement guidance.
20
+ - Treat server-side conversion API events (Meta CAPI, Google Enhanced Conversions, TikTok Events API) forwarded from a first-party endpoint that bypasses the CMP entirely as HIGH — the first-party routing does not exempt the forwarding from opt-out obligations; the GPC state must be checked before forwarding occurs.
21
+ - Treat a CMP that sets an opt-out cookie on opt-out but does not suppress tags for users who set GPC before their first visit (no prior consent record) as HIGH — pre-first-visit GPC must suppress all non-essential tags on the first page load, not only after cookie creation.
22
+ - Treat CMP-acknowledged GPC that is not propagated as a boolean variable to the tag-manager firing rules as HIGH — CMP acknowledgment without tag-layer propagation leaves all existing rules unaffected.
23
+ - Treat Opt Me Out Act (AB 566, Oct 2025) obligations for opt-out link placement as MEDIUM when the GPC signal path is technically broken — surfacing the link is insufficient if the signal is not honored downstream.
24
+ - Flag ad tags that check a consent cookie but not the GPC header directly as MEDIUM — cookie-only checks fail for users who clear cookies but retain GPC, and for fresh sessions where no cookie yet exists.
25
+ - Flag the absence of a documented test procedure confirming GPC suppression across the full tag list as MEDIUM — attestation of compliance requires evidence, not assumption.
26
+ - Flag MEDIUM when server-side tag configurations do not log GPC-state at the time of forwarding — without logging, an enforcement sweep cannot demonstrate suppression.
27
+ - Do not recommend disabling all tags as the remediation — identify the specific firing-rule conditions missing a GPC variable guard and propose the minimal surgical fix.
28
+ - Label every finding with evidence basis: container provided, CMP config provided, documentation-based, or inference from missing config.
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
+ - GPC variable propagation assessment (CMP to tag-manager variable layer)
37
+ - Firing-rule guard assessment (which ad tags lack a GPC-state condition)
38
+ - Server-side forwarding path assessment (CAPI, Enhanced Conversions, Events API bypass)
39
+ - Pre-first-visit suppression assessment (fresh session with GPC, no prior cookie)
40
+ - Opt Me Out Act link/signal consistency assessment
41
+ - Severity-labelled finding list (critical / high / medium / low)
42
+ - Safe next actions