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,683 @@
1
+ # WCAG 2.2 Reference Guide
2
+
3
+ WCAG 2.2 (published October 2023) is the current W3C standard. It contains 78 success criteria organised under 13 guidelines across the four POUR principles. Level AA conformance is the legal and industry baseline for ADA, Section 508, and EN 301 549 compliance.
4
+
5
+ This guide covers every AA criterion (and the most impactful AAA ones) with implementation guidance.
6
+
7
+ ---
8
+
9
+ ## Principle 1: Perceivable
10
+
11
+ Content must be presentable to users in ways they can perceive. If a user cannot see, hear, or otherwise sense the content, the page fails at the foundation.
12
+
13
+ ---
14
+
15
+ ### 1.1 Text Alternatives
16
+
17
+ #### 1.1.1 Non-text Content (Level A)
18
+
19
+ All non-text content must have a text alternative that serves an equivalent purpose.
20
+
21
+ **Images:**
22
+
23
+ ```html
24
+ <!-- Informative image: describe what the image conveys -->
25
+ <img
26
+ src="revenue-chart.png"
27
+ alt="Monthly revenue grew from $12K in January to $48K in June 2024"
28
+ />
29
+
30
+ <!-- Decorative image: empty alt, screen reader skips it -->
31
+ <img src="decorative-swirl.svg" alt="" role="presentation" />
32
+
33
+ <!-- Functional image (logo linking home): describe function -->
34
+ <a href="/"><img src="logo.svg" alt="Acme Inc — Home" /></a>
35
+
36
+ <!-- Complex image (chart): alt summarises; long description in figure caption -->
37
+ <figure>
38
+ <img
39
+ src="complex-chart.png"
40
+ alt="Sales by region Q1 2024 — see caption for details"
41
+ />
42
+ <figcaption>
43
+ Sales by region: North 42%, South 28%, East 18%, West 12%.
44
+ </figcaption>
45
+ </figure>
46
+
47
+ <!-- Icon button: describe the action, not the icon -->
48
+ <button aria-label="Delete item">
49
+ <svg aria-hidden="true" focusable="false">...</svg>
50
+ </button>
51
+ ```
52
+
53
+ **Common mistakes:**
54
+
55
+ - `alt="image.jpg"` — filename as alt text
56
+ - `alt="photo"` — useless generic description
57
+ - Missing alt attribute entirely (screen readers read the src path)
58
+ - Over-describing decorative images ("A beautiful blue gradient background")
59
+
60
+ ---
61
+
62
+ ### 1.2 Time-based Media
63
+
64
+ #### 1.2.1 Audio-only and Video-only (Prerecorded) — Level A
65
+
66
+ - Audio-only (podcast, voice memo): provide a full text transcript
67
+ - Video-only (silent animation, demo): provide audio description or text alternative
68
+
69
+ #### 1.2.2 Captions (Prerecorded) — Level A
70
+
71
+ All prerecorded video with audio must have synchronised captions.
72
+
73
+ - Captions must include spoken dialogue AND relevant non-speech audio (music, sound effects, speaker identification)
74
+ - Auto-generated captions alone do not satisfy this — they must be reviewed and corrected
75
+
76
+ #### 1.2.3 Audio Description or Media Alternative (Prerecorded) — Level A
77
+
78
+ Video must have audio description of visual information not conveyed in dialogue, OR a text alternative.
79
+
80
+ #### 1.2.4 Captions (Live) — Level AA
81
+
82
+ Live video (webinars, streams) must have real-time captions. CART (Communication Access Realtime Translation) services or live auto-caption tools (with review) can satisfy this.
83
+
84
+ #### 1.2.5 Audio Description (Prerecorded) — Level AA
85
+
86
+ All prerecorded video must have audio description if visual content is not conveyed by audio track.
87
+
88
+ ---
89
+
90
+ ### 1.3 Adaptable
91
+
92
+ #### 1.3.1 Info and Relationships (Level A)
93
+
94
+ Structure and relationships conveyed visually must also be programmatically determinable.
95
+
96
+ ```html
97
+ <!-- Bad: visual structure, no programmatic structure -->
98
+ <div class="heading-large bold">Chapter 1</div>
99
+ <div class="required-label">Email *</div>
100
+ <input type="text" />
101
+
102
+ <!-- Good: semantic structure -->
103
+ <h2>Chapter 1</h2>
104
+ <label for="email"
105
+ >Email <span aria-hidden="true">*</span
106
+ ><span class="sr-only">(required)</span></label
107
+ >
108
+ <input type="email" id="email" required aria-required="true" />
109
+
110
+ <!-- Bad: table-like layout with divs -->
111
+ <div class="table">
112
+ <div class="row">
113
+ <div class="cell bold">Name</div>
114
+ <div class="cell bold">Role</div>
115
+ </div>
116
+ </div>
117
+
118
+ <!-- Good: actual table for tabular data -->
119
+ <table>
120
+ <thead>
121
+ <tr>
122
+ <th scope="col">Name</th>
123
+ <th scope="col">Role</th>
124
+ </tr>
125
+ </thead>
126
+ <tbody>
127
+ <tr>
128
+ <td>Alice</td>
129
+ <td>Engineer</td>
130
+ </tr>
131
+ </tbody>
132
+ </table>
133
+ ```
134
+
135
+ #### 1.3.2 Meaningful Sequence (Level A)
136
+
137
+ Reading order in the DOM must match the logical/meaningful order. Screen readers read the DOM, not the visual layout. CSS `order`, `grid-area`, and `position: absolute` can visually reorder content without affecting DOM order — creating a mismatch.
138
+
139
+ #### 1.3.3 Sensory Characteristics (Level A)
140
+
141
+ Don't instruct users using only sensory characteristics (shape, colour, size, visual location, orientation, sound).
142
+
143
+ ```html
144
+ <!-- Bad: relies on colour alone -->
145
+ <p>Click the green button to proceed.</p>
146
+
147
+ <!-- Bad: relies on position alone -->
148
+ <p>Use the button on the right.</p>
149
+
150
+ <!-- Good: identifies by label -->
151
+ <p>Click the "Continue" button to proceed.</p>
152
+ ```
153
+
154
+ #### 1.3.4 Orientation (Level AA)
155
+
156
+ Content must not be restricted to portrait or landscape orientation unless essential (e.g., a piano keyboard app).
157
+
158
+ #### 1.3.5 Identify Input Purpose (Level AA)
159
+
160
+ Input fields collecting personal data must have an `autocomplete` attribute to allow browser autofill.
161
+
162
+ ```html
163
+ <input type="text" id="name" autocomplete="name" />
164
+ <input type="email" id="email" autocomplete="email" />
165
+ <input type="tel" id="phone" autocomplete="tel" />
166
+ <input type="text" id="street" autocomplete="street-address" />
167
+ ```
168
+
169
+ Full list: [HTML autocomplete attribute values](https://html.spec.whatwg.org/multipage/form-elements.html#attr-fe-autocomplete)
170
+
171
+ ---
172
+
173
+ ### 1.4 Distinguishable
174
+
175
+ #### 1.4.1 Use of Color (Level A)
176
+
177
+ Colour must not be the only visual means of conveying information.
178
+
179
+ ```html
180
+ <!-- Bad: error indicated only by red colour -->
181
+ <input class="error-red" />
182
+
183
+ <!-- Good: error indicated by colour + icon + text -->
184
+ <input
185
+ aria-invalid="true"
186
+ aria-describedby="email-error"
187
+ class="error-border"
188
+ />
189
+ <span id="email-error" class="error-text">
190
+ <svg aria-hidden="true"><!-- error icon --></svg>
191
+ Enter a valid email address
192
+ </span>
193
+ ```
194
+
195
+ Charts: don't rely on colour alone to distinguish data series — use pattern fills, direct labels, or shapes.
196
+
197
+ #### 1.4.2 Audio Control (Level A)
198
+
199
+ If audio plays automatically for more than 3 seconds, provide a mechanism to pause, stop, or control volume independently of the system volume.
200
+
201
+ #### 1.4.3 Contrast (Minimum) — Level AA
202
+
203
+ | Text type | Minimum ratio |
204
+ | ----------------------------------------- | ----------------------- |
205
+ | Normal text (< 18pt regular, < 14pt bold) | 4.5:1 |
206
+ | Large text (≥ 18pt / ≥ 14pt bold) | 3:1 |
207
+ | Text in images | 4.5:1 (or 3:1 if large) |
208
+ | Placeholder text | 4.5:1 (not exempt) |
209
+ | Disabled controls | No requirement |
210
+ | Logotype text in logos | No requirement |
211
+
212
+ Test with: [WebAIM Contrast Checker](https://webaim.org/resources/contrastchecker/), browser DevTools colour picker.
213
+
214
+ #### 1.4.4 Resize Text (Level AA)
215
+
216
+ Text must be resizable up to 200% without loss of content or functionality. Use relative units (`rem`, `em`, `%`) not fixed `px` for font sizes. Do not use `max-height` on containers that prevents scrolling when text grows.
217
+
218
+ #### 1.4.5 Images of Text (Level AA)
219
+
220
+ Use actual text instead of images of text wherever possible. Exceptions: logotypes, purely decorative images.
221
+
222
+ #### 1.4.10 Reflow (Level AA)
223
+
224
+ Content must reflow at a viewport width equivalent to 320 CSS pixels without horizontal scrolling (except for content that requires two-dimensional scrolling, such as maps or data tables).
225
+
226
+ ```css
227
+ /* Good: responsive layout that reflows */
228
+ .container {
229
+ max-width: 1200px;
230
+ padding: 0 1rem;
231
+ /* No fixed widths that cause overflow */
232
+ }
233
+
234
+ /* Test: Chrome DevTools → set viewport to 320px wide */
235
+ ```
236
+
237
+ #### 1.4.11 Non-text Contrast (Level AA)
238
+
239
+ UI components (button borders, input borders, focus indicators, checkbox outlines) and informational graphics must have at least 3:1 contrast against adjacent colours.
240
+
241
+ ```css
242
+ /* Good: visible input border against white background */
243
+ input {
244
+ border: 2px solid #767676; /* 4.6:1 against white — passes */
245
+ }
246
+
247
+ /* Bad: light grey border */
248
+ input {
249
+ border: 1px solid #d0d0d0; /* 1.6:1 — fails */
250
+ }
251
+ ```
252
+
253
+ #### 1.4.12 Text Spacing (Level AA)
254
+
255
+ When users override text spacing properties, no content or functionality must be lost. Test by applying:
256
+
257
+ - Line height (leading) to at least 1.5 times the font size
258
+ - Letter spacing to at least 0.12 times the font size
259
+ - Word spacing to at least 0.16 times the font size
260
+ - No paragraph spacing override limit
261
+
262
+ ```js
263
+ // Bookmarklet to test text spacing
264
+ javascript: (function () {
265
+ var s = document.body.style;
266
+ s.lineHeight = "1.5";
267
+ s.letterSpacing = "0.12em";
268
+ s.wordSpacing = "0.16em";
269
+ })();
270
+ ```
271
+
272
+ #### 1.4.13 Content on Hover or Focus (Level AA)
273
+
274
+ Additional content that appears on hover or focus (tooltips, sub-menus, popups) must be:
275
+
276
+ - **Dismissible** — user can close it without moving pointer/focus (usually Escape key)
277
+ - **Hoverable** — pointer can move over the additional content without it disappearing
278
+ - **Persistent** — content stays visible until user dismisses it or removes hover/focus
279
+
280
+ ---
281
+
282
+ ## Principle 2: Operable
283
+
284
+ UI components and navigation must be operable. Users cannot be locked out of controls.
285
+
286
+ ---
287
+
288
+ ### 2.1 Keyboard Accessible
289
+
290
+ #### 2.1.1 Keyboard (Level A)
291
+
292
+ All functionality must be operable through a keyboard interface. No exception for timing of keystrokes.
293
+
294
+ **Tab order checklist:**
295
+
296
+ - Every interactive element reachable by Tab
297
+ - Can activate buttons and links with Enter
298
+ - Can activate buttons with Space
299
+ - Can navigate radio groups, select lists with arrow keys
300
+ - Can dismiss modals with Escape
301
+ - Can operate custom widgets (date pickers, sliders) with keyboard
302
+
303
+ #### 2.1.2 No Keyboard Trap (Level A)
304
+
305
+ Keyboard focus must not be locked to a component (except intentional modal dialogs where focus trap is correct behaviour with a provided exit mechanism).
306
+
307
+ #### 2.1.4 Character Key Shortcuts (Level A)
308
+
309
+ If single-character key shortcuts exist, users must be able to turn them off or remap them. This prevents conflicts with screen reader single-key navigation.
310
+
311
+ ---
312
+
313
+ ### 2.4 Navigable
314
+
315
+ #### 2.4.1 Bypass Blocks (Level A)
316
+
317
+ Provide a mechanism to skip past repeated blocks of content (navigation, headers) to reach main content.
318
+
319
+ ```html
320
+ <!-- Skip link — visible on focus, hidden otherwise -->
321
+ <a href="#main-content" class="skip-link">Skip to main content</a>
322
+ <nav>...</nav>
323
+ <main id="main-content" tabindex="-1">...</main>
324
+ ```
325
+
326
+ ```css
327
+ .skip-link {
328
+ position: absolute;
329
+ top: -100%;
330
+ left: 0;
331
+ background: #000;
332
+ color: #fff;
333
+ padding: 0.5rem 1rem;
334
+ z-index: 9999;
335
+ text-decoration: none;
336
+ }
337
+ .skip-link:focus {
338
+ top: 0;
339
+ }
340
+ ```
341
+
342
+ #### 2.4.2 Page Titled (Level A)
343
+
344
+ Every page must have a `<title>` that describes the topic or purpose.
345
+
346
+ ```html
347
+ <!-- Good: specific, meaningful title -->
348
+ <title>Checkout — Step 2 of 3 — Acme Store</title>
349
+
350
+ <!-- Bad: generic -->
351
+ <title>Page</title>
352
+ <title>Untitled</title>
353
+ ```
354
+
355
+ SPAs: update `document.title` on every route change.
356
+
357
+ #### 2.4.3 Focus Order (Level A)
358
+
359
+ Focus order must preserve meaning and operability. Fix with DOM order, not CSS `order` or `tabindex > 0`.
360
+
361
+ **Rule:** Never use `tabindex` values greater than 0. Use `tabindex="0"` to make non-interactive elements focusable; use `tabindex="-1"` to make elements programmatically focusable without tab stop.
362
+
363
+ #### 2.4.4 Link Purpose (Level A)
364
+
365
+ The purpose of each link must be determinable from the link text alone, or from the link text together with surrounding context.
366
+
367
+ ```html
368
+ <!-- Bad: ambiguous link text -->
369
+ <a href="/plan-a">Read more</a>
370
+ <a href="/plan-b">Read more</a>
371
+
372
+ <!-- Good: descriptive -->
373
+ <a href="/plan-a">View Starter Plan details</a>
374
+ <a href="/plan-b">View Pro Plan details</a>
375
+
376
+ <!-- Good: visually short but with aria-label -->
377
+ <a href="/plan-a" aria-label="Read more about Starter Plan">Read more</a>
378
+ ```
379
+
380
+ #### 2.4.6 Headings and Labels (Level AA)
381
+
382
+ Headings describe the topic or purpose of the section. Labels describe the purpose of form controls. Both must be descriptive, not vague ("Section 1", "Field 1").
383
+
384
+ #### 2.4.7 Focus Visible (Level AA)
385
+
386
+ Keyboard focus indicator must be visible. Do not suppress `outline` without providing a replacement.
387
+
388
+ ```css
389
+ /* Minimum: browser default (usually an outline) */
390
+ /* Better: custom focus style with sufficient contrast */
391
+ :focus-visible {
392
+ outline: 3px solid #005fcc;
393
+ outline-offset: 3px;
394
+ border-radius: 2px;
395
+ }
396
+ ```
397
+
398
+ #### 2.4.11 Focus Not Obscured (Minimum) — Level AA (NEW in 2.2)
399
+
400
+ When a component receives keyboard focus, it must not be entirely hidden by author-created content (sticky headers, cookie banners, chat widgets).
401
+
402
+ ```css
403
+ /* Fix: add scroll-margin-top equal to sticky header height */
404
+ [id] {
405
+ scroll-margin-top: 80px; /* height of sticky header */
406
+ }
407
+
408
+ /* Or: use scroll-padding-top on the scroll container */
409
+ html {
410
+ scroll-padding-top: 80px;
411
+ }
412
+ ```
413
+
414
+ #### 2.4.12 Focus Not Obscured (Enhanced) — Level AAA (NEW in 2.2)
415
+
416
+ No part of the focused component is hidden. (AA only requires it's not fully hidden.)
417
+
418
+ #### 2.5.3 Label in Name (Level A)
419
+
420
+ For UI components with visible text labels, the accessible name must contain the visible text.
421
+
422
+ ```html
423
+ <!-- Bad: aria-label overrides visible text, creating mismatch -->
424
+ <button aria-label="Submit form data">Send</button>
425
+
426
+ <!-- Good: accessible name starts with visible text -->
427
+ <button aria-label="Send message">Send</button>
428
+ <!-- Or better: just match exactly -->
429
+ <button>Send</button>
430
+ ```
431
+
432
+ #### 2.5.8 Target Size (Minimum) — Level AA (NEW in 2.2)
433
+
434
+ Interactive targets must be at least 24×24 CSS pixels, OR have at least 24px of spacing between adjacent targets.
435
+
436
+ ```css
437
+ /* Ensure minimum touch target size */
438
+ button,
439
+ a,
440
+ input[type="checkbox"] + label {
441
+ min-height: 24px;
442
+ min-width: 24px;
443
+ }
444
+
445
+ /* Better (WCAG 2.5.5 AAA): 44×44px for comfortable touch targets */
446
+ .touch-target {
447
+ min-height: 44px;
448
+ min-width: 44px;
449
+ }
450
+ ```
451
+
452
+ ---
453
+
454
+ ## Principle 3: Understandable
455
+
456
+ Information and the operation of the UI must be understandable.
457
+
458
+ ---
459
+
460
+ ### 3.1 Readable
461
+
462
+ #### 3.1.1 Language of Page (Level A)
463
+
464
+ ```html
465
+ <html lang="en">
466
+ <!-- or lang="fr", lang="de", etc. -->
467
+ </html>
468
+ ```
469
+
470
+ Use BCP 47 language codes. This enables screen readers to use the correct pronunciation engine.
471
+
472
+ #### 3.1.2 Language of Parts (Level AA)
473
+
474
+ When content in a different language appears inline, mark it:
475
+
476
+ ```html
477
+ <p>The French word <span lang="fr">bonjour</span> means hello.</p>
478
+ ```
479
+
480
+ ---
481
+
482
+ ### 3.2 Predictable
483
+
484
+ #### 3.2.1 On Focus (Level A)
485
+
486
+ Receiving focus must not trigger an automatic context change (form submission, page navigation, opening a new window).
487
+
488
+ #### 3.2.2 On Input (Level A)
489
+
490
+ Changing the value of a form control must not automatically cause a context change unless the user has been warned in advance.
491
+
492
+ ```html
493
+ <!-- Bad: submits on selection without warning -->
494
+ <select onchange="this.form.submit()">
495
+ ...
496
+ </select>
497
+
498
+ <!-- Good: requires explicit submit action -->
499
+ <select>
500
+ ...
501
+ </select>
502
+ <button type="submit">Apply filter</button>
503
+ ```
504
+
505
+ #### 3.2.3 Consistent Navigation (Level AA)
506
+
507
+ Navigation mechanisms in the same relative order on each page where repeated.
508
+
509
+ #### 3.2.4 Consistent Identification (Level AA)
510
+
511
+ Components with the same functionality have consistent identification across pages.
512
+
513
+ ---
514
+
515
+ ### 3.3 Input Assistance
516
+
517
+ #### 3.3.1 Error Identification (Level A)
518
+
519
+ If an input error is detected, the item in error must be identified and the error described in text.
520
+
521
+ ```html
522
+ <div role="alert" id="form-errors">
523
+ Please correct the following errors:
524
+ <ul>
525
+ <li><a href="#email">Email: Enter a valid email address</a></li>
526
+ </ul>
527
+ </div>
528
+
529
+ <label for="email">Email</label>
530
+ <input
531
+ type="email"
532
+ id="email"
533
+ aria-invalid="true"
534
+ aria-describedby="email-error"
535
+ />
536
+ <span id="email-error" role="alert"
537
+ >Enter a valid email address (e.g. you@example.com)</span
538
+ >
539
+ ```
540
+
541
+ #### 3.3.2 Labels or Instructions (Level A)
542
+
543
+ Form inputs have labels. Where format is required, provide instructions before the input.
544
+
545
+ ```html
546
+ <!-- Provide format hint for date -->
547
+ <label for="dob">Date of birth</label>
548
+ <span id="dob-hint" class="hint">Format: MM/DD/YYYY</span>
549
+ <input
550
+ type="text"
551
+ id="dob"
552
+ aria-describedby="dob-hint"
553
+ placeholder="MM/DD/YYYY"
554
+ />
555
+ ```
556
+
557
+ #### 3.3.3 Error Suggestion (Level AA)
558
+
559
+ When input errors are detected and suggestions are known, provide the suggestion.
560
+
561
+ "You entered: john@example — did you mean john@example.com?"
562
+
563
+ #### 3.3.4 Error Prevention (Legal, Financial, Data) — Level AA
564
+
565
+ For pages causing legal commitments or financial transactions: submissions are reversible, data is checked for errors, and user can review/confirm before final submission.
566
+
567
+ #### 3.3.7 Redundant Entry (Level A) — NEW in 2.2
568
+
569
+ Information previously entered in the same session must be auto-populated or available to select; users must not be required to re-enter it.
570
+
571
+ #### 3.3.8 Accessible Authentication (Minimum) — Level AA (NEW in 2.2)
572
+
573
+ Authentication must not require a cognitive function test (CAPTCHA, puzzle, remembering) unless:
574
+
575
+ - An alternative is provided (audio CAPTCHA, email link)
576
+ - Users can use a password manager (allow paste into password fields — never `onpaste="return false"`)
577
+ - Object recognition (pick the traffic lights) is provided as alternative to transcription
578
+
579
+ ```html
580
+ <!-- Good: allow paste — never block it -->
581
+ <input type="password" id="password" autocomplete="current-password" />
582
+ <!-- Do NOT add: onpaste="return false" -->
583
+ ```
584
+
585
+ ---
586
+
587
+ ## Principle 4: Robust
588
+
589
+ Content must be robust enough to be interpreted by a wide variety of user agents, including current and future assistive technologies.
590
+
591
+ ---
592
+
593
+ ### 4.1 Compatible
594
+
595
+ #### 4.1.2 Name, Role, Value (Level A)
596
+
597
+ All UI components must have:
598
+
599
+ - **Name**: accessible name (label, aria-label, aria-labelledby)
600
+ - **Role**: native HTML role or ARIA role
601
+ - **State/Value**: current value, state (expanded, checked, selected, invalid)
602
+
603
+ ```html
604
+ <!-- Custom toggle switch with full name/role/value -->
605
+ <button
606
+ role="switch"
607
+ aria-checked="false"
608
+ aria-label="Enable email notifications"
609
+ id="notif-toggle"
610
+ >
611
+ <span class="thumb"></span>
612
+ </button>
613
+
614
+ <!-- On toggle: update aria-checked="true" -->
615
+ ```
616
+
617
+ #### 4.1.3 Status Messages (Level AA)
618
+
619
+ Status messages (success confirmations, loading indicators, error summaries) must be programmatically determinable without receiving focus, using `aria-live` regions or appropriate roles.
620
+
621
+ ```html
622
+ <!-- Loading state -->
623
+ <div aria-live="polite" aria-atomic="true" id="status">
624
+ <!-- Injected by JS: "Saving your changes..." then "Changes saved." -->
625
+ </div>
626
+
627
+ <!-- Error summary (focused, not live) — move focus to it -->
628
+ <div role="alert" tabindex="-1" id="error-summary">
629
+ 3 errors found. Please correct them below.
630
+ </div>
631
+
632
+ <!-- Toast / notification -->
633
+ <div role="status" aria-live="polite">Your profile has been updated.</div>
634
+ ```
635
+
636
+ **`aria-live` values:**
637
+
638
+ - `polite` — announces after current speech finishes (most status messages)
639
+ - `assertive` — interrupts immediately (critical errors only; use sparingly)
640
+ - `off` — no announcements
641
+
642
+ **Common roles:**
643
+
644
+ - `role="alert"` — assertive live region (errors)
645
+ - `role="status"` — polite live region (confirmations, progress)
646
+ - `role="log"` — polite, cumulative (chat history, activity feed)
647
+ - `role="timer"` — polite, time-based (countdown)
648
+
649
+ ---
650
+
651
+ ## WCAG 2.2 What's New (vs. 2.1)
652
+
653
+ | Criterion | Level | Summary |
654
+ | ------------------------------------------ | ----- | --------------------------------------------------- |
655
+ | 2.4.11 Focus Not Obscured (Minimum) | AA | Focused element not fully hidden by sticky content |
656
+ | 2.4.12 Focus Not Obscured (Enhanced) | AAA | Focused element not partially hidden |
657
+ | 2.4.13 Focus Appearance | AAA | Stricter focus indicator size/contrast |
658
+ | 2.5.7 Dragging Movements | AA | Drag operations have single-pointer alternative |
659
+ | 2.5.8 Target Size (Minimum) | AA | 24×24px minimum touch targets |
660
+ | 3.2.6 Consistent Help | A | Help mechanisms in consistent location |
661
+ | 3.3.7 Redundant Entry | A | Don't re-ask for info already provided this session |
662
+ | 3.3.8 Accessible Authentication (Minimum) | AA | No cognitive function test for auth |
663
+ | 3.3.9 Accessible Authentication (Enhanced) | AAA | No object recognition tests |
664
+
665
+ **Removed from 2.2:** 4.1.1 Parsing (previously Level A) — browsers now handle malformed HTML consistently, making this criterion obsolete.
666
+
667
+ ---
668
+
669
+ ## Quick reference: conformance levels
670
+
671
+ | Level | Criteria count | Who needs it |
672
+ | -------------- | -------------- | ------------------------------------------------------------ |
673
+ | A (minimum) | 30 criteria | Everyone — A failures are blockers |
674
+ | AA (standard) | 20 additional | ADA, Section 508, EN 301 549, most legal requirements |
675
+ | AAA (enhanced) | 28 additional | Government, healthcare, education — implement where feasible |
676
+
677
+ **Legal baselines by jurisdiction:**
678
+
679
+ - United States (ADA Title III, Section 508): WCAG 2.1 AA (courts increasingly applying 2.2)
680
+ - European Union (EN 301 549): WCAG 2.1 AA (being updated to 2.2)
681
+ - United Kingdom (Equality Act, public sector): WCAG 2.2 AA
682
+ - Canada (ACA, AODA): WCAG 2.0 AA minimum, 2.1/2.2 recommended
683
+ - Australia (DDA): WCAG 2.1 AA