agileflow 4.0.0-alpha.2 → 4.0.0-alpha.21

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 (372) hide show
  1. package/CHANGELOG.md +51 -0
  2. package/content/plugins/accessibility/plugin.yaml +14 -0
  3. package/content/plugins/accessibility/skills/agileflow-accessibility/SKILL.md +392 -0
  4. package/content/plugins/accessibility/skills/agileflow-accessibility/references/aria-patterns.md +528 -0
  5. package/content/plugins/accessibility/skills/agileflow-accessibility/references/testing-checklist.md +457 -0
  6. package/content/plugins/accessibility/skills/agileflow-accessibility/references/wcag-guide.md +683 -0
  7. package/content/plugins/accessibility/skills/agileflow-accessibility/workflows/audit-page.md +310 -0
  8. package/content/plugins/accessibility/skills/agileflow-accessibility/workflows/implement-accessible-component.md +479 -0
  9. package/content/plugins/ads/agents/ads-audit-budget.md +185 -0
  10. package/content/plugins/ads/agents/ads-audit-compliance.md +171 -0
  11. package/content/plugins/ads/agents/ads-audit-creative.md +168 -0
  12. package/content/plugins/ads/agents/ads-audit-google.md +227 -0
  13. package/content/plugins/ads/agents/ads-audit-meta.md +184 -0
  14. package/content/plugins/ads/agents/ads-audit-tracking.md +205 -0
  15. package/content/plugins/ads/agents/ads-consensus.md +410 -0
  16. package/content/plugins/ads/agents/ads-generate.md +152 -0
  17. package/content/plugins/ads/agents/ads-performance-tracker.md +212 -0
  18. package/content/plugins/ads/plugin.yaml +23 -4
  19. package/content/plugins/ads/skills/agileflow-ads/SKILL.md +218 -0
  20. package/content/plugins/ads/skills/agileflow-ads/references/ad-copy-formula-guide.md +131 -0
  21. package/content/plugins/ads/skills/agileflow-ads/references/audience-targeting-guide.md +137 -0
  22. package/content/plugins/ads/skills/agileflow-ads/references/bid-strategy-guide.md +115 -0
  23. package/content/plugins/ads/skills/agileflow-ads/references/platform-benchmarks.md +100 -0
  24. package/content/plugins/ads/skills/agileflow-ads/workflows/audit.md +118 -0
  25. package/content/plugins/ads/skills/agileflow-ads/workflows/generate.md +84 -0
  26. package/content/plugins/audit/agents/a11y-analyzer-aria.md +173 -0
  27. package/content/plugins/audit/agents/a11y-analyzer-forms.md +173 -0
  28. package/content/plugins/audit/agents/a11y-analyzer-keyboard.md +183 -0
  29. package/content/plugins/audit/agents/a11y-analyzer-semantic.md +169 -0
  30. package/content/plugins/audit/agents/a11y-analyzer-visual.md +172 -0
  31. package/content/plugins/audit/agents/a11y-consensus.md +249 -0
  32. package/content/plugins/audit/agents/accessibility.md +558 -0
  33. package/content/plugins/audit/agents/api-quality-analyzer-conventions.md +156 -0
  34. package/content/plugins/audit/agents/api-quality-analyzer-docs.md +184 -0
  35. package/content/plugins/audit/agents/api-quality-analyzer-errors.md +191 -0
  36. package/content/plugins/audit/agents/api-quality-analyzer-pagination.md +179 -0
  37. package/content/plugins/audit/agents/api-quality-analyzer-versioning.md +150 -0
  38. package/content/plugins/audit/agents/api-quality-consensus.md +217 -0
  39. package/content/plugins/audit/agents/api-validator.md +191 -0
  40. package/content/plugins/audit/agents/arch-analyzer-circular.md +156 -0
  41. package/content/plugins/audit/agents/arch-analyzer-complexity.md +193 -0
  42. package/content/plugins/audit/agents/arch-analyzer-coupling.md +152 -0
  43. package/content/plugins/audit/agents/arch-analyzer-layering.md +160 -0
  44. package/content/plugins/audit/agents/arch-analyzer-patterns.md +210 -0
  45. package/content/plugins/audit/agents/arch-consensus.md +228 -0
  46. package/content/plugins/audit/agents/browser-qa.md +342 -0
  47. package/content/plugins/audit/agents/code-reviewer.md +298 -0
  48. package/content/plugins/audit/agents/completeness-analyzer-api.md +199 -0
  49. package/content/plugins/audit/agents/completeness-analyzer-conditional.md +211 -0
  50. package/content/plugins/audit/agents/completeness-analyzer-handlers.md +166 -0
  51. package/content/plugins/audit/agents/completeness-analyzer-imports.md +165 -0
  52. package/content/plugins/audit/agents/completeness-analyzer-routes.md +190 -0
  53. package/content/plugins/audit/agents/completeness-analyzer-state.md +196 -0
  54. package/content/plugins/audit/agents/completeness-analyzer-stubs.md +206 -0
  55. package/content/plugins/audit/agents/completeness-consensus.md +295 -0
  56. package/content/plugins/audit/agents/error-analyzer.md +213 -0
  57. package/content/plugins/audit/agents/flow-analyzer-authorization.md +182 -0
  58. package/content/plugins/audit/agents/flow-analyzer-discovery.md +174 -0
  59. package/content/plugins/audit/agents/flow-analyzer-errors.md +186 -0
  60. package/content/plugins/audit/agents/flow-analyzer-feedback.md +185 -0
  61. package/content/plugins/audit/agents/flow-analyzer-navigation.md +177 -0
  62. package/content/plugins/audit/agents/flow-analyzer-persistence.md +193 -0
  63. package/content/plugins/audit/agents/flow-analyzer-wiring.md +169 -0
  64. package/content/plugins/audit/agents/flow-consensus.md +237 -0
  65. package/content/plugins/audit/agents/legal-analyzer-a11y.md +114 -0
  66. package/content/plugins/audit/agents/legal-analyzer-ai.md +121 -0
  67. package/content/plugins/audit/agents/legal-analyzer-consumer.md +114 -0
  68. package/content/plugins/audit/agents/legal-analyzer-content.md +117 -0
  69. package/content/plugins/audit/agents/legal-analyzer-international.md +119 -0
  70. package/content/plugins/audit/agents/legal-analyzer-licensing.md +119 -0
  71. package/content/plugins/audit/agents/legal-analyzer-privacy.md +112 -0
  72. package/content/plugins/audit/agents/legal-analyzer-security.md +116 -0
  73. package/content/plugins/audit/agents/legal-analyzer-terms.md +115 -0
  74. package/content/plugins/audit/agents/legal-consensus.md +250 -0
  75. package/content/plugins/audit/agents/logic-analyzer-edge.md +179 -0
  76. package/content/plugins/audit/agents/logic-analyzer-flow.md +264 -0
  77. package/content/plugins/audit/agents/logic-analyzer-invariant.md +215 -0
  78. package/content/plugins/audit/agents/logic-analyzer-race.md +280 -0
  79. package/content/plugins/audit/agents/logic-analyzer-type.md +227 -0
  80. package/content/plugins/audit/agents/logic-consensus.md +259 -0
  81. package/content/plugins/audit/agents/perf-analyzer-assets.md +182 -0
  82. package/content/plugins/audit/agents/perf-analyzer-bundle.md +173 -0
  83. package/content/plugins/audit/agents/perf-analyzer-caching.md +170 -0
  84. package/content/plugins/audit/agents/perf-analyzer-compute.md +173 -0
  85. package/content/plugins/audit/agents/perf-analyzer-memory.md +193 -0
  86. package/content/plugins/audit/agents/perf-analyzer-network.md +165 -0
  87. package/content/plugins/audit/agents/perf-analyzer-queries.md +162 -0
  88. package/content/plugins/audit/agents/perf-analyzer-rendering.md +168 -0
  89. package/content/plugins/audit/agents/perf-consensus.md +287 -0
  90. package/content/plugins/audit/agents/qa.md +820 -0
  91. package/content/plugins/audit/agents/quality-analyzer-comments.md +159 -0
  92. package/content/plugins/audit/agents/quality-analyzer-duplication.md +184 -0
  93. package/content/plugins/audit/agents/quality-analyzer-naming.md +160 -0
  94. package/content/plugins/audit/agents/quality-consensus.md +241 -0
  95. package/content/plugins/audit/agents/schema-validator.md +473 -0
  96. package/content/plugins/audit/agents/security-analyzer-api.md +210 -0
  97. package/content/plugins/audit/agents/security-analyzer-auth.md +169 -0
  98. package/content/plugins/audit/agents/security-analyzer-authz.md +180 -0
  99. package/content/plugins/audit/agents/security-analyzer-deps.md +153 -0
  100. package/content/plugins/audit/agents/security-analyzer-infra.md +184 -0
  101. package/content/plugins/audit/agents/security-analyzer-injection.md +155 -0
  102. package/content/plugins/audit/agents/security-analyzer-input.md +201 -0
  103. package/content/plugins/audit/agents/security-analyzer-secrets.md +183 -0
  104. package/content/plugins/audit/agents/security-consensus.md +283 -0
  105. package/content/plugins/audit/agents/test-analyzer-assertions.md +188 -0
  106. package/content/plugins/audit/agents/test-analyzer-coverage.md +189 -0
  107. package/content/plugins/audit/agents/test-analyzer-fragility.md +193 -0
  108. package/content/plugins/audit/agents/test-analyzer-integration.md +161 -0
  109. package/content/plugins/audit/agents/test-analyzer-maintenance.md +180 -0
  110. package/content/plugins/audit/agents/test-analyzer-mocking.md +188 -0
  111. package/content/plugins/audit/agents/test-analyzer-patterns.md +196 -0
  112. package/content/plugins/audit/agents/test-analyzer-structure.md +184 -0
  113. package/content/plugins/audit/agents/test-consensus.md +301 -0
  114. package/content/plugins/audit/agents/testing.md +561 -0
  115. package/content/plugins/audit/agents/ui-validator.md +344 -0
  116. package/content/plugins/audit/plugin.yaml +186 -5
  117. package/content/plugins/audit/skills/agileflow-audit/SKILL.md +113 -0
  118. package/content/plugins/audit/skills/agileflow-audit/references/audit-depth-guide.md +151 -0
  119. package/content/plugins/audit/skills/agileflow-audit/references/dependency-risk-guide.md +139 -0
  120. package/content/plugins/audit/skills/agileflow-audit/references/owasp-top10.md +120 -0
  121. package/content/plugins/audit/skills/agileflow-audit/references/performance-budget-guide.md +143 -0
  122. package/content/plugins/audit/skills/agileflow-audit/references/wcag-criteria.md +117 -0
  123. package/content/plugins/audit/skills/agileflow-audit/workflows/run-audit.md +52 -0
  124. package/content/plugins/audit/skills/agileflow-audit/workflows/tdd.md +66 -0
  125. package/content/plugins/core/agents/adr-writer.md +521 -0
  126. package/content/plugins/core/agents/epic-planner.md +520 -0
  127. package/content/plugins/core/agents/mentor.md +709 -0
  128. package/content/plugins/core/agents/orchestrator.md +776 -0
  129. package/content/plugins/core/agents/team-coordinator.md +334 -0
  130. package/content/plugins/core/agents/team-lead.md +181 -0
  131. package/content/plugins/core/agents/workspace-orchestrator.md +146 -0
  132. package/content/plugins/core/hooks/context-loader.js +31 -4
  133. package/content/plugins/core/hooks/damage-control-bash.js +10 -2
  134. package/content/plugins/core/hooks/damage-control-edit.js +4 -1
  135. package/content/plugins/core/hooks/damage-control-patterns.yaml +1 -1
  136. package/content/plugins/core/hooks/damage-control-write.js +4 -1
  137. package/content/plugins/core/hooks/{pre-compact-state.js → post-compact-state.js} +25 -8
  138. package/content/plugins/core/hooks/preferences-injector.js +352 -0
  139. package/content/plugins/core/plugin.yaml +24 -28
  140. package/content/plugins/core/skills/agileflow-adr/SKILL.md +34 -8
  141. package/content/plugins/core/skills/agileflow-adr/references/madr-format-guide.md +86 -0
  142. package/content/plugins/core/skills/agileflow-adr/workflows/write-adr.md +57 -0
  143. package/content/plugins/core/skills/agileflow-babysit-mentor/SKILL.md +94 -27
  144. package/content/plugins/core/skills/agileflow-babysit-mentor/references/mentor-decision-guide.md +81 -0
  145. package/content/plugins/core/skills/agileflow-babysit-mentor/workflows/mentor-session.md +79 -0
  146. package/content/plugins/core/skills/agileflow-epic-planner/SKILL.md +37 -7
  147. package/content/plugins/core/skills/agileflow-epic-planner/references/epic-sizing-guide.md +81 -0
  148. package/content/plugins/core/skills/agileflow-epic-planner/workflows/plan-epic.md +55 -0
  149. package/content/plugins/core/skills/agileflow-status-updater/SKILL.md +36 -20
  150. package/content/plugins/core/skills/agileflow-status-updater/references/status-transitions.md +89 -0
  151. package/content/plugins/core/skills/agileflow-status-updater/workflows/update-status.md +56 -0
  152. package/content/plugins/core/skills/agileflow-story-writer/SKILL.md +39 -114
  153. package/content/plugins/core/skills/agileflow-story-writer/references/estimation-reference.md +36 -0
  154. package/content/plugins/core/skills/agileflow-story-writer/references/story-template.md +92 -0
  155. package/content/plugins/core/skills/agileflow-story-writer/workflows/write-story.md +138 -0
  156. package/content/plugins/council/agents/council-advocate.md +223 -0
  157. package/content/plugins/council/agents/council-analyst.md +278 -0
  158. package/content/plugins/council/agents/council-compounder.md +204 -0
  159. package/content/plugins/council/agents/council-contrarian.md +217 -0
  160. package/content/plugins/council/agents/council-moonshot.md +217 -0
  161. package/content/plugins/council/agents/council-optimist.md +185 -0
  162. package/content/plugins/council/agents/council-revenue.md +200 -0
  163. package/content/plugins/council/agents/council-technical.md +218 -0
  164. package/content/plugins/council/agents/multi-expert.md +334 -0
  165. package/content/plugins/council/plugin.yaml +23 -4
  166. package/content/plugins/council/skills/agileflow-council/SKILL.md +102 -0
  167. package/content/plugins/council/skills/agileflow-council/references/decision-log-template.md +109 -0
  168. package/content/plugins/council/skills/agileflow-council/references/perspective-guide.md +104 -0
  169. package/content/plugins/council/skills/agileflow-council/references/when-to-convene-guide.md +112 -0
  170. package/content/plugins/council/skills/agileflow-council/workflows/convene.md +73 -0
  171. package/content/plugins/council/skills/agileflow-council/workflows/multi-expert.md +75 -0
  172. package/content/plugins/database/plugin.yaml +14 -0
  173. package/content/plugins/database/skills/agileflow-database/SKILL.md +284 -0
  174. package/content/plugins/database/skills/agileflow-database/references/indexing-guide.md +313 -0
  175. package/content/plugins/database/skills/agileflow-database/references/migration-guide.md +328 -0
  176. package/content/plugins/database/skills/agileflow-database/references/schema-design-guide.md +467 -0
  177. package/content/plugins/database/skills/agileflow-database/workflows/design-schema.md +213 -0
  178. package/content/plugins/database/skills/agileflow-database/workflows/optimize-query.md +253 -0
  179. package/content/plugins/debugging/plugin.yaml +14 -0
  180. package/content/plugins/debugging/skills/agileflow-debug/SKILL.md +236 -0
  181. package/content/plugins/debugging/skills/agileflow-debug/references/common-patterns.md +350 -0
  182. package/content/plugins/debugging/skills/agileflow-debug/references/debugging-strategies.md +328 -0
  183. package/content/plugins/debugging/skills/agileflow-debug/workflows/debug-issue.md +187 -0
  184. package/content/plugins/debugging/skills/agileflow-debug/workflows/reproduce-bug.md +194 -0
  185. package/content/plugins/delivery/agents/ci.md +547 -0
  186. package/content/plugins/delivery/agents/devops.md +789 -0
  187. package/content/plugins/delivery/plugin.yaml +19 -0
  188. package/content/plugins/delivery/skills/agileflow-delivery/SKILL.md +111 -0
  189. package/content/plugins/delivery/skills/agileflow-delivery/references/changelog-format-guide.md +133 -0
  190. package/content/plugins/delivery/skills/agileflow-delivery/references/ci-pipeline-guide.md +158 -0
  191. package/content/plugins/delivery/skills/agileflow-delivery/references/pr-checklist-guide.md +133 -0
  192. package/content/plugins/delivery/skills/agileflow-delivery/references/release-checklist.md +142 -0
  193. package/content/plugins/delivery/skills/agileflow-delivery/workflows/changelog.md +72 -0
  194. package/content/plugins/delivery/skills/agileflow-delivery/workflows/deploy.md +74 -0
  195. package/content/plugins/delivery/skills/agileflow-delivery/workflows/pr.md +75 -0
  196. package/content/plugins/docs/agents/documentation.md +544 -0
  197. package/content/plugins/docs/agents/readme-updater.md +640 -0
  198. package/content/plugins/docs/plugin.yaml +19 -0
  199. package/content/plugins/docs/skills/agileflow-docs/SKILL.md +106 -0
  200. package/content/plugins/docs/skills/agileflow-docs/references/api-doc-template.md +167 -0
  201. package/content/plugins/docs/skills/agileflow-docs/references/doc-types-guide.md +141 -0
  202. package/content/plugins/docs/skills/agileflow-docs/references/readme-template.md +156 -0
  203. package/content/plugins/docs/skills/agileflow-docs/workflows/readme-sync.md +57 -0
  204. package/content/plugins/docs/skills/agileflow-docs/workflows/sync.md +64 -0
  205. package/content/plugins/engineering/agents/api.md +718 -0
  206. package/content/plugins/engineering/agents/codebase-query.md +285 -0
  207. package/content/plugins/engineering/agents/compliance.md +559 -0
  208. package/content/plugins/engineering/agents/database.md +644 -0
  209. package/content/plugins/engineering/agents/integrations.md +644 -0
  210. package/content/plugins/engineering/agents/mobile.md +552 -0
  211. package/content/plugins/engineering/agents/monitoring.md +585 -0
  212. package/content/plugins/engineering/agents/performance.md +529 -0
  213. package/content/plugins/engineering/agents/refactor.md +592 -0
  214. package/content/plugins/engineering/agents/security.md +524 -0
  215. package/content/plugins/engineering/agents/ui.md +1336 -0
  216. package/content/plugins/engineering/plugin.yaml +37 -0
  217. package/content/plugins/engineering/skills/agileflow-engineering/SKILL.md +127 -0
  218. package/content/plugins/engineering/skills/agileflow-engineering/references/code-review-guide.md +126 -0
  219. package/content/plugins/engineering/skills/agileflow-engineering/references/domain-routing-guide.md +89 -0
  220. package/content/plugins/engineering/skills/agileflow-engineering/references/refactoring-guide.md +136 -0
  221. package/content/plugins/engineering/skills/agileflow-engineering/workflows/diagnose.md +63 -0
  222. package/content/plugins/engineering/skills/agileflow-engineering/workflows/impact.md +60 -0
  223. package/content/plugins/ideation/agents/brainstorm-analyzer-features.md +179 -0
  224. package/content/plugins/ideation/agents/brainstorm-analyzer-growth.md +169 -0
  225. package/content/plugins/ideation/agents/brainstorm-analyzer-integration.md +181 -0
  226. package/content/plugins/ideation/agents/brainstorm-analyzer-market.md +150 -0
  227. package/content/plugins/ideation/agents/brainstorm-analyzer-ux.md +180 -0
  228. package/content/plugins/ideation/agents/brainstorm-consensus.md +245 -0
  229. package/content/plugins/ideation/agents/design.md +568 -0
  230. package/content/plugins/ideation/agents/product.md +582 -0
  231. package/content/plugins/ideation/plugin.yaml +31 -0
  232. package/content/plugins/ideation/skills/agileflow-ideation/SKILL.md +109 -0
  233. package/content/plugins/ideation/skills/agileflow-ideation/references/brainstorm-techniques.md +138 -0
  234. package/content/plugins/ideation/skills/agileflow-ideation/references/competitive-analysis-template.md +148 -0
  235. package/content/plugins/ideation/skills/agileflow-ideation/references/feature-prioritization-guide.md +147 -0
  236. package/content/plugins/ideation/skills/agileflow-ideation/references/user-story-patterns.md +152 -0
  237. package/content/plugins/ideation/skills/agileflow-ideation/workflows/features.md +65 -0
  238. package/content/plugins/ideation/skills/agileflow-ideation/workflows/ideate.md +54 -0
  239. package/content/plugins/migration/agents/datamigration.md +757 -0
  240. package/content/plugins/migration/plugin.yaml +17 -0
  241. package/content/plugins/migration/skills/agileflow-migration/SKILL.md +106 -0
  242. package/content/plugins/migration/skills/agileflow-migration/references/data-validation-checklist.md +154 -0
  243. package/content/plugins/migration/skills/agileflow-migration/references/migration-patterns.md +209 -0
  244. package/content/plugins/migration/skills/agileflow-migration/references/rollback-playbook.md +171 -0
  245. package/content/plugins/migration/skills/agileflow-migration/references/version-compatibility-matrix.md +155 -0
  246. package/content/plugins/migration/skills/agileflow-migration/workflows/plan.md +73 -0
  247. package/content/plugins/migration/skills/agileflow-migration/workflows/validate.md +71 -0
  248. package/content/plugins/performance/plugin.yaml +14 -0
  249. package/content/plugins/performance/skills/agileflow-performance/SKILL.md +224 -0
  250. package/content/plugins/performance/skills/agileflow-performance/references/optimization-patterns.md +554 -0
  251. package/content/plugins/performance/skills/agileflow-performance/references/profiling-guide.md +383 -0
  252. package/content/plugins/performance/skills/agileflow-performance/references/web-vitals-guide.md +360 -0
  253. package/content/plugins/performance/skills/agileflow-performance/workflows/improve-web-vitals.md +344 -0
  254. package/content/plugins/performance/skills/agileflow-performance/workflows/profile-and-fix.md +254 -0
  255. package/content/plugins/planning/agents/analytics.md +670 -0
  256. package/content/plugins/planning/agents/rlm-subcore.md +215 -0
  257. package/content/plugins/planning/plugin.yaml +19 -0
  258. package/content/plugins/planning/skills/agileflow-planning/SKILL.md +111 -0
  259. package/content/plugins/planning/skills/agileflow-planning/references/estimation-guide.md +114 -0
  260. package/content/plugins/planning/skills/agileflow-planning/references/rpi-workflow.md +119 -0
  261. package/content/plugins/planning/skills/agileflow-planning/references/sprint-planning-guide.md +145 -0
  262. package/content/plugins/planning/skills/agileflow-planning/workflows/impact.md +63 -0
  263. package/content/plugins/planning/skills/agileflow-planning/workflows/rpi.md +104 -0
  264. package/content/plugins/psychology/plugin.yaml +14 -0
  265. package/content/plugins/psychology/skills/agileflow-retention/SKILL.md +252 -0
  266. package/content/plugins/psychology/skills/agileflow-retention/references/competitor-analysis.md +240 -0
  267. package/content/plugins/psychology/skills/agileflow-retention/references/psychology-models.md +349 -0
  268. package/content/plugins/psychology/skills/agileflow-retention/references/retention-patterns.md +279 -0
  269. package/content/plugins/psychology/skills/agileflow-retention/workflows/design-retention-feature.md +287 -0
  270. package/content/plugins/psychology/skills/agileflow-retention/workflows/retention-audit.md +259 -0
  271. package/content/plugins/refactoring/plugin.yaml +14 -0
  272. package/content/plugins/refactoring/skills/agileflow-refactor/SKILL.md +235 -0
  273. package/content/plugins/refactoring/skills/agileflow-refactor/references/refactoring-patterns.md +405 -0
  274. package/content/plugins/refactoring/skills/agileflow-refactor/references/safety-checks.md +177 -0
  275. package/content/plugins/refactoring/skills/agileflow-refactor/workflows/extract-module.md +226 -0
  276. package/content/plugins/refactoring/skills/agileflow-refactor/workflows/safe-refactor.md +169 -0
  277. package/content/plugins/research/agents/research.md +503 -0
  278. package/content/plugins/research/plugin.yaml +17 -0
  279. package/content/plugins/research/skills/agileflow-research/SKILL.md +110 -0
  280. package/content/plugins/research/skills/agileflow-research/references/knowledge-decay-guide.md +121 -0
  281. package/content/plugins/research/skills/agileflow-research/references/research-prompt-guide.md +141 -0
  282. package/content/plugins/research/skills/agileflow-research/references/synthesis-template.md +154 -0
  283. package/content/plugins/research/skills/agileflow-research/workflows/analyze.md +60 -0
  284. package/content/plugins/research/skills/agileflow-research/workflows/ask.md +64 -0
  285. package/content/plugins/research/skills/agileflow-research/workflows/import.md +66 -0
  286. package/content/plugins/research/skills/agileflow-research/workflows/synthesize.md +66 -0
  287. package/content/plugins/reviews/plugin.yaml +14 -0
  288. package/content/plugins/reviews/skills/agileflow-pr-reviewer/SKILL.md +241 -0
  289. package/content/plugins/reviews/skills/agileflow-pr-reviewer/references/review-checklist.md +200 -0
  290. package/content/plugins/reviews/skills/agileflow-pr-reviewer/references/security-patterns.md +328 -0
  291. package/content/plugins/reviews/skills/agileflow-pr-reviewer/workflows/review-pr.md +153 -0
  292. package/content/plugins/reviews/skills/agileflow-pr-reviewer/workflows/security-review.md +177 -0
  293. package/content/plugins/seo/agents/seo-analyzer-content.md +169 -0
  294. package/content/plugins/seo/agents/seo-analyzer-images.md +198 -0
  295. package/content/plugins/seo/agents/seo-analyzer-performance.md +217 -0
  296. package/content/plugins/seo/agents/seo-analyzer-schema.md +184 -0
  297. package/content/plugins/seo/agents/seo-analyzer-sitemap.md +177 -0
  298. package/content/plugins/seo/agents/seo-analyzer-technical.md +151 -0
  299. package/content/plugins/seo/agents/seo-consensus.md +304 -0
  300. package/content/plugins/seo/plugin.yaml +19 -4
  301. package/content/plugins/seo/skills/agileflow-seo/SKILL.md +188 -0
  302. package/content/plugins/seo/skills/agileflow-seo/references/cwv-thresholds.md +110 -0
  303. package/content/plugins/seo/skills/agileflow-seo/references/eeat-framework.md +144 -0
  304. package/content/plugins/seo/skills/agileflow-seo/references/keyword-research-guide.md +125 -0
  305. package/content/plugins/seo/skills/agileflow-seo/references/schema-types.md +139 -0
  306. package/content/plugins/seo/skills/agileflow-seo/references/technical-seo-checklist.md +139 -0
  307. package/content/plugins/seo/skills/agileflow-seo/workflows/audit.md +98 -0
  308. package/content/plugins/seo/skills/agileflow-seo/workflows/page.md +118 -0
  309. package/content/plugins/testing/plugin.yaml +16 -0
  310. package/content/plugins/testing/skills/agileflow-test-writer/SKILL.md +260 -0
  311. package/content/plugins/testing/skills/agileflow-test-writer/references/coverage-targets.md +239 -0
  312. package/content/plugins/testing/skills/agileflow-test-writer/references/test-patterns.md +420 -0
  313. package/content/plugins/testing/skills/agileflow-test-writer/workflows/add-coverage.md +154 -0
  314. package/content/plugins/testing/skills/agileflow-test-writer/workflows/write-tests-from-ac.md +225 -0
  315. package/package.json +2 -2
  316. package/src/cli/commands/doctor.js +818 -30
  317. package/src/cli/commands/hook.js +17 -14
  318. package/src/cli/commands/launch.js +1454 -0
  319. package/src/cli/commands/learn.js +149 -0
  320. package/src/cli/commands/plugins.js +113 -0
  321. package/src/cli/commands/setup.js +455 -110
  322. package/src/cli/commands/skills.js +324 -0
  323. package/src/cli/commands/status.js +8 -10
  324. package/src/cli/commands/update.js +76 -15
  325. package/src/cli/index.js +90 -26
  326. package/src/cli/wizard/babysit-mode-picker.js +192 -0
  327. package/src/cli/wizard/behaviors-picker.js +208 -54
  328. package/src/cli/wizard/ide-picker.js +40 -28
  329. package/src/cli/wizard/install-scope-picker.js +57 -0
  330. package/src/cli/wizard/launch-alias-picker.js +50 -0
  331. package/src/cli/wizard/launch-cli-picker.js +129 -0
  332. package/src/cli/wizard/launch-tmux-picker.js +133 -0
  333. package/src/cli/wizard/learnings-picker.js +40 -0
  334. package/src/cli/wizard/plugin-picker.js +47 -16
  335. package/src/lib/brand.js +116 -0
  336. package/src/lib/errors.js +120 -0
  337. package/src/lib/path-check.js +39 -0
  338. package/src/runtime/config/defaults.js +22 -17
  339. package/src/runtime/config/loader.js +77 -8
  340. package/src/runtime/config/schema.json +43 -16
  341. package/src/runtime/config/writer.js +3 -1
  342. package/src/runtime/ide/babysit-skill.js +202 -0
  343. package/src/runtime/ide/capabilities.js +84 -29
  344. package/src/runtime/ide/claude-code-content.js +177 -0
  345. package/src/runtime/ide/claude-code-settings.js +67 -29
  346. package/src/runtime/ide/claude-code-skills.js +47 -32
  347. package/src/runtime/ide/codex-config.js +295 -0
  348. package/src/runtime/installer/install.js +252 -24
  349. package/src/runtime/launch/alias-installer.js +191 -0
  350. package/src/runtime/launch/cli-resume.js +244 -0
  351. package/src/runtime/launch/closed-windows.js +338 -0
  352. package/src/runtime/launch/defaults.js +66 -0
  353. package/src/runtime/launch/detect-clis.js +69 -0
  354. package/src/runtime/launch/doctor.js +464 -0
  355. package/src/runtime/launch/exec-wrapper.js +114 -0
  356. package/src/runtime/launch/parallel-session.js +247 -0
  357. package/src/runtime/launch/prefs.js +211 -0
  358. package/src/runtime/launch/project-prefs.js +234 -0
  359. package/src/runtime/launch/resolve-cli.js +56 -0
  360. package/src/runtime/launch/restore.js +152 -0
  361. package/src/runtime/launch/schema.json +75 -0
  362. package/src/runtime/launch/session-lifecycle.js +313 -0
  363. package/src/runtime/launch/session-registry.js +401 -0
  364. package/src/runtime/launch/spawn.js +103 -0
  365. package/src/runtime/launch/tabs.js +350 -0
  366. package/src/runtime/launch/tmux.js +764 -0
  367. package/src/runtime/launch/worktree.js +260 -0
  368. package/src/runtime/plugins/registry.js +16 -11
  369. package/src/runtime/plugins/validator.js +57 -43
  370. package/src/runtime/skills/learnings.js +308 -0
  371. package/content/plugins/core/hooks/babysit-mentor-injector.js +0 -55
  372. package/src/cli/wizard/personalization.js +0 -64
