@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,129 @@
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 visitor data, no ad-platform credentials):
8
+ - Tag manager container export showing pixels, triggers, and the variables they read
9
+ - Pixel snippets (Meta Pixel, TikTok Pixel, Google Ads / floodlight, LinkedIn Insight Tag, etc.)
10
+ - A representative conversion or page-view event payload (the parameters actually sent)
11
+ - The `dataLayer` specification or a sample `dataLayer` push
12
+ - The list of page types the pixels load on, especially any sensitive-context pages
13
+ - Whether advanced/automatic matching is enabled on any pixel
14
+
15
+ If the user provides only a partial set, note which sections are absent and scope findings accordingly.
16
+
17
+ ### Step 2 — Page-context classification
18
+
19
+ Classify the pages each pixel loads on before inspecting payloads. Context alone can be the leak:
20
+ - **Special-category context**: health/medical, mental health, reproductive, financial hardship, loan/credit, legal, sexual orientation, religious, immigration.
21
+ - **Authenticated context**: post-login account, transaction, order-history, or profile pages.
22
+ - **General marketing context**: homepage, blog, top-of-funnel landing pages.
23
+
24
+ Any advertising or social pixel firing in a special-category or authenticated context is HIGH on context alone — the URL, referrer, and page title reveal the person's circumstances regardless of payload contents.
25
+
26
+ ### Step 3 — Payload PII audit
27
+
28
+ Inspect every parameter the pixel transmits. Flag direct identifiers and quasi-identifiers:
29
+
30
+ ```text
31
+ # HIGH — raw email in the page URL, forwarded into the pixel page-view event
32
+ https://example.com/welcome?email=jane.doe@example.com
33
+ Meta Pixel: track('PageView') # pixel reads location.href → email leaves the page
34
+
35
+ # HIGH — PII pushed into dataLayer and mapped to event parameters
36
+ dataLayer.push({ event: 'signup', user_email: 'jane.doe@example.com', phone: '+15551234567' });
37
+
38
+ # CORRECT — only a non-identifying conversion signal
39
+ dataLayer.push({ event: 'signup', signup_tier: 'free' });
40
+ ```
41
+
42
+ Check for: email, phone, full name, postal address, date of birth, government IDs, account numbers, precise geolocation, and free-text fields that may contain any of the above.
43
+
44
+ ### Step 4 — Form-field auto-capture audit
45
+
46
+ Identify any feature that captures form input without an explicit field allowlist:
47
+ - Meta Pixel **Advanced Matching** (automatic) — scrapes form fields on the page.
48
+ - Google **enhanced conversions** with auto-detection rather than a defined selector.
49
+ - Tag-manager **form-submit** triggers with a variable capturing all field values.
50
+ - Generic input/keystroke listeners.
51
+
52
+ ```text
53
+ # HIGH — automatic advanced matching scrapes every form field on the page
54
+ fbq('init', 'PIXEL_ID', {}, { autoConfig: true });
55
+
56
+ # LOWER RISK — matching restricted to explicitly chosen, hashed fields
57
+ fbq('init', 'PIXEL_ID');
58
+ fbq('track', 'Lead'); # no automatic field scraping; identifiers handled server-side if needed
59
+ ```
60
+
61
+ Auto-capture is HIGH because it collects whatever the visitor typed, including fields the marketer never intended to send.
62
+
63
+ ### Step 5 — Identifier-handling audit
64
+
65
+ For any identifier intentionally sent for matching:
66
+ - Confirm SHA-256 hashing where the ad platform's API requires it, and confirm hashing happens before transmission, not by the ad network on receipt.
67
+ - Note that hashing is pseudonymization, not anonymization — it still constitutes disclosure of personal data and still requires a lawful basis and consent scope.
68
+ - Confirm a redaction or allowlist layer strips PII from URLs and referrers before any pixel reads `location`.
69
+
70
+ Missing hashing where required is HIGH. Missing a redaction layer is MEDIUM.
71
+
72
+ ### Step 6 — Payload minimization audit
73
+
74
+ Conversion events should send the minimum signal needed for measurement:
75
+ - A conversion flag and a coarse category are usually sufficient.
76
+ - Precise revenue, full order line items, account balances, or SKU-level health/financial detail sent to an ad network is MEDIUM — it is more than measurement requires.
77
+
78
+ ### Step 7 — Consent-load ordering check
79
+
80
+ Note whether pixels load before the consent signal. Flag as MEDIUM and explicitly defer the full consent-gating analysis to the `marketing-consent-data-collection-review` skill — do not duplicate that analysis here.
81
+
82
+ ### Step 8 — Produce the output
83
+
84
+ Format findings using the Output section below.
85
+
86
+ ---
87
+
88
+ ## Output
89
+
90
+ Return findings in this structure:
91
+
92
+ ```
93
+ ## Verdict
94
+ <one sentence: pass / needs work / critical issues found>
95
+
96
+ ## Evidence level
97
+ <payload provided | container provided | documentation-based | inference>
98
+
99
+ ## Findings
100
+
101
+ ### CRITICAL
102
+ - [C1] <finding title>: <description> — <remediation>
103
+
104
+ ### HIGH
105
+ - [H1] <finding title>: <description> — <remediation>
106
+
107
+ ### MEDIUM
108
+ - [M1] <finding title>: <description> — <remediation>
109
+
110
+ ### LOW
111
+ - [L1] <finding title>: <description> — <remediation>
112
+
113
+ ## Safe next actions
114
+ 1. <action>
115
+ 2. <action>
116
+
117
+ ## Open questions
118
+ - <question requiring user clarification>
119
+ ```
120
+
121
+ ---
122
+
123
+ ## Security and scope notes
124
+
125
+ - This is a static review. Never request real visitor data, real conversion logs, or ad-platform credentials. Work from sanitized payloads with placeholder values.
126
+ - A leak found here may be a reportable breach under HIPAA, the FTC Health Breach Notification Rule, or state law — flag that possibility and route the determination to qualified counsel and the incident-response process. Do not make the breach-notification call yourself.
127
+ - Never recommend a fix that keeps PII flowing to the ad network "but hashed" as a complete remedy — hashing is mitigation, not elimination.
128
+ - Never recommend removing a pixel without naming the conversion measurement lost and a server-side or consent-scoped alternative.
129
+ - When evidence is partial, scope each finding to what was provided and state the assumption explicitly.
@@ -0,0 +1,45 @@
1
+ ---
2
+ name: martech-access-governance-review
3
+ description: Use this skill when reviewing access governance across a marketing technology stack — OAuth grants and connected apps, API keys and tokens, CRM and marketing-automation role assignments, and integration scopes. Trigger when a user provides an OAuth connected-app inventory, an integration scope list, a CRM/MAP role matrix, an API-key inventory, or asks whether their martech integrations are over-permissioned, whether stale connectors still hold live tokens, or how to apply least privilege to their marketing stack.
4
+ allowed-tools: Read Grep Glob
5
+ metadata:
6
+ author: "github: Raishin"
7
+ version: "0.1.0"
8
+ updated: "2026-05-17"
9
+ category: security
10
+ lifecycle: experimental
11
+ ---
12
+
13
+ # Martech Access Governance Review
14
+
15
+ ## Purpose
16
+ This skill reviews identity and access governance across a marketing technology stack — the CRM, marketing automation platform, CDP, analytics, and the long tail of connected SaaS apps. Marketing operations accumulate OAuth grants, API keys, and seat permissions faster than any other business function, and rarely deprovision them. The result is a stack where third-party connectors hold full-CRM scopes, a single shared admin key authenticates a dozen tools, and a contractor's connected app still has a live refresh token a year after the engagement ended. This is one of the most exploited SaaS breach paths: the marketing stack holds the entire customer database and is governed loosely. The review catches over-broad OAuth scopes, shared and non-rotating credentials, stale grants, missing token expiry, and absent ownership before they become an incident.
17
+
18
+ ## Lean operating rules
19
+ - Treat any third-party connected app granted a full-read or read-write scope over the entire CRM contact/lead database when its function needs a narrow scope as HIGH — over-broad scope is the blast radius if that vendor is breached.
20
+ - Treat a single API key or service account shared across multiple tools or integrations as HIGH — it cannot be rotated or revoked without an outage, and a leak compromises every consumer.
21
+ - Treat any long-lived API key or OAuth grant with no rotation schedule and no expiry as HIGH — a leaked non-expiring credential is valid until someone notices.
22
+ - Treat a connected app, integration, or token tied to a departed employee, ended vendor engagement, or decommissioned tool that still holds a live grant as HIGH — stale credentials are unattended attack surface.
23
+ - Treat a CRM or marketing-automation integration credentialed with an admin or owner role when an API-only or limited integration role exists as HIGH — privilege beyond function violates least privilege.
24
+ - Treat a connected app or API key with no named human or team owner as HIGH — unowned credentials are never reviewed and never revoked.
25
+ - Flag marketing user seats holding bulk-export or full-database-export permission beyond the few who need it as MEDIUM — bulk export is the exfiltration path.
26
+ - Flag the absence of a recurring access-review cadence for connected apps and integration credentials as MEDIUM.
27
+ - Flag OAuth grants that include offline-access / refresh-token scope where only short-lived interactive access is needed as MEDIUM.
28
+ - Flag credentials transmitted or stored in plaintext (in tag managers, spreadsheets, shared docs, or automation tools) as HIGH.
29
+ - Do not recommend revoking a grant without naming the integration it powers and the marketing workflow that breaks.
30
+ - Label every finding with evidence basis: inventory provided, role matrix provided, documentation-based, or inference from missing config.
31
+
32
+ ## References
33
+ Load these only when needed:
34
+ - [Workflow and output contract](references/workflow-and-output.md) — use when executing the full review or formatting the final answer.
35
+
36
+ ## Response minimum
37
+ Return, at minimum:
38
+ - OAuth scope blast-radius findings (connected apps over-scoped vs function)
39
+ - Shared / non-rotating credential findings
40
+ - Stale grant findings (departed users, ended vendors, dead tools)
41
+ - Integration role assessment (admin used where limited role exists)
42
+ - Ownership and access-review cadence gaps
43
+ - Bulk-export permission distribution assessment
44
+ - Severity-labelled finding list (critical / high / medium / low)
45
+ - Safe next actions
@@ -0,0 +1,21 @@
1
+ {
2
+ "id": "martech-access-governance-review",
3
+ "name": "Martech Access Governance Review",
4
+ "type": "skill",
5
+ "provider": "marketing",
6
+ "harnesses": ["codex", "claude-code", "cursor", "gemini", "kiro", "other"],
7
+ "summary": "Review access governance across a marketing technology stack — OAuth connected apps, API keys, CRM and marketing-automation roles, and integration scopes — for least-privilege violations, shared and stale credentials, and missing ownership.",
8
+ "source_type": "original",
9
+ "official_docs": [
10
+ "https://datatracker.ietf.org/doc/html/rfc6749",
11
+ "https://oauth.net/2/scope/",
12
+ "https://csrc.nist.gov/glossary/term/least_privilege",
13
+ "https://owasp.org/www-project-top-ten/",
14
+ "https://csrc.nist.gov/pubs/sp/800/207/final"
15
+ ],
16
+ "security_notes": "A marketing technology stack holds the full customer database and accumulates OAuth grants, API keys, and seats faster than it deprovisions them. Over-broad connector scopes, shared non-rotating credentials, and stale grants from departed staff or ended vendors are a heavily exploited SaaS breach path. Review works from sanitized inventories only; never request, collect, or echo credential values, tokens, or secrets.",
17
+ "last_verified": "2026-05-17",
18
+ "path": "skills/marketing/martech-access-governance-review",
19
+ "author": "github: Raishin",
20
+ "version": "0.1.0"
21
+ }
@@ -0,0 +1,116 @@
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 inventories (redact every credential value — names and scopes only, never the secret itself):
8
+ - Connected-app / OAuth grant inventory for the CRM and marketing automation platform (app name, scopes granted, grant date, owner)
9
+ - API-key inventory (key name/label, the tool it authenticates, scope, rotation history — never the key value)
10
+ - CRM and marketing-automation role matrix (roles, permissions, which integrations and users hold each)
11
+ - The list of marketing tools in the stack and how each authenticates
12
+ - Offboarding process for departed employees and ended vendor engagements, if documented
13
+
14
+ If the user provides only a partial set, note which sections are absent and scope findings accordingly. If a user pastes an actual credential value, stop, tell them not to, and ask them to treat it as compromised and rotate it.
15
+
16
+ ### Step 2 — Build the integration map
17
+
18
+ For each integration, record: what it is, what marketing function it performs, what data it touches, and the minimum scope that function requires. This "needed scope" baseline is what every granted scope is measured against.
19
+
20
+ ### Step 3 — OAuth scope blast-radius audit
21
+
22
+ For every connected app, compare granted scope to needed scope.
23
+
24
+ ```text
25
+ # HIGH — a form/survey tool granted full read-write over all CRM contacts
26
+ App: SurveyTool
27
+ Granted: crm.objects.contacts.read, crm.objects.contacts.write, crm.objects.deals.read
28
+ Needed: crm.objects.contacts.write (it only creates contacts from form fills)
29
+
30
+ # CORRECT — scope matches function
31
+ App: SurveyTool
32
+ Granted: crm.objects.contacts.write
33
+ ```
34
+
35
+ Flag every scope granted beyond function as HIGH. The blast radius of any connected app is the data its scope can reach if that vendor is breached — and SaaS supply-chain breaches routinely pivot through exactly these grants.
36
+
37
+ ### Step 4 — Credential-sharing and rotation audit
38
+
39
+ - A single API key or service account used by more than one tool or integration is HIGH — it cannot be rotated or revoked for one consumer without breaking the others, and a single leak compromises all of them.
40
+ - Any key or grant with no rotation schedule and no expiry is HIGH.
41
+ - A "personal" API key issued under an individual employee's account, rather than a dedicated integration identity, is MEDIUM — it breaks when they leave and carries their full personal permissions.
42
+
43
+ ### Step 5 — Stale-grant audit
44
+
45
+ Identify grants that should no longer exist:
46
+ - Connected apps or tokens owned by departed employees.
47
+ - Grants from vendor engagements or trials that have ended.
48
+ - Credentials for tools that were decommissioned but never disconnected.
49
+ - OAuth refresh tokens that are still valid because nothing ever revoked them.
50
+
51
+ Every live stale grant is HIGH — it is access nobody is watching.
52
+
53
+ ### Step 6 — Integration role audit
54
+
55
+ Check the role each integration authenticates with:
56
+ - An integration using an admin or owner role when an API-only or limited integration role exists is HIGH.
57
+ - An integration that can change other users' permissions, billing, or security settings, when it only needs to read or write records, is HIGH.
58
+
59
+ ### Step 7 — Ownership and review-cadence audit
60
+
61
+ - Every connected app and integration credential must have a named human or team owner. Unowned credentials are HIGH — nobody will ever review or revoke them.
62
+ - There must be a recurring access-review cadence (for example, quarterly) covering connected apps and integration credentials. Its absence is MEDIUM.
63
+
64
+ ### Step 8 — Bulk-export and credential-storage audit
65
+
66
+ - Identify which marketing seats hold full-database or bulk-export permission. This is the exfiltration path; it should be held by the few who need it. Broad distribution is MEDIUM.
67
+ - Identify where credentials are stored. Credentials in spreadsheets, shared docs, tag-manager variables, or automation-tool fields in plaintext are HIGH. They belong in a secrets manager.
68
+
69
+ ### Step 9 — Produce the output
70
+
71
+ Format findings using the Output section below.
72
+
73
+ ---
74
+
75
+ ## Output
76
+
77
+ Return findings in this structure:
78
+
79
+ ```
80
+ ## Verdict
81
+ <one sentence: pass / needs work / critical issues found>
82
+
83
+ ## Evidence level
84
+ <inventory provided | role matrix provided | documentation-based | inference>
85
+
86
+ ## Findings
87
+
88
+ ### CRITICAL
89
+ - [C1] <finding title>: <description> — <remediation>
90
+
91
+ ### HIGH
92
+ - [H1] <finding title>: <description> — <remediation>
93
+
94
+ ### MEDIUM
95
+ - [M1] <finding title>: <description> — <remediation>
96
+
97
+ ### LOW
98
+ - [L1] <finding title>: <description> — <remediation>
99
+
100
+ ## Safe next actions
101
+ 1. <action>
102
+ 2. <action>
103
+
104
+ ## Open questions
105
+ - <question requiring user clarification>
106
+ ```
107
+
108
+ ---
109
+
110
+ ## Security and scope notes
111
+
112
+ - This is a static review. Never request, collect, store, or echo credential values, API keys, tokens, or secrets. Work from inventories of names and scopes only.
113
+ - If the user pastes a real credential, treat it as compromised: tell them, and recommend immediate rotation.
114
+ - Apply least privilege and zero-trust assumptions: every integration should hold the narrowest scope, the shortest-lived token, and a named owner.
115
+ - Never recommend revoking a grant without naming the integration it powers and the marketing workflow that breaks — propose the scoped-down replacement grant alongside the revocation.
116
+ - When evidence is partial, scope each finding to what was provided and state the assumption explicitly.
@@ -0,0 +1,43 @@
1
+ ---
2
+ name: programmatic-supply-chain-integrity-review
3
+ description: Use this skill when reviewing ads.txt, app-ads.txt, and sellers.json files for a publisher or advertiser's programmatic supply chain to detect unauthorized resellers, domain-spoofing exposure, and SupplyChain Object gaps. Trigger when a user provides an ads.txt file, an app-ads.txt file, a sellers.json endpoint response, or asks whether their programmatic supply chain has unauthorized intermediaries, IVT exposure, domain-spoofing risk, or whether their supply chain declaration satisfies IAB Tech Lab, MRC, or DSP procurement requirements.
4
+ allowed-tools: Read Grep Glob
5
+ metadata:
6
+ author: "github: Raishin"
7
+ version: "0.1.0"
8
+ updated: "2026-05-17"
9
+ category: finops
10
+ lifecycle: experimental
11
+ ---
12
+
13
+ # Programmatic Supply Chain Integrity Review
14
+
15
+ ## Purpose
16
+ This skill reviews ads.txt, app-ads.txt, and sellers.json declarations for a publisher's or advertiser's programmatic supply chain to detect unauthorized resellers, domain-spoofing exposure, SupplyChain Object gaps, and IVT-exposure vectors. Ads.txt (IAB Tech Lab v1.1) and app-ads.txt are the publisher's machine-readable authorization of which exchanges and resellers may sell their inventory; sellers.json (IAB Tech Lab v1.0) is the exchange's machine-readable disclosure of which sellers it represents. When these files are inconsistent — an ads.txt RESELLER entry that no exchange discloses in sellers.json, a DIRECT entry that resolves as `is_confidential:1`, or a whitelisted domain whose ads.txt is absent — the supply chain is opaque to buyers, exposing them to unauthorized intermediary fees and exposing publishers to domain spoofing. The SupplyChain Object (OpenRTB extension) enables bid-time audit of the complete reseller path; gaps in the declared path are treated as invalid traffic by MRC-compliant measurement vendors and many DSP procurement teams. The review works from the raw text of the artifact files pasted as input and produces severity-labelled findings with remediation.
17
+
18
+ ## Lean operating rules
19
+ - Treat ads.txt RESELLER entries for exchange accounts that do not appear in any sellers.json file for that exchange as HIGH — these are undisclosed intermediaries whose presence in the resale chain cannot be verified by buyers, constituting unauthorized supply path opacity under IAB Tech Lab ads.txt 1.1.
20
+ - Treat a whitelisted publisher domain whose ads.txt file is entirely absent as HIGH — the absence means buyers cannot verify any authorized seller relationship; the domain is categorically IVT-exposed per MRC Invalid Traffic Detection guidelines and most DSP whitelisting criteria.
21
+ - Treat a DIRECT entry in ads.txt where the corresponding seller account in sellers.json carries `is_confidential:1` as HIGH — a DIRECT relationship by definition requires transparent publisher identity; confidential resolution contradicts the DIRECT classification and is a domain-spoofing risk vector.
22
+ - Treat ads.txt entries that reference exchange account IDs not present in the exchange's sellers.json at all (orphaned account IDs) as HIGH — the account cannot be verified as a legitimate seller, which is a signal of domain spoofing or stale declarations.
23
+ - Treat a `seller_type: INTERMEDIARY` entry in sellers.json that has no corresponding ads.txt RESELLER entry on the publisher domain as MEDIUM — the intermediary is declared by the exchange but not authorized by the publisher, creating a supply path discrepancy.
24
+ - Treat SupplyChain Object declarations with incomplete node chains (missing `asi`, `sid`, or `rid` fields in intermediate nodes) as MEDIUM — incomplete chains reduce bid-time auditability and may cause DSP procurement filters to reject the bid.
25
+ - Flag MEDIUM when the ads.txt file has not been updated within twelve months and active exchange relationships are known to have changed — stale declarations expose revenue to unauthorized resellers who retain old account relationships.
26
+ - Flag the absence of app-ads.txt for a mobile app publisher as MEDIUM when the publisher's ads.txt covers only web inventory — app inventory without app-ads.txt is unprotected by IAB Tech Lab supply-chain controls.
27
+ - Do not recommend removing a RESELLER entry without first confirming whether it represents a legitimate revenue path that can be replaced with a DIRECT relationship or a disclosed intermediary.
28
+ - Label every finding with evidence basis: ads.txt provided, sellers.json provided, documentation-based, or inference from absent file.
29
+
30
+ ## References
31
+ Load these only when needed:
32
+ - [Workflow and output contract](references/workflow-and-output.md) — use when executing the full review or formatting the final answer.
33
+
34
+ ## Response minimum
35
+ Return, at minimum:
36
+ - RESELLER-to-sellers.json consistency assessment (unauthorized intermediaries)
37
+ - DIRECT-entry confidentiality conflict assessment (domain-spoofing risk)
38
+ - Orphaned account ID assessment (account IDs in ads.txt not in sellers.json)
39
+ - Absent ads.txt / app-ads.txt assessment for whitelisted domains
40
+ - SupplyChain Object completeness assessment
41
+ - Stale declaration assessment
42
+ - Severity-labelled finding list (critical / high / medium / low)
43
+ - Safe next actions
@@ -0,0 +1,22 @@
1
+ {
2
+ "id": "programmatic-supply-chain-integrity-review",
3
+ "name": "Programmatic Supply Chain Integrity Review",
4
+ "type": "skill",
5
+ "provider": "marketing",
6
+ "harnesses": ["codex", "claude-code", "cursor", "gemini", "kiro", "other"],
7
+ "summary": "Review ads.txt, app-ads.txt, and sellers.json files for a publisher or advertiser's programmatic supply chain to detect unauthorized resellers, domain-spoofing exposure, and SupplyChain Object gaps.",
8
+ "source_type": "original",
9
+ "official_docs": [
10
+ "https://iabtechlab.com/ads-txt/",
11
+ "https://iabtechlab.com/sellers-json/",
12
+ "https://iabtechlab.com/supplychain-object/",
13
+ "https://mediaratingcouncil.org/sites/default/files/Standards/MRC%20Invalid%20Traffic%20Detection%20and%20Filtration%20Guidelines%20Addendum.pdf",
14
+ "https://iabtechlab.com/app-ads-txt/"
15
+ ],
16
+ "security_notes": "Supply chain integrity reviews work from the raw text of ads.txt, app-ads.txt, and sellers.json files pasted as input. Never request DSP credentials, exchange account tokens, or bid-stream logs. ads.txt and sellers.json are publicly resolvable files; the artifact is the publisher's or exchange's own exported text, not a live crawl of production endpoints.",
17
+ "last_verified": "2026-05-17",
18
+ "path": "skills/marketing/programmatic-supply-chain-integrity-review",
19
+ "author": "github: Raishin",
20
+ "version": "0.1.0",
21
+ "lifecycle": "experimental"
22
+ }
@@ -0,0 +1,164 @@
1
+ # Workflow and Output Contract
2
+
3
+ ## Workflow
4
+
5
+ ### Step 1 — Collect inputs
6
+
7
+ Ask the user to provide the following as raw pasted text (these are public files; no credentials required):
8
+ - The full content of `ads.txt` from the publisher domain root (e.g., `example.com/ads.txt`)
9
+ - The full content of `app-ads.txt` if the publisher has mobile app inventory
10
+ - The relevant excerpt or full content of the exchange's `sellers.json` endpoint response — at minimum the entries corresponding to the publisher's account IDs
11
+ - The list of exchanges and resellers the publisher has active relationships with, to identify stale or missing entries
12
+ - SupplyChain Object node declarations if the user has access to bid-stream samples or SSP configuration exports
13
+
14
+ If only ads.txt is provided without sellers.json, note that RESELLER-to-sellers.json consistency findings are inference only.
15
+
16
+ ### Step 2 — ads.txt structural audit
17
+
18
+ Parse each line of the ads.txt file. Each valid entry has the format:
19
+ ```
20
+ <exchange domain>, <publisher account ID>, <relationship>, <certification authority ID>
21
+ ```
22
+ Where `<relationship>` is `DIRECT` or `RESELLER`.
23
+
24
+ Check for:
25
+ - Malformed lines (missing fields, incorrect field count, invalid relationship value).
26
+ - Duplicate entries (same exchange domain + account ID combination appearing more than once).
27
+ - Entries using IP addresses instead of domain names (not permitted by the spec).
28
+ - Entries missing the certification authority ID (optional per spec, but flag absence as informational).
29
+
30
+ ```text
31
+ # MALFORMED — missing account ID field
32
+ openx.com, RESELLER
33
+
34
+ # DUPLICATE — same entry appears twice
35
+ appnexus.com, 12345, DIRECT, f08c47fec0942fa0
36
+ appnexus.com, 12345, DIRECT, f08c47fec0942fa0
37
+ ```
38
+
39
+ ### Step 3 — RESELLER-to-sellers.json consistency audit
40
+
41
+ For every RESELLER entry in ads.txt, cross-reference with the corresponding exchange's sellers.json:
42
+ - Does the account ID appear in the exchange's sellers.json?
43
+ - If present, does the `seller_type` match the expected value (PUBLISHER, INTERMEDIARY, or BOTH)?
44
+ - Is the seller domain in sellers.json consistent with the publisher's domain?
45
+
46
+ ```text
47
+ # HIGH — RESELLER entry with no sellers.json disclosure
48
+ ads.txt: rubicon.com, 98765, RESELLER, 0bfd66d529a55807
49
+ sellers.json (rubicon.com): account ID 98765 — not found
50
+ → unauthorized intermediary; buyer cannot verify the resale relationship
51
+
52
+ # CORRECT — RESELLER disclosed in sellers.json
53
+ ads.txt: rubicon.com, 11111, RESELLER, 0bfd66d529a55807
54
+ sellers.json: { "seller_id": "11111", "name": "Example Publisher", "seller_type": "PUBLISHER", "domain": "example.com" }
55
+ ```
56
+
57
+ Each RESELLER entry absent from sellers.json is a separate HIGH finding with the exchange domain and account ID as the finding identifier.
58
+
59
+ ### Step 4 — DIRECT entry confidentiality conflict audit
60
+
61
+ For every DIRECT entry in ads.txt, cross-reference with sellers.json:
62
+ - Is the account ID present in sellers.json?
63
+ - Does the entry carry `is_confidential: 1`?
64
+
65
+ A DIRECT entry by definition declares that the exchange sells the publisher's inventory with no intermediary. A `is_confidential: 1` flag in sellers.json means the exchange is hiding the seller's identity from buyers. This is contradictory and constitutes a domain-spoofing risk vector.
66
+
67
+ ```text
68
+ # HIGH — DIRECT entry resolves as confidential in sellers.json
69
+ ads.txt: exchange.com, 55555, DIRECT, abc123
70
+ sellers.json: { "seller_id": "55555", "is_confidential": 1 }
71
+ → DIRECT relationship cannot be verified; domain-spoofing risk
72
+
73
+ # CORRECT — DIRECT entry with transparent seller identity
74
+ ads.txt: exchange.com, 55555, DIRECT, abc123
75
+ sellers.json: { "seller_id": "55555", "name": "Example Publisher", "domain": "example.com", "is_confidential": 0 }
76
+ ```
77
+
78
+ ### Step 5 — Orphaned account ID audit
79
+
80
+ Identify ads.txt entries where the account ID does not appear in the exchange's sellers.json at all (neither disclosed nor confidential):
81
+ - This may indicate stale entries from a terminated exchange relationship.
82
+ - It may also indicate domain spoofing: a bad actor adds a publisher's domain to their own exchange account without authorization.
83
+ - Flag as HIGH; request the user confirm whether the exchange relationship is active.
84
+
85
+ ### Step 6 — Absent ads.txt audit for whitelisted domains
86
+
87
+ If the user provides a list of domains they have whitelisted for programmatic buying:
88
+ - For each domain, confirm whether ads.txt is present.
89
+ - A whitelisted domain with no ads.txt is categorically IVT-exposed: the domain has not declared any authorized seller, meaning all inventory sourced from that domain bypasses supply-chain controls.
90
+ - Flag each absent ads.txt as HIGH with the domain name.
91
+
92
+ ```text
93
+ # HIGH — whitelisted domain with no ads.txt
94
+ Domain: news-publisher.example.com
95
+ ads.txt: not found (HTTP 404 / file absent)
96
+ → all inventory from this domain is unverifiable; IVT-exposed per MRC guidelines
97
+ ```
98
+
99
+ ### Step 7 — SupplyChain Object completeness audit
100
+
101
+ If the user provides SupplyChain Object node declarations from bid-stream samples or SSP configuration:
102
+ - Verify `complete: 1` is set — a value of 0 means the chain is declared incomplete, which MRC and most DSPs treat as an IVT signal.
103
+ - For each intermediate node, verify `asi` (SSP domain), `sid` (account ID at that SSP), and `rid` (request ID, recommended) are present.
104
+ - Flag missing required fields in intermediate nodes as MEDIUM.
105
+ - Flag `complete: 0` as HIGH when it is set intentionally — it effectively declares the supply chain is unverifiable.
106
+
107
+ ### Step 8 — Stale declaration assessment
108
+
109
+ Without a dated changelog, stale detection is inference:
110
+ - If the user discloses that exchange relationships have changed in the past twelve months, flag stale declaration as MEDIUM.
111
+ - Note that stale RESELLER entries may retain account IDs from terminated relationships that could be reused by unauthorized parties.
112
+
113
+ ### Step 9 — app-ads.txt coverage gap
114
+
115
+ If the publisher has mobile app inventory:
116
+ - Confirm app-ads.txt is present at the developer domain (as declared in the app store listing).
117
+ - Absence is MEDIUM — mobile app inventory without app-ads.txt is outside IAB Tech Lab supply-chain protection.
118
+
119
+ ### Step 10 — Produce the output
120
+
121
+ Format findings using the Output format section below.
122
+
123
+ ---
124
+
125
+ ## Output format
126
+
127
+ ```
128
+ ## Verdict
129
+ <one sentence: pass / needs work / critical issues found>
130
+
131
+ ## Evidence level
132
+ <ads.txt provided | sellers.json provided | app-ads.txt provided | documentation-based | inference from absent file>
133
+
134
+ ## Findings
135
+
136
+ ### CRITICAL
137
+ - [C1] <finding title>: <description> — <remediation>
138
+
139
+ ### HIGH
140
+ - [H1] <finding title>: <description> — <remediation>
141
+
142
+ ### MEDIUM
143
+ - [M1] <finding title>: <description> — <remediation>
144
+
145
+ ### LOW
146
+ - [L1] <finding title>: <description> — <remediation>
147
+
148
+ ## Safe next actions
149
+ 1. <action>
150
+ 2. <action>
151
+
152
+ ## Open questions
153
+ - <question requiring user clarification>
154
+ ```
155
+
156
+ ---
157
+
158
+ ## Security and scope notes
159
+
160
+ - This is a static review. ads.txt, app-ads.txt, and sellers.json are public files. Never request DSP credentials, exchange account tokens, bid-stream logs, or revenue reports containing publisher financial data.
161
+ - An unauthorized RESELLER entry may represent a legitimate old relationship that was not removed when the exchange contract ended, or it may represent an active unauthorized intermediary taking arbitrage margin. The distinction requires the publisher to confirm the exchange relationship status — do not assume malicious intent, but flag the opacity clearly.
162
+ - Domain spoofing via DIRECT-to-confidential conflicts is a known fraud vector documented in MRC Invalid Traffic Detection guidelines. Surface the risk explicitly without overstating certainty about active fraud.
163
+ - When evidence is partial (e.g., ads.txt provided but no sellers.json), scope findings to inference and state the assumption explicitly.
164
+ - Do not recommend removing a RESELLER entry without first confirming whether it represents a legitimate revenue path that can be replaced with a DIRECT relationship or a disclosed intermediary — revenue loss from removing legitimate paths is a real operational risk.
@@ -0,0 +1,45 @@
1
+ ---
2
+ name: ci-test-pipeline-review
3
+ description: Use this skill when reviewing how a CI pipeline runs tests — gating, sharding, parallelism, fail-fast behavior, artifact retention, and flaky-test quarantine wiring. Trigger when a user provides a CI workflow file (GitHub Actions, GitLab CI, CircleCI, Jenkins), asks why CI is slow or unreliable as a merge gate, or wants to know whether their test pipeline actually blocks bad merges. This skill reviews CI configuration statically; it does not trigger or run pipelines.
4
+ allowed-tools: Read Grep Glob
5
+ metadata:
6
+ author: "github: Raishin"
7
+ version: "0.1.0"
8
+ updated: "2026-05-17"
9
+ category: delivery
10
+ lifecycle: experimental
11
+ ---
12
+
13
+ # CI Test Pipeline Review
14
+
15
+ ## Purpose
16
+ This skill reviews how a CI pipeline runs tests — not the tests themselves, but the pipeline that decides whether they block a merge. A test suite only protects the main branch if the pipeline runs it, runs it on the merge gate, fails the build when it fails, and finishes fast enough that developers do not route around it. The review catches non-blocking test steps, soft-failure escape hatches, missing required-check enforcement, un-sharded slow suites, fail-fast that hides parallel failures, missing artifacts, and quarantine lanes wired so that quarantined tests silently never run again.
17
+
18
+ ## Lean operating rules
19
+ - Treat a test step that cannot fail the build — `|| true`, `continue-on-error: true`, `set +e`, an exit code swallowed, a non-blocking/optional check — as CRITICAL: the suite exists but gates nothing, and every "green" merge is unverified.
20
+ - Treat tests that run only post-merge (on `push` to main, nightly) and not on the pull-request merge gate as HIGH — regressions are caught after they are already on the main branch.
21
+ - Treat the test job not being a required status check for branch protection as HIGH — the run is advisory and a merge can proceed red. (Flag as inference if branch-protection config is not provided.)
22
+ - Treat `fail-fast: true` on a test matrix as MEDIUM — it cancels sibling shards on the first failure, hiding how many shards actually failed and forcing repeated partial runs.
23
+ - Treat a large suite in a single un-sharded job as HIGH when wall-clock time blocks merges — recommend a shard matrix sized to the suite.
24
+ - Treat the absence of test-result and failure-artifact upload (JUnit XML, traces, screenshots, logs) as HIGH — a CI-only failure is then undebuggable and engineers re-run blindly.
25
+ - Treat caching of dependencies/build but not keyed correctly (stale cache, no lockfile in the key) as MEDIUM — stale caches cause non-reproducible passes and failures.
26
+ - Treat a quarantine lane that excludes flaky tests from gating with no scheduled non-blocking run and no tracking as HIGH — quarantined tests then never run again and the coverage is silently lost.
27
+ - Treat secrets exposed to test jobs triggered by `pull_request_target` or to fork PRs as CRITICAL security exposure — flag and stop.
28
+ - Treat a missing concurrency/cancel-in-progress group on PR test runs as LOW — wasted runners, not a correctness issue.
29
+ - Do not recommend disabling or making a flaky check non-blocking as the fix — recommend quarantine with a scheduled run and an owner.
30
+ - Label every finding with evidence basis: CI config provided, branch-protection config provided, documentation-based, or inference.
31
+
32
+ ## References
33
+ Load these only when needed:
34
+ - [Workflow and output contract](references/workflow-and-output.md) — use when executing the full review or formatting the final answer.
35
+
36
+ ## Response minimum
37
+ Return, at minimum:
38
+ - Gating findings (non-blocking steps, soft-failure escape hatches, required-check enforcement)
39
+ - Merge-gate timing findings (PR vs. post-merge, sharding, parallelism)
40
+ - Fail-fast and matrix configuration findings
41
+ - Artifact and observability findings (test results, failure artifacts)
42
+ - Quarantine-lane wiring findings
43
+ - Security findings (secret exposure to test jobs)
44
+ - Severity-labelled finding list (critical / high / medium / low)
45
+ - Safe next actions
@@ -0,0 +1,21 @@
1
+ {
2
+ "id": "ci-test-pipeline-review",
3
+ "name": "CI Test Pipeline Review",
4
+ "type": "skill",
5
+ "provider": "generic",
6
+ "harnesses": ["codex", "claude-code", "cursor", "gemini", "kiro", "other"],
7
+ "summary": "Review how a CI pipeline runs tests — gating, sharding, parallelism, fail-fast, artifact retention, quarantine wiring, and secret exposure — to verify the test suite actually blocks bad merges. Static review only.",
8
+ "source_type": "original",
9
+ "official_docs": [
10
+ "https://docs.github.com/en/actions/using-jobs/using-a-matrix-for-your-jobs",
11
+ "https://docs.github.com/en/repositories/configuring-branches-and-merges/about-protected-branches",
12
+ "https://docs.github.com/en/actions/security-guides/security-hardening-for-github-actions",
13
+ "https://docs.gitlab.com/ee/ci/yaml/",
14
+ "https://playwright.dev/docs/test-sharding"
15
+ ],
16
+ "security_notes": "Static review only — reads CI workflow and branch-protection configuration, never triggers or runs pipelines. Flags secret exposure to test jobs on pull_request_target or fork PRs. Never request or accept CI secrets, deploy keys, or registry tokens; ask for sanitized workflow files.",
17
+ "last_verified": "2026-05-17",
18
+ "path": "skills/qa/ci-test-pipeline-review",
19
+ "author": "github: Raishin",
20
+ "version": "0.1.0"
21
+ }