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,392 @@
|
|
|
1
|
+
# Keyboard Navigation Prompt
|
|
2
|
+
|
|
3
|
+
Ensure proper keyboard accessibility for interactive components.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Prompt Template
|
|
8
|
+
|
|
9
|
+
```markdown
|
|
10
|
+
## Keyboard Navigation Review
|
|
11
|
+
|
|
12
|
+
Review the following component for keyboard accessibility:
|
|
13
|
+
|
|
14
|
+
```{{language}}
|
|
15
|
+
{{code}}
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
### Check For:
|
|
19
|
+
|
|
20
|
+
**Focus Management**
|
|
21
|
+
- [ ] All interactive elements are focusable
|
|
22
|
+
- [ ] Focus order is logical
|
|
23
|
+
- [ ] Focus is visible
|
|
24
|
+
- [ ] No keyboard traps
|
|
25
|
+
|
|
26
|
+
**Key Handling**
|
|
27
|
+
- [ ] Enter/Space activates buttons
|
|
28
|
+
- [ ] Escape closes modals/dropdowns
|
|
29
|
+
- [ ] Arrow keys navigate within widgets
|
|
30
|
+
- [ ] Tab moves between elements
|
|
31
|
+
|
|
32
|
+
**Skip Links**
|
|
33
|
+
- [ ] Skip to main content available
|
|
34
|
+
- [ ] Skip navigation where appropriate
|
|
35
|
+
|
|
36
|
+
### Output Format:
|
|
37
|
+
1. Focus issues found
|
|
38
|
+
2. Missing keyboard handlers
|
|
39
|
+
3. Recommended implementation
|
|
40
|
+
4. Code examples
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
## Standard Keyboard Patterns
|
|
46
|
+
|
|
47
|
+
### Button
|
|
48
|
+
|
|
49
|
+
```tsx
|
|
50
|
+
// Native button handles keyboard automatically
|
|
51
|
+
<button onClick={handleClick}>
|
|
52
|
+
Click me
|
|
53
|
+
</button>
|
|
54
|
+
|
|
55
|
+
// If using div (not recommended), add keyboard handling
|
|
56
|
+
<div
|
|
57
|
+
role="button"
|
|
58
|
+
tabIndex={0}
|
|
59
|
+
onClick={handleClick}
|
|
60
|
+
onKeyDown={(e) => {
|
|
61
|
+
if (e.key === 'Enter' || e.key === ' ') {
|
|
62
|
+
e.preventDefault();
|
|
63
|
+
handleClick();
|
|
64
|
+
}
|
|
65
|
+
}}
|
|
66
|
+
>
|
|
67
|
+
Click me
|
|
68
|
+
</div>
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
### Modal/Dialog
|
|
72
|
+
|
|
73
|
+
```tsx
|
|
74
|
+
function Modal({ isOpen, onClose, children }) {
|
|
75
|
+
const modalRef = useRef<HTMLDivElement>(null);
|
|
76
|
+
const previousFocus = useRef<HTMLElement | null>(null);
|
|
77
|
+
|
|
78
|
+
useEffect(() => {
|
|
79
|
+
if (isOpen) {
|
|
80
|
+
// Store previous focus
|
|
81
|
+
previousFocus.current = document.activeElement as HTMLElement;
|
|
82
|
+
// Focus modal
|
|
83
|
+
modalRef.current?.focus();
|
|
84
|
+
} else {
|
|
85
|
+
// Restore focus
|
|
86
|
+
previousFocus.current?.focus();
|
|
87
|
+
}
|
|
88
|
+
}, [isOpen]);
|
|
89
|
+
|
|
90
|
+
// Handle Escape key
|
|
91
|
+
const handleKeyDown = (e: KeyboardEvent) => {
|
|
92
|
+
if (e.key === 'Escape') {
|
|
93
|
+
onClose();
|
|
94
|
+
}
|
|
95
|
+
};
|
|
96
|
+
|
|
97
|
+
if (!isOpen) return null;
|
|
98
|
+
|
|
99
|
+
return (
|
|
100
|
+
<FocusTrap>
|
|
101
|
+
<div
|
|
102
|
+
ref={modalRef}
|
|
103
|
+
role="dialog"
|
|
104
|
+
aria-modal="true"
|
|
105
|
+
tabIndex={-1}
|
|
106
|
+
onKeyDown={handleKeyDown}
|
|
107
|
+
>
|
|
108
|
+
{children}
|
|
109
|
+
<button onClick={onClose}>Close</button>
|
|
110
|
+
</div>
|
|
111
|
+
</FocusTrap>
|
|
112
|
+
);
|
|
113
|
+
}
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
### Dropdown Menu
|
|
117
|
+
|
|
118
|
+
```tsx
|
|
119
|
+
function DropdownMenu({ items }) {
|
|
120
|
+
const [isOpen, setIsOpen] = useState(false);
|
|
121
|
+
const [activeIndex, setActiveIndex] = useState(-1);
|
|
122
|
+
const menuRef = useRef<HTMLUListElement>(null);
|
|
123
|
+
|
|
124
|
+
const handleKeyDown = (e: KeyboardEvent) => {
|
|
125
|
+
switch (e.key) {
|
|
126
|
+
case 'ArrowDown':
|
|
127
|
+
e.preventDefault();
|
|
128
|
+
setActiveIndex((prev) =>
|
|
129
|
+
prev < items.length - 1 ? prev + 1 : 0
|
|
130
|
+
);
|
|
131
|
+
break;
|
|
132
|
+
case 'ArrowUp':
|
|
133
|
+
e.preventDefault();
|
|
134
|
+
setActiveIndex((prev) =>
|
|
135
|
+
prev > 0 ? prev - 1 : items.length - 1
|
|
136
|
+
);
|
|
137
|
+
break;
|
|
138
|
+
case 'Escape':
|
|
139
|
+
setIsOpen(false);
|
|
140
|
+
break;
|
|
141
|
+
case 'Enter':
|
|
142
|
+
case ' ':
|
|
143
|
+
if (activeIndex >= 0) {
|
|
144
|
+
e.preventDefault();
|
|
145
|
+
items[activeIndex].onClick();
|
|
146
|
+
}
|
|
147
|
+
break;
|
|
148
|
+
}
|
|
149
|
+
};
|
|
150
|
+
|
|
151
|
+
return (
|
|
152
|
+
<div onKeyDown={handleKeyDown}>
|
|
153
|
+
<button
|
|
154
|
+
aria-expanded={isOpen}
|
|
155
|
+
aria-haspopup="menu"
|
|
156
|
+
onClick={() => setIsOpen(!isOpen)}
|
|
157
|
+
>
|
|
158
|
+
Menu
|
|
159
|
+
</button>
|
|
160
|
+
{isOpen && (
|
|
161
|
+
<ul role="menu" ref={menuRef}>
|
|
162
|
+
{items.map((item, index) => (
|
|
163
|
+
<li
|
|
164
|
+
key={item.id}
|
|
165
|
+
role="menuitem"
|
|
166
|
+
tabIndex={activeIndex === index ? 0 : -1}
|
|
167
|
+
aria-selected={activeIndex === index}
|
|
168
|
+
>
|
|
169
|
+
{item.label}
|
|
170
|
+
</li>
|
|
171
|
+
))}
|
|
172
|
+
</ul>
|
|
173
|
+
)}
|
|
174
|
+
</div>
|
|
175
|
+
);
|
|
176
|
+
}
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
### Tabs
|
|
180
|
+
|
|
181
|
+
```tsx
|
|
182
|
+
function Tabs({ tabs }) {
|
|
183
|
+
const [activeTab, setActiveTab] = useState(0);
|
|
184
|
+
|
|
185
|
+
const handleKeyDown = (e: KeyboardEvent, index: number) => {
|
|
186
|
+
let newIndex = index;
|
|
187
|
+
|
|
188
|
+
switch (e.key) {
|
|
189
|
+
case 'ArrowRight':
|
|
190
|
+
newIndex = (index + 1) % tabs.length;
|
|
191
|
+
break;
|
|
192
|
+
case 'ArrowLeft':
|
|
193
|
+
newIndex = (index - 1 + tabs.length) % tabs.length;
|
|
194
|
+
break;
|
|
195
|
+
case 'Home':
|
|
196
|
+
newIndex = 0;
|
|
197
|
+
break;
|
|
198
|
+
case 'End':
|
|
199
|
+
newIndex = tabs.length - 1;
|
|
200
|
+
break;
|
|
201
|
+
default:
|
|
202
|
+
return;
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
e.preventDefault();
|
|
206
|
+
setActiveTab(newIndex);
|
|
207
|
+
};
|
|
208
|
+
|
|
209
|
+
return (
|
|
210
|
+
<div>
|
|
211
|
+
<div role="tablist">
|
|
212
|
+
{tabs.map((tab, index) => (
|
|
213
|
+
<button
|
|
214
|
+
key={tab.id}
|
|
215
|
+
role="tab"
|
|
216
|
+
aria-selected={activeTab === index}
|
|
217
|
+
tabIndex={activeTab === index ? 0 : -1}
|
|
218
|
+
onClick={() => setActiveTab(index)}
|
|
219
|
+
onKeyDown={(e) => handleKeyDown(e, index)}
|
|
220
|
+
>
|
|
221
|
+
{tab.label}
|
|
222
|
+
</button>
|
|
223
|
+
))}
|
|
224
|
+
</div>
|
|
225
|
+
<div role="tabpanel">
|
|
226
|
+
{tabs[activeTab].content}
|
|
227
|
+
</div>
|
|
228
|
+
</div>
|
|
229
|
+
);
|
|
230
|
+
}
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
---
|
|
234
|
+
|
|
235
|
+
## Focus Management Utilities
|
|
236
|
+
|
|
237
|
+
### Focus Trap Hook
|
|
238
|
+
|
|
239
|
+
```tsx
|
|
240
|
+
function useFocusTrap(isActive: boolean) {
|
|
241
|
+
const containerRef = useRef<HTMLDivElement>(null);
|
|
242
|
+
|
|
243
|
+
useEffect(() => {
|
|
244
|
+
if (!isActive) return;
|
|
245
|
+
|
|
246
|
+
const container = containerRef.current;
|
|
247
|
+
if (!container) return;
|
|
248
|
+
|
|
249
|
+
const focusableElements = container.querySelectorAll(
|
|
250
|
+
'button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])'
|
|
251
|
+
);
|
|
252
|
+
|
|
253
|
+
const firstElement = focusableElements[0] as HTMLElement;
|
|
254
|
+
const lastElement = focusableElements[focusableElements.length - 1] as HTMLElement;
|
|
255
|
+
|
|
256
|
+
const handleTab = (e: KeyboardEvent) => {
|
|
257
|
+
if (e.key !== 'Tab') return;
|
|
258
|
+
|
|
259
|
+
if (e.shiftKey) {
|
|
260
|
+
if (document.activeElement === firstElement) {
|
|
261
|
+
e.preventDefault();
|
|
262
|
+
lastElement.focus();
|
|
263
|
+
}
|
|
264
|
+
} else {
|
|
265
|
+
if (document.activeElement === lastElement) {
|
|
266
|
+
e.preventDefault();
|
|
267
|
+
firstElement.focus();
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
};
|
|
271
|
+
|
|
272
|
+
container.addEventListener('keydown', handleTab);
|
|
273
|
+
return () => container.removeEventListener('keydown', handleTab);
|
|
274
|
+
}, [isActive]);
|
|
275
|
+
|
|
276
|
+
return containerRef;
|
|
277
|
+
}
|
|
278
|
+
```
|
|
279
|
+
|
|
280
|
+
### Roving TabIndex
|
|
281
|
+
|
|
282
|
+
```tsx
|
|
283
|
+
function useRovingTabIndex(itemCount: number) {
|
|
284
|
+
const [activeIndex, setActiveIndex] = useState(0);
|
|
285
|
+
|
|
286
|
+
const handleKeyDown = (e: KeyboardEvent) => {
|
|
287
|
+
switch (e.key) {
|
|
288
|
+
case 'ArrowDown':
|
|
289
|
+
case 'ArrowRight':
|
|
290
|
+
e.preventDefault();
|
|
291
|
+
setActiveIndex((prev) => (prev + 1) % itemCount);
|
|
292
|
+
break;
|
|
293
|
+
case 'ArrowUp':
|
|
294
|
+
case 'ArrowLeft':
|
|
295
|
+
e.preventDefault();
|
|
296
|
+
setActiveIndex((prev) => (prev - 1 + itemCount) % itemCount);
|
|
297
|
+
break;
|
|
298
|
+
}
|
|
299
|
+
};
|
|
300
|
+
|
|
301
|
+
return { activeIndex, setActiveIndex, handleKeyDown };
|
|
302
|
+
}
|
|
303
|
+
```
|
|
304
|
+
|
|
305
|
+
---
|
|
306
|
+
|
|
307
|
+
## Skip Links
|
|
308
|
+
|
|
309
|
+
```tsx
|
|
310
|
+
// Add at the beginning of the page
|
|
311
|
+
<a href="#main-content" className="skip-link">
|
|
312
|
+
Skip to main content
|
|
313
|
+
</a>
|
|
314
|
+
|
|
315
|
+
<nav>
|
|
316
|
+
{/* Navigation items */}
|
|
317
|
+
</nav>
|
|
318
|
+
|
|
319
|
+
<main id="main-content" tabIndex={-1}>
|
|
320
|
+
{/* Main content */}
|
|
321
|
+
</main>
|
|
322
|
+
|
|
323
|
+
// CSS for skip link
|
|
324
|
+
.skip-link {
|
|
325
|
+
position: absolute;
|
|
326
|
+
left: -10000px;
|
|
327
|
+
width: 1px;
|
|
328
|
+
height: 1px;
|
|
329
|
+
overflow: hidden;
|
|
330
|
+
}
|
|
331
|
+
|
|
332
|
+
.skip-link:focus {
|
|
333
|
+
position: static;
|
|
334
|
+
width: auto;
|
|
335
|
+
height: auto;
|
|
336
|
+
}
|
|
337
|
+
```
|
|
338
|
+
|
|
339
|
+
---
|
|
340
|
+
|
|
341
|
+
## Testing Keyboard Navigation
|
|
342
|
+
|
|
343
|
+
```typescript
|
|
344
|
+
import { render, screen, fireEvent } from '@testing-library/react';
|
|
345
|
+
import userEvent from '@testing-library/user-event';
|
|
346
|
+
|
|
347
|
+
describe('Keyboard Navigation', () => {
|
|
348
|
+
it('should navigate menu with arrow keys', async () => {
|
|
349
|
+
render(<Menu items={menuItems} />);
|
|
350
|
+
|
|
351
|
+
const trigger = screen.getByRole('button');
|
|
352
|
+
await userEvent.click(trigger);
|
|
353
|
+
|
|
354
|
+
await userEvent.keyboard('{ArrowDown}');
|
|
355
|
+
expect(screen.getByRole('menuitem', { name: 'Item 1' })).toHaveFocus();
|
|
356
|
+
|
|
357
|
+
await userEvent.keyboard('{ArrowDown}');
|
|
358
|
+
expect(screen.getByRole('menuitem', { name: 'Item 2' })).toHaveFocus();
|
|
359
|
+
});
|
|
360
|
+
|
|
361
|
+
it('should close modal with Escape', async () => {
|
|
362
|
+
const onClose = jest.fn();
|
|
363
|
+
render(<Modal isOpen onClose={onClose} />);
|
|
364
|
+
|
|
365
|
+
await userEvent.keyboard('{Escape}');
|
|
366
|
+
expect(onClose).toHaveBeenCalled();
|
|
367
|
+
});
|
|
368
|
+
|
|
369
|
+
it('should trap focus within modal', async () => {
|
|
370
|
+
render(<Modal isOpen><button>First</button><button>Last</button></Modal>);
|
|
371
|
+
|
|
372
|
+
const lastButton = screen.getByRole('button', { name: 'Last' });
|
|
373
|
+
lastButton.focus();
|
|
374
|
+
|
|
375
|
+
await userEvent.tab();
|
|
376
|
+
expect(screen.getByRole('button', { name: 'First' })).toHaveFocus();
|
|
377
|
+
});
|
|
378
|
+
});
|
|
379
|
+
```
|
|
380
|
+
|
|
381
|
+
---
|
|
382
|
+
|
|
383
|
+
## Common Issues Checklist
|
|
384
|
+
|
|
385
|
+
- [ ] All buttons activatable with Enter and Space
|
|
386
|
+
- [ ] Modal/dialogs trap focus
|
|
387
|
+
- [ ] Modal/dialogs close with Escape
|
|
388
|
+
- [ ] Dropdowns navigable with arrow keys
|
|
389
|
+
- [ ] Tab order matches visual order
|
|
390
|
+
- [ ] Focus visible on all interactive elements
|
|
391
|
+
- [ ] No keyboard traps (can always Tab out)
|
|
392
|
+
- [ ] Skip links available for navigation
|
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
# WCAG Compliance Check Prompt
|
|
2
|
+
|
|
3
|
+
Check component or page for WCAG 2.1 compliance.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Prompt Template
|
|
8
|
+
|
|
9
|
+
```markdown
|
|
10
|
+
## WCAG Compliance Check
|
|
11
|
+
|
|
12
|
+
Please check the following code for WCAG 2.1 {{level}} compliance:
|
|
13
|
+
|
|
14
|
+
```{{language}}
|
|
15
|
+
{{code}}
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
### Check For:
|
|
19
|
+
|
|
20
|
+
**Perceivable (WCAG 1.x)**
|
|
21
|
+
- [ ] Text alternatives for non-text content (1.1)
|
|
22
|
+
- [ ] Captions and alternatives for multimedia (1.2)
|
|
23
|
+
- [ ] Content adaptable to different presentations (1.3)
|
|
24
|
+
- [ ] Distinguishable content (color, contrast) (1.4)
|
|
25
|
+
|
|
26
|
+
**Operable (WCAG 2.x)**
|
|
27
|
+
- [ ] Keyboard accessible (2.1)
|
|
28
|
+
- [ ] Enough time to read and use content (2.2)
|
|
29
|
+
- [ ] No content that causes seizures (2.3)
|
|
30
|
+
- [ ] Navigable with clear wayfinding (2.4)
|
|
31
|
+
- [ ] Input modalities beyond keyboard (2.5)
|
|
32
|
+
|
|
33
|
+
**Understandable (WCAG 3.x)**
|
|
34
|
+
- [ ] Readable text content (3.1)
|
|
35
|
+
- [ ] Predictable operation (3.2)
|
|
36
|
+
- [ ] Input assistance for forms (3.3)
|
|
37
|
+
|
|
38
|
+
**Robust (WCAG 4.x)**
|
|
39
|
+
- [ ] Compatible with assistive technologies (4.1)
|
|
40
|
+
|
|
41
|
+
### Output Format:
|
|
42
|
+
For each finding, provide:
|
|
43
|
+
1. WCAG criterion violated (e.g., "1.1.1 Non-text Content")
|
|
44
|
+
2. Level (A, AA, or AAA)
|
|
45
|
+
3. Issue description
|
|
46
|
+
4. Code location
|
|
47
|
+
5. Remediation suggestion
|
|
48
|
+
6. Code fix (if applicable)
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
|
|
53
|
+
## Usage Examples
|
|
54
|
+
|
|
55
|
+
### Check Component for AA Compliance
|
|
56
|
+
|
|
57
|
+
```markdown
|
|
58
|
+
/a11y wcag AA
|
|
59
|
+
|
|
60
|
+
Check this button component for WCAG AA compliance:
|
|
61
|
+
|
|
62
|
+
```tsx
|
|
63
|
+
export const Button = ({ children, onClick }) => (
|
|
64
|
+
<div onClick={onClick} style={{ backgroundColor: '#777', color: '#999' }}>
|
|
65
|
+
{children}
|
|
66
|
+
</div>
|
|
67
|
+
);
|
|
68
|
+
```
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
### Expected Output
|
|
72
|
+
|
|
73
|
+
```markdown
|
|
74
|
+
## WCAG Compliance Report
|
|
75
|
+
|
|
76
|
+
### Violations Found: 3
|
|
77
|
+
|
|
78
|
+
#### 1. WCAG 1.4.3 Contrast (Minimum) - Level AA
|
|
79
|
+
**Issue:** Insufficient color contrast between text (#999) and background (#777)
|
|
80
|
+
**Ratio:** 1.63:1 (Required: 4.5:1 for normal text)
|
|
81
|
+
**Location:** Button component styles
|
|
82
|
+
**Fix:**
|
|
83
|
+
```tsx
|
|
84
|
+
style={{ backgroundColor: '#777', color: '#fff' }}
|
|
85
|
+
// or
|
|
86
|
+
style={{ backgroundColor: '#333', color: '#fff' }}
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
#### 2. WCAG 2.1.1 Keyboard - Level A
|
|
90
|
+
**Issue:** `<div>` with onClick is not keyboard accessible
|
|
91
|
+
**Location:** Button component
|
|
92
|
+
**Fix:**
|
|
93
|
+
```tsx
|
|
94
|
+
<button onClick={onClick}>
|
|
95
|
+
{children}
|
|
96
|
+
</button>
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
#### 3. WCAG 4.1.2 Name, Role, Value - Level A
|
|
100
|
+
**Issue:** Using `<div>` instead of semantic `<button>` element
|
|
101
|
+
**Location:** Button component
|
|
102
|
+
**Fix:** Use native `<button>` element or add `role="button"` with keyboard handlers
|
|
103
|
+
|
|
104
|
+
### Recommended Fixed Code
|
|
105
|
+
|
|
106
|
+
```tsx
|
|
107
|
+
export const Button = ({ children, onClick }) => (
|
|
108
|
+
<button
|
|
109
|
+
onClick={onClick}
|
|
110
|
+
style={{ backgroundColor: '#333', color: '#fff' }}
|
|
111
|
+
>
|
|
112
|
+
{children}
|
|
113
|
+
</button>
|
|
114
|
+
);
|
|
115
|
+
```
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
---
|
|
119
|
+
|
|
120
|
+
## WCAG Quick Reference
|
|
121
|
+
|
|
122
|
+
### Level A (Minimum)
|
|
123
|
+
Must pass for basic accessibility:
|
|
124
|
+
- 1.1.1 Non-text Content
|
|
125
|
+
- 1.3.1 Info and Relationships
|
|
126
|
+
- 1.4.1 Use of Color
|
|
127
|
+
- 2.1.1 Keyboard
|
|
128
|
+
- 2.4.1 Bypass Blocks
|
|
129
|
+
- 4.1.1 Parsing
|
|
130
|
+
- 4.1.2 Name, Role, Value
|
|
131
|
+
|
|
132
|
+
### Level AA (Standard)
|
|
133
|
+
Required for most compliance:
|
|
134
|
+
- 1.4.3 Contrast (Minimum) - 4.5:1
|
|
135
|
+
- 1.4.4 Resize Text
|
|
136
|
+
- 2.4.6 Headings and Labels
|
|
137
|
+
- 2.4.7 Focus Visible
|
|
138
|
+
- 3.1.2 Language of Parts
|
|
139
|
+
- 3.2.3 Consistent Navigation
|
|
140
|
+
|
|
141
|
+
### Level AAA (Enhanced)
|
|
142
|
+
Best practice:
|
|
143
|
+
- 1.4.6 Contrast (Enhanced) - 7:1
|
|
144
|
+
- 2.4.9 Link Purpose
|
|
145
|
+
- 3.1.5 Reading Level
|
|
146
|
+
- 3.2.5 Change on Request
|
|
147
|
+
|
|
148
|
+
---
|
|
149
|
+
|
|
150
|
+
## Automated Checks
|
|
151
|
+
|
|
152
|
+
```typescript
|
|
153
|
+
// These can be automated with tools
|
|
154
|
+
const automatedChecks = [
|
|
155
|
+
'color-contrast',
|
|
156
|
+
'image-alt',
|
|
157
|
+
'label',
|
|
158
|
+
'link-name',
|
|
159
|
+
'list',
|
|
160
|
+
'listitem',
|
|
161
|
+
'meta-viewport',
|
|
162
|
+
'valid-lang'
|
|
163
|
+
];
|
|
164
|
+
|
|
165
|
+
// These require manual review
|
|
166
|
+
const manualChecks = [
|
|
167
|
+
'meaningful-alt-text',
|
|
168
|
+
'logical-tab-order',
|
|
169
|
+
'consistent-navigation',
|
|
170
|
+
'error-prevention'
|
|
171
|
+
];
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
---
|
|
175
|
+
|
|
176
|
+
## Integration with Testing
|
|
177
|
+
|
|
178
|
+
```typescript
|
|
179
|
+
// vitest + @axe-core/react
|
|
180
|
+
import { axe, toHaveNoViolations } from 'jest-axe';
|
|
181
|
+
|
|
182
|
+
expect.extend(toHaveNoViolations);
|
|
183
|
+
|
|
184
|
+
it('should have no WCAG violations', async () => {
|
|
185
|
+
const { container } = render(<MyComponent />);
|
|
186
|
+
const results = await axe(container);
|
|
187
|
+
expect(results).toHaveNoViolations();
|
|
188
|
+
});
|
|
189
|
+
```
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# Debugging Prompts
|
|
2
|
+
|
|
3
|
+
AI-assisted debugging workflows.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Available Prompts
|
|
8
|
+
|
|
9
|
+
| Prompt | Use Case |
|
|
10
|
+
|--------|----------|
|
|
11
|
+
| [systematic.md](./systematic.md) | Systematic debugging approach |
|
|
12
|
+
| [error-analysis.md](./error-analysis.md) | Analyze error messages |
|
|
13
|
+
| [performance.md](./performance.md) | Debug performance issues |
|
|
14
|
+
| [memory.md](./memory.md) | Debug memory leaks |
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## Quick Commands
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
/debug analyze <error> # Analyze error message
|
|
22
|
+
/debug trace <issue> # Trace issue through code
|
|
23
|
+
/debug suggest <symptom> # Get fix suggestions
|
|
24
|
+
/debug test <hypothesis> # Test a hypothesis
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
## Debugging Workflow
|
|
30
|
+
|
|
31
|
+
```
|
|
32
|
+
1. Reproduce
|
|
33
|
+
- Consistent steps
|
|
34
|
+
- Minimal reproduction
|
|
35
|
+
- Environment details
|
|
36
|
+
|
|
37
|
+
2. Isolate
|
|
38
|
+
- Narrow scope
|
|
39
|
+
- Binary search
|
|
40
|
+
- Remove variables
|
|
41
|
+
|
|
42
|
+
3. Identify
|
|
43
|
+
- Root cause analysis
|
|
44
|
+
- Trace execution
|
|
45
|
+
- Check assumptions
|
|
46
|
+
|
|
47
|
+
4. Fix
|
|
48
|
+
- Minimal change
|
|
49
|
+
- Test fix
|
|
50
|
+
- Prevent regression
|
|
51
|
+
```
|