@@ -0,0 +1,479 @@
1
+ # Workflow: Implement an Accessible UI Component
2
+
3
+ Use this workflow when building a new UI component from scratch. Accessibility is much cheaper to build in from the start than to retrofit after the fact.
4
+
5
+ **Time estimate:** Adding accessibility to a component adds 10–30% to initial development time, but prevents 5–10× that time in later remediation.
6
+
7
+ ---
8
+
9
+ ## Step 0: Understand What You're Building
10
+
11
+ Before writing any code, answer:
12
+
13
+ 1. **What is the component's purpose?** What does it allow users to do?
14
+ 2. **Does a native HTML element do this?** If yes, use it.
15
+ 3. **What are the interactive states?** Default, hover, focus, active, disabled, error, loading, expanded, selected, checked.
16
+ 4. **What content does it display?** Images, icons, dynamic text, form inputs.
17
+ 5. **Is it triggered by user action or automatic?** (affects focus management)
18
+
19
+ ---
20
+
21
+ ## Step 1: Choose the Correct HTML Element
22
+
23
+ This is the most important decision. The right element gives you keyboard support, ARIA semantics, and screen reader compatibility for free.
24
+
25
+ **Decision tree:**
26
+
27
+ ```
28
+ Does the user click it to trigger an action?
29
+ ├── Yes, and it navigates to another URL → <a href="...">
30
+ ├── Yes, and it performs an action (submit, open, toggle) → <button type="button">
31
+ └── Yes, and it submits a form → <button type="submit"> or <input type="submit">
32
+
33
+ Does the user enter data?
34
+ ├── Single line text → <input type="text|email|tel|password|search|url|number">
35
+ ├── Multi-line text → <textarea>
36
+ ├── One of many options (radio) → <input type="radio"> in a <fieldset>
37
+ ├── On/off toggle → <input type="checkbox"> or <button role="switch">
38
+ └── Select from list → <select> or custom combobox (last resort)
39
+
40
+ Is it a container/structure element?
41
+ ├── Primary page content → <main>
42
+ ├── Site navigation → <nav aria-label="Main navigation">
43
+ ├── Page header → <header>
44
+ ├── Page footer → <footer>
45
+ ├── Supplementary content → <aside>
46
+ ├── Related content group → <article> or <section>
47
+ └── Just a layout div → <div> (no role needed)
48
+
49
+ Is it a list?
50
+ ├── Unordered → <ul><li>...</li></ul>
51
+ ├── Ordered → <ol><li>...</li></ol>
52
+ └── Description pairs → <dl><dt>Term</dt><dd>Definition</dd></dl>
53
+
54
+ Is it a heading?
55
+ └── Use <h1>–<h6> in logical hierarchy, not for visual sizing
56
+ ```
57
+
58
+ **If no native element fits** (custom combobox, tree view, data grid, slider, color picker):
59
+
60
+ - Check [ARIA Authoring Practices Guide (APG)](https://www.w3.org/WAI/ARIA/apg/patterns/) for the pattern
61
+ - Consider using an accessible library instead: Radix UI, Headless UI, React Aria
62
+ - If rolling custom: use `<button>` or `<div tabindex="0">` as the base, add role, add keyboard handlers
63
+
64
+ ---
65
+
66
+ ## Step 2: Write the Semantic HTML Structure
67
+
68
+ Write the markup first, before any CSS or JavaScript. If the HTML makes sense without styling, you're on the right track.
69
+
70
+ **Example: Accessible card with action button**
71
+
72
+ ```html
73
+ <!-- Bad: div soup, no semantics -->
74
+ <div class="card" onclick="viewDetails(id)">
75
+ <div class="card-img"><img src="product.jpg" /></div>
76
+ <div class="card-title">Super Widget Pro</div>
77
+ <div class="card-price">$49</div>
78
+ <div class="card-btn">View details</div>
79
+ </div>
80
+
81
+ <!-- Good: semantic, keyboard accessible, screen reader friendly -->
82
+ <article class="card">
83
+ <img
84
+ src="product.jpg"
85
+ alt="Super Widget Pro — a compact silver device with three ports"
86
+ />
87
+ <h3 class="card-title">Super Widget Pro</h3>
88
+ <p class="card-price"><span class="sr-only">Price:</span> $49</p>
89
+ <a href="/products/super-widget-pro" class="card-link">
90
+ View details
91
+ <span class="sr-only">for Super Widget Pro</span>
92
+ </a>
93
+ </article>
94
+ ```
95
+
96
+ ---
97
+
98
+ ## Step 3: Add ARIA Only Where HTML Is Insufficient
99
+
100
+ ARIA supplements native HTML. Before adding an ARIA attribute, ask: "Is there a native HTML way to express this?"
101
+
102
+ **Common cases where ARIA is needed:**
103
+
104
+ | Situation | ARIA to add |
105
+ | --------------------- | ---------------------------------------------------------------- |
106
+ | Custom toggle/switch | `role="switch" aria-checked="true/false"` on `<button>` |
107
+ | Expandable section | `aria-expanded="true/false"` on trigger button |
108
+ | Custom dropdown | `role="listbox"`, `role="option"`, `aria-selected` |
109
+ | Error on input | `aria-invalid="true" aria-describedby="error-id"` |
110
+ | Loading spinner | `role="status" aria-label="Loading..."` or `aria-busy="true"` |
111
+ | Icon-only button | `aria-label="Close dialog"` + `aria-hidden="true"` on SVG |
112
+ | Required field | `aria-required="true"` (or native `required` attribute) |
113
+ | Multiple navs on page | `aria-label="Main navigation"`, `aria-label="Footer navigation"` |
114
+
115
+ **What you should NOT add:**
116
+
117
+ - `role="button"` on a `<button>` — already has the role
118
+ - `aria-label` that duplicates visible text — redundant and potentially confusing
119
+ - `aria-hidden="true"` on visible, meaningful content
120
+ - `tabindex="2"` or any tabindex > 0 — use DOM order instead
121
+
122
+ ---
123
+
124
+ ## Step 4: Implement Keyboard Behaviour
125
+
126
+ Every interactive element needs keyboard support. Native elements handle most of this automatically; custom widgets need explicit keyboard handlers.
127
+
128
+ ### Standard keyboard patterns:
129
+
130
+ | Widget | Enter | Space | Arrow keys | Escape | Tab |
131
+ | ----------- | -------------- | ----------- | ----------------------------- | ----------- | ------------------------ |
132
+ | Button | Activate | Activate | — | — | Move focus |
133
+ | Link | Activate | — | — | — | Move focus |
134
+ | Checkbox | Toggle | Toggle | — | — | Move focus |
135
+ | Radio group | Select | Select | Move within group | — | Move to next group |
136
+ | Select | Open/select | Open/select | Navigate options | Close | Move focus |
137
+ | Accordion | Toggle | Toggle | — | — | Move focus |
138
+ | Tab panel | Select | Select | Switch tabs (with activation) | — | Move into panel |
139
+ | Modal | — | — | — | Close modal | Stay inside modal |
140
+ | Combobox | Select/confirm | Open list | Navigate options | Close list | Move focus (closes list) |
141
+ | Menu | Select | Select | Navigate items | Close menu | Close menu, move focus |
142
+ | Slider | — | — | Increment/decrement | — | Move focus |
143
+ | Date picker | Select date | — | Navigate calendar | Close | Move focus |
144
+
145
+ ### Example: Accessible accordion keyboard handler
146
+
147
+ ```js
148
+ class AccessibleAccordion {
149
+ constructor(el) {
150
+ this.el = el;
151
+ this.buttons = [
152
+ ...el.querySelectorAll('[role="tab"], button[aria-expanded]'),
153
+ ];
154
+ this.bindEvents();
155
+ }
156
+
157
+ bindEvents() {
158
+ this.buttons.forEach((btn, index) => {
159
+ btn.addEventListener("click", () => this.toggle(btn));
160
+ btn.addEventListener("keydown", (e) => this.handleKey(e, index));
161
+ });
162
+ }
163
+
164
+ toggle(btn) {
165
+ const isExpanded = btn.getAttribute("aria-expanded") === "true";
166
+ const panel = document.getElementById(btn.getAttribute("aria-controls"));
167
+ btn.setAttribute("aria-expanded", String(!isExpanded));
168
+ panel.hidden = isExpanded;
169
+ }
170
+
171
+ handleKey(e, index) {
172
+ switch (e.key) {
173
+ case "ArrowDown":
174
+ e.preventDefault();
175
+ this.buttons[(index + 1) % this.buttons.length].focus();
176
+ break;
177
+ case "ArrowUp":
178
+ e.preventDefault();
179
+ this.buttons[
180
+ (index - 1 + this.buttons.length) % this.buttons.length
181
+ ].focus();
182
+ break;
183
+ case "Home":
184
+ e.preventDefault();
185
+ this.buttons[0].focus();
186
+ break;
187
+ case "End":
188
+ e.preventDefault();
189
+ this.buttons[this.buttons.length - 1].focus();
190
+ break;
191
+ }
192
+ }
193
+ }
194
+ ```
195
+
196
+ ---
197
+
198
+ ## Step 5: Handle Focus Management
199
+
200
+ For components that show/hide content, open/close panels, or trigger dialogs:
201
+
202
+ ```js
203
+ // Pattern: component that opens a panel and must manage focus
204
+ class FocusManagedDropdown {
205
+ open() {
206
+ this.panel.hidden = false;
207
+ this.panel.setAttribute("aria-hidden", "false");
208
+
209
+ // Move focus to first item in panel
210
+ const firstItem = this.panel.querySelector("[role='option'], a, button");
211
+ firstItem?.focus();
212
+ }
213
+
214
+ close() {
215
+ this.panel.hidden = true;
216
+ this.panel.setAttribute("aria-hidden", "true");
217
+
218
+ // CRITICAL: return focus to the trigger
219
+ this.trigger.focus();
220
+ }
221
+ }
222
+ ```
223
+
224
+ ### Focus management checklist for the component:
225
+
226
+ - [ ] On open: focus moves to the first relevant element inside the opened content
227
+ - [ ] On close: focus returns to the element that triggered the opening
228
+ - [ ] If triggered automatically (not by user): use `aria-live` to announce instead of moving focus
229
+ - [ ] Focus indicator always visible within component
230
+ - [ ] No focus trap except intentional modals (which must have Escape to escape)
231
+
232
+ ---
233
+
234
+ ## Step 6: Handle Dynamic State Changes
235
+
236
+ When component state changes (loading, error, success, expanded, selected), update:
237
+
238
+ 1. **Visual state** — via CSS
239
+ 2. **ARIA state** — via attribute update
240
+ 3. **Announcement** — via aria-live if the change is not focus-initiated
241
+
242
+ ```js
243
+ // Example: async save button with loading state
244
+ async function handleSave(btn) {
245
+ // Update ARIA state
246
+ btn.setAttribute("aria-busy", "true");
247
+ btn.setAttribute("aria-disabled", "true");
248
+ btn.textContent = "Saving...";
249
+
250
+ try {
251
+ await saveData();
252
+
253
+ // Success state
254
+ btn.setAttribute("aria-busy", "false");
255
+ btn.removeAttribute("aria-disabled");
256
+ btn.textContent = "Save";
257
+
258
+ // Announce success (don't move focus)
259
+ announce("Changes saved successfully.");
260
+ } catch (err) {
261
+ btn.setAttribute("aria-busy", "false");
262
+ btn.removeAttribute("aria-disabled");
263
+ btn.textContent = "Save";
264
+
265
+ // Announce error
266
+ announceError("Save failed. Please try again.");
267
+ }
268
+ }
269
+
270
+ function announce(message) {
271
+ const region = document.getElementById("live-region");
272
+ region.textContent = "";
273
+ requestAnimationFrame(() => {
274
+ region.textContent = message;
275
+ });
276
+ }
277
+
278
+ function announceError(message) {
279
+ const region = document.getElementById("alert-region");
280
+ region.textContent = "";
281
+ requestAnimationFrame(() => {
282
+ region.textContent = message;
283
+ });
284
+ }
285
+ ```
286
+
287
+ ```html
288
+ <!-- Live regions — must exist in DOM before content injected -->
289
+ <div
290
+ id="live-region"
291
+ aria-live="polite"
292
+ aria-atomic="true"
293
+ class="sr-only"
294
+ ></div>
295
+ <div id="alert-region" role="alert" aria-atomic="true" class="sr-only"></div>
296
+ ```
297
+
298
+ ---
299
+
300
+ ## Step 7: Add Colour and Visual Accessibility
301
+
302
+ ### Colour contrast
303
+
304
+ Before finalising colours, verify contrast ratios:
305
+
306
+ ```js
307
+ // Quick contrast check during development
308
+ // Chrome DevTools → Elements → click colour swatch → shows ratio
309
+
310
+ // Design token example with documented contrast
311
+ const colors = {
312
+ textPrimary: "#1a1a1a", // 16.1:1 against white — passes AA + AAA
313
+ textSecondary: "#595959", // 7.0:1 against white — passes AA + AAA
314
+ textDisabled: "#949494", // 2.9:1 against white — intentionally below (disabled)
315
+ buttonPrimary: "#005fcc", // 5.9:1 white text on this — passes AA
316
+ errorText: "#c0392b", // 5.1:1 against white — passes AA
317
+ focusRing: "#005fcc", // 5.9:1 against white — passes 3:1 for focus indicator
318
+ };
319
+ ```
320
+
321
+ ### Focus indicator
322
+
323
+ ```css
324
+ /* Remove browser default only if replacing with something better */
325
+ :focus {
326
+ outline: none; /* Removes browser default */
327
+ }
328
+
329
+ /* Custom focus style — must meet 3:1 against adjacent colours */
330
+ :focus-visible {
331
+ outline: 3px solid #005fcc;
332
+ outline-offset: 3px;
333
+ border-radius: 2px;
334
+ }
335
+
336
+ /* Component-specific focus style */
337
+ .card:focus-visible {
338
+ outline: 3px solid #005fcc;
339
+ outline-offset: 4px;
340
+ box-shadow: 0 0 0 6px rgba(0, 95, 204, 0.15);
341
+ }
342
+ ```
343
+
344
+ ### Motion
345
+
346
+ ```css
347
+ /* Wrap all animations in prefers-reduced-motion check */
348
+ .animated-element {
349
+ transition: transform 0.3s ease;
350
+ }
351
+
352
+ @media (prefers-reduced-motion: reduce) {
353
+ .animated-element {
354
+ transition: none;
355
+ }
356
+ }
357
+ ```
358
+
359
+ ---
360
+
361
+ ## Step 8: Write axe-core Tests
362
+
363
+ Tests prevent regression. Write them alongside the component.
364
+
365
+ ```js
366
+ // components/MyComponent/MyComponent.test.jsx
367
+ import { render, userEvent } from "@testing-library/react";
368
+ import { axe, toHaveNoViolations } from "vitest-axe";
369
+ import { expect, it, describe } from "vitest";
370
+ import { MyComponent } from "./MyComponent";
371
+
372
+ expect.extend(toHaveNoViolations);
373
+
374
+ describe("MyComponent accessibility", () => {
375
+ it("has no axe violations in default state", async () => {
376
+ const { container } = render(<MyComponent />);
377
+ expect(await axe(container)).toHaveNoViolations();
378
+ });
379
+
380
+ it("has no axe violations in expanded state", async () => {
381
+ const { container } = render(<MyComponent expanded />);
382
+ expect(await axe(container)).toHaveNoViolations();
383
+ });
384
+
385
+ it("has no axe violations in error state", async () => {
386
+ const { container } = render(
387
+ <MyComponent hasError errorMessage="Invalid input" />,
388
+ );
389
+ expect(await axe(container)).toHaveNoViolations();
390
+ });
391
+
392
+ it("has no axe violations in disabled state", async () => {
393
+ const { container } = render(<MyComponent disabled />);
394
+ expect(await axe(container)).toHaveNoViolations();
395
+ });
396
+
397
+ // Keyboard behaviour test
398
+ it("can be activated with keyboard", async () => {
399
+ const user = userEvent.setup();
400
+ const handleActivate = vi.fn();
401
+ const { getByRole } = render(<MyComponent onActivate={handleActivate} />);
402
+
403
+ const btn = getByRole("button");
404
+ btn.focus();
405
+ await user.keyboard("{Enter}");
406
+
407
+ expect(handleActivate).toHaveBeenCalled();
408
+ });
409
+ });
410
+ ```
411
+
412
+ ---
413
+
414
+ ## Step 9: Manual Verification
415
+
416
+ After automated tests pass, verify manually:
417
+
418
+ **Keyboard test (2 minutes):**
419
+
420
+ - [ ] Tab to the component
421
+ - [ ] Verify focus indicator is visible
422
+ - [ ] Activate all interactive states with keyboard only
423
+ - [ ] Verify focus returns correctly after closing panels
424
+
425
+ **Screen reader test (5 minutes with VoiceOver):**
426
+
427
+ - [ ] Enable VoiceOver (`Cmd + F5`) with Safari
428
+ - [ ] Tab to the component — does it announce name, role, and state?
429
+ - [ ] Activate it — does it announce the state change?
430
+ - [ ] If it shows/hides content — does content appear in reading flow?
431
+ - [ ] If it has errors — are errors announced?
432
+
433
+ **Visual check:**
434
+
435
+ - [ ] Focus indicator visible and meets 3:1 contrast
436
+ - [ ] Text contrast meets 4.5:1 (normal) or 3:1 (large text)
437
+ - [ ] Information not conveyed by colour alone
438
+ - [ ] Component reflows at 320px width without horizontal scroll
439
+
440
+ ---
441
+
442
+ ## Component Accessibility Checklist
443
+
444
+ Before marking a component as complete:
445
+
446
+ - [ ] Uses native HTML element (or justified ARIA alternative)
447
+ - [ ] All interactive states accessible by keyboard
448
+ - [ ] ARIA roles, properties, and states accurate and complete
449
+ - [ ] All images have alt text (descriptive or `alt=""`)
450
+ - [ ] All form inputs have associated labels
451
+ - [ ] Focus indicator visible on all interactive elements
452
+ - [ ] Focus management implemented (open → focus inside; close → return focus)
453
+ - [ ] Dynamic state changes announced via ARIA updates or live regions
454
+ - [ ] Colour contrast meets WCAG AA thresholds
455
+ - [ ] Motion wrapped in `prefers-reduced-motion` media query
456
+ - [ ] axe-core tests written for all component states
457
+ - [ ] Keyboard tested manually
458
+ - [ ] Screen reader tested with VoiceOver or NVDA
459
+
460
+ ---
461
+
462
+ ## Library Recommendations
463
+
464
+ Before building a complex custom widget, evaluate:
465
+
466
+ | Component type | Recommended library |
467
+ | --------------------- | -------------------------------------------------------- |
468
+ | Dialog/modal | Radix UI Dialog, Headless UI Dialog |
469
+ | Dropdown/select | Radix UI Select, Downshift |
470
+ | Combobox | Radix UI Combobox, Downshift, React Aria ComboBox |
471
+ | Tabs | Radix UI Tabs, Headless UI Tab |
472
+ | Accordion | Radix UI Accordion, Headless UI Disclosure |
473
+ | Date picker | React Aria DatePicker, react-day-picker |
474
+ | Tooltip | Radix UI Tooltip, Floating UI |
475
+ | Toast/notification | Radix UI Toast, react-hot-toast (with aria-live wrapper) |
476
+ | Table | TanStack Table (bring your own ARIA) |
477
+ | Full component system | Radix Themes, shadcn/ui (built on Radix) |
478
+
479
+ All Radix UI components ship with full WAI-ARIA compliance by default.
@@ -0,0 +1,185 @@
1
+ ---
2
+ name: ads-audit-budget
3
+ description: Cross-platform budget allocation and bidding strategy analyzer with 24 checks for spend efficiency, scaling rules, and industry benchmarks
4
+ tools: Read, Glob, Grep
5
+ model: haiku
6
+ team_role: utility
7
+ ---
8
+
9
+ # Ads Analyzer: Budget & Bidding
10
+
11
+ You are a specialized budget and bidding strategy auditor. Your job is to analyze ad spend allocation and bidding strategies across platforms, applying 24 deterministic checks.
12
+
13
+ ---
14
+
15
+ ## Your Focus Areas
16
+
17
+ 1. **Budget Allocation (35%)** - 8 checks
18
+ 2. **Bidding Strategy (30%)** - 8 checks
19
+ 3. **Scaling & Pacing (20%)** - 4 checks
20
+ 4. **Platform Mix (15%)** - 4 checks
21
+
22
+ ---
23
+
24
+ ## Analysis Process
25
+
26
+ ### Category 1: Budget Allocation (35% weight) - 8 checks
27
+
28
+ | # | Check | Severity | Pass Criteria |
29
+ | ------ | ---------------------------- | -------- | ----------------------------------------------------- |
30
+ | B-BA-1 | Budget-to-revenue ratio | HIGH | Ad spend 5-20% of target revenue (varies by industry) |
31
+ | B-BA-2 | Top-performer budget share | HIGH | Top 20% campaigns get 60%+ of budget |
32
+ | B-BA-3 | Test budget allocation | MEDIUM | 10-20% of budget reserved for testing |
33
+ | B-BA-4 | Platform budget distribution | HIGH | Budget weighted by platform ROAS/CPA |
34
+ | B-BA-5 | Funnel stage allocation | HIGH | 60% prospecting / 20% retargeting / 20% retention |
35
+ | B-BA-6 | Minimum viable budget | CRITICAL | Each campaign meets minimum spend for learning |
36
+ | B-BA-7 | Budget waste detection | HIGH | No campaigns with 0 conversions and $500+ spend |
37
+ | B-BA-8 | Seasonal budget planning | MEDIUM | Budget adjustments for peak seasons |
38
+
39
+ ### Category 2: Bidding Strategy (30% weight) - 8 checks
40
+
41
+ | # | Check | Severity | Pass Criteria |
42
+ | ------ | ----------------------------- | -------- | ----------------------------------------------- |
43
+ | B-BS-1 | Bid strategy matches goal | HIGH | Conversions goal = tCPA/tROAS, awareness = CPM |
44
+ | B-BS-2 | Sufficient conversion data | CRITICAL | 30+ conversions/month for automated bidding |
45
+ | B-BS-3 | Target CPA/ROAS realistic | HIGH | Targets within 20% of historical performance |
46
+ | B-BS-4 | Portfolio bid strategies | MEDIUM | Portfolio strategies for related campaigns |
47
+ | B-BS-5 | Bid adjustments active | MEDIUM | Device, location, schedule adjustments set |
48
+ | B-BS-6 | Maximum CPC caps | MEDIUM | Caps set to prevent runaway bids |
49
+ | B-BS-7 | Smart Bidding ramp-up | HIGH | 2-week learning period respected after changes |
50
+ | B-BS-8 | Manual vs automated alignment | HIGH | Manual bidding only with < 30 conversions/month |
51
+
52
+ ### Category 3: Scaling & Pacing (20% weight) - 4 checks
53
+
54
+ | # | Check | Severity | Pass Criteria |
55
+ | ------ | ------------------------- | -------- | ----------------------------------------- |
56
+ | B-SP-1 | Budget scaling rate | HIGH | No more than 20% budget increase per week |
57
+ | B-SP-2 | Budget limited campaigns | MEDIUM | < 20% of campaigns "Limited by budget" |
58
+ | B-SP-3 | Daily pacing consistency | MEDIUM | No campaigns exhausting budget before 3pm |
59
+ | B-SP-4 | Learning phase compliance | CRITICAL | No changes during learning phase windows |
60
+
61
+ ### Category 4: Platform Mix (15% weight) - 4 checks
62
+
63
+ | # | Check | Severity | Pass Criteria |
64
+ | ------ | --------------------------- | -------- | --------------------------------------------- |
65
+ | B-PM-1 | Platform diversification | MEDIUM | Not 100% on single platform |
66
+ | B-PM-2 | Cross-platform attribution | HIGH | Attribution model accounts for cross-platform |
67
+ | B-PM-3 | Platform strength alignment | MEDIUM | Platform matches audience behavior |
68
+ | B-PM-4 | Incrementality testing | LOW | Lift tests or holdout tests running |
69
+
70
+ ---
71
+
72
+ ## Platform Budget Minimums
73
+
74
+ These minimums MUST be enforced:
75
+
76
+ | Platform | Campaign Minimum | Ad Set/Group Minimum |
77
+ | ------------- | ---------------- | -------------------- |
78
+ | Google Ads | $10/day | $5/day |
79
+ | Meta Ads | $20/day | $10/day |
80
+ | LinkedIn Ads | $50/day | $25/day |
81
+ | TikTok Ads | $50/day campaign | $20/day ad group |
82
+ | Microsoft Ads | $10/day | $5/day |
83
+ | YouTube | $10/day | $5/day |
84
+
85
+ ---
86
+
87
+ ## Industry Benchmark Matrices
88
+
89
+ ### B2B SaaS
90
+
91
+ | Metric | Good | Average | Poor |
92
+ | ---------- | ------ | -------- | ------ |
93
+ | CPA (Lead) | < $50 | $50-150 | > $150 |
94
+ | CPA (Demo) | < $200 | $200-500 | > $500 |
95
+ | ROAS | > 5:1 | 3:1-5:1 | < 3:1 |
96
+
97
+ ### E-commerce
98
+
99
+ | Metric | Good | Average | Poor |
100
+ | -------------- | ----- | ------- | ----- |
101
+ | ROAS | > 4:1 | 2:1-4:1 | < 2:1 |
102
+ | CPA (Purchase) | < $30 | $30-80 | > $80 |
103
+ | AOV:CPA ratio | > 3:1 | 2:1-3:1 | < 2:1 |
104
+
105
+ ### Local Services
106
+
107
+ | Metric | Good | Average | Poor |
108
+ | ------ | ----- | ------- | ----- |
109
+ | CPL | < $25 | $25-75 | > $75 |
110
+ | CPC | < $3 | $3-8 | > $8 |
111
+ | CTR | > 5% | 3-5% | < 3% |
112
+
113
+ ---
114
+
115
+ ## Quality Gates
116
+
117
+ 1. **Never optimize without conversion data** - B-BS-2 is a hard gate
118
+ 2. **Platform minimums are non-negotiable** - B-BA-6 below minimums = CRITICAL
119
+ 3. **Learning phase is sacred** - B-SP-4: No changes during learning windows
120
+ 4. **3x Kill Rule** - Flag any campaign with CPA > 3x target
121
+
122
+ ---
123
+
124
+ ## Scoring Method
125
+
126
+ ```
127
+ Category Score = max(0, 100 - sum(severity_deductions))
128
+ Budget Score = sum(Category Score * Category Weight)
129
+ ```
130
+
131
+ Severity deductions: CRITICAL (-15), HIGH (-8), MEDIUM (-4), LOW (-2)
132
+
133
+ ---
134
+
135
+ ## Output Format
136
+
137
+ For each failed check:
138
+
139
+ ```markdown
140
+ ### FINDING-{N}: {Check ID} - {Brief Title}
141
+
142
+ **Category**: {Category Name}
143
+ **Check**: {Check ID}
144
+ **Severity**: CRITICAL | HIGH | MEDIUM | LOW
145
+ **Confidence**: HIGH | MEDIUM | LOW
146
+
147
+ **Issue**: {Clear explanation}
148
+ **Evidence**: {Spend data showing the issue}
149
+ **Impact**: {Wasted spend amount or missed opportunity}
150
+ **Remediation**:
151
+
152
+ - {Specific reallocation recommendation}
153
+ - {Expected improvement with numbers}
154
+ ```
155
+
156
+ Final summary:
157
+
158
+ ```markdown
159
+ ## Budget & Bidding Audit Summary
160
+
161
+ | Category | Weight | Checks | Passed | Failed | Score |
162
+ | ----------------- | -------- | ------ | ------ | ------ | --------- |
163
+ | Budget Allocation | 35% | 8 | X | Y | Z/100 |
164
+ | Bidding Strategy | 30% | 8 | X | Y | Z/100 |
165
+ | Scaling & Pacing | 20% | 4 | X | Y | Z/100 |
166
+ | Platform Mix | 15% | 4 | X | Y | Z/100 |
167
+ | **Budget Score** | **100%** | **24** | **X** | **Y** | **Z/100** |
168
+
169
+ ### Quality Gate Status
170
+
171
+ - [ ] Sufficient conversion data: {PASS/FAIL}
172
+ - [ ] Platform minimums met: {PASS/FAIL}
173
+ - [ ] Learning phase respected: {PASS/FAIL}
174
+ - [ ] 3x Kill Rule: {PASS/FAIL}
175
+ ```
176
+
177
+ ---
178
+
179
+ ## Important Rules
180
+
181
+ 1. **Show the math** - Include actual spend numbers and percentages
182
+ 2. **Benchmark against industry** - Use the matrices above for context
183
+ 3. **Recommend specific reallocations** - "Move $X from Campaign A to Campaign B"
184
+ 4. **Scaling is gradual** - Never recommend > 20% budget increases per week
185
+ 5. **Don't assume data** - Mark unavailable checks as "Unable to verify"