agileflow 3.4.3 → 4.0.0-alpha.10
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.
- package/CHANGELOG.md +294 -478
- package/README.md +22 -114
- package/bin/agileflow.js +15 -0
- package/bin/hooks/pre-bash.js +35 -0
- package/bin/hooks/pre-compact.js +34 -0
- package/bin/hooks/pre-edit.js +32 -0
- package/bin/hooks/pre-write.js +32 -0
- package/bin/hooks/session-start.js +42 -0
- package/bin/hooks/stop.js +34 -0
- package/content/plugins/accessibility/plugin.yaml +14 -0
- package/content/plugins/accessibility/skills/agileflow-accessibility/SKILL.md +392 -0
- package/content/plugins/accessibility/skills/agileflow-accessibility/references/aria-patterns.md +528 -0
- package/content/plugins/accessibility/skills/agileflow-accessibility/references/testing-checklist.md +457 -0
- package/content/plugins/accessibility/skills/agileflow-accessibility/references/wcag-guide.md +683 -0
- package/content/plugins/accessibility/skills/agileflow-accessibility/workflows/audit-page.md +310 -0
- package/content/plugins/accessibility/skills/agileflow-accessibility/workflows/implement-accessible-component.md +479 -0
- package/content/plugins/ads/agents/ads-audit-budget.md +185 -0
- package/content/plugins/ads/agents/ads-audit-compliance.md +171 -0
- package/content/plugins/ads/agents/ads-audit-creative.md +168 -0
- package/content/plugins/ads/agents/ads-audit-google.md +227 -0
- package/content/plugins/ads/agents/ads-audit-meta.md +184 -0
- package/content/plugins/ads/agents/ads-audit-tracking.md +205 -0
- package/content/plugins/ads/agents/ads-consensus.md +410 -0
- package/content/plugins/ads/agents/ads-generate.md +152 -0
- package/content/plugins/ads/agents/ads-performance-tracker.md +212 -0
- package/content/plugins/ads/plugin.yaml +33 -0
- package/content/plugins/ads/skills/agileflow-ads/SKILL.md +218 -0
- package/content/plugins/ads/skills/agileflow-ads/references/ad-copy-formula-guide.md +131 -0
- package/content/plugins/ads/skills/agileflow-ads/references/audience-targeting-guide.md +137 -0
- package/content/plugins/ads/skills/agileflow-ads/references/bid-strategy-guide.md +115 -0
- package/content/plugins/ads/skills/agileflow-ads/references/platform-benchmarks.md +100 -0
- package/content/plugins/ads/skills/agileflow-ads/workflows/audit.md +118 -0
- package/content/plugins/ads/skills/agileflow-ads/workflows/generate.md +84 -0
- package/content/plugins/audit/agents/a11y-analyzer-aria.md +173 -0
- package/content/plugins/audit/agents/a11y-analyzer-forms.md +173 -0
- package/content/plugins/audit/agents/a11y-analyzer-keyboard.md +183 -0
- package/content/plugins/audit/agents/a11y-analyzer-semantic.md +169 -0
- package/content/plugins/audit/agents/a11y-analyzer-visual.md +172 -0
- package/content/plugins/audit/agents/a11y-consensus.md +249 -0
- package/content/plugins/audit/agents/accessibility.md +558 -0
- package/content/plugins/audit/agents/api-quality-analyzer-conventions.md +156 -0
- package/content/plugins/audit/agents/api-quality-analyzer-docs.md +184 -0
- package/content/plugins/audit/agents/api-quality-analyzer-errors.md +191 -0
- package/content/plugins/audit/agents/api-quality-analyzer-pagination.md +179 -0
- package/content/plugins/audit/agents/api-quality-analyzer-versioning.md +150 -0
- package/content/plugins/audit/agents/api-quality-consensus.md +217 -0
- package/content/plugins/audit/agents/api-validator.md +191 -0
- package/content/plugins/audit/agents/arch-analyzer-circular.md +156 -0
- package/content/plugins/audit/agents/arch-analyzer-complexity.md +193 -0
- package/content/plugins/audit/agents/arch-analyzer-coupling.md +152 -0
- package/content/plugins/audit/agents/arch-analyzer-layering.md +160 -0
- package/content/plugins/audit/agents/arch-analyzer-patterns.md +210 -0
- package/content/plugins/audit/agents/arch-consensus.md +228 -0
- package/content/plugins/audit/agents/browser-qa.md +342 -0
- package/content/plugins/audit/agents/code-reviewer.md +298 -0
- package/content/plugins/audit/agents/completeness-analyzer-api.md +199 -0
- package/content/plugins/audit/agents/completeness-analyzer-conditional.md +211 -0
- package/content/plugins/audit/agents/completeness-analyzer-handlers.md +166 -0
- package/content/plugins/audit/agents/completeness-analyzer-imports.md +165 -0
- package/content/plugins/audit/agents/completeness-analyzer-routes.md +190 -0
- package/content/plugins/audit/agents/completeness-analyzer-state.md +196 -0
- package/content/plugins/audit/agents/completeness-analyzer-stubs.md +206 -0
- package/content/plugins/audit/agents/completeness-consensus.md +295 -0
- package/content/plugins/audit/agents/error-analyzer.md +213 -0
- package/content/plugins/audit/agents/flow-analyzer-authorization.md +182 -0
- package/content/plugins/audit/agents/flow-analyzer-discovery.md +174 -0
- package/content/plugins/audit/agents/flow-analyzer-errors.md +186 -0
- package/content/plugins/audit/agents/flow-analyzer-feedback.md +185 -0
- package/content/plugins/audit/agents/flow-analyzer-navigation.md +177 -0
- package/content/plugins/audit/agents/flow-analyzer-persistence.md +193 -0
- package/content/plugins/audit/agents/flow-analyzer-wiring.md +169 -0
- package/content/plugins/audit/agents/flow-consensus.md +237 -0
- package/content/plugins/audit/agents/legal-analyzer-a11y.md +114 -0
- package/content/plugins/audit/agents/legal-analyzer-ai.md +121 -0
- package/content/plugins/audit/agents/legal-analyzer-consumer.md +114 -0
- package/content/plugins/audit/agents/legal-analyzer-content.md +117 -0
- package/content/plugins/audit/agents/legal-analyzer-international.md +119 -0
- package/content/plugins/audit/agents/legal-analyzer-licensing.md +119 -0
- package/content/plugins/audit/agents/legal-analyzer-privacy.md +112 -0
- package/content/plugins/audit/agents/legal-analyzer-security.md +116 -0
- package/content/plugins/audit/agents/legal-analyzer-terms.md +115 -0
- package/content/plugins/audit/agents/legal-consensus.md +250 -0
- package/content/plugins/audit/agents/logic-analyzer-edge.md +179 -0
- package/content/plugins/audit/agents/logic-analyzer-flow.md +264 -0
- package/content/plugins/audit/agents/logic-analyzer-invariant.md +215 -0
- package/content/plugins/audit/agents/logic-analyzer-race.md +280 -0
- package/content/plugins/audit/agents/logic-analyzer-type.md +227 -0
- package/content/plugins/audit/agents/logic-consensus.md +259 -0
- package/content/plugins/audit/agents/perf-analyzer-assets.md +182 -0
- package/content/plugins/audit/agents/perf-analyzer-bundle.md +173 -0
- package/content/plugins/audit/agents/perf-analyzer-caching.md +170 -0
- package/content/plugins/audit/agents/perf-analyzer-compute.md +173 -0
- package/content/plugins/audit/agents/perf-analyzer-memory.md +193 -0
- package/content/plugins/audit/agents/perf-analyzer-network.md +165 -0
- package/content/plugins/audit/agents/perf-analyzer-queries.md +162 -0
- package/content/plugins/audit/agents/perf-analyzer-rendering.md +168 -0
- package/content/plugins/audit/agents/perf-consensus.md +287 -0
- package/content/plugins/audit/agents/qa.md +820 -0
- package/content/plugins/audit/agents/quality-analyzer-comments.md +159 -0
- package/content/plugins/audit/agents/quality-analyzer-duplication.md +184 -0
- package/content/plugins/audit/agents/quality-analyzer-naming.md +160 -0
- package/content/plugins/audit/agents/quality-consensus.md +241 -0
- package/content/plugins/audit/agents/schema-validator.md +473 -0
- package/content/plugins/audit/agents/security-analyzer-api.md +210 -0
- package/content/plugins/audit/agents/security-analyzer-auth.md +169 -0
- package/content/plugins/audit/agents/security-analyzer-authz.md +180 -0
- package/content/plugins/audit/agents/security-analyzer-deps.md +153 -0
- package/content/plugins/audit/agents/security-analyzer-infra.md +184 -0
- package/content/plugins/audit/agents/security-analyzer-injection.md +155 -0
- package/content/plugins/audit/agents/security-analyzer-input.md +201 -0
- package/content/plugins/audit/agents/security-analyzer-secrets.md +183 -0
- package/content/plugins/audit/agents/security-consensus.md +283 -0
- package/content/plugins/audit/agents/test-analyzer-assertions.md +188 -0
- package/content/plugins/audit/agents/test-analyzer-coverage.md +189 -0
- package/content/plugins/audit/agents/test-analyzer-fragility.md +193 -0
- package/content/plugins/audit/agents/test-analyzer-integration.md +161 -0
- package/content/plugins/audit/agents/test-analyzer-maintenance.md +180 -0
- package/content/plugins/audit/agents/test-analyzer-mocking.md +188 -0
- package/content/plugins/audit/agents/test-analyzer-patterns.md +196 -0
- package/content/plugins/audit/agents/test-analyzer-structure.md +184 -0
- package/content/plugins/audit/agents/test-consensus.md +301 -0
- package/content/plugins/audit/agents/testing.md +561 -0
- package/content/plugins/audit/agents/ui-validator.md +344 -0
- package/content/plugins/audit/plugin.yaml +195 -0
- package/content/plugins/audit/skills/agileflow-audit/SKILL.md +113 -0
- package/content/plugins/audit/skills/agileflow-audit/references/audit-depth-guide.md +151 -0
- package/content/plugins/audit/skills/agileflow-audit/references/dependency-risk-guide.md +139 -0
- package/content/plugins/audit/skills/agileflow-audit/references/owasp-top10.md +120 -0
- package/content/plugins/audit/skills/agileflow-audit/references/performance-budget-guide.md +143 -0
- package/content/plugins/audit/skills/agileflow-audit/references/wcag-criteria.md +117 -0
- package/content/plugins/audit/skills/agileflow-audit/workflows/run-audit.md +52 -0
- package/content/plugins/audit/skills/agileflow-audit/workflows/tdd.md +66 -0
- package/content/plugins/core/agents/adr-writer.md +521 -0
- package/content/plugins/core/agents/epic-planner.md +520 -0
- package/content/plugins/core/agents/mentor.md +709 -0
- package/content/plugins/core/agents/orchestrator.md +776 -0
- package/content/plugins/core/agents/team-coordinator.md +334 -0
- package/content/plugins/core/agents/team-lead.md +181 -0
- package/content/plugins/core/agents/workspace-orchestrator.md +146 -0
- package/content/plugins/core/hooks/context-loader.js +196 -0
- package/content/plugins/core/hooks/damage-control-bash.js +86 -0
- package/content/plugins/core/hooks/damage-control-edit.js +79 -0
- package/content/plugins/core/hooks/damage-control-patterns.yaml +100 -0
- package/content/plugins/core/hooks/damage-control-write.js +75 -0
- package/content/plugins/core/hooks/post-compact-state.js +107 -0
- package/content/plugins/core/hooks/preferences-injector.js +352 -0
- package/content/plugins/core/hooks/session-welcome.js +19 -0
- package/content/plugins/core/plugin.yaml +78 -0
- package/content/plugins/core/skills/agileflow-adr/SKILL.md +205 -0
- package/content/plugins/core/skills/agileflow-adr/references/madr-format-guide.md +86 -0
- package/content/plugins/core/skills/agileflow-adr/workflows/write-adr.md +57 -0
- package/content/plugins/core/skills/agileflow-babysit-mentor/SKILL.md +211 -0
- package/content/plugins/core/skills/agileflow-babysit-mentor/references/mentor-decision-guide.md +81 -0
- package/content/plugins/core/skills/agileflow-babysit-mentor/workflows/mentor-session.md +79 -0
- package/content/plugins/core/skills/agileflow-epic-planner/SKILL.md +209 -0
- package/content/plugins/core/skills/agileflow-epic-planner/references/epic-sizing-guide.md +81 -0
- package/content/plugins/core/skills/agileflow-epic-planner/workflows/plan-epic.md +55 -0
- package/content/plugins/core/skills/agileflow-status-updater/SKILL.md +148 -0
- package/content/plugins/core/skills/agileflow-status-updater/references/status-transitions.md +89 -0
- package/content/plugins/core/skills/agileflow-status-updater/workflows/update-status.md +56 -0
- package/content/plugins/core/skills/agileflow-story-writer/SKILL.md +125 -0
- package/content/plugins/core/skills/agileflow-story-writer/references/estimation-reference.md +36 -0
- package/content/plugins/core/skills/agileflow-story-writer/references/story-template.md +92 -0
- package/content/plugins/core/skills/agileflow-story-writer/workflows/write-story.md +138 -0
- package/content/plugins/council/agents/council-advocate.md +223 -0
- package/content/plugins/council/agents/council-analyst.md +278 -0
- package/content/plugins/council/agents/council-compounder.md +204 -0
- package/content/plugins/council/agents/council-contrarian.md +217 -0
- package/content/plugins/council/agents/council-moonshot.md +217 -0
- package/content/plugins/council/agents/council-optimist.md +185 -0
- package/content/plugins/council/agents/council-revenue.md +200 -0
- package/content/plugins/council/agents/council-technical.md +218 -0
- package/content/plugins/council/agents/multi-expert.md +334 -0
- package/content/plugins/council/plugin.yaml +33 -0
- package/content/plugins/council/skills/agileflow-council/SKILL.md +102 -0
- package/content/plugins/council/skills/agileflow-council/references/decision-log-template.md +109 -0
- package/content/plugins/council/skills/agileflow-council/references/perspective-guide.md +104 -0
- package/content/plugins/council/skills/agileflow-council/references/when-to-convene-guide.md +112 -0
- package/content/plugins/council/skills/agileflow-council/workflows/convene.md +73 -0
- package/content/plugins/council/skills/agileflow-council/workflows/multi-expert.md +75 -0
- package/content/plugins/database/plugin.yaml +14 -0
- package/content/plugins/database/skills/agileflow-database/SKILL.md +284 -0
- package/content/plugins/database/skills/agileflow-database/references/indexing-guide.md +313 -0
- package/content/plugins/database/skills/agileflow-database/references/migration-guide.md +328 -0
- package/content/plugins/database/skills/agileflow-database/references/schema-design-guide.md +467 -0
- package/content/plugins/database/skills/agileflow-database/workflows/design-schema.md +213 -0
- package/content/plugins/database/skills/agileflow-database/workflows/optimize-query.md +253 -0
- package/content/plugins/debugging/plugin.yaml +14 -0
- package/content/plugins/debugging/skills/agileflow-debug/SKILL.md +236 -0
- package/content/plugins/debugging/skills/agileflow-debug/references/common-patterns.md +350 -0
- package/content/plugins/debugging/skills/agileflow-debug/references/debugging-strategies.md +328 -0
- package/content/plugins/debugging/skills/agileflow-debug/workflows/debug-issue.md +187 -0
- package/content/plugins/debugging/skills/agileflow-debug/workflows/reproduce-bug.md +194 -0
- package/content/plugins/delivery/agents/ci.md +547 -0
- package/content/plugins/delivery/agents/devops.md +789 -0
- package/content/plugins/delivery/plugin.yaml +19 -0
- package/content/plugins/delivery/skills/agileflow-delivery/SKILL.md +111 -0
- package/content/plugins/delivery/skills/agileflow-delivery/references/changelog-format-guide.md +133 -0
- package/content/plugins/delivery/skills/agileflow-delivery/references/ci-pipeline-guide.md +158 -0
- package/content/plugins/delivery/skills/agileflow-delivery/references/pr-checklist-guide.md +133 -0
- package/content/plugins/delivery/skills/agileflow-delivery/references/release-checklist.md +142 -0
- package/content/plugins/delivery/skills/agileflow-delivery/workflows/changelog.md +72 -0
- package/content/plugins/delivery/skills/agileflow-delivery/workflows/deploy.md +74 -0
- package/content/plugins/delivery/skills/agileflow-delivery/workflows/pr.md +75 -0
- package/content/plugins/docs/agents/documentation.md +544 -0
- package/content/plugins/docs/agents/readme-updater.md +640 -0
- package/content/plugins/docs/plugin.yaml +19 -0
- package/content/plugins/docs/skills/agileflow-docs/SKILL.md +106 -0
- package/content/plugins/docs/skills/agileflow-docs/references/api-doc-template.md +167 -0
- package/content/plugins/docs/skills/agileflow-docs/references/doc-types-guide.md +141 -0
- package/content/plugins/docs/skills/agileflow-docs/references/readme-template.md +156 -0
- package/content/plugins/docs/skills/agileflow-docs/workflows/readme-sync.md +57 -0
- package/content/plugins/docs/skills/agileflow-docs/workflows/sync.md +64 -0
- package/content/plugins/engineering/agents/api.md +718 -0
- package/content/plugins/engineering/agents/codebase-query.md +285 -0
- package/content/plugins/engineering/agents/compliance.md +559 -0
- package/content/plugins/engineering/agents/database.md +644 -0
- package/content/plugins/engineering/agents/integrations.md +644 -0
- package/content/plugins/engineering/agents/mobile.md +552 -0
- package/content/plugins/engineering/agents/monitoring.md +585 -0
- package/content/plugins/engineering/agents/performance.md +529 -0
- package/content/plugins/engineering/agents/refactor.md +592 -0
- package/content/plugins/engineering/agents/security.md +524 -0
- package/content/plugins/engineering/agents/ui.md +1336 -0
- package/content/plugins/engineering/plugin.yaml +37 -0
- package/content/plugins/engineering/skills/agileflow-engineering/SKILL.md +127 -0
- package/content/plugins/engineering/skills/agileflow-engineering/references/code-review-guide.md +126 -0
- package/content/plugins/engineering/skills/agileflow-engineering/references/domain-routing-guide.md +89 -0
- package/content/plugins/engineering/skills/agileflow-engineering/references/refactoring-guide.md +136 -0
- package/content/plugins/engineering/skills/agileflow-engineering/workflows/diagnose.md +63 -0
- package/content/plugins/engineering/skills/agileflow-engineering/workflows/impact.md +60 -0
- package/content/plugins/ideation/agents/brainstorm-analyzer-features.md +179 -0
- package/content/plugins/ideation/agents/brainstorm-analyzer-growth.md +169 -0
- package/content/plugins/ideation/agents/brainstorm-analyzer-integration.md +181 -0
- package/content/plugins/ideation/agents/brainstorm-analyzer-market.md +150 -0
- package/content/plugins/ideation/agents/brainstorm-analyzer-ux.md +180 -0
- package/content/plugins/ideation/agents/brainstorm-consensus.md +245 -0
- package/content/plugins/ideation/agents/design.md +568 -0
- package/content/plugins/ideation/agents/product.md +582 -0
- package/content/plugins/ideation/plugin.yaml +31 -0
- package/content/plugins/ideation/skills/agileflow-ideation/SKILL.md +109 -0
- package/content/plugins/ideation/skills/agileflow-ideation/references/brainstorm-techniques.md +138 -0
- package/content/plugins/ideation/skills/agileflow-ideation/references/competitive-analysis-template.md +148 -0
- package/content/plugins/ideation/skills/agileflow-ideation/references/feature-prioritization-guide.md +147 -0
- package/content/plugins/ideation/skills/agileflow-ideation/references/user-story-patterns.md +152 -0
- package/content/plugins/ideation/skills/agileflow-ideation/workflows/features.md +65 -0
- package/content/plugins/ideation/skills/agileflow-ideation/workflows/ideate.md +54 -0
- package/content/plugins/migration/agents/datamigration.md +757 -0
- package/content/plugins/migration/plugin.yaml +17 -0
- package/content/plugins/migration/skills/agileflow-migration/SKILL.md +106 -0
- package/content/plugins/migration/skills/agileflow-migration/references/data-validation-checklist.md +154 -0
- package/content/plugins/migration/skills/agileflow-migration/references/migration-patterns.md +209 -0
- package/content/plugins/migration/skills/agileflow-migration/references/rollback-playbook.md +171 -0
- package/content/plugins/migration/skills/agileflow-migration/references/version-compatibility-matrix.md +155 -0
- package/content/plugins/migration/skills/agileflow-migration/workflows/plan.md +73 -0
- package/content/plugins/migration/skills/agileflow-migration/workflows/validate.md +71 -0
- package/content/plugins/performance/plugin.yaml +14 -0
- package/content/plugins/performance/skills/agileflow-performance/SKILL.md +224 -0
- package/content/plugins/performance/skills/agileflow-performance/references/optimization-patterns.md +554 -0
- package/content/plugins/performance/skills/agileflow-performance/references/profiling-guide.md +383 -0
- package/content/plugins/performance/skills/agileflow-performance/references/web-vitals-guide.md +360 -0
- package/content/plugins/performance/skills/agileflow-performance/workflows/improve-web-vitals.md +344 -0
- package/content/plugins/performance/skills/agileflow-performance/workflows/profile-and-fix.md +254 -0
- package/content/plugins/planning/agents/analytics.md +670 -0
- package/content/plugins/planning/agents/rlm-subcore.md +215 -0
- package/content/plugins/planning/plugin.yaml +19 -0
- package/content/plugins/planning/skills/agileflow-planning/SKILL.md +111 -0
- package/content/plugins/planning/skills/agileflow-planning/references/estimation-guide.md +114 -0
- package/content/plugins/planning/skills/agileflow-planning/references/rpi-workflow.md +119 -0
- package/content/plugins/planning/skills/agileflow-planning/references/sprint-planning-guide.md +145 -0
- package/content/plugins/planning/skills/agileflow-planning/workflows/impact.md +63 -0
- package/content/plugins/planning/skills/agileflow-planning/workflows/rpi.md +104 -0
- package/content/plugins/psychology/plugin.yaml +14 -0
- package/content/plugins/psychology/skills/agileflow-retention/SKILL.md +252 -0
- package/content/plugins/psychology/skills/agileflow-retention/references/competitor-analysis.md +240 -0
- package/content/plugins/psychology/skills/agileflow-retention/references/psychology-models.md +349 -0
- package/content/plugins/psychology/skills/agileflow-retention/references/retention-patterns.md +279 -0
- package/content/plugins/psychology/skills/agileflow-retention/workflows/design-retention-feature.md +287 -0
- package/content/plugins/psychology/skills/agileflow-retention/workflows/retention-audit.md +259 -0
- package/content/plugins/refactoring/plugin.yaml +14 -0
- package/content/plugins/refactoring/skills/agileflow-refactor/SKILL.md +235 -0
- package/content/plugins/refactoring/skills/agileflow-refactor/references/refactoring-patterns.md +405 -0
- package/content/plugins/refactoring/skills/agileflow-refactor/references/safety-checks.md +177 -0
- package/content/plugins/refactoring/skills/agileflow-refactor/workflows/extract-module.md +226 -0
- package/content/plugins/refactoring/skills/agileflow-refactor/workflows/safe-refactor.md +169 -0
- package/content/plugins/research/agents/research.md +503 -0
- package/content/plugins/research/plugin.yaml +17 -0
- package/content/plugins/research/skills/agileflow-research/SKILL.md +110 -0
- package/content/plugins/research/skills/agileflow-research/references/knowledge-decay-guide.md +121 -0
- package/content/plugins/research/skills/agileflow-research/references/research-prompt-guide.md +141 -0
- package/content/plugins/research/skills/agileflow-research/references/synthesis-template.md +154 -0
- package/content/plugins/research/skills/agileflow-research/workflows/analyze.md +60 -0
- package/content/plugins/research/skills/agileflow-research/workflows/ask.md +64 -0
- package/content/plugins/research/skills/agileflow-research/workflows/import.md +66 -0
- package/content/plugins/research/skills/agileflow-research/workflows/synthesize.md +66 -0
- package/content/plugins/reviews/plugin.yaml +14 -0
- package/content/plugins/reviews/skills/agileflow-pr-reviewer/SKILL.md +241 -0
- package/content/plugins/reviews/skills/agileflow-pr-reviewer/references/review-checklist.md +200 -0
- package/content/plugins/reviews/skills/agileflow-pr-reviewer/references/security-patterns.md +328 -0
- package/content/plugins/reviews/skills/agileflow-pr-reviewer/workflows/review-pr.md +153 -0
- package/content/plugins/reviews/skills/agileflow-pr-reviewer/workflows/security-review.md +177 -0
- package/content/plugins/seo/agents/seo-analyzer-content.md +169 -0
- package/content/plugins/seo/agents/seo-analyzer-images.md +198 -0
- package/content/plugins/seo/agents/seo-analyzer-performance.md +217 -0
- package/content/plugins/seo/agents/seo-analyzer-schema.md +184 -0
- package/content/plugins/seo/agents/seo-analyzer-sitemap.md +177 -0
- package/content/plugins/seo/agents/seo-analyzer-technical.md +151 -0
- package/content/plugins/seo/agents/seo-consensus.md +304 -0
- package/content/plugins/seo/plugin.yaml +29 -0
- package/content/plugins/seo/skills/agileflow-seo/SKILL.md +188 -0
- package/content/plugins/seo/skills/agileflow-seo/references/cwv-thresholds.md +110 -0
- package/content/plugins/seo/skills/agileflow-seo/references/eeat-framework.md +144 -0
- package/content/plugins/seo/skills/agileflow-seo/references/keyword-research-guide.md +125 -0
- package/content/plugins/seo/skills/agileflow-seo/references/schema-types.md +139 -0
- package/content/plugins/seo/skills/agileflow-seo/references/technical-seo-checklist.md +139 -0
- package/content/plugins/seo/skills/agileflow-seo/workflows/audit.md +98 -0
- package/content/plugins/seo/skills/agileflow-seo/workflows/page.md +118 -0
- package/content/plugins/testing/plugin.yaml +16 -0
- package/content/plugins/testing/skills/agileflow-test-writer/SKILL.md +260 -0
- package/content/plugins/testing/skills/agileflow-test-writer/references/coverage-targets.md +239 -0
- package/content/plugins/testing/skills/agileflow-test-writer/references/test-patterns.md +420 -0
- package/content/plugins/testing/skills/agileflow-test-writer/workflows/add-coverage.md +154 -0
- package/content/plugins/testing/skills/agileflow-test-writer/workflows/write-tests-from-ac.md +225 -0
- package/package.json +30 -50
- package/src/cli/commands/doctor.js +947 -0
- package/src/cli/commands/hook.js +83 -0
- package/src/cli/commands/launch.js +1385 -0
- package/src/cli/commands/learn.js +149 -0
- package/src/cli/commands/plugins.js +113 -0
- package/src/cli/commands/setup.js +637 -0
- package/src/cli/commands/skills.js +324 -0
- package/src/cli/commands/status.js +45 -0
- package/src/cli/commands/update.js +144 -0
- package/src/cli/index.js +137 -0
- package/src/cli/wizard/babysit-mode-picker.js +192 -0
- package/src/cli/wizard/behaviors-picker.js +262 -0
- package/src/cli/wizard/ide-picker.js +69 -0
- package/src/cli/wizard/install-scope-picker.js +57 -0
- package/src/cli/wizard/launch-alias-picker.js +50 -0
- package/src/cli/wizard/launch-cli-picker.js +129 -0
- package/src/cli/wizard/launch-tmux-picker.js +133 -0
- package/src/cli/wizard/learnings-picker.js +40 -0
- package/src/cli/wizard/plugin-picker.js +137 -0
- package/src/lib/brand.js +116 -0
- package/src/lib/errors.js +120 -0
- package/src/lib/hash.js +41 -0
- package/src/lib/path-check.js +39 -0
- package/src/runtime/config/defaults.js +66 -0
- package/src/runtime/config/loader.js +186 -0
- package/src/runtime/config/schema.json +126 -0
- package/src/runtime/config/writer.js +57 -0
- package/src/runtime/hooks/aggregator.js +157 -0
- package/src/runtime/hooks/chain.js +93 -0
- package/src/runtime/hooks/logger.js +68 -0
- package/src/runtime/hooks/manifest-loader.js +228 -0
- package/src/runtime/hooks/orchestrator.js +322 -0
- package/src/runtime/ide/babysit-skill.js +202 -0
- package/src/runtime/ide/capabilities.js +166 -0
- package/src/runtime/ide/claude-code-content.js +177 -0
- package/src/runtime/ide/claude-code-settings.js +272 -0
- package/src/runtime/ide/claude-code-skills.js +217 -0
- package/src/runtime/ide/codex-config.js +295 -0
- package/src/runtime/installer/file-index.js +112 -0
- package/src/runtime/installer/install.js +557 -0
- package/src/runtime/installer/stash.js +61 -0
- package/src/runtime/installer/sync-engine.js +205 -0
- package/src/runtime/launch/alias-installer.js +191 -0
- package/src/runtime/launch/cli-resume.js +244 -0
- package/src/runtime/launch/closed-windows.js +338 -0
- package/src/runtime/launch/defaults.js +66 -0
- package/src/runtime/launch/detect-clis.js +69 -0
- package/src/runtime/launch/doctor.js +464 -0
- package/src/runtime/launch/exec-wrapper.js +114 -0
- package/src/runtime/launch/parallel-session.js +247 -0
- package/src/runtime/launch/prefs.js +211 -0
- package/src/runtime/launch/project-prefs.js +234 -0
- package/src/runtime/launch/resolve-cli.js +56 -0
- package/src/runtime/launch/restore.js +142 -0
- package/src/runtime/launch/schema.json +75 -0
- package/src/runtime/launch/session-lifecycle.js +313 -0
- package/src/runtime/launch/session-registry.js +401 -0
- package/src/runtime/launch/spawn.js +103 -0
- package/src/runtime/launch/tabs.js +315 -0
- package/src/runtime/launch/tmux.js +654 -0
- package/src/runtime/launch/worktree.js +260 -0
- package/src/runtime/plugins/registry.js +137 -0
- package/src/runtime/plugins/resolver.js +138 -0
- package/src/runtime/plugins/validator.js +210 -0
- package/src/runtime/skills/learnings.js +308 -0
- package/src/runtime/skills/validator.js +335 -0
- package/lib/README.md +0 -178
- package/lib/api-routes.js +0 -625
- package/lib/api-server.js +0 -278
- package/lib/cache-provider.js +0 -155
- package/lib/codebase-indexer.js +0 -819
- package/lib/colors.generated.js +0 -117
- package/lib/colors.js +0 -341
- package/lib/consent.js +0 -232
- package/lib/content-sanitizer.js +0 -464
- package/lib/correlation.js +0 -277
- package/lib/drivers/claude-driver.ts +0 -312
- package/lib/drivers/codex-driver.ts +0 -464
- package/lib/drivers/driver-manager.ts +0 -159
- package/lib/drivers/gemini-driver.ts +0 -498
- package/lib/drivers/index.ts +0 -17
- package/lib/error-codes.js +0 -590
- package/lib/errors.js +0 -670
- package/lib/feature-flags.js +0 -171
- package/lib/feedback.js +0 -595
- package/lib/file-cache.js +0 -541
- package/lib/flag-detection.js +0 -344
- package/lib/format-error.js +0 -156
- package/lib/gate-runner.js +0 -282
- package/lib/generator-factory.js +0 -333
- package/lib/git-operations.js +0 -266
- package/lib/lazy-require.js +0 -59
- package/lib/lock-file.js +0 -144
- package/lib/logger.js +0 -106
- package/lib/merge-operations.js +0 -1006
- package/lib/path-resolver.js +0 -544
- package/lib/path-utils.js +0 -49
- package/lib/paths.js +0 -291
- package/lib/placeholder-registry.js +0 -822
- package/lib/process-executor.js +0 -214
- package/lib/progress.js +0 -334
- package/lib/protocol/driver.ts +0 -354
- package/lib/protocol/index.ts +0 -12
- package/lib/protocol/ir.ts +0 -271
- package/lib/registry-cache.js +0 -80
- package/lib/registry-di.js +0 -358
- package/lib/result-schema.js +0 -363
- package/lib/result.js +0 -210
- package/lib/session-display.js +0 -331
- package/lib/session-operations.js +0 -611
- package/lib/session-registry.js +0 -484
- package/lib/session-state-machine.js +0 -465
- package/lib/session-switching.js +0 -191
- package/lib/skill-loader.js +0 -213
- package/lib/smart-json-file.js +0 -682
- package/lib/state-machine.js +0 -286
- package/lib/table-formatter.js +0 -519
- package/lib/template-loader.js +0 -143
- package/lib/transient-status.js +0 -374
- package/lib/ui-manager.js +0 -612
- package/lib/validate-args.js +0 -213
- package/lib/validate-commands.js +0 -308
- package/lib/validate-names.js +0 -143
- package/lib/validate-paths.js +0 -434
- package/lib/validate.js +0 -134
- package/lib/worktree-operations.js +0 -201
- package/lib/yaml-utils.js +0 -164
- package/scripts/README.md +0 -267
- package/scripts/af +0 -34
- package/scripts/agent-loop.js +0 -879
- package/scripts/agileflow-configure.js +0 -368
- package/scripts/agileflow-statusline.sh +0 -857
- package/scripts/agileflow-welcome.js +0 -2246
- package/scripts/api-server-runner.js +0 -177
- package/scripts/archive-completed-stories.sh +0 -308
- package/scripts/auto-self-improve.js +0 -326
- package/scripts/automation-run-due.js +0 -128
- package/scripts/babysit-clear-restore.js +0 -154
- package/scripts/babysit-context-restore.js +0 -89
- package/scripts/backfill-ideation-status.js +0 -128
- package/scripts/batch-pmap-loop.js +0 -551
- package/scripts/check-sessions.js +0 -116
- package/scripts/check-update.js +0 -282
- package/scripts/ci-summary.js +0 -294
- package/scripts/claude-smart.sh +0 -85
- package/scripts/claude-tmux.sh +0 -737
- package/scripts/claude-watchdog.sh +0 -225
- package/scripts/clear-active-command.js +0 -48
- package/scripts/compress-status.sh +0 -116
- package/scripts/context-loader.js +0 -310
- package/scripts/damage-control/bash-tool-damage-control.js +0 -22
- package/scripts/damage-control/edit-tool-damage-control.js +0 -19
- package/scripts/damage-control/patterns.yaml +0 -227
- package/scripts/damage-control/write-tool-damage-control.js +0 -19
- package/scripts/damage-control-bash.js +0 -51
- package/scripts/damage-control-edit.js +0 -48
- package/scripts/damage-control-multi-agent.js +0 -231
- package/scripts/damage-control-write.js +0 -48
- package/scripts/dependency-check.js +0 -311
- package/scripts/document-repl.js +0 -793
- package/scripts/expertise-metrics.sh +0 -264
- package/scripts/generate-all.sh +0 -77
- package/scripts/generate-colors.js +0 -314
- package/scripts/generators/agent-registry.js +0 -183
- package/scripts/generators/command-registry.js +0 -166
- package/scripts/generators/index.js +0 -85
- package/scripts/generators/inject-babysit.js +0 -191
- package/scripts/generators/inject-help.js +0 -125
- package/scripts/generators/inject-readme.js +0 -166
- package/scripts/generators/skill-registry.js +0 -188
- package/scripts/get-env.js +0 -225
- package/scripts/init.sh +0 -76
- package/scripts/lib/README-portable-tasks.md +0 -424
- package/scripts/lib/ac-test-matcher.js +0 -452
- package/scripts/lib/audit-cleanup.js +0 -250
- package/scripts/lib/audit-registry.js +0 -340
- package/scripts/lib/automation-registry.js +0 -544
- package/scripts/lib/automation-runner.js +0 -476
- package/scripts/lib/browser-qa-evidence.js +0 -409
- package/scripts/lib/browser-qa-status.js +0 -192
- package/scripts/lib/bus-utils.js +0 -473
- package/scripts/lib/colors.generated.sh +0 -82
- package/scripts/lib/colors.sh +0 -46
- package/scripts/lib/command-prereqs.js +0 -280
- package/scripts/lib/concurrency-limiter.js +0 -511
- package/scripts/lib/configure-detect.js +0 -596
- package/scripts/lib/configure-features.js +0 -1927
- package/scripts/lib/configure-repair.js +0 -327
- package/scripts/lib/configure-utils.js +0 -114
- package/scripts/lib/context-formatter.js +0 -1158
- package/scripts/lib/context-loader.js +0 -840
- package/scripts/lib/counter.js +0 -103
- package/scripts/lib/damage-control-utils.js +0 -619
- package/scripts/lib/feature-catalog.js +0 -332
- package/scripts/lib/file-lock.js +0 -392
- package/scripts/lib/file-tracking.js +0 -735
- package/scripts/lib/frontmatter-parser.js +0 -133
- package/scripts/lib/gate-enforcer.js +0 -295
- package/scripts/lib/hook-metrics.js +0 -324
- package/scripts/lib/ideation-index.js +0 -1205
- package/scripts/lib/json-utils.sh +0 -162
- package/scripts/lib/lifecycle-detector.js +0 -125
- package/scripts/lib/model-profiles.js +0 -118
- package/scripts/lib/portable-tasks-cli.js +0 -274
- package/scripts/lib/portable-tasks.js +0 -479
- package/scripts/lib/process-cleanup.js +0 -527
- package/scripts/lib/quality-gates.js +0 -788
- package/scripts/lib/scale-detector.js +0 -396
- package/scripts/lib/sessionRegistry.js +0 -678
- package/scripts/lib/signal-detectors.js +0 -867
- package/scripts/lib/skill-catalog.js +0 -557
- package/scripts/lib/skill-recommender.js +0 -311
- package/scripts/lib/state-migrator.js +0 -353
- package/scripts/lib/status-task-bridge.js +0 -522
- package/scripts/lib/status-writer.js +0 -255
- package/scripts/lib/story-claiming.js +0 -704
- package/scripts/lib/story-state-machine.js +0 -437
- package/scripts/lib/sync-ideation-status.js +0 -291
- package/scripts/lib/task-registry-cache.js +0 -490
- package/scripts/lib/task-registry.js +0 -1191
- package/scripts/lib/task-sync.js +0 -230
- package/scripts/lib/tdd-phase-manager.js +0 -455
- package/scripts/lib/team-events.js +0 -510
- package/scripts/lib/tmux-audit-monitor.js +0 -612
- package/scripts/lib/tmux-group-colors.js +0 -113
- package/scripts/lib/tool-registry.yaml +0 -241
- package/scripts/lib/tool-shed.js +0 -441
- package/scripts/lib/validation-registry.js +0 -177
- package/scripts/messaging-bridge.js +0 -561
- package/scripts/migrate-ideation-index.js +0 -553
- package/scripts/native-team-observer.js +0 -219
- package/scripts/obtain-context.js +0 -272
- package/scripts/pre-push-check.sh +0 -46
- package/scripts/precompact-context.sh +0 -306
- package/scripts/query-codebase.js +0 -543
- package/scripts/ralph-loop.js +0 -1278
- package/scripts/resume-session.sh +0 -121
- package/scripts/screenshot-verifier.js +0 -215
- package/scripts/session-boundary.js +0 -138
- package/scripts/session-coordinator.sh +0 -232
- package/scripts/session-manager.js +0 -546
- package/scripts/smart-detect.js +0 -449
- package/scripts/spawn-audit-sessions.js +0 -877
- package/scripts/spawn-parallel.js +0 -751
- package/scripts/strip-ai-attribution.js +0 -63
- package/scripts/task-completed-gate.js +0 -237
- package/scripts/team-manager.js +0 -596
- package/scripts/team-status-display.js +0 -200
- package/scripts/teammate-idle-gate.js +0 -237
- package/scripts/test-session-boundary.js +0 -80
- package/scripts/tmux-close-windows.sh +0 -180
- package/scripts/tmux-restore-window.sh +0 -67
- package/scripts/tmux-save-closed-window.sh +0 -35
- package/scripts/tui/App.js +0 -151
- package/scripts/tui/Dashboard.js +0 -277
- package/scripts/tui/blessed/data/watcher.js +0 -180
- package/scripts/tui/blessed/index.js +0 -244
- package/scripts/tui/blessed/panels/output.js +0 -101
- package/scripts/tui/blessed/panels/sessions.js +0 -150
- package/scripts/tui/blessed/panels/trace.js +0 -97
- package/scripts/tui/blessed/ui/help.js +0 -77
- package/scripts/tui/blessed/ui/screen.js +0 -52
- package/scripts/tui/blessed/ui/statusbar.js +0 -47
- package/scripts/tui/blessed/ui/tabbar.js +0 -99
- package/scripts/tui/index.js +0 -70
- package/scripts/tui/lib/crashRecovery.js +0 -304
- package/scripts/tui/lib/eventStream.js +0 -309
- package/scripts/tui/lib/keyboard.js +0 -261
- package/scripts/tui/lib/loopControl.js +0 -371
- package/scripts/tui/panels/OutputPanel.js +0 -240
- package/scripts/tui/panels/SessionPanel.js +0 -170
- package/scripts/tui/panels/TracePanel.js +0 -298
- package/scripts/tui/simple-tui.js +0 -510
- package/scripts/validate-expertise.sh +0 -263
- package/scripts/validate-tokens.sh +0 -73
- package/scripts/validators/README.md +0 -143
- package/scripts/validators/component-validator.js +0 -239
- package/scripts/validators/json-schema-validator.js +0 -186
- package/scripts/validators/markdown-validator.js +0 -152
- package/scripts/validators/migration-validator.js +0 -129
- package/scripts/validators/security-validator.js +0 -380
- package/scripts/validators/story-format-validator.js +0 -197
- package/scripts/validators/test-result-validator.js +0 -114
- package/scripts/validators/workflow-validator.js +0 -247
- package/scripts/welcome-deferred.js +0 -437
- package/scripts/worktree-create.sh +0 -111
- package/src/core/agents/a11y-analyzer-aria.md +0 -155
- package/src/core/agents/a11y-analyzer-forms.md +0 -162
- package/src/core/agents/a11y-analyzer-keyboard.md +0 -175
- package/src/core/agents/a11y-analyzer-semantic.md +0 -153
- package/src/core/agents/a11y-analyzer-visual.md +0 -158
- package/src/core/agents/a11y-consensus.md +0 -248
- package/src/core/agents/accessibility.md +0 -515
- package/src/core/agents/adr-writer.md +0 -463
- package/src/core/agents/ads-audit-budget.md +0 -181
- package/src/core/agents/ads-audit-compliance.md +0 -169
- package/src/core/agents/ads-audit-creative.md +0 -164
- package/src/core/agents/ads-audit-google.md +0 -226
- package/src/core/agents/ads-audit-meta.md +0 -183
- package/src/core/agents/ads-audit-tracking.md +0 -197
- package/src/core/agents/ads-consensus.md +0 -396
- package/src/core/agents/ads-generate.md +0 -145
- package/src/core/agents/ads-performance-tracker.md +0 -197
- package/src/core/agents/analytics.md +0 -617
- package/src/core/agents/api-quality-analyzer-conventions.md +0 -148
- package/src/core/agents/api-quality-analyzer-docs.md +0 -176
- package/src/core/agents/api-quality-analyzer-errors.md +0 -183
- package/src/core/agents/api-quality-analyzer-pagination.md +0 -171
- package/src/core/agents/api-quality-analyzer-versioning.md +0 -143
- package/src/core/agents/api-quality-consensus.md +0 -214
- package/src/core/agents/api-validator.md +0 -183
- package/src/core/agents/api.md +0 -665
- package/src/core/agents/arch-analyzer-circular.md +0 -148
- package/src/core/agents/arch-analyzer-complexity.md +0 -171
- package/src/core/agents/arch-analyzer-coupling.md +0 -146
- package/src/core/agents/arch-analyzer-layering.md +0 -151
- package/src/core/agents/arch-analyzer-patterns.md +0 -162
- package/src/core/agents/arch-consensus.md +0 -227
- package/src/core/agents/brainstorm-analyzer-features.md +0 -169
- package/src/core/agents/brainstorm-analyzer-growth.md +0 -161
- package/src/core/agents/brainstorm-analyzer-integration.md +0 -172
- package/src/core/agents/brainstorm-analyzer-market.md +0 -147
- package/src/core/agents/brainstorm-analyzer-ux.md +0 -167
- package/src/core/agents/brainstorm-consensus.md +0 -237
- package/src/core/agents/browser-qa.md +0 -328
- package/src/core/agents/ci.md +0 -511
- package/src/core/agents/code-reviewer.md +0 -288
- package/src/core/agents/codebase-query.md +0 -266
- package/src/core/agents/completeness-analyzer-api.md +0 -190
- package/src/core/agents/completeness-analyzer-conditional.md +0 -201
- package/src/core/agents/completeness-analyzer-handlers.md +0 -159
- package/src/core/agents/completeness-analyzer-imports.md +0 -159
- package/src/core/agents/completeness-analyzer-routes.md +0 -182
- package/src/core/agents/completeness-analyzer-state.md +0 -188
- package/src/core/agents/completeness-analyzer-stubs.md +0 -198
- package/src/core/agents/completeness-consensus.md +0 -286
- package/src/core/agents/compliance.md +0 -509
- package/src/core/agents/council-advocate.md +0 -206
- package/src/core/agents/council-analyst.md +0 -252
- package/src/core/agents/council-optimist.md +0 -170
- package/src/core/agents/database.md +0 -601
- package/src/core/agents/datamigration.md +0 -699
- package/src/core/agents/design.md +0 -525
- package/src/core/agents/devops.md +0 -720
- package/src/core/agents/documentation.md +0 -504
- package/src/core/agents/epic-planner.md +0 -480
- package/src/core/agents/error-analyzer.md +0 -201
- package/src/core/agents/integrations.md +0 -603
- package/src/core/agents/legal-analyzer-a11y.md +0 -110
- package/src/core/agents/legal-analyzer-ai.md +0 -117
- package/src/core/agents/legal-analyzer-consumer.md +0 -108
- package/src/core/agents/legal-analyzer-content.md +0 -113
- package/src/core/agents/legal-analyzer-international.md +0 -115
- package/src/core/agents/legal-analyzer-licensing.md +0 -115
- package/src/core/agents/legal-analyzer-privacy.md +0 -108
- package/src/core/agents/legal-analyzer-security.md +0 -112
- package/src/core/agents/legal-analyzer-terms.md +0 -111
- package/src/core/agents/legal-consensus.md +0 -242
- package/src/core/agents/logic-analyzer-edge.md +0 -170
- package/src/core/agents/logic-analyzer-flow.md +0 -253
- package/src/core/agents/logic-analyzer-invariant.md +0 -206
- package/src/core/agents/logic-analyzer-race.md +0 -266
- package/src/core/agents/logic-analyzer-type.md +0 -217
- package/src/core/agents/logic-consensus.md +0 -253
- package/src/core/agents/mentor.md +0 -654
- package/src/core/agents/mobile.md +0 -501
- package/src/core/agents/monitoring.md +0 -537
- package/src/core/agents/multi-expert.md +0 -311
- package/src/core/agents/orchestrator.md +0 -749
- package/src/core/agents/perf-analyzer-assets.md +0 -174
- package/src/core/agents/perf-analyzer-bundle.md +0 -165
- package/src/core/agents/perf-analyzer-caching.md +0 -160
- package/src/core/agents/perf-analyzer-compute.md +0 -165
- package/src/core/agents/perf-analyzer-memory.md +0 -182
- package/src/core/agents/perf-analyzer-network.md +0 -157
- package/src/core/agents/perf-analyzer-queries.md +0 -155
- package/src/core/agents/perf-analyzer-rendering.md +0 -156
- package/src/core/agents/perf-consensus.md +0 -280
- package/src/core/agents/performance.md +0 -492
- package/src/core/agents/product.md +0 -535
- package/src/core/agents/qa.md +0 -765
- package/src/core/agents/readme-updater.md +0 -579
- package/src/core/agents/refactor.md +0 -558
- package/src/core/agents/research.md +0 -453
- package/src/core/agents/rlm-subcore.md +0 -207
- package/src/core/agents/schema-validator.md +0 -454
- package/src/core/agents/security-analyzer-api.md +0 -199
- package/src/core/agents/security-analyzer-auth.md +0 -160
- package/src/core/agents/security-analyzer-authz.md +0 -168
- package/src/core/agents/security-analyzer-deps.md +0 -147
- package/src/core/agents/security-analyzer-infra.md +0 -176
- package/src/core/agents/security-analyzer-injection.md +0 -148
- package/src/core/agents/security-analyzer-input.md +0 -191
- package/src/core/agents/security-analyzer-secrets.md +0 -175
- package/src/core/agents/security-consensus.md +0 -276
- package/src/core/agents/security.md +0 -486
- package/src/core/agents/seo-analyzer-content.md +0 -167
- package/src/core/agents/seo-analyzer-images.md +0 -187
- package/src/core/agents/seo-analyzer-performance.md +0 -206
- package/src/core/agents/seo-analyzer-schema.md +0 -176
- package/src/core/agents/seo-analyzer-sitemap.md +0 -172
- package/src/core/agents/seo-analyzer-technical.md +0 -144
- package/src/core/agents/seo-consensus.md +0 -289
- package/src/core/agents/team-coordinator.md +0 -333
- package/src/core/agents/team-lead.md +0 -171
- package/src/core/agents/test-analyzer-assertions.md +0 -181
- package/src/core/agents/test-analyzer-coverage.md +0 -183
- package/src/core/agents/test-analyzer-fragility.md +0 -185
- package/src/core/agents/test-analyzer-integration.md +0 -155
- package/src/core/agents/test-analyzer-maintenance.md +0 -173
- package/src/core/agents/test-analyzer-mocking.md +0 -178
- package/src/core/agents/test-analyzer-patterns.md +0 -189
- package/src/core/agents/test-analyzer-structure.md +0 -177
- package/src/core/agents/test-consensus.md +0 -294
- package/src/core/agents/testing.md +0 -527
- package/src/core/agents/ui-validator.md +0 -331
- package/src/core/agents/ui.md +0 -1227
- package/src/core/commands/adr/list.md +0 -191
- package/src/core/commands/adr/update.md +0 -258
- package/src/core/commands/adr/view.md +0 -274
- package/src/core/commands/adr.md +0 -394
- package/src/core/commands/ads/audit.md +0 -453
- package/src/core/commands/ads/budget.md +0 -97
- package/src/core/commands/ads/competitor.md +0 -112
- package/src/core/commands/ads/creative.md +0 -85
- package/src/core/commands/ads/generate.md +0 -238
- package/src/core/commands/ads/google.md +0 -112
- package/src/core/commands/ads/health.md +0 -327
- package/src/core/commands/ads/landing.md +0 -119
- package/src/core/commands/ads/linkedin.md +0 -112
- package/src/core/commands/ads/meta.md +0 -91
- package/src/core/commands/ads/microsoft.md +0 -115
- package/src/core/commands/ads/plan.md +0 -321
- package/src/core/commands/ads/test-plan.md +0 -317
- package/src/core/commands/ads/tiktok.md +0 -129
- package/src/core/commands/ads/track.md +0 -288
- package/src/core/commands/ads/youtube.md +0 -124
- package/src/core/commands/ads.md +0 -140
- package/src/core/commands/agent.md +0 -256
- package/src/core/commands/api.md +0 -267
- package/src/core/commands/assign.md +0 -369
- package/src/core/commands/audit.md +0 -531
- package/src/core/commands/auto.md +0 -556
- package/src/core/commands/automate.md +0 -415
- package/src/core/commands/babysit.md +0 -643
- package/src/core/commands/baseline.md +0 -743
- package/src/core/commands/batch.md +0 -551
- package/src/core/commands/blockers.md +0 -602
- package/src/core/commands/board.md +0 -509
- package/src/core/commands/browser-qa.md +0 -240
- package/src/core/commands/changelog.md +0 -582
- package/src/core/commands/choose.md +0 -430
- package/src/core/commands/ci.md +0 -330
- package/src/core/commands/code/accessibility.md +0 -363
- package/src/core/commands/code/api.md +0 -313
- package/src/core/commands/code/architecture.md +0 -313
- package/src/core/commands/code/completeness.md +0 -519
- package/src/core/commands/code/legal.md +0 -509
- package/src/core/commands/code/logic.md +0 -432
- package/src/core/commands/code/performance.md +0 -506
- package/src/core/commands/code/security.md +0 -509
- package/src/core/commands/code/test.md +0 -505
- package/src/core/commands/compress.md +0 -408
- package/src/core/commands/configure.md +0 -1159
- package/src/core/commands/context/export.md +0 -296
- package/src/core/commands/context/full.md +0 -353
- package/src/core/commands/context/note.md +0 -380
- package/src/core/commands/council.md +0 -592
- package/src/core/commands/debt.md +0 -491
- package/src/core/commands/deploy.md +0 -864
- package/src/core/commands/deps.md +0 -728
- package/src/core/commands/diagnose.md +0 -404
- package/src/core/commands/docs.md +0 -469
- package/src/core/commands/epic/edit.md +0 -213
- package/src/core/commands/epic/list.md +0 -190
- package/src/core/commands/epic/view.md +0 -267
- package/src/core/commands/epic.md +0 -477
- package/src/core/commands/export.md +0 -238
- package/src/core/commands/feedback.md +0 -603
- package/src/core/commands/handoff.md +0 -386
- package/src/core/commands/help.md +0 -194
- package/src/core/commands/ideate/brief.md +0 -363
- package/src/core/commands/ideate/discover.md +0 -399
- package/src/core/commands/ideate/features.md +0 -497
- package/src/core/commands/ideate/history.md +0 -403
- package/src/core/commands/ideate/new.md +0 -900
- package/src/core/commands/impact.md +0 -407
- package/src/core/commands/install.md +0 -529
- package/src/core/commands/learn/explain.md +0 -118
- package/src/core/commands/learn/glossary.md +0 -135
- package/src/core/commands/learn/patterns.md +0 -138
- package/src/core/commands/learn/tour.md +0 -126
- package/src/core/commands/maintain.md +0 -558
- package/src/core/commands/metrics.md +0 -844
- package/src/core/commands/migrate/codemods.md +0 -151
- package/src/core/commands/migrate/plan.md +0 -131
- package/src/core/commands/migrate/scan.md +0 -114
- package/src/core/commands/migrate/validate.md +0 -119
- package/src/core/commands/multi-expert.md +0 -447
- package/src/core/commands/packages.md +0 -535
- package/src/core/commands/pr.md +0 -337
- package/src/core/commands/readme-sync.md +0 -329
- package/src/core/commands/research/analyze.md +0 -798
- package/src/core/commands/research/ask.md +0 -864
- package/src/core/commands/research/import.md +0 -1025
- package/src/core/commands/research/list.md +0 -273
- package/src/core/commands/research/synthesize.md +0 -928
- package/src/core/commands/research/view.md +0 -323
- package/src/core/commands/retro.md +0 -795
- package/src/core/commands/review.md +0 -694
- package/src/core/commands/rlm.md +0 -446
- package/src/core/commands/roadmap/analyze.md +0 -400
- package/src/core/commands/rpi.md +0 -633
- package/src/core/commands/seo/audit.md +0 -444
- package/src/core/commands/seo/competitor.md +0 -174
- package/src/core/commands/seo/content.md +0 -107
- package/src/core/commands/seo/geo.md +0 -229
- package/src/core/commands/seo/hreflang.md +0 -140
- package/src/core/commands/seo/images.md +0 -96
- package/src/core/commands/seo/page.md +0 -198
- package/src/core/commands/seo/plan.md +0 -163
- package/src/core/commands/seo/programmatic.md +0 -131
- package/src/core/commands/seo/references/cwv-thresholds.md +0 -64
- package/src/core/commands/seo/references/eeat-framework.md +0 -110
- package/src/core/commands/seo/references/quality-gates.md +0 -91
- package/src/core/commands/seo/references/schema-types.md +0 -102
- package/src/core/commands/seo/schema.md +0 -183
- package/src/core/commands/seo/sitemap.md +0 -97
- package/src/core/commands/seo/technical.md +0 -100
- package/src/core/commands/seo.md +0 -107
- package/src/core/commands/session/cleanup.md +0 -452
- package/src/core/commands/session/end.md +0 -865
- package/src/core/commands/session/history.md +0 -293
- package/src/core/commands/session/init.md +0 -210
- package/src/core/commands/session/new.md +0 -827
- package/src/core/commands/session/resume.md +0 -291
- package/src/core/commands/session/spawn.md +0 -205
- package/src/core/commands/session/status.md +0 -274
- package/src/core/commands/skill/list.md +0 -139
- package/src/core/commands/skill/recommend.md +0 -216
- package/src/core/commands/sprint.md +0 -714
- package/src/core/commands/status/undo.md +0 -191
- package/src/core/commands/status.md +0 -423
- package/src/core/commands/story/edit.md +0 -204
- package/src/core/commands/story/list.md +0 -199
- package/src/core/commands/story/view.md +0 -312
- package/src/core/commands/story-validate.md +0 -491
- package/src/core/commands/story.md +0 -465
- package/src/core/commands/tdd-next.md +0 -238
- package/src/core/commands/tdd.md +0 -211
- package/src/core/commands/team/guide.md +0 -688
- package/src/core/commands/team/list.md +0 -59
- package/src/core/commands/team/start.md +0 -130
- package/src/core/commands/team/status.md +0 -66
- package/src/core/commands/team/stop.md +0 -78
- package/src/core/commands/template.md +0 -644
- package/src/core/commands/tests.md +0 -731
- package/src/core/commands/update.md +0 -591
- package/src/core/commands/validate-expertise.md +0 -305
- package/src/core/commands/velocity.md +0 -630
- package/src/core/commands/verify.md +0 -534
- package/src/core/commands/whats-new.md +0 -201
- package/src/core/commands/workflow.md +0 -449
- package/src/core/council/sessions/.gitkeep +0 -0
- package/src/core/council/shared_reasoning.template.md +0 -106
- package/src/core/experts/README.md +0 -236
- package/src/core/experts/_core-expertise.yaml +0 -105
- package/src/core/experts/accessibility/expertise.yaml +0 -115
- package/src/core/experts/accessibility/question.md +0 -41
- package/src/core/experts/accessibility/self-improve.md +0 -45
- package/src/core/experts/accessibility/workflow.md +0 -59
- package/src/core/experts/adr-writer/expertise.yaml +0 -138
- package/src/core/experts/adr-writer/question.md +0 -56
- package/src/core/experts/adr-writer/self-improve.md +0 -106
- package/src/core/experts/adr-writer/workflow.md +0 -184
- package/src/core/experts/analytics/expertise.yaml +0 -119
- package/src/core/experts/analytics/question.md +0 -74
- package/src/core/experts/analytics/self-improve.md +0 -163
- package/src/core/experts/analytics/workflow.md +0 -272
- package/src/core/experts/api/expertise.yaml +0 -124
- package/src/core/experts/api/question.md +0 -74
- package/src/core/experts/api/self-improve.md +0 -122
- package/src/core/experts/api/workflow.md +0 -248
- package/src/core/experts/ci/expertise.yaml +0 -106
- package/src/core/experts/ci/question.md +0 -69
- package/src/core/experts/ci/self-improve.md +0 -100
- package/src/core/experts/ci/workflow.md +0 -145
- package/src/core/experts/codebase-query/expertise.yaml +0 -121
- package/src/core/experts/codebase-query/question.md +0 -73
- package/src/core/experts/codebase-query/self-improve.md +0 -105
- package/src/core/experts/compliance/expertise.yaml +0 -101
- package/src/core/experts/compliance/question.md +0 -56
- package/src/core/experts/compliance/self-improve.md +0 -106
- package/src/core/experts/compliance/workflow.md +0 -184
- package/src/core/experts/database/expertise.yaml +0 -109
- package/src/core/experts/database/question.md +0 -74
- package/src/core/experts/database/self-improve.md +0 -121
- package/src/core/experts/database/workflow.md +0 -234
- package/src/core/experts/datamigration/expertise.yaml +0 -141
- package/src/core/experts/datamigration/question.md +0 -56
- package/src/core/experts/datamigration/self-improve.md +0 -106
- package/src/core/experts/datamigration/workflow.md +0 -184
- package/src/core/experts/design/expertise.yaml +0 -116
- package/src/core/experts/design/question.md +0 -56
- package/src/core/experts/design/self-improve.md +0 -106
- package/src/core/experts/design/workflow.md +0 -184
- package/src/core/experts/devops/expertise.yaml +0 -116
- package/src/core/experts/devops/question.md +0 -68
- package/src/core/experts/devops/self-improve.md +0 -102
- package/src/core/experts/devops/workflow.md +0 -142
- package/src/core/experts/documentation/expertise.yaml +0 -126
- package/src/core/experts/documentation/question.md +0 -41
- package/src/core/experts/documentation/self-improve.md +0 -45
- package/src/core/experts/documentation/workflow.md +0 -55
- package/src/core/experts/epic-planner/expertise.yaml +0 -144
- package/src/core/experts/epic-planner/question.md +0 -56
- package/src/core/experts/epic-planner/self-improve.md +0 -106
- package/src/core/experts/epic-planner/workflow.md +0 -184
- package/src/core/experts/integrations/expertise.yaml +0 -113
- package/src/core/experts/integrations/question.md +0 -74
- package/src/core/experts/integrations/self-improve.md +0 -151
- package/src/core/experts/integrations/workflow.md +0 -246
- package/src/core/experts/mentor/expertise.yaml +0 -125
- package/src/core/experts/mentor/question.md +0 -56
- package/src/core/experts/mentor/self-improve.md +0 -106
- package/src/core/experts/mentor/workflow.md +0 -184
- package/src/core/experts/mobile/expertise.yaml +0 -136
- package/src/core/experts/mobile/question.md +0 -72
- package/src/core/experts/mobile/self-improve.md +0 -140
- package/src/core/experts/mobile/workflow.md +0 -240
- package/src/core/experts/monitoring/expertise.yaml +0 -132
- package/src/core/experts/monitoring/question.md +0 -76
- package/src/core/experts/monitoring/self-improve.md +0 -150
- package/src/core/experts/monitoring/workflow.md +0 -264
- package/src/core/experts/performance/expertise.yaml +0 -68
- package/src/core/experts/performance/question.md +0 -41
- package/src/core/experts/performance/self-improve.md +0 -45
- package/src/core/experts/performance/workflow.md +0 -61
- package/src/core/experts/product/expertise.yaml +0 -143
- package/src/core/experts/product/question.md +0 -56
- package/src/core/experts/product/self-improve.md +0 -106
- package/src/core/experts/product/workflow.md +0 -184
- package/src/core/experts/qa/expertise.yaml +0 -110
- package/src/core/experts/qa/question.md +0 -56
- package/src/core/experts/qa/self-improve.md +0 -106
- package/src/core/experts/qa/workflow.md +0 -184
- package/src/core/experts/readme-updater/expertise.yaml +0 -141
- package/src/core/experts/readme-updater/question.md +0 -56
- package/src/core/experts/readme-updater/self-improve.md +0 -106
- package/src/core/experts/readme-updater/workflow.md +0 -184
- package/src/core/experts/refactor/expertise.yaml +0 -135
- package/src/core/experts/refactor/question.md +0 -41
- package/src/core/experts/refactor/self-improve.md +0 -45
- package/src/core/experts/refactor/workflow.md +0 -57
- package/src/core/experts/research/expertise.yaml +0 -143
- package/src/core/experts/research/question.md +0 -56
- package/src/core/experts/research/self-improve.md +0 -106
- package/src/core/experts/research/workflow.md +0 -184
- package/src/core/experts/security/expertise.yaml +0 -117
- package/src/core/experts/security/question.md +0 -77
- package/src/core/experts/security/self-improve.md +0 -102
- package/src/core/experts/security/workflow.md +0 -152
- package/src/core/experts/templates/expertise-template.yaml +0 -67
- package/src/core/experts/templates/question-template.md +0 -56
- package/src/core/experts/templates/self-improve-template.md +0 -106
- package/src/core/experts/templates/workflow-template.md +0 -184
- package/src/core/experts/testing/expertise.yaml +0 -112
- package/src/core/experts/testing/question.md +0 -68
- package/src/core/experts/testing/self-improve.md +0 -102
- package/src/core/experts/testing/workflow.md +0 -143
- package/src/core/experts/ui/expertise.yaml +0 -133
- package/src/core/experts/ui/question.md +0 -74
- package/src/core/experts/ui/self-improve.md +0 -122
- package/src/core/experts/ui/workflow.md +0 -262
- package/src/core/knowledge/ads/ad-audit-checklist-scoring.md +0 -424
- package/src/core/knowledge/ads/ad-optimization-logic.md +0 -590
- package/src/core/knowledge/ads/ad-technical-specifications.md +0 -385
- package/src/core/knowledge/ads/definitive-advertising-reference-2026.md +0 -506
- package/src/core/knowledge/ads/paid-advertising-research-2026.md +0 -445
- package/src/core/profiles/COMPARISON.md +0 -170
- package/src/core/profiles/README.md +0 -178
- package/src/core/profiles/claude-code.yaml +0 -111
- package/src/core/profiles/codex.yaml +0 -103
- package/src/core/profiles/cursor.yaml +0 -134
- package/src/core/profiles/examples.js +0 -250
- package/src/core/profiles/loader.js +0 -235
- package/src/core/profiles/windsurf.yaml +0 -159
- package/src/core/skills/_learnings/README.md +0 -91
- package/src/core/skills/_learnings/_template.yaml +0 -106
- package/src/core/skills/_learnings/code-review.yaml +0 -118
- package/src/core/skills/_learnings/commit.yaml +0 -69
- package/src/core/skills/_learnings/story-writer.yaml +0 -71
- package/src/core/teams/backend.json +0 -41
- package/src/core/teams/builder-validator.json +0 -51
- package/src/core/teams/code-review.json +0 -41
- package/src/core/teams/frontend.json +0 -41
- package/src/core/teams/fullstack.json +0 -41
- package/src/core/teams/logic-audit.json +0 -53
- package/src/core/teams/perf-audit.json +0 -71
- package/src/core/teams/qa.json +0 -41
- package/src/core/teams/security-audit.json +0 -71
- package/src/core/teams/solo.json +0 -35
- package/src/core/teams/test-audit.json +0 -71
- package/src/core/templates/CONTEXT.md.example +0 -49
- package/src/core/templates/README-template.md +0 -16
- package/src/core/templates/adr-template.md +0 -28
- package/src/core/templates/agent-coordination-pattern.md +0 -38
- package/src/core/templates/agent-profile-template.md +0 -51
- package/src/core/templates/agileflow-metadata.json +0 -150
- package/src/core/templates/browser-qa-spec.yaml +0 -94
- package/src/core/templates/ci-workflow.yml +0 -74
- package/src/core/templates/claude-settings.advanced.example.json +0 -75
- package/src/core/templates/claude-settings.example.json +0 -26
- package/src/core/templates/command-documentation.md +0 -187
- package/src/core/templates/command-prerequisites.yaml +0 -169
- package/src/core/templates/comms-note-template.md +0 -24
- package/src/core/templates/damage-control-patterns.yaml +0 -243
- package/src/core/templates/environment.json +0 -18
- package/src/core/templates/epic-template.md +0 -27
- package/src/core/templates/plan-template.md +0 -125
- package/src/core/templates/preserve-rules-common.md +0 -107
- package/src/core/templates/preserve-rules.json +0 -42
- package/src/core/templates/proactive-action-spec.md +0 -29
- package/src/core/templates/product-brief.md +0 -136
- package/src/core/templates/quality-gate-priorities.md +0 -34
- package/src/core/templates/research-template.md +0 -44
- package/src/core/templates/session-harness-protocol.md +0 -128
- package/src/core/templates/session-state.json +0 -56
- package/src/core/templates/story-lifecycle.md +0 -213
- package/src/core/templates/story-template.md +0 -92
- package/src/core/templates/tdd-test-template.js +0 -241
- package/src/core/templates/worktrees-guide.md +0 -231
- package/tools/agileflow-npx.js +0 -52
- package/tools/cli/agileflow-cli.js +0 -72
- package/tools/cli/commands/config.js +0 -285
- package/tools/cli/commands/doctor.js +0 -496
- package/tools/cli/commands/list.js +0 -385
- package/tools/cli/commands/session.js +0 -1176
- package/tools/cli/commands/setup.js +0 -255
- package/tools/cli/commands/status.js +0 -101
- package/tools/cli/commands/tui.js +0 -56
- package/tools/cli/commands/uninstall.js +0 -155
- package/tools/cli/commands/update.js +0 -299
- package/tools/cli/installers/core/installer.js +0 -892
- package/tools/cli/installers/ide/_base-ide.js +0 -518
- package/tools/cli/installers/ide/_interface.js +0 -238
- package/tools/cli/installers/ide/claude-code.js +0 -432
- package/tools/cli/installers/ide/codex.js +0 -426
- package/tools/cli/installers/ide/cursor.js +0 -217
- package/tools/cli/installers/ide/manager.js +0 -222
- package/tools/cli/installers/ide/windsurf.js +0 -282
- package/tools/cli/lib/command-context.js +0 -382
- package/tools/cli/lib/config-manager.js +0 -446
- package/tools/cli/lib/content-injector.js +0 -969
- package/tools/cli/lib/content-transformer.js +0 -496
- package/tools/cli/lib/docs-setup.js +0 -464
- package/tools/cli/lib/error-handler.js +0 -165
- package/tools/cli/lib/ide-error-factory.js +0 -421
- package/tools/cli/lib/ide-errors.js +0 -367
- package/tools/cli/lib/ide-generator.js +0 -357
- package/tools/cli/lib/ide-health-monitor.js +0 -364
- package/tools/cli/lib/ide-registry.js +0 -297
- package/tools/cli/lib/npm-utils.js +0 -103
- package/tools/cli/lib/self-update.js +0 -148
- package/tools/cli/lib/ui.js +0 -211
- package/tools/cli/lib/utils.js +0 -87
- package/tools/cli/lib/validation-middleware.js +0 -491
- package/tools/cli/lib/version-checker.js +0 -95
- package/tools/postinstall.js +0 -190
|
@@ -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
|