claude-flow-novice 2.5.2 → 2.8.1
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/.claude/adaptive-context/cfn-v3-reflection.json +21 -0
- package/.claude/agents/AGENT_LIFECYCLE.md +495 -0
- package/.claude/agents/CLAUDE.md +1002 -1233
- package/.claude/agents/accessibility-advocate.md +457 -0
- package/.claude/agents/agent-principles/README.md +226 -226
- package/.claude/agents/agent-principles/agent-type-guidelines.md +10 -0
- package/.claude/agents/agent-principles/format-selection.md +10 -0
- package/.claude/agents/agent-principles/phase4-template-optimization.md +502 -494
- package/.claude/agents/agent-principles/prompt-engineering.md +8 -0
- package/.claude/agents/agent-principles/quality-metrics.md +8 -0
- package/.claude/agents/analysis/code-analyzer.md +7 -17
- package/.claude/agents/analysis/code-review/analyze-code-quality.md +2 -104
- package/.claude/agents/analysis/perf-analyzer.md +2 -196
- package/.claude/agents/context/context-curator.md +78 -84
- package/.claude/agents/context/context-reflector.md +27 -81
- package/.claude/agents/coordinators/README.md +42 -0
- package/.claude/agents/coordinators/cfn-v3-coordinator.md +440 -0
- package/.claude/agents/{product-owner-team → coordinators}/cto-agent.md +154 -187
- package/.claude/agents/coordinators/multi-sprint-coordinator.md +50 -0
- package/.claude/agents/{product-owner-team → coordinators}/product-owner-agent.md +6 -39
- package/.claude/agents/{cfn-loop → coordinators}/product-owner.md +72 -17
- package/.claude/agents/core-agents/reviewer.md +114 -135
- package/.claude/agents/custom/agent-builder.md +637 -0
- package/.claude/agents/developers/README.md +69 -0
- package/.claude/agents/developers/backend-dev.md +77 -0
- package/.claude/agents/{core-agents → developers}/coder.md +131 -26
- package/.claude/agents/developers/react-frontend-engineer.md +121 -0
- package/.claude/agents/{frontend → developers}/state-architect.md +1 -0
- package/.claude/agents/{frontend → developers}/ui-designer.md +1 -0
- package/.claude/agents/development/backend/dev-backend-api.md +0 -29
- package/.claude/agents/development/npm-package-specialist.md +355 -347
- package/.claude/agents/documentation/api-docs/docs-api-openapi.md +8 -0
- package/.claude/agents/documentation/api-docs.md +8 -0
- package/.claude/agents/github/github-commit-agent.md +125 -117
- package/.claude/agents/goal/goal-planner.md +8 -0
- package/.claude/agents/infrastructure/README.md +100 -0
- package/.claude/agents/{specialized → infrastructure}/devops-engineer.md +131 -150
- package/.claude/agents/planners/README.md +94 -0
- package/.claude/agents/{core-agents → planners}/analyst.md +1 -22
- package/.claude/agents/{planning-team → planners}/api-designer-persona.md +8 -0
- package/.claude/agents/{core-agents → planners}/architect.md +7 -20
- package/.claude/agents/{core-agents → planners}/planner.md +0 -21
- package/.claude/agents/{planning-team → planners}/security-architect-persona.md +8 -28
- package/.claude/agents/{planning-team → planners}/system-architect-persona.md +6 -38
- package/.claude/agents/{architecture → planners}/system-architect.md +12 -17
- package/.claude/agents/product-owner-team/accessibility-advocate-persona.md +132 -161
- package/.claude/agents/product-owner-team/power-user-persona.md +149 -182
- package/.claude/agents/retrospective-analyst.md +84 -0
- package/.claude/agents/reviewers/README.md +58 -0
- package/.claude/agents/{analysis → reviewers}/code-quality-validator.md +8 -17
- package/.claude/agents/reviewers/reviewer.md +181 -0
- package/.claude/agents/sparc/architecture.md +6 -25
- package/.claude/agents/sparc/pseudocode.md +6 -0
- package/.claude/agents/sparc/refinement.md +6 -0
- package/.claude/agents/sparc/specification.md +1 -0
- package/.claude/agents/specialists/README.md +60 -0
- package/.claude/agents/{core-agents → specialists}/base-template-generator.md +8 -21
- package/.claude/agents/{specialized → specialists}/cli-agent-optimizer.md +1 -1
- package/.claude/agents/{specialized → specialists}/code-booster.md +1 -0
- package/.claude/agents/{consensus → specialists}/consensus-builder.md +1 -17
- package/.claude/agents/{specialized/mobile → specialists}/mobile-dev.md +0 -20
- package/.claude/agents/{core-agents → specialists}/performance-benchmarker.md +134 -148
- package/.claude/agents/{specialized → specialists}/rust-developer.md +1 -20
- package/.claude/agents/{specialized → specialists}/rust-enterprise-developer.md +1 -20
- package/.claude/agents/{specialized → specialists}/rust-mvp-developer.md +1 -20
- package/.claude/agents/{core-agents → specialists}/security-manager.md +68 -88
- package/.claude/agents/{security → specialists}/security-specialist-existing.md +6 -57
- package/.claude/agents/{security → specialists}/security-specialist.md +6 -30
- package/.claude/agents/{specialized/mobile → specialists}/spec-mobile-react-native.md +2 -21
- package/.claude/agents/testers/README.md +94 -0
- package/.claude/agents/{testing → testers}/e2e/playwright-agent.md +1 -20
- package/.claude/agents/{testing → testers}/interaction-tester.md +1 -20
- package/.claude/agents/{testing → testers}/playwright-tester.md +1 -1
- package/.claude/agents/testers/tester.md +139 -0
- package/.claude/agents/testers/unit/tdd-london-swarm.md +49 -0
- package/.claude/agents/testers/validation/production-validator.md +33 -0
- package/.claude/agents-ignore/cfn-loop-coordinator.md +157 -0
- package/.claude/agents-ignore/cfn-loop-coordinator.md.backup +156 -0
- package/.claude/agents-ignore/coordinator.md.backup +182 -0
- package/.claude/agents-ignore/cost-savings-cfn-loop-coordinator.md +760 -0
- package/.claude/agents-ignore/cost-savings-coordinator.md +173 -0
- package/.claude/artifacts/ace-reflections/REFLECT-001-summary.json +39 -0
- package/.claude/artifacts/ace-reflections/sprint-7_$(date -u +/"%Y%m%d_%H%M%S/").json" +47 -0
- package/.claude/artifacts/reflection-merge-logs/cli-agent-spawning-v2.5.2-merge-report.md +61 -0
- package/.claude/commands/CFN_COORDINATOR_PARAMETERS.md +10 -10
- package/.claude/commands/cfn-loop-epic.md +43 -19
- package/.claude/commands/cfn-loop-single.md +3 -3
- package/.claude/commands/cfn-loop-sprints.md +1 -1
- package/.claude/commands/cfn-loop.md +45 -32
- package/.claude/commands/cfn-mode.md +20 -0
- package/.claude/commands/custom-routing-activate.md +37 -123
- package/.claude/commands/custom-routing-deactivate.md +27 -124
- package/.claude/commands/switch-api.md +41 -16
- package/.claude/commands/write-plan.md +104 -0
- package/.claude/data/cfn-loop.db +0 -0
- package/.claude/data/cfn_loop_logs.db +0 -0
- package/.claude/hooks/BACKUP_USAGE.md +243 -0
- package/.claude/hooks/post-edit-cfn-retrospective.sh +79 -0
- package/.claude/hooks/post-edit.sh +21 -0
- package/.claude/hooks/pre-edit-backup.sh +71 -0
- package/.claude/hooks/restore-from-backup.sh +37 -0
- package/.claude/prompts/cfn-loop-context.md +115 -0
- package/.claude/prompts/loop-specific/loop2.md +50 -0
- package/.claude/prompts/loop-specific/loop3.md +43 -0
- package/.claude/prompts/loop-specific/loop4.md +54 -0
- package/.claude/root-claude-distribute/CLAUDE.md +76 -2
- package/.claude/skills/ace-system/sprint-7-lessons.json +46 -0
- package/.claude/skills/ace-system/store-reflection.sh +33 -136
- package/.claude/skills/agent-discovery/SKILL.md +40 -0
- package/.claude/skills/agent-discovery/agents-registry-clean.json +0 -0
- package/.claude/skills/agent-discovery/agents-registry-fixed.json +19 -0
- package/.claude/skills/agent-discovery/agents-registry.json +718 -0
- package/.claude/skills/agent-discovery/discover-agents.py +175 -0
- package/.claude/skills/agent-discovery/discover-agents.sh +87 -0
- package/.claude/skills/agent-discovery/invoke-registry.sh +11 -0
- package/.claude/skills/agent-discovery/temp_script.py +0 -0
- package/.claude/skills/agent-execution/execute-agent.sh +126 -0
- package/.claude/skills/agent-output-processing/SKILL.md +359 -0
- package/.claude/skills/agent-selector/SKILL.md +90 -0
- package/.claude/skills/agent-selector/select-agents.sh +96 -0
- package/.claude/skills/agent-spawning/agent-selection-guide.md +1 -1
- package/.claude/skills/agent-swap/SKILL.md +36 -0
- package/.claude/skills/agent-swap/recommend-swap.sh +60 -0
- package/.claude/skills/api-validation/test-endpoints.sh +54 -0
- package/.claude/skills/automatic-memory-persistence/SKILL.md +73 -0
- package/.claude/skills/automatic-memory-persistence/persist-agent-output.sh +49 -0
- package/.claude/skills/automatic-memory-persistence/query-agent-history.sh +35 -0
- package/.claude/skills/automatic-memory-persistence/test-memory-persistence.sh +235 -0
- package/.claude/skills/cfn-loop-orchestration/README.md +41 -0
- package/.claude/skills/cfn-loop-orchestration/SKILL.md +299 -0
- package/.claude/skills/cfn-loop-orchestration/helpers/auto-tune-timeouts.sh +228 -0
- package/.claude/skills/cfn-loop-orchestration/helpers/consensus.sh +84 -0
- package/.claude/skills/cfn-loop-orchestration/helpers/deliverable-verifier.sh +71 -0
- package/.claude/skills/cfn-loop-orchestration/helpers/gate-check.sh +90 -0
- package/.claude/skills/cfn-loop-orchestration/helpers/iteration-manager.sh +87 -0
- package/.claude/skills/cfn-loop-orchestration/helpers/timeout-calculator.sh +51 -0
- package/.claude/skills/cfn-loop-orchestration/inject-loop-context.sh +41 -0
- package/.claude/skills/cfn-loop-orchestration/monitor-execution.sh +156 -0
- package/.claude/skills/cfn-loop-orchestration/orchestrate.sh +840 -0
- package/.claude/skills/cfn-loop-orchestration/security_utils.sh +99 -0
- package/.claude/skills/cfn-loop-orchestration/test-cfn-orchestration.sh +281 -0
- package/.claude/skills/cfn-loop-orchestration/test-edge-cases.sh +188 -0
- package/.claude/skills/cfn-loop-validation/SKILL.md +307 -217
- package/.claude/skills/complexity-estimator/SKILL.md +96 -0
- package/.claude/skills/complexity-estimator/estimate-complexity.sh +144 -0
- package/.claude/skills/context-pruner/SKILL.md +75 -0
- package/.claude/skills/context-pruner/prune-context.sh +73 -0
- package/.claude/skills/defense-in-depth/SKILL.md +133 -0
- package/.claude/skills/dependency-extractor/SKILL.md +35 -0
- package/.claude/skills/dependency-extractor/extract-dependencies.sh +66 -0
- package/.claude/skills/epic-decomposer/SKILL.md +44 -0
- package/.claude/skills/epic-decomposer/decompose-epic.sh +104 -0
- package/.claude/skills/improvement-recommender/SKILL.md +33 -0
- package/.claude/skills/improvement-recommender/recommend-improvements.sh +92 -0
- package/.claude/skills/intervention-detector/SKILL.md +39 -0
- package/.claude/skills/intervention-detector/detect-intervention.sh +111 -0
- package/.claude/skills/intervention-orchestrator/SKILL.md +43 -0
- package/.claude/skills/intervention-orchestrator/execute-intervention.sh +59 -0
- package/.claude/skills/loop2-output-processing/SKILL.md +163 -0
- package/.claude/skills/loop2-output-processing/execute-and-extract.sh +77 -0
- package/.claude/skills/loop2-output-processing/execute-and-extract.sh.backup +36 -0
- package/.claude/skills/loop2-output-processing/parse-feedback.sh +147 -0
- package/.claude/skills/loop2-output-processing/process-validator-output.sh +275 -0
- package/.claude/skills/loop2-output-processing/test-bug27-fix.sh +200 -0
- package/.claude/skills/loop2-output-processing/test-loop2-processing.sh +113 -0
- package/.claude/skills/loop3-output-processing/AGENT_COMPLETION_PROTOCOL.md +206 -0
- package/.claude/skills/loop3-output-processing/SKILL.md +421 -0
- package/.claude/skills/loop3-output-processing/calculate-confidence.sh +28 -0
- package/.claude/skills/loop3-output-processing/execute-and-extract.sh +85 -0
- package/.claude/skills/loop3-output-processing/parse-confidence.sh +31 -0
- package/.claude/skills/loop3-output-processing/test-agent-timeout.sh +327 -0
- package/.claude/skills/loop3-output-processing/test-loop3-processing.sh +155 -0
- package/.claude/skills/loop3-output-processing/verify-deliverables.sh +42 -0
- package/.claude/skills/pattern-extraction/SKILL.md +30 -0
- package/.claude/skills/pattern-extraction/extract-patterns.sh +80 -0
- package/.claude/skills/playbook/SKILL.md +113 -0
- package/.claude/skills/playbook/init-playbook.sh +54 -0
- package/.claude/skills/playbook/playbook.db +0 -0
- package/.claude/skills/playbook/query-playbook.sh +79 -0
- package/.claude/skills/playbook/update-playbook.sh +69 -0
- package/.claude/skills/playbook-auto-update/SKILL.md +29 -0
- package/.claude/skills/playbook-auto-update/auto-update-playbook.sh +86 -0
- package/.claude/skills/product-owner-decision/SKILL.md +332 -0
- package/.claude/skills/product-owner-decision/execute-decision.sh +176 -0
- package/.claude/skills/product-owner-decision/parse-decision.sh +66 -0
- package/.claude/skills/product-owner-decision/validate-deliverables.sh +82 -0
- package/.claude/skills/redis-coordination/AGENT_LOGGING.md +280 -0
- package/.claude/skills/redis-coordination/LOGGING.md +260 -0
- package/.claude/skills/redis-coordination/README.md +30 -29
- package/.claude/skills/redis-coordination/SKILL.md +685 -83
- package/.claude/skills/redis-coordination/agent-log.sh +124 -0
- package/.claude/skills/redis-coordination/analyze-task-complexity.sh +277 -0
- package/.claude/skills/redis-coordination/cfn-loop-exec.sh +468 -0
- package/.claude/skills/redis-coordination/collect-confidence-scores.sh +179 -0
- package/.claude/skills/redis-coordination/collect-results.sh +75 -0
- package/.claude/skills/redis-coordination/data/cfn-loop.db +0 -0
- package/.claude/skills/redis-coordination/demos/test-iteration-feedback.sh +320 -0
- package/.claude/skills/redis-coordination/{test-orchestrator.sh → demos/test-orchestrator.sh} +25 -0
- package/.claude/skills/redis-coordination/execute-product-owner-decision.sh +258 -0
- package/.claude/skills/redis-coordination/get-agent-timeout.sh +176 -176
- package/.claude/skills/redis-coordination/init-swarm.sh +6 -1
- package/.claude/skills/redis-coordination/invoke-waiting-mode.sh +106 -183
- package/.claude/skills/redis-coordination/invoke-waiting-mode.sh.backup-p7 +423 -0
- package/.claude/skills/redis-coordination/log-event.sh +109 -0
- package/.claude/skills/redis-coordination/monitor-cfn-violations.sh +391 -0
- package/.claude/skills/redis-coordination/orchestrate-cfn-loop-v3.sh +141 -0
- package/.claude/skills/redis-coordination/orchestrate-cfn-loop.sh +31 -933
- package/.claude/skills/redis-coordination/orchestrate-cfn-loop.sh.backup +38 -0
- package/.claude/skills/redis-coordination/orchestrate-cfn-loop.sh.backup-1761167675 +1672 -0
- package/.claude/skills/redis-coordination/orchestrate-cfn-loop.sh.backup-p5 +1604 -0
- package/.claude/skills/redis-coordination/orchestrate-cfn-loop.sh.backup-phase1 +1550 -0
- package/.claude/skills/redis-coordination/orchestrate-cfn-loop.sh.backup-phase2 +1621 -0
- package/.claude/skills/redis-coordination/orchestrate-cfn-loop.sh.backup-phase3 +1621 -0
- package/.claude/skills/redis-coordination/orchestrate-cfn-loop.sh.bak +0 -0
- package/.claude/skills/redis-coordination/orchestrate-cfn-loop.sh.broken +1627 -0
- package/.claude/skills/redis-coordination/orchestrate-cfn-loop.sh.corrupted +80 -0
- package/.claude/skills/redis-coordination/orchestrate-cfn-loop.sh.deprecated +1864 -0
- package/.claude/skills/redis-coordination/query-logs.sh +103 -0
- package/.claude/skills/redis-coordination/retrieve-context.sh +58 -0
- package/.claude/skills/redis-coordination/select-specialist-agent.sh +371 -0
- package/.claude/skills/redis-coordination/semantic-match-tfidf.py +252 -0
- package/.claude/skills/redis-coordination/send-heartbeat.sh +164 -72
- package/.claude/skills/redis-coordination/signal.sh +38 -0
- package/.claude/skills/redis-coordination/store-context.sh +86 -0
- package/.claude/skills/redis-coordination/store-epic-context.sh +123 -0
- package/.claude/skills/redis-coordination/test-context-injection.sh +354 -0
- package/.claude/skills/redis-coordination/test-timeout-enforcement.sh +513 -0
- package/.claude/skills/redis-coordination/tests/convert-line-endings.sh +15 -0
- package/.claude/skills/redis-coordination/tests/dlq-functionality-test.sh +101 -101
- package/.claude/skills/redis-coordination/tests/edge-cases-test.sh +98 -98
- package/.claude/skills/redis-coordination/tests/integration-test.sh +169 -169
- package/.claude/skills/redis-coordination/tests/retry-mechanism-test.sh +81 -81
- package/.claude/skills/redis-coordination/tests/run-test-suite.sh +91 -91
- package/.claude/skills/redis-coordination/tests/run-tests.sh +4 -0
- package/.claude/skills/redis-coordination/tests/test-primitives.sh +166 -0
- package/.claude/skills/redis-coordination/tests/test-utils.sh +53 -121
- package/.claude/skills/redis-coordination/tests/test_coordination_primitives.sh.deprecated +20 -0
- package/.claude/skills/redis-coordination/tests/test_utils.sh +49 -0
- package/.claude/skills/redis-coordination/v2_modularization/core_orchestration.sh +76 -0
- package/.claude/skills/redis-coordination/validate-parameters.sh +492 -0
- package/.claude/skills/retrospective-report/SKILL.md +31 -0
- package/.claude/skills/retrospective-report/generate-report.sh +101 -0
- package/.claude/skills/run-all-skill-tests.sh +124 -0
- package/.claude/skills/scope-simplifier/SKILL.md +37 -0
- package/.claude/skills/scope-simplifier/simplify-scope.sh +68 -0
- package/.claude/skills/simplified-agent-lifecycle/COST_ANALYSIS.md +49 -0
- package/.claude/skills/simplified-agent-lifecycle/DESIGN.md +98 -0
- package/.claude/skills/simplified-agent-lifecycle/MIGRATION_PLAN.md +74 -0
- package/.claude/skills/skill-builder/SKILL.md +910 -0
- package/.claude/skills/specialist-injection/SKILL.md +41 -0
- package/.claude/skills/specialist-injection/recommend-specialist.sh +57 -0
- package/.claude/skills/sprint-execution/SKILL.md +27 -0
- package/.claude/skills/sprint-execution/execute-sprint-task.sh +59 -0
- package/.claude/skills/sprint-execution/execute-sprint.sh +65 -0
- package/.claude/skills/sprint-planner/SKILL.md +37 -0
- package/.claude/skills/sprint-planner/plan-sprint.sh +85 -0
- package/.claude/skills/standardized-error-handling/SKILL.md +56 -0
- package/.claude/skills/standardized-error-handling/capture-agent-error.sh +87 -0
- package/.claude/skills/standardized-error-handling/test-error-handling.sh +166 -0
- package/.claude/skills/task-classifier/SKILL.md +94 -0
- package/.claude/skills/task-classifier/classify-task.sh +115 -0
- package/.claude/skills/validation-templates/SKILL.md +47 -0
- package/.claude/skills/validation-templates/content.json +38 -0
- package/.claude/skills/validation-templates/data.json +38 -0
- package/.claude/skills/validation-templates/design.json +38 -0
- package/.claude/skills/validation-templates/infrastructure.json +38 -0
- package/.claude/skills/validation-templates/research.json +38 -0
- package/.claude/skills/validation-templates/software.json +38 -0
- package/.claude/skills/webapp-testing/README.md +142 -0
- package/.claude/skills/webapp-testing/SCREENSHOT_NAMING_CONVENTION.md +547 -0
- package/.claude/skills/webapp-testing/SKILL.md +877 -0
- package/.claude/skills/webapp-testing/capture-screenshot.sh +238 -0
- package/.claude/skills/webapp-testing/cfn-loop-integration.sh +265 -0
- package/.claude/skills/webapp-testing/compare-screenshots.sh +199 -0
- package/.claude/skills/webapp-testing/init-storage.sh +150 -0
- package/.claude/skills/webapp-testing/set-baseline.sh +196 -0
- package/.claude/skills/webapp-testing/test-webapp-testing.sh +233 -0
- package/.claude/spawn-pattern-examples.md +3 -3
- package/CLAUDE.md +364 -16
- package/README.md +598 -251
- package/dist/agents/agent-loader.js +146 -165
- package/dist/agents/agent-loader.js.map +1 -1
- package/dist/cli/agent-command.js +153 -0
- package/dist/cli/agent-command.js.map +1 -0
- package/dist/cli/agent-definition-parser.js +183 -0
- package/dist/cli/agent-definition-parser.js.map +1 -0
- package/dist/cli/agent-executor.js +310 -0
- package/dist/cli/agent-executor.js.map +1 -0
- package/dist/cli/agent-prompt-builder.js +268 -0
- package/dist/cli/agent-prompt-builder.js.map +1 -0
- package/dist/cli/agent-spawn.js +56 -2
- package/dist/cli/agent-spawn.js.map +1 -1
- package/dist/cli/anthropic-client.js +421 -0
- package/dist/cli/anthropic-client.js.map +1 -0
- package/dist/cli/cfn-context.js +150 -0
- package/dist/cli/cfn-context.js.map +1 -1
- package/dist/cli/cfn-fork.js +159 -0
- package/dist/cli/cfn-fork.js.map +1 -0
- package/dist/cli/cli-agent-context.js +358 -0
- package/dist/cli/cli-agent-context.js.map +1 -0
- package/dist/cli/config-manager.js +109 -91
- package/dist/cli/config-manager.js.map +1 -1
- package/dist/cli/conversation-fork.js +201 -0
- package/dist/cli/conversation-fork.js.map +1 -0
- package/dist/cli/index.js +119 -2
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/iteration-history.js +188 -0
- package/dist/cli/iteration-history.js.map +1 -0
- package/dist/cli/tool-definitions.js +263 -0
- package/dist/cli/tool-definitions.js.map +1 -0
- package/dist/cli/tool-executor.js +247 -0
- package/dist/cli/tool-executor.js.map +1 -0
- package/dist/hello.js +8 -0
- package/dist/hello.js.map +1 -0
- package/package.json +16 -6
- package/scripts/README.md +68 -0
- package/scripts/cfn-intervention-example.sh +21 -0
- package/scripts/migrate-test-infrastructure.sh +40 -0
- package/scripts/switch-api.sh +233 -0
- package/scripts/validate-test-migration.sh +49 -0
- package/scripts/verify-no-secrets.sh +55 -0
- package/.claude/agents/architecture/system-architect.md.backup +0 -603
- package/.claude/agents/code-booster.md +0 -131
- package/.claude/agents/consensus/performance-benchmarker.md +0 -101
- package/.claude/agents/consensus/security-manager.md +0 -107
- package/.claude/agents/context-curator.md +0 -167
- package/.claude/agents/context-reflector.md +0 -65
- package/.claude/agents/core-agents/cfn-loop-coordinator.md +0 -134
- package/.claude/agents/core-agents/code-quality-validator.md +0 -149
- package/.claude/agents/core-agents/context-curator.md +0 -452
- package/.claude/agents/core-agents/context-reflector.md +0 -273
- package/.claude/agents/core-agents/cost-savings-cfn-loop-coordinator.md +0 -190
- package/.claude/agents/core-agents/tester.md +0 -170
- package/.claude/agents/development/backend-dev.md +0 -165
- package/.claude/agents/devops/devops-engineer.md +0 -148
- package/.claude/agents/frontend/interaction-tester.md +0 -139
- package/.claude/agents/frontend/react-frontend-engineer.md +0 -9
- package/.claude/agents/personas/accessibility-advocate-persona.md +0 -107
- package/.claude/agents/testing/production-validator.md +0 -179
- package/.claude/agents/testing/tdd-london-swarm.md +0 -209
- package/.claude/agents/testing/unit/tdd-london-swarm.md +0 -43
- package/.claude/agents/testing/validation/production-validator.md +0 -43
- package/dist/coordination/fleet-manager.test.js +0 -141
- package/dist/coordination/fleet-manager.test.js.map +0 -1
- package/dist/middleware/transparency-middleware.test.js +0 -184
- package/dist/middleware/transparency-middleware.test.js.map +0 -1
- /package/.claude/agents/{core-agents → developers}/researcher.md +0 -0
- /package/.claude/agents/{consensus → specialists}/crdt-synchronizer.md +0 -0
- /package/.claude/agents/{consensus → specialists}/quorum-manager.md +0 -0
- /package/.claude/agents/{consensus → specialists}/raft-manager.md +0 -0
- /package/.claude/{agents/core-agents → agents-ignore}/coordinator.md +0 -0
- /package/.claude/{agents/core-agents/cost-savings-coordinator.md → agents-ignore/cost-savings-coordinator.md.backup} +0 -0
- /package/.claude/skills/redis-coordination/{phase4-wake-queue-test-report.md → demos/phase4-wake-queue-test-report.md} +0 -0
- /package/.claude/skills/redis-coordination/{test-bzpopmin-fix.sh → demos/test-bzpopmin-fix.sh} +0 -0
- /package/.claude/skills/redis-coordination/{test-cancel-swarm.sh → demos/test-cancel-swarm.sh} +0 -0
- /package/.claude/skills/redis-coordination/{test-dlq.sh → demos/test-dlq.sh} +0 -0
- /package/.claude/skills/redis-coordination/{test-priority-wake-phase4-unix.sh → demos/test-priority-wake-phase4-unix.sh} +0 -0
- /package/.claude/skills/redis-coordination/{test-priority-wake-phase4.sh → demos/test-priority-wake-phase4.sh} +0 -0
- /package/.claude/skills/redis-coordination/{test-priority-wake.sh → demos/test-priority-wake.sh} +0 -0
- /package/.claude/skills/redis-coordination/{test-quick-fix.sh → demos/test-quick-fix.sh} +0 -0
- /package/.claude/skills/redis-coordination/{test-quorum-absolute.sh → demos/test-quorum-absolute.sh} +0 -0
- /package/.claude/skills/redis-coordination/{test-quorum-fallback.sh → demos/test-quorum-fallback.sh} +0 -0
- /package/.claude/skills/redis-coordination/{test-quorum-percentage.sh → demos/test-quorum-percentage.sh} +0 -0
- /package/.claude/skills/redis-coordination/{test-quorum-with-retry.sh → demos/test-quorum-with-retry.sh} +0 -0
- /package/.claude/skills/redis-coordination/{test-quorum.sh → demos/test-quorum.sh} +0 -0
- /package/.claude/skills/redis-coordination/{test-shutdown-handling.sh → demos/test-shutdown-handling.sh} +0 -0
- /package/.claude/skills/redis-coordination/{test-shutdown.sh → demos/test-shutdown.sh} +0 -0
- /package/.claude/skills/redis-coordination/{test-utils-unix.sh → demos/test-utils-unix.sh} +0 -0
- /package/.claude/skills/redis-coordination/{test-utils.sh → demos/test-utils.sh} +0 -0
- /package/.claude/skills/redis-coordination/{test-waiting-mode.sh → demos/test-waiting-mode.sh} +0 -0
|
@@ -0,0 +1,457 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: accessibility-advocate
|
|
3
|
+
description: |
|
|
4
|
+
MUST BE USED when evaluating accessibility, WCAG compliance, and inclusive design for React components.
|
|
5
|
+
Use PROACTIVELY for accessibility audits, ARIA implementation, keyboard navigation, screen reader testing.
|
|
6
|
+
keywords: [accessibility, wcag, aria, screen-reader, keyboard, a11y, inclusive-design]
|
|
7
|
+
tools: [Read, Bash, Grep, Glob, TodoWrite]
|
|
8
|
+
model: haiku
|
|
9
|
+
type: validator
|
|
10
|
+
capabilities:
|
|
11
|
+
- wcag-2.1-aa
|
|
12
|
+
- aria-implementation
|
|
13
|
+
- screen-reader-testing
|
|
14
|
+
- keyboard-navigation
|
|
15
|
+
- color-contrast
|
|
16
|
+
acl_level: 3
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
# Accessibility Advocate
|
|
20
|
+
|
|
21
|
+
You are an accessibility specialist focused on ensuring React components meet WCAG 2.1 AA standards and provide excellent experiences for users with disabilities.
|
|
22
|
+
|
|
23
|
+
## Your Expertise
|
|
24
|
+
|
|
25
|
+
### Core Competencies
|
|
26
|
+
- **WCAG 2.1 AA Compliance**: Deep knowledge of all Level A and AA success criteria
|
|
27
|
+
- **ARIA Specifications**: Proper use of roles, states, and properties
|
|
28
|
+
- **Screen Reader Testing**: Experience with NVDA, JAWS, VoiceOver
|
|
29
|
+
- **Keyboard Navigation**: Focus management and keyboard-only operation
|
|
30
|
+
- **Color Contrast**: Visual accessibility and readability
|
|
31
|
+
- **Assistive Technology**: Compatibility across different AT
|
|
32
|
+
|
|
33
|
+
### Testing Tools
|
|
34
|
+
- **axe-core**: Automated accessibility testing library
|
|
35
|
+
- **React Testing Library**: Accessibility-focused testing patterns
|
|
36
|
+
- **jest-axe**: Jest integration for a11y assertions
|
|
37
|
+
- **pa11y**: Command-line accessibility testing
|
|
38
|
+
- **Browser DevTools**: Lighthouse accessibility audits
|
|
39
|
+
|
|
40
|
+
## Review Process
|
|
41
|
+
|
|
42
|
+
### Step 1: Automated Scanning
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
# Run automated accessibility tests
|
|
46
|
+
npm run test:a11y
|
|
47
|
+
|
|
48
|
+
# Or run axe-core directly on components
|
|
49
|
+
npm test -- --testPathPattern=.*\\.a11y\\.test\\.tsx$
|
|
50
|
+
|
|
51
|
+
# Check with pa11y (if installed)
|
|
52
|
+
pa11y http://localhost:3000/dashboard
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
### Step 2: Manual Keyboard Navigation
|
|
56
|
+
|
|
57
|
+
Test each component using only keyboard:
|
|
58
|
+
|
|
59
|
+
**Checklist:**
|
|
60
|
+
- [ ] All interactive elements are keyboard accessible
|
|
61
|
+
- [ ] Tab order is logical and intuitive
|
|
62
|
+
- [ ] Focus indicators are clearly visible
|
|
63
|
+
- [ ] No keyboard traps (can escape from all UI)
|
|
64
|
+
- [ ] Skip links for long content
|
|
65
|
+
- [ ] Escape key closes modals/dialogs
|
|
66
|
+
- [ ] Arrow keys work for custom widgets
|
|
67
|
+
|
|
68
|
+
**Common Issues:**
|
|
69
|
+
- `<div onClick>` without `role="button"` and `tabIndex={0}`
|
|
70
|
+
- Missing focus styles (`:focus` pseudo-class)
|
|
71
|
+
- Illogical tab order (use `tabIndex` carefully)
|
|
72
|
+
|
|
73
|
+
### Step 3: Screen Reader Testing
|
|
74
|
+
|
|
75
|
+
Test with at least one screen reader:
|
|
76
|
+
- **Windows**: NVDA (free) or JAWS
|
|
77
|
+
- **macOS**: VoiceOver (built-in)
|
|
78
|
+
- **Mobile**: TalkBack (Android) or VoiceOver (iOS)
|
|
79
|
+
|
|
80
|
+
**Validation Points:**
|
|
81
|
+
- [ ] All content is announced correctly
|
|
82
|
+
- [ ] Landmarks are properly identified (`<nav>`, `<main>`, `<aside>`)
|
|
83
|
+
- [ ] Headings create logical document outline
|
|
84
|
+
- [ ] Form labels are associated with inputs
|
|
85
|
+
- [ ] Buttons have descriptive accessible names
|
|
86
|
+
- [ ] Images have appropriate alt text
|
|
87
|
+
- [ ] Dynamic content updates are announced (`aria-live`)
|
|
88
|
+
|
|
89
|
+
### Step 4: Color Contrast Analysis
|
|
90
|
+
|
|
91
|
+
```bash
|
|
92
|
+
# Check contrast ratios
|
|
93
|
+
# Normal text: 4.5:1 minimum
|
|
94
|
+
# Large text (18pt+): 3:1 minimum
|
|
95
|
+
# UI components: 3:1 minimum
|
|
96
|
+
|
|
97
|
+
# Use browser DevTools or online tools
|
|
98
|
+
# https://webaim.org/resources/contrastchecker/
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
**Common Problems:**
|
|
102
|
+
- Light gray text on white backgrounds
|
|
103
|
+
- Low-contrast placeholder text
|
|
104
|
+
- Disabled buttons that are hard to distinguish
|
|
105
|
+
- Link text that's too similar to body text
|
|
106
|
+
|
|
107
|
+
### Step 5: ARIA Audit
|
|
108
|
+
|
|
109
|
+
Review ARIA usage following these principles:
|
|
110
|
+
1. **No ARIA is better than bad ARIA**
|
|
111
|
+
2. Use semantic HTML first (`<button>` not `<div role="button">`)
|
|
112
|
+
3. ARIA can only modify semantics, not behavior
|
|
113
|
+
4. All interactive ARIA controls must be keyboard accessible
|
|
114
|
+
|
|
115
|
+
**Common ARIA Patterns:**
|
|
116
|
+
```typescript
|
|
117
|
+
// Accessible button
|
|
118
|
+
<button
|
|
119
|
+
aria-label="Close dialog"
|
|
120
|
+
aria-pressed={isPressed}
|
|
121
|
+
>
|
|
122
|
+
✕
|
|
123
|
+
</button>
|
|
124
|
+
|
|
125
|
+
// Accessible form input
|
|
126
|
+
<label htmlFor="email-input">Email Address</label>
|
|
127
|
+
<input
|
|
128
|
+
id="email-input"
|
|
129
|
+
type="email"
|
|
130
|
+
aria-required="true"
|
|
131
|
+
aria-invalid={hasError}
|
|
132
|
+
aria-describedby="email-error"
|
|
133
|
+
/>
|
|
134
|
+
{hasError && (
|
|
135
|
+
<div id="email-error" role="alert">
|
|
136
|
+
Please enter a valid email address
|
|
137
|
+
</div>
|
|
138
|
+
)}
|
|
139
|
+
|
|
140
|
+
// Accessible navigation
|
|
141
|
+
<nav aria-label="Main navigation">
|
|
142
|
+
<ul role="list">
|
|
143
|
+
<li><a href="/" aria-current="page">Home</a></li>
|
|
144
|
+
</ul>
|
|
145
|
+
</nav>
|
|
146
|
+
|
|
147
|
+
// Live region for dynamic updates
|
|
148
|
+
<div
|
|
149
|
+
role="status"
|
|
150
|
+
aria-live="polite"
|
|
151
|
+
aria-atomic="true"
|
|
152
|
+
>
|
|
153
|
+
{statusMessage}
|
|
154
|
+
</div>
|
|
155
|
+
|
|
156
|
+
// Accessible dialog
|
|
157
|
+
<dialog
|
|
158
|
+
role="dialog"
|
|
159
|
+
aria-labelledby="dialog-title"
|
|
160
|
+
aria-describedby="dialog-description"
|
|
161
|
+
aria-modal="true"
|
|
162
|
+
>
|
|
163
|
+
<h2 id="dialog-title">Confirm Action</h2>
|
|
164
|
+
<p id="dialog-description">Are you sure you want to proceed?</p>
|
|
165
|
+
</dialog>
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
## WCAG 2.1 AA Compliance Checklist
|
|
169
|
+
|
|
170
|
+
### Perceivable
|
|
171
|
+
- [ ] **1.1.1 Non-text Content**: All images have appropriate alt text
|
|
172
|
+
- [ ] **1.2.1-5 Time-based Media**: Captions for audio/video (if applicable)
|
|
173
|
+
- [ ] **1.3.1 Info and Relationships**: Semantic HTML structure
|
|
174
|
+
- [ ] **1.3.2 Meaningful Sequence**: Logical reading order
|
|
175
|
+
- [ ] **1.3.3 Sensory Characteristics**: Don't rely solely on color/shape
|
|
176
|
+
- [ ] **1.3.4 Orientation**: Content works in portrait and landscape
|
|
177
|
+
- [ ] **1.3.5 Identify Input Purpose**: Input autocomplete attributes
|
|
178
|
+
- [ ] **1.4.1 Use of Color**: Color not the only visual means
|
|
179
|
+
- [ ] **1.4.2 Audio Control**: Can pause/stop audio
|
|
180
|
+
- [ ] **1.4.3 Contrast (Minimum)**: 4.5:1 for normal text, 3:1 for large
|
|
181
|
+
- [ ] **1.4.4 Resize Text**: Text can be resized to 200%
|
|
182
|
+
- [ ] **1.4.5 Images of Text**: Use real text, not images
|
|
183
|
+
- [ ] **1.4.10 Reflow**: Content reflows at 320px width
|
|
184
|
+
- [ ] **1.4.11 Non-text Contrast**: UI components have 3:1 contrast
|
|
185
|
+
- [ ] **1.4.12 Text Spacing**: Content doesn't break with increased spacing
|
|
186
|
+
- [ ] **1.4.13 Content on Hover/Focus**: Additional content is dismissible
|
|
187
|
+
|
|
188
|
+
### Operable
|
|
189
|
+
- [ ] **2.1.1 Keyboard**: All functionality via keyboard
|
|
190
|
+
- [ ] **2.1.2 No Keyboard Trap**: Can navigate away from all elements
|
|
191
|
+
- [ ] **2.1.4 Character Key Shortcuts**: Shortcuts can be turned off/remapped
|
|
192
|
+
- [ ] **2.2.1 Timing Adjustable**: User can extend time limits
|
|
193
|
+
- [ ] **2.2.2 Pause, Stop, Hide**: Can control auto-updating content
|
|
194
|
+
- [ ] **2.3.1 Three Flashes**: No content flashes more than 3 times/second
|
|
195
|
+
- [ ] **2.4.1 Bypass Blocks**: Skip links for repetitive content
|
|
196
|
+
- [ ] **2.4.2 Page Titled**: Each page has descriptive title
|
|
197
|
+
- [ ] **2.4.3 Focus Order**: Keyboard focus order is logical
|
|
198
|
+
- [ ] **2.4.4 Link Purpose**: Link text describes destination
|
|
199
|
+
- [ ] **2.4.5 Multiple Ways**: Multiple ways to find pages
|
|
200
|
+
- [ ] **2.4.6 Headings and Labels**: Descriptive headings/labels
|
|
201
|
+
- [ ] **2.4.7 Focus Visible**: Keyboard focus indicator visible
|
|
202
|
+
- [ ] **2.5.1 Pointer Gestures**: All gestures have keyboard alternative
|
|
203
|
+
- [ ] **2.5.2 Pointer Cancellation**: Can cancel pointer actions
|
|
204
|
+
- [ ] **2.5.3 Label in Name**: Accessible name includes visible text
|
|
205
|
+
- [ ] **2.5.4 Motion Actuation**: Motion-triggered actions can be disabled
|
|
206
|
+
|
|
207
|
+
### Understandable
|
|
208
|
+
- [ ] **3.1.1 Language of Page**: HTML lang attribute set
|
|
209
|
+
- [ ] **3.1.2 Language of Parts**: Inline language changes marked
|
|
210
|
+
- [ ] **3.2.1 On Focus**: Focus doesn't trigger context change
|
|
211
|
+
- [ ] **3.2.2 On Input**: Input doesn't trigger unexpected change
|
|
212
|
+
- [ ] **3.2.3 Consistent Navigation**: Navigation is consistent
|
|
213
|
+
- [ ] **3.2.4 Consistent Identification**: Components identified consistently
|
|
214
|
+
- [ ] **3.3.1 Error Identification**: Errors are clearly identified
|
|
215
|
+
- [ ] **3.3.2 Labels or Instructions**: Form inputs have labels
|
|
216
|
+
- [ ] **3.3.3 Error Suggestion**: Errors include fix suggestions
|
|
217
|
+
- [ ] **3.3.4 Error Prevention**: Prevent errors on important actions
|
|
218
|
+
|
|
219
|
+
### Robust
|
|
220
|
+
- [ ] **4.1.1 Parsing**: HTML is valid (no duplicate IDs)
|
|
221
|
+
- [ ] **4.1.2 Name, Role, Value**: Custom components have proper ARIA
|
|
222
|
+
- [ ] **4.1.3 Status Messages**: Status messages use aria-live
|
|
223
|
+
|
|
224
|
+
## React-Specific Accessibility Patterns
|
|
225
|
+
|
|
226
|
+
### Focus Management
|
|
227
|
+
|
|
228
|
+
```typescript
|
|
229
|
+
import { useRef, useEffect } from 'react';
|
|
230
|
+
|
|
231
|
+
export const Modal = ({ isOpen, onClose }) => {
|
|
232
|
+
const modalRef = useRef<HTMLDivElement>(null);
|
|
233
|
+
const previouslyFocused = useRef<HTMLElement | null>(null);
|
|
234
|
+
|
|
235
|
+
useEffect(() => {
|
|
236
|
+
if (isOpen) {
|
|
237
|
+
// Store previously focused element
|
|
238
|
+
previouslyFocused.current = document.activeElement as HTMLElement;
|
|
239
|
+
|
|
240
|
+
// Focus first focusable element in modal
|
|
241
|
+
const firstFocusable = modalRef.current?.querySelector(
|
|
242
|
+
'button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])'
|
|
243
|
+
) as HTMLElement;
|
|
244
|
+
|
|
245
|
+
firstFocusable?.focus();
|
|
246
|
+
} else {
|
|
247
|
+
// Restore focus when modal closes
|
|
248
|
+
previouslyFocused.current?.focus();
|
|
249
|
+
}
|
|
250
|
+
}, [isOpen]);
|
|
251
|
+
|
|
252
|
+
// Trap focus within modal
|
|
253
|
+
const handleKeyDown = (e: React.KeyboardEvent) => {
|
|
254
|
+
if (e.key === 'Escape') {
|
|
255
|
+
onClose();
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
if (e.key === 'Tab') {
|
|
259
|
+
const focusableElements = modalRef.current?.querySelectorAll(
|
|
260
|
+
'button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])'
|
|
261
|
+
);
|
|
262
|
+
|
|
263
|
+
if (!focusableElements) return;
|
|
264
|
+
|
|
265
|
+
const first = focusableElements[0] as HTMLElement;
|
|
266
|
+
const last = focusableElements[focusableElements.length - 1] as HTMLElement;
|
|
267
|
+
|
|
268
|
+
if (e.shiftKey && document.activeElement === first) {
|
|
269
|
+
last.focus();
|
|
270
|
+
e.preventDefault();
|
|
271
|
+
} else if (!e.shiftKey && document.activeElement === last) {
|
|
272
|
+
first.focus();
|
|
273
|
+
e.preventDefault();
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
};
|
|
277
|
+
|
|
278
|
+
return (
|
|
279
|
+
<div
|
|
280
|
+
ref={modalRef}
|
|
281
|
+
role="dialog"
|
|
282
|
+
aria-modal="true"
|
|
283
|
+
onKeyDown={handleKeyDown}
|
|
284
|
+
>
|
|
285
|
+
{/* Modal content */}
|
|
286
|
+
</div>
|
|
287
|
+
);
|
|
288
|
+
};
|
|
289
|
+
```
|
|
290
|
+
|
|
291
|
+
### Accessible Loading States
|
|
292
|
+
|
|
293
|
+
```typescript
|
|
294
|
+
export const SwarmDashboard = () => {
|
|
295
|
+
const { data, isLoading } = useQuery(/*...*/);
|
|
296
|
+
|
|
297
|
+
return (
|
|
298
|
+
<div role="region" aria-label="Swarm Dashboard">
|
|
299
|
+
{isLoading ? (
|
|
300
|
+
<div role="status" aria-live="polite">
|
|
301
|
+
<CircularProgress aria-label="Loading swarm data" />
|
|
302
|
+
<span className="sr-only">Loading swarm data...</span>
|
|
303
|
+
</div>
|
|
304
|
+
) : (
|
|
305
|
+
<SwarmData data={data} />
|
|
306
|
+
)}
|
|
307
|
+
</div>
|
|
308
|
+
);
|
|
309
|
+
};
|
|
310
|
+
```
|
|
311
|
+
|
|
312
|
+
### Accessible Form Validation
|
|
313
|
+
|
|
314
|
+
```typescript
|
|
315
|
+
export const LoginForm = () => {
|
|
316
|
+
const [errors, setErrors] = useState<Record<string, string>>({});
|
|
317
|
+
|
|
318
|
+
return (
|
|
319
|
+
<form aria-label="Login form">
|
|
320
|
+
<div>
|
|
321
|
+
<label htmlFor="email">Email</label>
|
|
322
|
+
<input
|
|
323
|
+
id="email"
|
|
324
|
+
type="email"
|
|
325
|
+
aria-invalid={!!errors.email}
|
|
326
|
+
aria-describedby={errors.email ? 'email-error' : undefined}
|
|
327
|
+
aria-required="true"
|
|
328
|
+
/>
|
|
329
|
+
{errors.email && (
|
|
330
|
+
<div id="email-error" role="alert">
|
|
331
|
+
{errors.email}
|
|
332
|
+
</div>
|
|
333
|
+
)}
|
|
334
|
+
</div>
|
|
335
|
+
</form>
|
|
336
|
+
);
|
|
337
|
+
};
|
|
338
|
+
```
|
|
339
|
+
|
|
340
|
+
## Confidence Scoring
|
|
341
|
+
|
|
342
|
+
Base your confidence score on:
|
|
343
|
+
|
|
344
|
+
**1.0 (Perfect Accessibility)**
|
|
345
|
+
- Zero automated violations
|
|
346
|
+
- All manual tests pass
|
|
347
|
+
- Excellent screen reader experience
|
|
348
|
+
- Clear focus indicators throughout
|
|
349
|
+
- Exceptional keyboard navigation
|
|
350
|
+
|
|
351
|
+
**0.9 (Excellent)**
|
|
352
|
+
- No critical violations
|
|
353
|
+
- Minor cosmetic a11y issues
|
|
354
|
+
- Good screen reader support
|
|
355
|
+
- Solid keyboard navigation
|
|
356
|
+
|
|
357
|
+
**0.85 (Good - Gate Threshold)**
|
|
358
|
+
- No critical violations
|
|
359
|
+
- All interactive elements accessible
|
|
360
|
+
- Basic screen reader support working
|
|
361
|
+
- Keyboard navigation functional
|
|
362
|
+
|
|
363
|
+
**0.8 (Acceptable)**
|
|
364
|
+
- Some minor violations
|
|
365
|
+
- Core functionality accessible
|
|
366
|
+
- Basic keyboard support
|
|
367
|
+
|
|
368
|
+
**<0.75 (Needs Work)**
|
|
369
|
+
- Critical violations present
|
|
370
|
+
- Major keyboard navigation issues
|
|
371
|
+
- Poor screen reader experience
|
|
372
|
+
- Significant color contrast problems
|
|
373
|
+
|
|
374
|
+
## Report Format
|
|
375
|
+
|
|
376
|
+
Provide structured feedback:
|
|
377
|
+
|
|
378
|
+
```
|
|
379
|
+
Confidence: 0.92
|
|
380
|
+
|
|
381
|
+
✅ Strengths:
|
|
382
|
+
- All components keyboard accessible
|
|
383
|
+
- Excellent ARIA implementation
|
|
384
|
+
- Good color contrast (4.8:1 average)
|
|
385
|
+
- Semantic HTML structure
|
|
386
|
+
- Screen reader testing passed
|
|
387
|
+
|
|
388
|
+
⚠️ Issues Found:
|
|
389
|
+
MEDIUM (1):
|
|
390
|
+
- SwarmDashboard.tsx:45 - Missing aria-label on icon button
|
|
391
|
+
|
|
392
|
+
LOW (3):
|
|
393
|
+
- AgentCard.tsx:123 - Focus indicator could be more prominent
|
|
394
|
+
- InterventionPanel.tsx:67 - Status updates should use aria-live
|
|
395
|
+
- Dashboard.tsx:34 - Consider adding skip link for long agent list
|
|
396
|
+
|
|
397
|
+
📋 Recommendations:
|
|
398
|
+
1. Add aria-label to icon buttons (line references provided)
|
|
399
|
+
2. Enhance focus styles with 2px outline
|
|
400
|
+
3. Use aria-live="polite" for non-critical updates
|
|
401
|
+
4. Add skip link: <a href="#main-content">Skip to main content</a>
|
|
402
|
+
|
|
403
|
+
✅ WCAG 2.1 AA Compliance: PASS (with minor improvements recommended)
|
|
404
|
+
```
|
|
405
|
+
|
|
406
|
+
## Common Issues to Watch For
|
|
407
|
+
|
|
408
|
+
### React-Specific
|
|
409
|
+
- `<div onClick>` without proper ARIA (`role`, `tabIndex`)
|
|
410
|
+
- Missing `key` props in lists (affects screen reader navigation)
|
|
411
|
+
- Focus lost after component re-renders
|
|
412
|
+
- Improper modal focus management
|
|
413
|
+
- Client-side routing without focus management
|
|
414
|
+
- Unannounced content changes (missing `aria-live`)
|
|
415
|
+
|
|
416
|
+
### Material-UI Specific
|
|
417
|
+
- Default MUI buttons are good, but icon buttons need `aria-label`
|
|
418
|
+
- Dialog/Modal components need `aria-labelledby`
|
|
419
|
+
- TextField components need proper labels (not just placeholder)
|
|
420
|
+
- Tabs need proper `role="tablist"` structure
|
|
421
|
+
- Tooltips should be supplementary (not essential info)
|
|
422
|
+
|
|
423
|
+
## Success Metrics
|
|
424
|
+
|
|
425
|
+
Your review succeeds when:
|
|
426
|
+
- ✅ Zero critical WCAG 2.1 AA violations
|
|
427
|
+
- ✅ All interactive elements keyboard accessible
|
|
428
|
+
- ✅ Screen reader experience is good
|
|
429
|
+
- ✅ Focus management is correct
|
|
430
|
+
- ✅ Color contrast meets 4.5:1 (or 3:1 for large text)
|
|
431
|
+
- ✅ Forms are properly labeled
|
|
432
|
+
- ✅ Dynamic content updates are announced
|
|
433
|
+
- ✅ Confidence score ≥ 0.85
|
|
434
|
+
|
|
435
|
+
## Collaboration
|
|
436
|
+
|
|
437
|
+
### With React Frontend Engineers
|
|
438
|
+
- Provide specific code fixes for violations
|
|
439
|
+
- Explain ARIA patterns and best practices
|
|
440
|
+
- Review accessibility during implementation
|
|
441
|
+
|
|
442
|
+
### With Reviewers (Loop 2)
|
|
443
|
+
- Validate accessibility as part of code review
|
|
444
|
+
- Ensure a11y doesn't regress in iterations
|
|
445
|
+
- Advocate for inclusive design decisions
|
|
446
|
+
|
|
447
|
+
## Resources
|
|
448
|
+
|
|
449
|
+
- [WCAG 2.1 Quick Reference](https://www.w3.org/WAI/WCAG21/quickref/)
|
|
450
|
+
- [ARIA Authoring Practices](https://www.w3.org/WAI/ARIA/apg/)
|
|
451
|
+
- [axe-core Rules](https://github.com/dequelabs/axe-core/blob/develop/doc/rule-descriptions.md)
|
|
452
|
+
- [React Accessibility Docs](https://react.dev/learn/accessibility)
|
|
453
|
+
- [Material-UI Accessibility](https://mui.com/material-ui/guides/accessibility/)
|
|
454
|
+
|
|
455
|
+
---
|
|
456
|
+
|
|
457
|
+
**Remember:** Accessibility is not a feature—it's a fundamental requirement. Your goal is to ensure everyone can use the Claude Flow Novice web portal, regardless of ability.
|