proagents 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +170 -0
- package/bin/proagents.js +90 -0
- package/lib/commands/feature.js +125 -0
- package/lib/commands/fix.js +60 -0
- package/lib/commands/help.js +76 -0
- package/lib/commands/init.js +64 -0
- package/lib/commands/status.js +91 -0
- package/lib/index.js +28 -0
- package/package.json +52 -0
- package/proagents/.learning/global/common-patterns.json +77 -0
- package/proagents/.learning/global/user-preferences.json +76 -0
- package/proagents/.learning/projects/example-project/corrections.json +99 -0
- package/proagents/.learning/projects/example-project/feedback.json +109 -0
- package/proagents/.learning/projects/example-project/metrics.json +101 -0
- package/proagents/.learning/projects/example-project/patterns.json +102 -0
- package/proagents/.learning/schemas/README.md +48 -0
- package/proagents/.learning/schemas/corrections-schema.json +100 -0
- package/proagents/.learning/schemas/feedback-schema.json +144 -0
- package/proagents/.learning/schemas/metrics-schema.json +96 -0
- package/proagents/.learning/schemas/patterns-schema.json +82 -0
- package/proagents/.learning/schemas/project-patterns-schema.json +125 -0
- package/proagents/.learning/schemas/user-preferences-schema.json +136 -0
- package/proagents/GETTING-STARTED-STORY.md +708 -0
- package/proagents/README.md +99 -0
- package/proagents/WORKFLOW.md +1234 -0
- package/proagents/active-features/.gitkeep +0 -0
- package/proagents/active-features/README.md +176 -0
- package/proagents/active-features/_index.json +74 -0
- package/proagents/active-features/feature-user-auth/dependencies.json +81 -0
- package/proagents/active-features/feature-user-auth/files-modified.json +126 -0
- package/proagents/active-features/feature-user-auth/status.json +122 -0
- package/proagents/active-features/schemas/dependencies-schema.json +119 -0
- package/proagents/active-features/schemas/feature-schema.json +132 -0
- package/proagents/active-features/schemas/files-schema.json +100 -0
- package/proagents/active-features/schemas/index-schema.json +95 -0
- package/proagents/adr/README.md +302 -0
- package/proagents/adr/examples/api-versioning.md +297 -0
- package/proagents/adr/examples/database-choice.md +264 -0
- package/proagents/adr/template.md +273 -0
- package/proagents/ai-models/README.md +141 -0
- package/proagents/ai-models/cost-management.md +362 -0
- package/proagents/ai-models/fallbacks.md +342 -0
- package/proagents/ai-models/model-config.md +318 -0
- package/proagents/ai-models/task-routing.md +503 -0
- package/proagents/ai-training/README.md +155 -0
- package/proagents/ai-training/continuous-learning.md +413 -0
- package/proagents/ai-training/domain-knowledge.md +378 -0
- package/proagents/ai-training/pattern-learning.md +455 -0
- package/proagents/ai-training/training-data.md +337 -0
- package/proagents/ai-training/user-preferences.md +346 -0
- package/proagents/api-versioning/README.md +257 -0
- package/proagents/api-versioning/changelog-template.md +225 -0
- package/proagents/api-versioning/deprecation-workflow.md +470 -0
- package/proagents/api-versioning/versioning-strategy.md +291 -0
- package/proagents/approval-workflows/README.md +146 -0
- package/proagents/approval-workflows/approval-config.md +332 -0
- package/proagents/approval-workflows/approval-stages.md +503 -0
- package/proagents/approval-workflows/emergency-bypass.md +351 -0
- package/proagents/approval-workflows/examples.md +859 -0
- package/proagents/approval-workflows/notifications.md +320 -0
- package/proagents/automation/README.md +38 -0
- package/proagents/automation/ai-behavior-rules.md +339 -0
- package/proagents/automation/ai-prompt-injection.md +331 -0
- package/proagents/automation/auto-decisions.md +535 -0
- package/proagents/automation/decision-defaults.yaml +317 -0
- package/proagents/cache/README.md +110 -0
- package/proagents/cache/analysis-metadata.json +76 -0
- package/proagents/cache/conventions.json +125 -0
- package/proagents/cache/dependencies.json +85 -0
- package/proagents/cache/features.json +115 -0
- package/proagents/cache/patterns.json +105 -0
- package/proagents/cache/schemas/conventions-schema.json +138 -0
- package/proagents/cache/schemas/dependencies-schema.json +95 -0
- package/proagents/cache/schemas/features-schema.json +104 -0
- package/proagents/cache/schemas/metadata-schema.json +83 -0
- package/proagents/cache/schemas/patterns-schema.json +136 -0
- package/proagents/cache/schemas/structure-schema.json +72 -0
- package/proagents/cache/structure.json +109 -0
- package/proagents/changelog/2024/01/2024-01-10-api-url-config.md +41 -0
- package/proagents/changelog/2024/01/2024-01-12-login-bug-fix.md +69 -0
- package/proagents/changelog/2024/01/2024-01-15-user-auth-feature.md +99 -0
- package/proagents/changelog/CHANGELOG.md +82 -0
- package/proagents/changelog/README.md +327 -0
- package/proagents/changelog/entry-template.md +283 -0
- package/proagents/checklists/README.md +261 -0
- package/proagents/checklists/code-quality.md +137 -0
- package/proagents/checklists/code-review.md +148 -0
- package/proagents/checklists/pr-checklist.md +78 -0
- package/proagents/checklists/pre-deployment.md +132 -0
- package/proagents/checklists/pre-implementation.md +80 -0
- package/proagents/checklists/testing.md +120 -0
- package/proagents/cicd/README.md +338 -0
- package/proagents/cicd/azure-devops.md +267 -0
- package/proagents/cicd/github-actions.md +375 -0
- package/proagents/cicd/gitlab-ci.md +278 -0
- package/proagents/cicd/jenkins.md +317 -0
- package/proagents/cli/README.md +392 -0
- package/proagents/cli/commands-reference.md +893 -0
- package/proagents/cli/ide-integration.md +584 -0
- package/proagents/cli/shortcuts.md +394 -0
- package/proagents/cli/slash-commands.md +507 -0
- package/proagents/collaboration/README.md +143 -0
- package/proagents/collaboration/roles.md +248 -0
- package/proagents/collaboration/sessions.md +390 -0
- package/proagents/collaboration/sync.md +358 -0
- package/proagents/compliance/README.md +206 -0
- package/proagents/compliance/access-control.md +310 -0
- package/proagents/compliance/audit-logging.md +444 -0
- package/proagents/compliance/compliance-frameworks.md +429 -0
- package/proagents/compliance/reports.md +491 -0
- package/proagents/compliance/retention-policies.md +454 -0
- package/proagents/config/README.md +181 -0
- package/proagents/config/integrations/README.md +68 -0
- package/proagents/config/integrations/github.yaml +211 -0
- package/proagents/config/integrations/jira.yaml +144 -0
- package/proagents/config/integrations/linear.yaml +157 -0
- package/proagents/config/integrations/notion.yaml +203 -0
- package/proagents/config/integrations/slack.yaml +230 -0
- package/proagents/config/rules/README.md +73 -0
- package/proagents/config/rules/custom-rules.template.yaml +188 -0
- package/proagents/config/rules/validation-rules.template.yaml +177 -0
- package/proagents/config/standards/README.md +58 -0
- package/proagents/config/standards/architecture-rules.template.md +124 -0
- package/proagents/config/standards/coding-standards.template.md +107 -0
- package/proagents/config/standards/naming-conventions.template.md +114 -0
- package/proagents/config/standards/testing-standards.template.md +213 -0
- package/proagents/config/templates/README.md +74 -0
- package/proagents/config/templates/api-route.template.ts +142 -0
- package/proagents/config/templates/component.template.tsx +55 -0
- package/proagents/config/templates/hook.template.ts +93 -0
- package/proagents/config/templates/test.template.ts +171 -0
- package/proagents/config-versioning/README.md +120 -0
- package/proagents/config-versioning/changelog.md +300 -0
- package/proagents/config-versioning/rollback.md +283 -0
- package/proagents/config-versioning/versioning.md +330 -0
- package/proagents/contract-testing/README.md +223 -0
- package/proagents/contract-testing/contract-testing.md +614 -0
- package/proagents/contract-testing/pact-integration.md +507 -0
- package/proagents/contract-testing/schema-validation.md +565 -0
- package/proagents/cost/README.md +48 -0
- package/proagents/cost/cost-template.md +283 -0
- package/proagents/cost/estimation-framework.md +287 -0
- package/proagents/database/README.md +72 -0
- package/proagents/database/examples/001-create-users.sql +129 -0
- package/proagents/database/examples/002-add-preferences.sql +94 -0
- package/proagents/database/examples/003-add-index.sql +105 -0
- package/proagents/database/examples/004-rename-column.sql +122 -0
- package/proagents/database/examples/005-add-foreign-key.sql +142 -0
- package/proagents/database/examples/006-data-migration.sql +196 -0
- package/proagents/database/examples/007-drop-column.sql +163 -0
- package/proagents/database/examples/README.md +89 -0
- package/proagents/database/migration-workflow.md +478 -0
- package/proagents/database/rollback-scripts.md +487 -0
- package/proagents/database/safety-checks.md +447 -0
- package/proagents/dependency-management/README.md +140 -0
- package/proagents/dependency-management/automation.md +363 -0
- package/proagents/dependency-management/compatibility.md +319 -0
- package/proagents/dependency-management/security-scanning.md +413 -0
- package/proagents/dependency-management/update-policies.md +374 -0
- package/proagents/disaster-recovery/README.md +247 -0
- package/proagents/disaster-recovery/automation.md +366 -0
- package/proagents/disaster-recovery/backup-recovery.md +571 -0
- package/proagents/disaster-recovery/incident-response.md +565 -0
- package/proagents/disaster-recovery/rollback-procedures.md +499 -0
- package/proagents/disaster-recovery/runbooks.md +603 -0
- package/proagents/disaster-recovery/scenarios.md +892 -0
- package/proagents/disaster-recovery/testing.md +438 -0
- package/proagents/environments/README.md +244 -0
- package/proagents/environments/configuration.md +437 -0
- package/proagents/environments/promotion.md +434 -0
- package/proagents/environments/setup.md +420 -0
- package/proagents/examples/README.md +55 -0
- package/proagents/examples/backend-nodejs/README.md +188 -0
- package/proagents/examples/backend-nodejs/complete-conversation.md +601 -0
- package/proagents/examples/backend-nodejs/proagents.config.yaml +415 -0
- package/proagents/examples/backend-nodejs/workflow-example.md +909 -0
- package/proagents/examples/fullstack-nextjs/README.md +155 -0
- package/proagents/examples/fullstack-nextjs/complete-conversation.md +604 -0
- package/proagents/examples/fullstack-nextjs/proagents.config.yaml +287 -0
- package/proagents/examples/fullstack-nextjs/workflow-example.md +553 -0
- package/proagents/examples/mobile-react-native/README.md +171 -0
- package/proagents/examples/mobile-react-native/complete-conversation.md +825 -0
- package/proagents/examples/mobile-react-native/proagents.config.yaml +330 -0
- package/proagents/examples/mobile-react-native/workflow-example.md +723 -0
- package/proagents/examples/web-frontend-react/README.md +125 -0
- package/proagents/examples/web-frontend-react/complete-conversation.md +556 -0
- package/proagents/examples/web-frontend-react/proagents.config.yaml +183 -0
- package/proagents/examples/web-frontend-react/workflow-example.md +603 -0
- package/proagents/existing-projects/README.md +65 -0
- package/proagents/existing-projects/challenges.md +861 -0
- package/proagents/existing-projects/coexistence-mode.md +483 -0
- package/proagents/existing-projects/compatibility-assessment.md +541 -0
- package/proagents/existing-projects/gradual-adoption.md +515 -0
- package/proagents/existing-projects/migration-strategies.md +788 -0
- package/proagents/existing-projects/pattern-reconciliation.md +489 -0
- package/proagents/existing-projects/team-onboarding.md +617 -0
- package/proagents/existing-projects/technical-debt-handling.md +644 -0
- package/proagents/feature-flags/README.md +263 -0
- package/proagents/feature-flags/ab-testing.md +413 -0
- package/proagents/feature-flags/configuration.md +420 -0
- package/proagents/feature-flags/kill-switches.md +444 -0
- package/proagents/feature-flags/rollout-strategies.md +392 -0
- package/proagents/getting-started/README.md +60 -0
- package/proagents/getting-started/ai-training-setup.md +380 -0
- package/proagents/getting-started/ide-setup.md +195 -0
- package/proagents/getting-started/mcp-setup.md +239 -0
- package/proagents/getting-started/pm-integration.md +336 -0
- package/proagents/getting-started/prompt-engineering.md +478 -0
- package/proagents/getting-started/team-onboarding.md +236 -0
- package/proagents/git/README.md +68 -0
- package/proagents/git/branch-strategy.md +164 -0
- package/proagents/git/commit-conventions.md +241 -0
- package/proagents/git/pr-workflow.md +286 -0
- package/proagents/git/rollback-procedures.md +416 -0
- package/proagents/i18n/README.md +133 -0
- package/proagents/i18n/extraction.md +433 -0
- package/proagents/i18n/tms-integration.md +332 -0
- package/proagents/i18n/translation-workflow.md +413 -0
- package/proagents/i18n/validation.md +355 -0
- package/proagents/ide-integration/README.md +124 -0
- package/proagents/ide-integration/cline-config.md +429 -0
- package/proagents/ide-integration/continue-config.md +380 -0
- package/proagents/ide-integration/cursor-rules.md +280 -0
- package/proagents/ide-integration/github-copilot.md +384 -0
- package/proagents/ide-integration/windsurf-rules.md +314 -0
- package/proagents/integrations/README.md +97 -0
- package/proagents/integrations/pm/README.md +344 -0
- package/proagents/learning/README.md +136 -0
- package/proagents/learning/adaptation.md +305 -0
- package/proagents/learning/data-collection.md +283 -0
- package/proagents/learning/implementation-guide.md +865 -0
- package/proagents/learning/reports.md +306 -0
- package/proagents/logging/README.md +276 -0
- package/proagents/logging/aggregation.md +475 -0
- package/proagents/logging/log-levels.md +376 -0
- package/proagents/logging/sensitive-data.md +423 -0
- package/proagents/logging/structured-logging.md +406 -0
- package/proagents/mcp/README.md +133 -0
- package/proagents/mcp/context-providers.md +442 -0
- package/proagents/mcp/server-config.md +306 -0
- package/proagents/mcp/tools-definition.md +513 -0
- package/proagents/metrics/README.md +174 -0
- package/proagents/metrics/code-quality-kpis.md +461 -0
- package/proagents/metrics/deployment-metrics.md +517 -0
- package/proagents/metrics/developer-productivity.md +368 -0
- package/proagents/metrics/learning-effectiveness.md +478 -0
- package/proagents/migrations/README.md +77 -0
- package/proagents/migrations/from-claude-projects.md +312 -0
- package/proagents/migrations/from-cursor-rules.md +345 -0
- package/proagents/migrations/from-custom-workflows.md +410 -0
- package/proagents/monitoring/README.md +308 -0
- package/proagents/monitoring/alerting.md +449 -0
- package/proagents/monitoring/dashboards.md +454 -0
- package/proagents/monitoring/health-checks.md +436 -0
- package/proagents/monitoring/metrics.md +434 -0
- package/proagents/multi-project/README.md +170 -0
- package/proagents/multi-project/coordinated-deploy.md +510 -0
- package/proagents/multi-project/cross-project-deps.md +395 -0
- package/proagents/multi-project/unified-changelog.md +477 -0
- package/proagents/multi-project/walkthroughs/monorepo-setup.md +787 -0
- package/proagents/multi-project/workspace-config.md +408 -0
- package/proagents/notifications/README.md +151 -0
- package/proagents/notifications/channels.md +457 -0
- package/proagents/notifications/preferences.md +415 -0
- package/proagents/notifications/routing.md +449 -0
- package/proagents/notifications/scheduling.md +425 -0
- package/proagents/notifications/templates.md +446 -0
- package/proagents/offline-mode/README.md +145 -0
- package/proagents/offline-mode/caching.md +344 -0
- package/proagents/offline-mode/offline-operations.md +312 -0
- package/proagents/offline-mode/queue-specifications.md +679 -0
- package/proagents/offline-mode/sync.md +475 -0
- package/proagents/parallel-features/README.md +85 -0
- package/proagents/parallel-features/conflict-detection.md +226 -0
- package/proagents/parallel-features/dependency-management.md +392 -0
- package/proagents/parallel-features/merge-coordination.md +506 -0
- package/proagents/parallel-features/tracking-system.md +416 -0
- package/proagents/patterns/README.md +305 -0
- package/proagents/patterns/api-errors.md +453 -0
- package/proagents/patterns/async-errors.md +521 -0
- package/proagents/patterns/error-types.md +437 -0
- package/proagents/patterns/ui-errors.md +595 -0
- package/proagents/performance/README.md +59 -0
- package/proagents/performance/bundle-analysis.md +375 -0
- package/proagents/performance/load-testing.md +563 -0
- package/proagents/performance/runtime-metrics.md +489 -0
- package/proagents/performance/web-vitals.md +425 -0
- package/proagents/plugins/README.md +139 -0
- package/proagents/plugins/creating-plugins.md +504 -0
- package/proagents/plugins/plugin-api.md +467 -0
- package/proagents/plugins/plugin-registry.md +276 -0
- package/proagents/pm-integration/README.md +151 -0
- package/proagents/pm-integration/asana.md +346 -0
- package/proagents/pm-integration/github-issues.md +308 -0
- package/proagents/pm-integration/gitlab-issues.md +482 -0
- package/proagents/pm-integration/jira.md +364 -0
- package/proagents/pm-integration/linear.md +409 -0
- package/proagents/pm-integration/notion.md +275 -0
- package/proagents/pm-integration/sync-config.md +533 -0
- package/proagents/pm-integration/trello.md +159 -0
- package/proagents/proagents.config.yaml +213 -0
- package/proagents/prompts/00-init-wizard.md +426 -0
- package/proagents/prompts/00-init.md +219 -0
- package/proagents/prompts/01-analysis.md +244 -0
- package/proagents/prompts/02-requirements.md +399 -0
- package/proagents/prompts/03-ui-design.md +493 -0
- package/proagents/prompts/04-planning.md +505 -0
- package/proagents/prompts/05-implementation.md +518 -0
- package/proagents/prompts/06-testing.md +620 -0
- package/proagents/prompts/06.5-code-review.md +512 -0
- package/proagents/prompts/07-documentation.md +673 -0
- package/proagents/prompts/08-deployment.md +539 -0
- package/proagents/prompts/09-rollback.md +554 -0
- package/proagents/prompts/README.md +51 -0
- package/proagents/prompts/accessibility/README.md +146 -0
- package/proagents/prompts/accessibility/aria.md +276 -0
- package/proagents/prompts/accessibility/audit.md +233 -0
- package/proagents/prompts/accessibility/keyboard.md +392 -0
- package/proagents/prompts/accessibility/wcag.md +189 -0
- package/proagents/prompts/debugging/README.md +51 -0
- package/proagents/prompts/debugging/error-analysis.md +385 -0
- package/proagents/prompts/debugging/performance-debug.md +381 -0
- package/proagents/prompts/debugging/systematic.md +270 -0
- package/proagents/prompts/performance/README.md +47 -0
- package/proagents/prompts/performance/analyze.md +265 -0
- package/proagents/prompts/performance/optimize.md +347 -0
- package/proagents/prompts/refactoring/README.md +51 -0
- package/proagents/prompts/refactoring/architecture.md +531 -0
- package/proagents/prompts/refactoring/code-smells.md +174 -0
- package/proagents/prompts/refactoring/patterns.md +516 -0
- package/proagents/prompts/security-audit/README.md +197 -0
- package/proagents/prompts/security-audit/code-review.md +260 -0
- package/proagents/prompts/security-audit/vulnerability-scan.md +288 -0
- package/proagents/reporting/README.md +158 -0
- package/proagents/reporting/dashboards.md +366 -0
- package/proagents/reporting/exports.md +524 -0
- package/proagents/reporting/quality-metrics.md +385 -0
- package/proagents/reporting/templates/README.md +56 -0
- package/proagents/reporting/templates/dashboard-config.json +187 -0
- package/proagents/reporting/templates/metrics-queries.md +427 -0
- package/proagents/reporting/templates/react-dashboard.tsx +544 -0
- package/proagents/reporting/templates/widgets.md +451 -0
- package/proagents/reporting/velocity-metrics.md +340 -0
- package/proagents/reverse-engineering/README.md +151 -0
- package/proagents/reverse-engineering/architecture-extraction.md +325 -0
- package/proagents/reverse-engineering/code-analysis.md +377 -0
- package/proagents/reverse-engineering/dependency-mapping.md +567 -0
- package/proagents/reverse-engineering/diagram-generation.md +586 -0
- package/proagents/reverse-engineering/documentation-generation.md +468 -0
- package/proagents/reverse-engineering/pattern-detection.md +569 -0
- package/proagents/reverse-engineering/quality-assessment.md +733 -0
- package/proagents/rules/README.md +179 -0
- package/proagents/rules/custom-rules-template.yaml +286 -0
- package/proagents/rules/custom-rules.md +754 -0
- package/proagents/rules/validation-rules-template.yaml +517 -0
- package/proagents/runbooks/README.md +219 -0
- package/proagents/runbooks/dependency-vulnerability.md +505 -0
- package/proagents/runbooks/incident-response.md +451 -0
- package/proagents/runbooks/performance-degradation.md +584 -0
- package/proagents/runbooks/production-debugging.md +489 -0
- package/proagents/scaffolding/README.md +64 -0
- package/proagents/scaffolding/nextjs/README.md +578 -0
- package/proagents/scaffolding/nextjs/templates/api-route.ts.template +185 -0
- package/proagents/scaffolding/nextjs/templates/page.tsx.template +109 -0
- package/proagents/scaffolding/nextjs/templates/server-action.ts.template +204 -0
- package/proagents/scaffolding/nodejs/README.md +558 -0
- package/proagents/scaffolding/nodejs/templates/controller.ts.template +167 -0
- package/proagents/scaffolding/nodejs/templates/repository.ts.template +155 -0
- package/proagents/scaffolding/nodejs/templates/service.ts.template +207 -0
- package/proagents/scaffolding/project-types.md +401 -0
- package/proagents/scaffolding/react/README.md +399 -0
- package/proagents/scaffolding/react/templates/component.tsx.template +88 -0
- package/proagents/scaffolding/react/templates/hook.ts.template +127 -0
- package/proagents/scaffolding/react/templates/service.ts.template +155 -0
- package/proagents/scaffolding/react/templates/test.tsx.template +149 -0
- package/proagents/scaffolding/react-native/README.md +476 -0
- package/proagents/scaffolding/react-native/templates/hook.ts.template +226 -0
- package/proagents/scaffolding/react-native/templates/screen.tsx.template +247 -0
- package/proagents/secrets/README.md +278 -0
- package/proagents/secrets/access-control.md +443 -0
- package/proagents/secrets/rotation.md +403 -0
- package/proagents/secrets/scanning.md +487 -0
- package/proagents/secrets/storage.md +394 -0
- package/proagents/security/README.md +71 -0
- package/proagents/security/owasp-checklist.md +390 -0
- package/proagents/security/sast-guide.md +473 -0
- package/proagents/security/security-report-template.md +343 -0
- package/proagents/security/vulnerability-scanning.md +329 -0
- package/proagents/slash-commands.json +161 -0
- package/proagents/standards/README.md +120 -0
- package/proagents/standards/architecture-patterns.md +728 -0
- package/proagents/standards/architecture-rules-template.md +489 -0
- package/proagents/standards/coding-standards-template.md +489 -0
- package/proagents/standards/examples/README.md +61 -0
- package/proagents/standards/examples/nodejs-api.md +560 -0
- package/proagents/standards/examples/react-nextjs.md +428 -0
- package/proagents/standards/naming-conventions-template.md +526 -0
- package/proagents/standards/override-system.md +717 -0
- package/proagents/standards/testing-standards-template.md +220 -0
- package/proagents/team/README.md +256 -0
- package/proagents/team/code-ownership.md +306 -0
- package/proagents/team/communication-templates.md +441 -0
- package/proagents/team/handoff-protocol.md +380 -0
- package/proagents/team/ide-setup/README.md +103 -0
- package/proagents/team/ide-setup/cursor.md +276 -0
- package/proagents/team/ide-setup/jetbrains.md +330 -0
- package/proagents/team/ide-setup/neovim.md +640 -0
- package/proagents/team/ide-setup/vscode.md +348 -0
- package/proagents/team/onboarding.md +278 -0
- package/proagents/templates/README.md +57 -0
- package/proagents/templates/code-review-report.md +255 -0
- package/proagents/templates/codebase-analysis-report.md +315 -0
- package/proagents/templates/deployment-checklist.md +277 -0
- package/proagents/templates/feature-requirements.md +142 -0
- package/proagents/templates/feature-status.md +231 -0
- package/proagents/templates/implementation-plan.md +373 -0
- package/proagents/templates/rollback-plan.md +331 -0
- package/proagents/templates/test-plan.md +336 -0
- package/proagents/templates/ui-specification.md +431 -0
- package/proagents/testing-standards/README.md +229 -0
- package/proagents/testing-standards/coverage-requirements.md +198 -0
- package/proagents/testing-standards/mocking-guidelines.md +478 -0
- package/proagents/testing-standards/test-naming.md +485 -0
- package/proagents/testing-standards/test-patterns.md +488 -0
- package/proagents/troubleshooting/README.md +730 -0
- package/proagents/troubleshooting/ai-issues.md +601 -0
- package/proagents/troubleshooting/workflow-issues.md +571 -0
- package/proagents/ui-integration/README.md +77 -0
- package/proagents/ui-integration/figma-guide.md +217 -0
- package/proagents/ui-integration/manual-export-guide.md +358 -0
- package/proagents/ui-integration/sketch-interpretation.md +471 -0
- package/proagents/webhooks/README.md +126 -0
- package/proagents/webhooks/endpoints.md +298 -0
- package/proagents/webhooks/events.md +316 -0
- package/proagents/webhooks/payloads.md +325 -0
- package/proagents/webhooks/reliability.md +363 -0
- package/proagents/webhooks/security.md +380 -0
- package/proagents/workflow-modes/README.md +136 -0
- package/proagents/workflow-modes/deferred-tracking.md +405 -0
- package/proagents/workflow-modes/entry-modes.md +397 -0
- package/proagents/workflow-modes/guardrails.md +405 -0
- package/proagents/workflow-modes/mode-detection.md +358 -0
- package/proagents/workflow-modes/mode-switching.md +372 -0
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
# Accessibility Prompts
|
|
2
|
+
|
|
3
|
+
AI-assisted accessibility review and improvement for web applications.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Overview
|
|
8
|
+
|
|
9
|
+
These prompts help ensure your application is accessible to all users, including those using assistive technologies. ProAgents integrates accessibility checks throughout the development workflow.
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## Available Prompts
|
|
14
|
+
|
|
15
|
+
| Prompt | Use Case | When to Use |
|
|
16
|
+
|--------|----------|-------------|
|
|
17
|
+
| [wcag.md](./wcag.md) | WCAG compliance check | Before release, during reviews |
|
|
18
|
+
| [aria.md](./aria.md) | ARIA implementation | When building interactive components |
|
|
19
|
+
| [keyboard.md](./keyboard.md) | Keyboard navigation | For all interactive elements |
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## Quick Commands
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
# Full accessibility audit
|
|
27
|
+
/a11y audit <component>
|
|
28
|
+
|
|
29
|
+
# Check WCAG compliance at specific level
|
|
30
|
+
/a11y wcag AA
|
|
31
|
+
|
|
32
|
+
# Review ARIA implementation
|
|
33
|
+
/a11y aria <component>
|
|
34
|
+
|
|
35
|
+
# Check keyboard navigation
|
|
36
|
+
/a11y keyboard <component>
|
|
37
|
+
|
|
38
|
+
# Fix specific accessibility issue
|
|
39
|
+
/a11y fix <issue>
|
|
40
|
+
|
|
41
|
+
# Generate accessibility tests
|
|
42
|
+
/a11y test <component>
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
## WCAG Compliance Levels
|
|
48
|
+
|
|
49
|
+
| Level | Description | Required For |
|
|
50
|
+
|-------|-------------|--------------|
|
|
51
|
+
| **A** | Minimum accessibility | Legal compliance baseline |
|
|
52
|
+
| **AA** | Industry standard | Most web applications, government sites |
|
|
53
|
+
| **AAA** | Enhanced accessibility | Maximum accessibility, specialized apps |
|
|
54
|
+
|
|
55
|
+
### Target Level Recommendation
|
|
56
|
+
|
|
57
|
+
Most projects should target **WCAG 2.1 AA** compliance:
|
|
58
|
+
- Required by many accessibility laws (ADA, Section 508)
|
|
59
|
+
- Covers most common accessibility needs
|
|
60
|
+
- Achievable with reasonable effort
|
|
61
|
+
|
|
62
|
+
---
|
|
63
|
+
|
|
64
|
+
## Integration with Workflow
|
|
65
|
+
|
|
66
|
+
### During Implementation (Phase 5)
|
|
67
|
+
- Prompts guide accessible component creation
|
|
68
|
+
- Real-time ARIA suggestions
|
|
69
|
+
- Keyboard handling reminders
|
|
70
|
+
|
|
71
|
+
### During Testing (Phase 6)
|
|
72
|
+
- Automated accessibility checks
|
|
73
|
+
- axe-core integration
|
|
74
|
+
- Screen reader testing guidance
|
|
75
|
+
|
|
76
|
+
### During Code Review (Phase 6.5)
|
|
77
|
+
- Accessibility-focused review checklist
|
|
78
|
+
- Common issue detection
|
|
79
|
+
- Fix suggestions
|
|
80
|
+
|
|
81
|
+
---
|
|
82
|
+
|
|
83
|
+
## Key Accessibility Areas
|
|
84
|
+
|
|
85
|
+
### 1. Perceivable
|
|
86
|
+
Users must be able to perceive the information:
|
|
87
|
+
- Text alternatives for images
|
|
88
|
+
- Captions for multimedia
|
|
89
|
+
- Sufficient color contrast
|
|
90
|
+
- Resizable text
|
|
91
|
+
|
|
92
|
+
### 2. Operable
|
|
93
|
+
Users must be able to operate the interface:
|
|
94
|
+
- Keyboard accessible
|
|
95
|
+
- No time limits or adjustable
|
|
96
|
+
- No seizure-inducing content
|
|
97
|
+
- Clear navigation
|
|
98
|
+
|
|
99
|
+
### 3. Understandable
|
|
100
|
+
Users must understand the content:
|
|
101
|
+
- Readable text
|
|
102
|
+
- Predictable behavior
|
|
103
|
+
- Input assistance
|
|
104
|
+
|
|
105
|
+
### 4. Robust
|
|
106
|
+
Content must work with assistive technologies:
|
|
107
|
+
- Valid HTML
|
|
108
|
+
- Proper ARIA usage
|
|
109
|
+
- Compatible with screen readers
|
|
110
|
+
|
|
111
|
+
---
|
|
112
|
+
|
|
113
|
+
## Common Accessibility Issues
|
|
114
|
+
|
|
115
|
+
| Issue | Impact | Quick Fix |
|
|
116
|
+
|-------|--------|-----------|
|
|
117
|
+
| Missing alt text | Screen readers skip images | Add descriptive `alt` |
|
|
118
|
+
| Low contrast | Hard to read | Increase contrast ratio |
|
|
119
|
+
| No focus indicator | Can't navigate by keyboard | Add `:focus` styles |
|
|
120
|
+
| Missing labels | Forms unusable | Add `<label>` elements |
|
|
121
|
+
| No skip links | Hard to navigate | Add skip to content link |
|
|
122
|
+
|
|
123
|
+
---
|
|
124
|
+
|
|
125
|
+
## Testing Tools
|
|
126
|
+
|
|
127
|
+
### Automated
|
|
128
|
+
- **axe-core**: Browser extension and library
|
|
129
|
+
- **Lighthouse**: Built into Chrome DevTools
|
|
130
|
+
- **WAVE**: Web accessibility evaluator
|
|
131
|
+
- **jest-axe**: Accessibility testing in Jest
|
|
132
|
+
|
|
133
|
+
### Manual
|
|
134
|
+
- **Keyboard-only navigation**: Tab through everything
|
|
135
|
+
- **Screen readers**: VoiceOver, NVDA, JAWS
|
|
136
|
+
- **High contrast mode**: Test visibility
|
|
137
|
+
- **Zoom**: Test at 200% zoom
|
|
138
|
+
|
|
139
|
+
---
|
|
140
|
+
|
|
141
|
+
## Resources
|
|
142
|
+
|
|
143
|
+
- [WCAG 2.1 Guidelines](https://www.w3.org/WAI/WCAG21/quickref/)
|
|
144
|
+
- [MDN Accessibility Guide](https://developer.mozilla.org/en-US/docs/Web/Accessibility)
|
|
145
|
+
- [A11y Project Checklist](https://www.a11yproject.com/checklist/)
|
|
146
|
+
- [Inclusive Components](https://inclusive-components.design/)
|
|
@@ -0,0 +1,276 @@
|
|
|
1
|
+
# ARIA Implementation Prompt
|
|
2
|
+
|
|
3
|
+
Guide for implementing ARIA attributes correctly.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Prompt Template
|
|
8
|
+
|
|
9
|
+
```markdown
|
|
10
|
+
## ARIA Implementation Review
|
|
11
|
+
|
|
12
|
+
Review the following component for correct ARIA implementation:
|
|
13
|
+
|
|
14
|
+
```{{language}}
|
|
15
|
+
{{code}}
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
### Check For:
|
|
19
|
+
|
|
20
|
+
**First Rule of ARIA: Don't Use ARIA**
|
|
21
|
+
- [ ] Can native HTML elements provide the same semantics?
|
|
22
|
+
- [ ] Is ARIA actually needed here?
|
|
23
|
+
|
|
24
|
+
**ARIA Roles**
|
|
25
|
+
- [ ] Role matches the component's purpose
|
|
26
|
+
- [ ] Role is valid for the element type
|
|
27
|
+
- [ ] Required states/properties are included
|
|
28
|
+
|
|
29
|
+
**ARIA States and Properties**
|
|
30
|
+
- [ ] States update dynamically with component state
|
|
31
|
+
- [ ] Properties are correctly specified
|
|
32
|
+
- [ ] Values are valid for the attribute
|
|
33
|
+
|
|
34
|
+
**ARIA Relationships**
|
|
35
|
+
- [ ] aria-labelledby references exist
|
|
36
|
+
- [ ] aria-describedby references exist
|
|
37
|
+
- [ ] aria-controls references exist
|
|
38
|
+
- [ ] aria-owns relationships are correct
|
|
39
|
+
|
|
40
|
+
### Output Format:
|
|
41
|
+
1. ARIA usage assessment (needed/not needed)
|
|
42
|
+
2. Issues found
|
|
43
|
+
3. Correct implementation
|
|
44
|
+
4. Code examples
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
## Common ARIA Patterns
|
|
50
|
+
|
|
51
|
+
### Modal Dialog
|
|
52
|
+
|
|
53
|
+
```tsx
|
|
54
|
+
// Correct ARIA for modal
|
|
55
|
+
<div
|
|
56
|
+
role="dialog"
|
|
57
|
+
aria-modal="true"
|
|
58
|
+
aria-labelledby="modal-title"
|
|
59
|
+
aria-describedby="modal-description"
|
|
60
|
+
>
|
|
61
|
+
<h2 id="modal-title">Confirm Delete</h2>
|
|
62
|
+
<p id="modal-description">
|
|
63
|
+
Are you sure you want to delete this item?
|
|
64
|
+
</p>
|
|
65
|
+
<button onClick={onConfirm}>Delete</button>
|
|
66
|
+
<button onClick={onCancel}>Cancel</button>
|
|
67
|
+
</div>
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
### Expandable Section
|
|
71
|
+
|
|
72
|
+
```tsx
|
|
73
|
+
// Correct ARIA for accordion/expandable
|
|
74
|
+
<div>
|
|
75
|
+
<button
|
|
76
|
+
aria-expanded={isExpanded}
|
|
77
|
+
aria-controls="section-content"
|
|
78
|
+
onClick={toggle}
|
|
79
|
+
>
|
|
80
|
+
Section Title
|
|
81
|
+
</button>
|
|
82
|
+
<div
|
|
83
|
+
id="section-content"
|
|
84
|
+
hidden={!isExpanded}
|
|
85
|
+
>
|
|
86
|
+
Section content...
|
|
87
|
+
</div>
|
|
88
|
+
</div>
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
### Tab Panel
|
|
92
|
+
|
|
93
|
+
```tsx
|
|
94
|
+
// Correct ARIA for tabs
|
|
95
|
+
<div role="tablist" aria-label="Settings">
|
|
96
|
+
<button
|
|
97
|
+
role="tab"
|
|
98
|
+
id="tab-1"
|
|
99
|
+
aria-selected={activeTab === 0}
|
|
100
|
+
aria-controls="panel-1"
|
|
101
|
+
>
|
|
102
|
+
General
|
|
103
|
+
</button>
|
|
104
|
+
<button
|
|
105
|
+
role="tab"
|
|
106
|
+
id="tab-2"
|
|
107
|
+
aria-selected={activeTab === 1}
|
|
108
|
+
aria-controls="panel-2"
|
|
109
|
+
>
|
|
110
|
+
Security
|
|
111
|
+
</button>
|
|
112
|
+
</div>
|
|
113
|
+
|
|
114
|
+
<div
|
|
115
|
+
role="tabpanel"
|
|
116
|
+
id="panel-1"
|
|
117
|
+
aria-labelledby="tab-1"
|
|
118
|
+
hidden={activeTab !== 0}
|
|
119
|
+
>
|
|
120
|
+
General settings content...
|
|
121
|
+
</div>
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
### Loading State
|
|
125
|
+
|
|
126
|
+
```tsx
|
|
127
|
+
// Correct ARIA for loading
|
|
128
|
+
<div aria-busy={isLoading} aria-live="polite">
|
|
129
|
+
{isLoading ? (
|
|
130
|
+
<span role="status">Loading...</span>
|
|
131
|
+
) : (
|
|
132
|
+
<DataTable data={data} />
|
|
133
|
+
)}
|
|
134
|
+
</div>
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
### Form Error
|
|
138
|
+
|
|
139
|
+
```tsx
|
|
140
|
+
// Correct ARIA for form validation
|
|
141
|
+
<div>
|
|
142
|
+
<label htmlFor="email">Email</label>
|
|
143
|
+
<input
|
|
144
|
+
id="email"
|
|
145
|
+
type="email"
|
|
146
|
+
aria-invalid={!!error}
|
|
147
|
+
aria-describedby={error ? "email-error" : undefined}
|
|
148
|
+
/>
|
|
149
|
+
{error && (
|
|
150
|
+
<span id="email-error" role="alert">
|
|
151
|
+
{error}
|
|
152
|
+
</span>
|
|
153
|
+
)}
|
|
154
|
+
</div>
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
---
|
|
158
|
+
|
|
159
|
+
## ARIA Role Categories
|
|
160
|
+
|
|
161
|
+
### Widget Roles
|
|
162
|
+
| Role | Use For |
|
|
163
|
+
|------|---------|
|
|
164
|
+
| `button` | Clickable element (prefer `<button>`) |
|
|
165
|
+
| `checkbox` | Boolean input (prefer `<input type="checkbox">`) |
|
|
166
|
+
| `combobox` | Autocomplete input |
|
|
167
|
+
| `dialog` | Modal window |
|
|
168
|
+
| `menu` | Dropdown/context menu |
|
|
169
|
+
| `menuitem` | Item in menu |
|
|
170
|
+
| `slider` | Range input |
|
|
171
|
+
| `tab` | Tab in tablist |
|
|
172
|
+
| `tabpanel` | Content for tab |
|
|
173
|
+
|
|
174
|
+
### Document Structure Roles
|
|
175
|
+
| Role | Use For |
|
|
176
|
+
|------|---------|
|
|
177
|
+
| `article` | Self-contained content |
|
|
178
|
+
| `heading` | Section heading |
|
|
179
|
+
| `list` | List of items |
|
|
180
|
+
| `listitem` | Item in list |
|
|
181
|
+
| `table` | Data table |
|
|
182
|
+
|
|
183
|
+
### Landmark Roles
|
|
184
|
+
| Role | HTML Equivalent |
|
|
185
|
+
|------|-----------------|
|
|
186
|
+
| `banner` | `<header>` |
|
|
187
|
+
| `navigation` | `<nav>` |
|
|
188
|
+
| `main` | `<main>` |
|
|
189
|
+
| `region` | `<section>` with label |
|
|
190
|
+
| `contentinfo` | `<footer>` |
|
|
191
|
+
|
|
192
|
+
---
|
|
193
|
+
|
|
194
|
+
## Common Mistakes
|
|
195
|
+
|
|
196
|
+
### 1. Redundant ARIA
|
|
197
|
+
|
|
198
|
+
```tsx
|
|
199
|
+
// ❌ Bad - redundant
|
|
200
|
+
<button role="button">Click me</button>
|
|
201
|
+
<nav role="navigation">...</nav>
|
|
202
|
+
|
|
203
|
+
// ✅ Good - native semantics
|
|
204
|
+
<button>Click me</button>
|
|
205
|
+
<nav>...</nav>
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
### 2. Missing Required Properties
|
|
209
|
+
|
|
210
|
+
```tsx
|
|
211
|
+
// ❌ Bad - missing aria-controls
|
|
212
|
+
<button aria-expanded={open}>Toggle</button>
|
|
213
|
+
|
|
214
|
+
// ✅ Good - complete
|
|
215
|
+
<button
|
|
216
|
+
aria-expanded={open}
|
|
217
|
+
aria-controls="panel-id"
|
|
218
|
+
>
|
|
219
|
+
Toggle
|
|
220
|
+
</button>
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
### 3. Invalid Role/Element Combinations
|
|
224
|
+
|
|
225
|
+
```tsx
|
|
226
|
+
// ❌ Bad - button role on non-focusable
|
|
227
|
+
<div role="button">Click me</div>
|
|
228
|
+
|
|
229
|
+
// ✅ Good - proper implementation
|
|
230
|
+
<div
|
|
231
|
+
role="button"
|
|
232
|
+
tabIndex={0}
|
|
233
|
+
onClick={handleClick}
|
|
234
|
+
onKeyDown={handleKeyDown}
|
|
235
|
+
>
|
|
236
|
+
Click me
|
|
237
|
+
</div>
|
|
238
|
+
|
|
239
|
+
// ✅ Better - use native element
|
|
240
|
+
<button onClick={handleClick}>Click me</button>
|
|
241
|
+
```
|
|
242
|
+
|
|
243
|
+
### 4. Static ARIA for Dynamic Content
|
|
244
|
+
|
|
245
|
+
```tsx
|
|
246
|
+
// ❌ Bad - static aria-expanded
|
|
247
|
+
<button aria-expanded="true">Menu</button>
|
|
248
|
+
|
|
249
|
+
// ✅ Good - dynamic state
|
|
250
|
+
<button aria-expanded={isMenuOpen}>Menu</button>
|
|
251
|
+
```
|
|
252
|
+
|
|
253
|
+
---
|
|
254
|
+
|
|
255
|
+
## Testing ARIA
|
|
256
|
+
|
|
257
|
+
```typescript
|
|
258
|
+
// Testing with @testing-library
|
|
259
|
+
it('should have correct ARIA attributes', () => {
|
|
260
|
+
render(<Accordion />);
|
|
261
|
+
|
|
262
|
+
const button = screen.getByRole('button');
|
|
263
|
+
expect(button).toHaveAttribute('aria-expanded', 'false');
|
|
264
|
+
|
|
265
|
+
fireEvent.click(button);
|
|
266
|
+
|
|
267
|
+
expect(button).toHaveAttribute('aria-expanded', 'true');
|
|
268
|
+
});
|
|
269
|
+
|
|
270
|
+
// Testing accessible name
|
|
271
|
+
it('should have accessible name', () => {
|
|
272
|
+
render(<Button aria-label="Close dialog">×</Button>);
|
|
273
|
+
|
|
274
|
+
expect(screen.getByRole('button', { name: 'Close dialog' })).toBeInTheDocument();
|
|
275
|
+
});
|
|
276
|
+
```
|
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
# Accessibility Audit
|
|
2
|
+
|
|
3
|
+
Comprehensive accessibility review for components.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Prompt Template
|
|
8
|
+
|
|
9
|
+
```
|
|
10
|
+
Review this component for accessibility:
|
|
11
|
+
|
|
12
|
+
{code}
|
|
13
|
+
|
|
14
|
+
Check for:
|
|
15
|
+
1. Semantic HTML usage
|
|
16
|
+
2. ARIA attributes
|
|
17
|
+
3. Keyboard navigation
|
|
18
|
+
4. Focus management
|
|
19
|
+
5. Color contrast
|
|
20
|
+
6. Screen reader compatibility
|
|
21
|
+
7. Form accessibility
|
|
22
|
+
8. Error handling
|
|
23
|
+
9. Dynamic content announcements
|
|
24
|
+
10. Touch target sizes
|
|
25
|
+
|
|
26
|
+
Provide:
|
|
27
|
+
- Issues found (with WCAG references)
|
|
28
|
+
- Severity levels
|
|
29
|
+
- Fixed code examples
|
|
30
|
+
- Testing recommendations
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## Audit Checklist
|
|
36
|
+
|
|
37
|
+
### Semantic HTML
|
|
38
|
+
|
|
39
|
+
```typescript
|
|
40
|
+
// ❌ Bad: Non-semantic
|
|
41
|
+
<div onClick={handleClick}>Click me</div>
|
|
42
|
+
<div class="heading">Title</div>
|
|
43
|
+
<div class="list">
|
|
44
|
+
<div>Item 1</div>
|
|
45
|
+
<div>Item 2</div>
|
|
46
|
+
</div>
|
|
47
|
+
|
|
48
|
+
// ✅ Good: Semantic
|
|
49
|
+
<button onClick={handleClick}>Click me</button>
|
|
50
|
+
<h1>Title</h1>
|
|
51
|
+
<ul>
|
|
52
|
+
<li>Item 1</li>
|
|
53
|
+
<li>Item 2</li>
|
|
54
|
+
</ul>
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
### ARIA Attributes
|
|
58
|
+
|
|
59
|
+
```typescript
|
|
60
|
+
// ❌ Missing ARIA
|
|
61
|
+
<div onClick={toggleMenu}>Menu</div>
|
|
62
|
+
<div>{isLoading ? 'Loading...' : content}</div>
|
|
63
|
+
|
|
64
|
+
// ✅ With ARIA
|
|
65
|
+
<button
|
|
66
|
+
onClick={toggleMenu}
|
|
67
|
+
aria-expanded={isOpen}
|
|
68
|
+
aria-haspopup="true"
|
|
69
|
+
aria-controls="menu-list"
|
|
70
|
+
>
|
|
71
|
+
Menu
|
|
72
|
+
</button>
|
|
73
|
+
|
|
74
|
+
<div
|
|
75
|
+
role="status"
|
|
76
|
+
aria-live="polite"
|
|
77
|
+
aria-busy={isLoading}
|
|
78
|
+
>
|
|
79
|
+
{isLoading ? 'Loading...' : content}
|
|
80
|
+
</div>
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
### Keyboard Navigation
|
|
84
|
+
|
|
85
|
+
```typescript
|
|
86
|
+
// ❌ Not keyboard accessible
|
|
87
|
+
<div onClick={handleSelect} className="option">
|
|
88
|
+
Option 1
|
|
89
|
+
</div>
|
|
90
|
+
|
|
91
|
+
// ✅ Keyboard accessible
|
|
92
|
+
<div
|
|
93
|
+
role="option"
|
|
94
|
+
tabIndex={0}
|
|
95
|
+
onClick={handleSelect}
|
|
96
|
+
onKeyDown={(e) => {
|
|
97
|
+
if (e.key === 'Enter' || e.key === ' ') {
|
|
98
|
+
handleSelect();
|
|
99
|
+
}
|
|
100
|
+
}}
|
|
101
|
+
aria-selected={isSelected}
|
|
102
|
+
>
|
|
103
|
+
Option 1
|
|
104
|
+
</div>
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
### Focus Management
|
|
108
|
+
|
|
109
|
+
```typescript
|
|
110
|
+
// ❌ No focus management
|
|
111
|
+
function Modal({ isOpen, onClose, children }) {
|
|
112
|
+
if (!isOpen) return null;
|
|
113
|
+
return <div className="modal">{children}</div>;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
// ✅ Proper focus management
|
|
117
|
+
function Modal({ isOpen, onClose, children }) {
|
|
118
|
+
const modalRef = useRef<HTMLDivElement>(null);
|
|
119
|
+
const previousFocus = useRef<HTMLElement | null>(null);
|
|
120
|
+
|
|
121
|
+
useEffect(() => {
|
|
122
|
+
if (isOpen) {
|
|
123
|
+
previousFocus.current = document.activeElement as HTMLElement;
|
|
124
|
+
modalRef.current?.focus();
|
|
125
|
+
} else {
|
|
126
|
+
previousFocus.current?.focus();
|
|
127
|
+
}
|
|
128
|
+
}, [isOpen]);
|
|
129
|
+
|
|
130
|
+
// Trap focus in modal
|
|
131
|
+
const handleKeyDown = (e: KeyboardEvent) => {
|
|
132
|
+
if (e.key === 'Escape') onClose();
|
|
133
|
+
if (e.key === 'Tab') {
|
|
134
|
+
// Focus trap logic
|
|
135
|
+
}
|
|
136
|
+
};
|
|
137
|
+
|
|
138
|
+
if (!isOpen) return null;
|
|
139
|
+
|
|
140
|
+
return (
|
|
141
|
+
<div
|
|
142
|
+
ref={modalRef}
|
|
143
|
+
role="dialog"
|
|
144
|
+
aria-modal="true"
|
|
145
|
+
tabIndex={-1}
|
|
146
|
+
onKeyDown={handleKeyDown}
|
|
147
|
+
>
|
|
148
|
+
{children}
|
|
149
|
+
</div>
|
|
150
|
+
);
|
|
151
|
+
}
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
### Form Accessibility
|
|
155
|
+
|
|
156
|
+
```typescript
|
|
157
|
+
// ❌ Inaccessible form
|
|
158
|
+
<input placeholder="Enter email" />
|
|
159
|
+
<span className="error">Invalid email</span>
|
|
160
|
+
|
|
161
|
+
// ✅ Accessible form
|
|
162
|
+
<label htmlFor="email">Email Address</label>
|
|
163
|
+
<input
|
|
164
|
+
id="email"
|
|
165
|
+
type="email"
|
|
166
|
+
aria-describedby="email-error"
|
|
167
|
+
aria-invalid={hasError}
|
|
168
|
+
/>
|
|
169
|
+
{hasError && (
|
|
170
|
+
<span id="email-error" role="alert">
|
|
171
|
+
Please enter a valid email address
|
|
172
|
+
</span>
|
|
173
|
+
)}
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
### Images and Media
|
|
177
|
+
|
|
178
|
+
```typescript
|
|
179
|
+
// ❌ Missing alt text
|
|
180
|
+
<img src="/logo.png" />
|
|
181
|
+
<img src="/decorative-border.png" alt="decorative border" />
|
|
182
|
+
|
|
183
|
+
// ✅ Proper alt text
|
|
184
|
+
<img src="/logo.png" alt="Company Name" />
|
|
185
|
+
<img src="/decorative-border.png" alt="" role="presentation" />
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
---
|
|
189
|
+
|
|
190
|
+
## Common Issues
|
|
191
|
+
|
|
192
|
+
| Issue | WCAG | Severity | Fix |
|
|
193
|
+
|-------|------|----------|-----|
|
|
194
|
+
| Missing alt text | 1.1.1 | Critical | Add descriptive alt |
|
|
195
|
+
| No focus visible | 2.4.7 | High | Add focus styles |
|
|
196
|
+
| Low contrast | 1.4.3 | High | Increase contrast |
|
|
197
|
+
| No keyboard access | 2.1.1 | Critical | Add keyboard handlers |
|
|
198
|
+
| Missing form labels | 1.3.1 | High | Add label elements |
|
|
199
|
+
| No skip links | 2.4.1 | Medium | Add skip navigation |
|
|
200
|
+
|
|
201
|
+
---
|
|
202
|
+
|
|
203
|
+
## Testing Tools
|
|
204
|
+
|
|
205
|
+
```bash
|
|
206
|
+
# Run accessibility audit
|
|
207
|
+
/a11y audit ./src/components/Button.tsx
|
|
208
|
+
|
|
209
|
+
# Check specific WCAG criteria
|
|
210
|
+
/a11y check 1.4.3 # Color contrast
|
|
211
|
+
|
|
212
|
+
# Generate a11y tests
|
|
213
|
+
/a11y test-gen ./src/components/Form.tsx
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
---
|
|
217
|
+
|
|
218
|
+
## Automated Testing
|
|
219
|
+
|
|
220
|
+
```typescript
|
|
221
|
+
import { render } from '@testing-library/react';
|
|
222
|
+
import { axe, toHaveNoViolations } from 'jest-axe';
|
|
223
|
+
|
|
224
|
+
expect.extend(toHaveNoViolations);
|
|
225
|
+
|
|
226
|
+
describe('Button', () => {
|
|
227
|
+
it('should have no accessibility violations', async () => {
|
|
228
|
+
const { container } = render(<Button>Click me</Button>);
|
|
229
|
+
const results = await axe(container);
|
|
230
|
+
expect(results).toHaveNoViolations();
|
|
231
|
+
});
|
|
232
|
+
});
|
|
233
|
+
```
|