agileflow 3.4.3 → 4.0.0-alpha.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +238 -473
- package/README.md +22 -114
- package/bin/agileflow.js +15 -0
- package/bin/hooks/pre-bash.js +35 -0
- package/bin/hooks/pre-compact.js +34 -0
- package/bin/hooks/pre-edit.js +32 -0
- package/bin/hooks/pre-write.js +32 -0
- package/bin/hooks/session-start.js +42 -0
- package/bin/hooks/stop.js +34 -0
- package/content/plugins/ads/plugin.yaml +14 -0
- package/content/plugins/audit/plugin.yaml +14 -0
- package/content/plugins/core/hooks/babysit-mentor-injector.js +55 -0
- package/content/plugins/core/hooks/context-loader.js +169 -0
- package/content/plugins/core/hooks/damage-control-bash.js +78 -0
- package/content/plugins/core/hooks/damage-control-edit.js +76 -0
- package/content/plugins/core/hooks/damage-control-patterns.yaml +100 -0
- package/content/plugins/core/hooks/damage-control-write.js +72 -0
- package/content/plugins/core/hooks/pre-compact-state.js +90 -0
- package/content/plugins/core/hooks/session-welcome.js +19 -0
- package/content/plugins/core/plugin.yaml +82 -0
- package/content/plugins/core/skills/agileflow-adr/SKILL.md +179 -0
- package/content/plugins/core/skills/agileflow-babysit-mentor/SKILL.md +144 -0
- package/content/plugins/core/skills/agileflow-epic-planner/SKILL.md +179 -0
- package/content/plugins/core/skills/agileflow-status-updater/SKILL.md +132 -0
- package/content/plugins/core/skills/agileflow-story-writer/SKILL.md +200 -0
- package/content/plugins/council/plugin.yaml +14 -0
- package/content/plugins/seo/plugin.yaml +14 -0
- package/package.json +29 -49
- package/src/cli/commands/doctor.js +159 -0
- package/src/cli/commands/hook.js +80 -0
- package/src/cli/commands/setup.js +292 -0
- package/src/cli/commands/status.js +47 -0
- package/src/cli/commands/update.js +83 -0
- package/src/cli/index.js +73 -0
- package/src/cli/wizard/behaviors-picker.js +108 -0
- package/src/cli/wizard/ide-picker.js +57 -0
- package/src/cli/wizard/personalization.js +64 -0
- package/src/cli/wizard/plugin-picker.js +106 -0
- package/src/lib/hash.js +41 -0
- package/src/runtime/config/defaults.js +61 -0
- package/src/runtime/config/loader.js +117 -0
- package/src/runtime/config/schema.json +99 -0
- package/src/runtime/config/writer.js +55 -0
- package/src/runtime/hooks/aggregator.js +157 -0
- package/src/runtime/hooks/chain.js +93 -0
- package/src/runtime/hooks/logger.js +68 -0
- package/src/runtime/hooks/manifest-loader.js +228 -0
- package/src/runtime/hooks/orchestrator.js +322 -0
- package/src/runtime/ide/capabilities.js +111 -0
- package/src/runtime/ide/claude-code-settings.js +234 -0
- package/src/runtime/ide/claude-code-skills.js +202 -0
- package/src/runtime/installer/file-index.js +112 -0
- package/src/runtime/installer/install.js +329 -0
- package/src/runtime/installer/stash.js +61 -0
- package/src/runtime/installer/sync-engine.js +205 -0
- package/src/runtime/plugins/registry.js +132 -0
- package/src/runtime/plugins/resolver.js +138 -0
- package/src/runtime/plugins/validator.js +196 -0
- package/src/runtime/skills/validator.js +335 -0
- package/lib/README.md +0 -178
- package/lib/api-routes.js +0 -625
- package/lib/api-server.js +0 -278
- package/lib/cache-provider.js +0 -155
- package/lib/codebase-indexer.js +0 -819
- package/lib/colors.generated.js +0 -117
- package/lib/colors.js +0 -341
- package/lib/consent.js +0 -232
- package/lib/content-sanitizer.js +0 -464
- package/lib/correlation.js +0 -277
- package/lib/drivers/claude-driver.ts +0 -312
- package/lib/drivers/codex-driver.ts +0 -464
- package/lib/drivers/driver-manager.ts +0 -159
- package/lib/drivers/gemini-driver.ts +0 -498
- package/lib/drivers/index.ts +0 -17
- package/lib/error-codes.js +0 -590
- package/lib/errors.js +0 -670
- package/lib/feature-flags.js +0 -171
- package/lib/feedback.js +0 -595
- package/lib/file-cache.js +0 -541
- package/lib/flag-detection.js +0 -344
- package/lib/format-error.js +0 -156
- package/lib/gate-runner.js +0 -282
- package/lib/generator-factory.js +0 -333
- package/lib/git-operations.js +0 -266
- package/lib/lazy-require.js +0 -59
- package/lib/lock-file.js +0 -144
- package/lib/logger.js +0 -106
- package/lib/merge-operations.js +0 -1006
- package/lib/path-resolver.js +0 -544
- package/lib/path-utils.js +0 -49
- package/lib/paths.js +0 -291
- package/lib/placeholder-registry.js +0 -822
- package/lib/process-executor.js +0 -214
- package/lib/progress.js +0 -334
- package/lib/protocol/driver.ts +0 -354
- package/lib/protocol/index.ts +0 -12
- package/lib/protocol/ir.ts +0 -271
- package/lib/registry-cache.js +0 -80
- package/lib/registry-di.js +0 -358
- package/lib/result-schema.js +0 -363
- package/lib/result.js +0 -210
- package/lib/session-display.js +0 -331
- package/lib/session-operations.js +0 -611
- package/lib/session-registry.js +0 -484
- package/lib/session-state-machine.js +0 -465
- package/lib/session-switching.js +0 -191
- package/lib/skill-loader.js +0 -213
- package/lib/smart-json-file.js +0 -682
- package/lib/state-machine.js +0 -286
- package/lib/table-formatter.js +0 -519
- package/lib/template-loader.js +0 -143
- package/lib/transient-status.js +0 -374
- package/lib/ui-manager.js +0 -612
- package/lib/validate-args.js +0 -213
- package/lib/validate-commands.js +0 -308
- package/lib/validate-names.js +0 -143
- package/lib/validate-paths.js +0 -434
- package/lib/validate.js +0 -134
- package/lib/worktree-operations.js +0 -201
- package/lib/yaml-utils.js +0 -164
- package/scripts/README.md +0 -267
- package/scripts/af +0 -34
- package/scripts/agent-loop.js +0 -879
- package/scripts/agileflow-configure.js +0 -368
- package/scripts/agileflow-statusline.sh +0 -857
- package/scripts/agileflow-welcome.js +0 -2246
- package/scripts/api-server-runner.js +0 -177
- package/scripts/archive-completed-stories.sh +0 -308
- package/scripts/auto-self-improve.js +0 -326
- package/scripts/automation-run-due.js +0 -128
- package/scripts/babysit-clear-restore.js +0 -154
- package/scripts/babysit-context-restore.js +0 -89
- package/scripts/backfill-ideation-status.js +0 -128
- package/scripts/batch-pmap-loop.js +0 -551
- package/scripts/check-sessions.js +0 -116
- package/scripts/check-update.js +0 -282
- package/scripts/ci-summary.js +0 -294
- package/scripts/claude-smart.sh +0 -85
- package/scripts/claude-tmux.sh +0 -737
- package/scripts/claude-watchdog.sh +0 -225
- package/scripts/clear-active-command.js +0 -48
- package/scripts/compress-status.sh +0 -116
- package/scripts/context-loader.js +0 -310
- package/scripts/damage-control/bash-tool-damage-control.js +0 -22
- package/scripts/damage-control/edit-tool-damage-control.js +0 -19
- package/scripts/damage-control/patterns.yaml +0 -227
- package/scripts/damage-control/write-tool-damage-control.js +0 -19
- package/scripts/damage-control-bash.js +0 -51
- package/scripts/damage-control-edit.js +0 -48
- package/scripts/damage-control-multi-agent.js +0 -231
- package/scripts/damage-control-write.js +0 -48
- package/scripts/dependency-check.js +0 -311
- package/scripts/document-repl.js +0 -793
- package/scripts/expertise-metrics.sh +0 -264
- package/scripts/generate-all.sh +0 -77
- package/scripts/generate-colors.js +0 -314
- package/scripts/generators/agent-registry.js +0 -183
- package/scripts/generators/command-registry.js +0 -166
- package/scripts/generators/index.js +0 -85
- package/scripts/generators/inject-babysit.js +0 -191
- package/scripts/generators/inject-help.js +0 -125
- package/scripts/generators/inject-readme.js +0 -166
- package/scripts/generators/skill-registry.js +0 -188
- package/scripts/get-env.js +0 -225
- package/scripts/init.sh +0 -76
- package/scripts/lib/README-portable-tasks.md +0 -424
- package/scripts/lib/ac-test-matcher.js +0 -452
- package/scripts/lib/audit-cleanup.js +0 -250
- package/scripts/lib/audit-registry.js +0 -340
- package/scripts/lib/automation-registry.js +0 -544
- package/scripts/lib/automation-runner.js +0 -476
- package/scripts/lib/browser-qa-evidence.js +0 -409
- package/scripts/lib/browser-qa-status.js +0 -192
- package/scripts/lib/bus-utils.js +0 -473
- package/scripts/lib/colors.generated.sh +0 -82
- package/scripts/lib/colors.sh +0 -46
- package/scripts/lib/command-prereqs.js +0 -280
- package/scripts/lib/concurrency-limiter.js +0 -511
- package/scripts/lib/configure-detect.js +0 -596
- package/scripts/lib/configure-features.js +0 -1927
- package/scripts/lib/configure-repair.js +0 -327
- package/scripts/lib/configure-utils.js +0 -114
- package/scripts/lib/context-formatter.js +0 -1158
- package/scripts/lib/context-loader.js +0 -840
- package/scripts/lib/counter.js +0 -103
- package/scripts/lib/damage-control-utils.js +0 -619
- package/scripts/lib/feature-catalog.js +0 -332
- package/scripts/lib/file-lock.js +0 -392
- package/scripts/lib/file-tracking.js +0 -735
- package/scripts/lib/frontmatter-parser.js +0 -133
- package/scripts/lib/gate-enforcer.js +0 -295
- package/scripts/lib/hook-metrics.js +0 -324
- package/scripts/lib/ideation-index.js +0 -1205
- package/scripts/lib/json-utils.sh +0 -162
- package/scripts/lib/lifecycle-detector.js +0 -125
- package/scripts/lib/model-profiles.js +0 -118
- package/scripts/lib/portable-tasks-cli.js +0 -274
- package/scripts/lib/portable-tasks.js +0 -479
- package/scripts/lib/process-cleanup.js +0 -527
- package/scripts/lib/quality-gates.js +0 -788
- package/scripts/lib/scale-detector.js +0 -396
- package/scripts/lib/sessionRegistry.js +0 -678
- package/scripts/lib/signal-detectors.js +0 -867
- package/scripts/lib/skill-catalog.js +0 -557
- package/scripts/lib/skill-recommender.js +0 -311
- package/scripts/lib/state-migrator.js +0 -353
- package/scripts/lib/status-task-bridge.js +0 -522
- package/scripts/lib/status-writer.js +0 -255
- package/scripts/lib/story-claiming.js +0 -704
- package/scripts/lib/story-state-machine.js +0 -437
- package/scripts/lib/sync-ideation-status.js +0 -291
- package/scripts/lib/task-registry-cache.js +0 -490
- package/scripts/lib/task-registry.js +0 -1191
- package/scripts/lib/task-sync.js +0 -230
- package/scripts/lib/tdd-phase-manager.js +0 -455
- package/scripts/lib/team-events.js +0 -510
- package/scripts/lib/tmux-audit-monitor.js +0 -612
- package/scripts/lib/tmux-group-colors.js +0 -113
- package/scripts/lib/tool-registry.yaml +0 -241
- package/scripts/lib/tool-shed.js +0 -441
- package/scripts/lib/validation-registry.js +0 -177
- package/scripts/messaging-bridge.js +0 -561
- package/scripts/migrate-ideation-index.js +0 -553
- package/scripts/native-team-observer.js +0 -219
- package/scripts/obtain-context.js +0 -272
- package/scripts/pre-push-check.sh +0 -46
- package/scripts/precompact-context.sh +0 -306
- package/scripts/query-codebase.js +0 -543
- package/scripts/ralph-loop.js +0 -1278
- package/scripts/resume-session.sh +0 -121
- package/scripts/screenshot-verifier.js +0 -215
- package/scripts/session-boundary.js +0 -138
- package/scripts/session-coordinator.sh +0 -232
- package/scripts/session-manager.js +0 -546
- package/scripts/smart-detect.js +0 -449
- package/scripts/spawn-audit-sessions.js +0 -877
- package/scripts/spawn-parallel.js +0 -751
- package/scripts/strip-ai-attribution.js +0 -63
- package/scripts/task-completed-gate.js +0 -237
- package/scripts/team-manager.js +0 -596
- package/scripts/team-status-display.js +0 -200
- package/scripts/teammate-idle-gate.js +0 -237
- package/scripts/test-session-boundary.js +0 -80
- package/scripts/tmux-close-windows.sh +0 -180
- package/scripts/tmux-restore-window.sh +0 -67
- package/scripts/tmux-save-closed-window.sh +0 -35
- package/scripts/tui/App.js +0 -151
- package/scripts/tui/Dashboard.js +0 -277
- package/scripts/tui/blessed/data/watcher.js +0 -180
- package/scripts/tui/blessed/index.js +0 -244
- package/scripts/tui/blessed/panels/output.js +0 -101
- package/scripts/tui/blessed/panels/sessions.js +0 -150
- package/scripts/tui/blessed/panels/trace.js +0 -97
- package/scripts/tui/blessed/ui/help.js +0 -77
- package/scripts/tui/blessed/ui/screen.js +0 -52
- package/scripts/tui/blessed/ui/statusbar.js +0 -47
- package/scripts/tui/blessed/ui/tabbar.js +0 -99
- package/scripts/tui/index.js +0 -70
- package/scripts/tui/lib/crashRecovery.js +0 -304
- package/scripts/tui/lib/eventStream.js +0 -309
- package/scripts/tui/lib/keyboard.js +0 -261
- package/scripts/tui/lib/loopControl.js +0 -371
- package/scripts/tui/panels/OutputPanel.js +0 -240
- package/scripts/tui/panels/SessionPanel.js +0 -170
- package/scripts/tui/panels/TracePanel.js +0 -298
- package/scripts/tui/simple-tui.js +0 -510
- package/scripts/validate-expertise.sh +0 -263
- package/scripts/validate-tokens.sh +0 -73
- package/scripts/validators/README.md +0 -143
- package/scripts/validators/component-validator.js +0 -239
- package/scripts/validators/json-schema-validator.js +0 -186
- package/scripts/validators/markdown-validator.js +0 -152
- package/scripts/validators/migration-validator.js +0 -129
- package/scripts/validators/security-validator.js +0 -380
- package/scripts/validators/story-format-validator.js +0 -197
- package/scripts/validators/test-result-validator.js +0 -114
- package/scripts/validators/workflow-validator.js +0 -247
- package/scripts/welcome-deferred.js +0 -437
- package/scripts/worktree-create.sh +0 -111
- package/src/core/agents/a11y-analyzer-aria.md +0 -155
- package/src/core/agents/a11y-analyzer-forms.md +0 -162
- package/src/core/agents/a11y-analyzer-keyboard.md +0 -175
- package/src/core/agents/a11y-analyzer-semantic.md +0 -153
- package/src/core/agents/a11y-analyzer-visual.md +0 -158
- package/src/core/agents/a11y-consensus.md +0 -248
- package/src/core/agents/accessibility.md +0 -515
- package/src/core/agents/adr-writer.md +0 -463
- package/src/core/agents/ads-audit-budget.md +0 -181
- package/src/core/agents/ads-audit-compliance.md +0 -169
- package/src/core/agents/ads-audit-creative.md +0 -164
- package/src/core/agents/ads-audit-google.md +0 -226
- package/src/core/agents/ads-audit-meta.md +0 -183
- package/src/core/agents/ads-audit-tracking.md +0 -197
- package/src/core/agents/ads-consensus.md +0 -396
- package/src/core/agents/ads-generate.md +0 -145
- package/src/core/agents/ads-performance-tracker.md +0 -197
- package/src/core/agents/analytics.md +0 -617
- package/src/core/agents/api-quality-analyzer-conventions.md +0 -148
- package/src/core/agents/api-quality-analyzer-docs.md +0 -176
- package/src/core/agents/api-quality-analyzer-errors.md +0 -183
- package/src/core/agents/api-quality-analyzer-pagination.md +0 -171
- package/src/core/agents/api-quality-analyzer-versioning.md +0 -143
- package/src/core/agents/api-quality-consensus.md +0 -214
- package/src/core/agents/api-validator.md +0 -183
- package/src/core/agents/api.md +0 -665
- package/src/core/agents/arch-analyzer-circular.md +0 -148
- package/src/core/agents/arch-analyzer-complexity.md +0 -171
- package/src/core/agents/arch-analyzer-coupling.md +0 -146
- package/src/core/agents/arch-analyzer-layering.md +0 -151
- package/src/core/agents/arch-analyzer-patterns.md +0 -162
- package/src/core/agents/arch-consensus.md +0 -227
- package/src/core/agents/brainstorm-analyzer-features.md +0 -169
- package/src/core/agents/brainstorm-analyzer-growth.md +0 -161
- package/src/core/agents/brainstorm-analyzer-integration.md +0 -172
- package/src/core/agents/brainstorm-analyzer-market.md +0 -147
- package/src/core/agents/brainstorm-analyzer-ux.md +0 -167
- package/src/core/agents/brainstorm-consensus.md +0 -237
- package/src/core/agents/browser-qa.md +0 -328
- package/src/core/agents/ci.md +0 -511
- package/src/core/agents/code-reviewer.md +0 -288
- package/src/core/agents/codebase-query.md +0 -266
- package/src/core/agents/completeness-analyzer-api.md +0 -190
- package/src/core/agents/completeness-analyzer-conditional.md +0 -201
- package/src/core/agents/completeness-analyzer-handlers.md +0 -159
- package/src/core/agents/completeness-analyzer-imports.md +0 -159
- package/src/core/agents/completeness-analyzer-routes.md +0 -182
- package/src/core/agents/completeness-analyzer-state.md +0 -188
- package/src/core/agents/completeness-analyzer-stubs.md +0 -198
- package/src/core/agents/completeness-consensus.md +0 -286
- package/src/core/agents/compliance.md +0 -509
- package/src/core/agents/council-advocate.md +0 -206
- package/src/core/agents/council-analyst.md +0 -252
- package/src/core/agents/council-optimist.md +0 -170
- package/src/core/agents/database.md +0 -601
- package/src/core/agents/datamigration.md +0 -699
- package/src/core/agents/design.md +0 -525
- package/src/core/agents/devops.md +0 -720
- package/src/core/agents/documentation.md +0 -504
- package/src/core/agents/epic-planner.md +0 -480
- package/src/core/agents/error-analyzer.md +0 -201
- package/src/core/agents/integrations.md +0 -603
- package/src/core/agents/legal-analyzer-a11y.md +0 -110
- package/src/core/agents/legal-analyzer-ai.md +0 -117
- package/src/core/agents/legal-analyzer-consumer.md +0 -108
- package/src/core/agents/legal-analyzer-content.md +0 -113
- package/src/core/agents/legal-analyzer-international.md +0 -115
- package/src/core/agents/legal-analyzer-licensing.md +0 -115
- package/src/core/agents/legal-analyzer-privacy.md +0 -108
- package/src/core/agents/legal-analyzer-security.md +0 -112
- package/src/core/agents/legal-analyzer-terms.md +0 -111
- package/src/core/agents/legal-consensus.md +0 -242
- package/src/core/agents/logic-analyzer-edge.md +0 -170
- package/src/core/agents/logic-analyzer-flow.md +0 -253
- package/src/core/agents/logic-analyzer-invariant.md +0 -206
- package/src/core/agents/logic-analyzer-race.md +0 -266
- package/src/core/agents/logic-analyzer-type.md +0 -217
- package/src/core/agents/logic-consensus.md +0 -253
- package/src/core/agents/mentor.md +0 -654
- package/src/core/agents/mobile.md +0 -501
- package/src/core/agents/monitoring.md +0 -537
- package/src/core/agents/multi-expert.md +0 -311
- package/src/core/agents/orchestrator.md +0 -749
- package/src/core/agents/perf-analyzer-assets.md +0 -174
- package/src/core/agents/perf-analyzer-bundle.md +0 -165
- package/src/core/agents/perf-analyzer-caching.md +0 -160
- package/src/core/agents/perf-analyzer-compute.md +0 -165
- package/src/core/agents/perf-analyzer-memory.md +0 -182
- package/src/core/agents/perf-analyzer-network.md +0 -157
- package/src/core/agents/perf-analyzer-queries.md +0 -155
- package/src/core/agents/perf-analyzer-rendering.md +0 -156
- package/src/core/agents/perf-consensus.md +0 -280
- package/src/core/agents/performance.md +0 -492
- package/src/core/agents/product.md +0 -535
- package/src/core/agents/qa.md +0 -765
- package/src/core/agents/readme-updater.md +0 -579
- package/src/core/agents/refactor.md +0 -558
- package/src/core/agents/research.md +0 -453
- package/src/core/agents/rlm-subcore.md +0 -207
- package/src/core/agents/schema-validator.md +0 -454
- package/src/core/agents/security-analyzer-api.md +0 -199
- package/src/core/agents/security-analyzer-auth.md +0 -160
- package/src/core/agents/security-analyzer-authz.md +0 -168
- package/src/core/agents/security-analyzer-deps.md +0 -147
- package/src/core/agents/security-analyzer-infra.md +0 -176
- package/src/core/agents/security-analyzer-injection.md +0 -148
- package/src/core/agents/security-analyzer-input.md +0 -191
- package/src/core/agents/security-analyzer-secrets.md +0 -175
- package/src/core/agents/security-consensus.md +0 -276
- package/src/core/agents/security.md +0 -486
- package/src/core/agents/seo-analyzer-content.md +0 -167
- package/src/core/agents/seo-analyzer-images.md +0 -187
- package/src/core/agents/seo-analyzer-performance.md +0 -206
- package/src/core/agents/seo-analyzer-schema.md +0 -176
- package/src/core/agents/seo-analyzer-sitemap.md +0 -172
- package/src/core/agents/seo-analyzer-technical.md +0 -144
- package/src/core/agents/seo-consensus.md +0 -289
- package/src/core/agents/team-coordinator.md +0 -333
- package/src/core/agents/team-lead.md +0 -171
- package/src/core/agents/test-analyzer-assertions.md +0 -181
- package/src/core/agents/test-analyzer-coverage.md +0 -183
- package/src/core/agents/test-analyzer-fragility.md +0 -185
- package/src/core/agents/test-analyzer-integration.md +0 -155
- package/src/core/agents/test-analyzer-maintenance.md +0 -173
- package/src/core/agents/test-analyzer-mocking.md +0 -178
- package/src/core/agents/test-analyzer-patterns.md +0 -189
- package/src/core/agents/test-analyzer-structure.md +0 -177
- package/src/core/agents/test-consensus.md +0 -294
- package/src/core/agents/testing.md +0 -527
- package/src/core/agents/ui-validator.md +0 -331
- package/src/core/agents/ui.md +0 -1227
- package/src/core/commands/adr/list.md +0 -191
- package/src/core/commands/adr/update.md +0 -258
- package/src/core/commands/adr/view.md +0 -274
- package/src/core/commands/adr.md +0 -394
- package/src/core/commands/ads/audit.md +0 -453
- package/src/core/commands/ads/budget.md +0 -97
- package/src/core/commands/ads/competitor.md +0 -112
- package/src/core/commands/ads/creative.md +0 -85
- package/src/core/commands/ads/generate.md +0 -238
- package/src/core/commands/ads/google.md +0 -112
- package/src/core/commands/ads/health.md +0 -327
- package/src/core/commands/ads/landing.md +0 -119
- package/src/core/commands/ads/linkedin.md +0 -112
- package/src/core/commands/ads/meta.md +0 -91
- package/src/core/commands/ads/microsoft.md +0 -115
- package/src/core/commands/ads/plan.md +0 -321
- package/src/core/commands/ads/test-plan.md +0 -317
- package/src/core/commands/ads/tiktok.md +0 -129
- package/src/core/commands/ads/track.md +0 -288
- package/src/core/commands/ads/youtube.md +0 -124
- package/src/core/commands/ads.md +0 -140
- package/src/core/commands/agent.md +0 -256
- package/src/core/commands/api.md +0 -267
- package/src/core/commands/assign.md +0 -369
- package/src/core/commands/audit.md +0 -531
- package/src/core/commands/auto.md +0 -556
- package/src/core/commands/automate.md +0 -415
- package/src/core/commands/babysit.md +0 -643
- package/src/core/commands/baseline.md +0 -743
- package/src/core/commands/batch.md +0 -551
- package/src/core/commands/blockers.md +0 -602
- package/src/core/commands/board.md +0 -509
- package/src/core/commands/browser-qa.md +0 -240
- package/src/core/commands/changelog.md +0 -582
- package/src/core/commands/choose.md +0 -430
- package/src/core/commands/ci.md +0 -330
- package/src/core/commands/code/accessibility.md +0 -363
- package/src/core/commands/code/api.md +0 -313
- package/src/core/commands/code/architecture.md +0 -313
- package/src/core/commands/code/completeness.md +0 -519
- package/src/core/commands/code/legal.md +0 -509
- package/src/core/commands/code/logic.md +0 -432
- package/src/core/commands/code/performance.md +0 -506
- package/src/core/commands/code/security.md +0 -509
- package/src/core/commands/code/test.md +0 -505
- package/src/core/commands/compress.md +0 -408
- package/src/core/commands/configure.md +0 -1159
- package/src/core/commands/context/export.md +0 -296
- package/src/core/commands/context/full.md +0 -353
- package/src/core/commands/context/note.md +0 -380
- package/src/core/commands/council.md +0 -592
- package/src/core/commands/debt.md +0 -491
- package/src/core/commands/deploy.md +0 -864
- package/src/core/commands/deps.md +0 -728
- package/src/core/commands/diagnose.md +0 -404
- package/src/core/commands/docs.md +0 -469
- package/src/core/commands/epic/edit.md +0 -213
- package/src/core/commands/epic/list.md +0 -190
- package/src/core/commands/epic/view.md +0 -267
- package/src/core/commands/epic.md +0 -477
- package/src/core/commands/export.md +0 -238
- package/src/core/commands/feedback.md +0 -603
- package/src/core/commands/handoff.md +0 -386
- package/src/core/commands/help.md +0 -194
- package/src/core/commands/ideate/brief.md +0 -363
- package/src/core/commands/ideate/discover.md +0 -399
- package/src/core/commands/ideate/features.md +0 -497
- package/src/core/commands/ideate/history.md +0 -403
- package/src/core/commands/ideate/new.md +0 -900
- package/src/core/commands/impact.md +0 -407
- package/src/core/commands/install.md +0 -529
- package/src/core/commands/learn/explain.md +0 -118
- package/src/core/commands/learn/glossary.md +0 -135
- package/src/core/commands/learn/patterns.md +0 -138
- package/src/core/commands/learn/tour.md +0 -126
- package/src/core/commands/maintain.md +0 -558
- package/src/core/commands/metrics.md +0 -844
- package/src/core/commands/migrate/codemods.md +0 -151
- package/src/core/commands/migrate/plan.md +0 -131
- package/src/core/commands/migrate/scan.md +0 -114
- package/src/core/commands/migrate/validate.md +0 -119
- package/src/core/commands/multi-expert.md +0 -447
- package/src/core/commands/packages.md +0 -535
- package/src/core/commands/pr.md +0 -337
- package/src/core/commands/readme-sync.md +0 -329
- package/src/core/commands/research/analyze.md +0 -798
- package/src/core/commands/research/ask.md +0 -864
- package/src/core/commands/research/import.md +0 -1025
- package/src/core/commands/research/list.md +0 -273
- package/src/core/commands/research/synthesize.md +0 -928
- package/src/core/commands/research/view.md +0 -323
- package/src/core/commands/retro.md +0 -795
- package/src/core/commands/review.md +0 -694
- package/src/core/commands/rlm.md +0 -446
- package/src/core/commands/roadmap/analyze.md +0 -400
- package/src/core/commands/rpi.md +0 -633
- package/src/core/commands/seo/audit.md +0 -444
- package/src/core/commands/seo/competitor.md +0 -174
- package/src/core/commands/seo/content.md +0 -107
- package/src/core/commands/seo/geo.md +0 -229
- package/src/core/commands/seo/hreflang.md +0 -140
- package/src/core/commands/seo/images.md +0 -96
- package/src/core/commands/seo/page.md +0 -198
- package/src/core/commands/seo/plan.md +0 -163
- package/src/core/commands/seo/programmatic.md +0 -131
- package/src/core/commands/seo/references/cwv-thresholds.md +0 -64
- package/src/core/commands/seo/references/eeat-framework.md +0 -110
- package/src/core/commands/seo/references/quality-gates.md +0 -91
- package/src/core/commands/seo/references/schema-types.md +0 -102
- package/src/core/commands/seo/schema.md +0 -183
- package/src/core/commands/seo/sitemap.md +0 -97
- package/src/core/commands/seo/technical.md +0 -100
- package/src/core/commands/seo.md +0 -107
- package/src/core/commands/session/cleanup.md +0 -452
- package/src/core/commands/session/end.md +0 -865
- package/src/core/commands/session/history.md +0 -293
- package/src/core/commands/session/init.md +0 -210
- package/src/core/commands/session/new.md +0 -827
- package/src/core/commands/session/resume.md +0 -291
- package/src/core/commands/session/spawn.md +0 -205
- package/src/core/commands/session/status.md +0 -274
- package/src/core/commands/skill/list.md +0 -139
- package/src/core/commands/skill/recommend.md +0 -216
- package/src/core/commands/sprint.md +0 -714
- package/src/core/commands/status/undo.md +0 -191
- package/src/core/commands/status.md +0 -423
- package/src/core/commands/story/edit.md +0 -204
- package/src/core/commands/story/list.md +0 -199
- package/src/core/commands/story/view.md +0 -312
- package/src/core/commands/story-validate.md +0 -491
- package/src/core/commands/story.md +0 -465
- package/src/core/commands/tdd-next.md +0 -238
- package/src/core/commands/tdd.md +0 -211
- package/src/core/commands/team/guide.md +0 -688
- package/src/core/commands/team/list.md +0 -59
- package/src/core/commands/team/start.md +0 -130
- package/src/core/commands/team/status.md +0 -66
- package/src/core/commands/team/stop.md +0 -78
- package/src/core/commands/template.md +0 -644
- package/src/core/commands/tests.md +0 -731
- package/src/core/commands/update.md +0 -591
- package/src/core/commands/validate-expertise.md +0 -305
- package/src/core/commands/velocity.md +0 -630
- package/src/core/commands/verify.md +0 -534
- package/src/core/commands/whats-new.md +0 -201
- package/src/core/commands/workflow.md +0 -449
- package/src/core/council/sessions/.gitkeep +0 -0
- package/src/core/council/shared_reasoning.template.md +0 -106
- package/src/core/experts/README.md +0 -236
- package/src/core/experts/_core-expertise.yaml +0 -105
- package/src/core/experts/accessibility/expertise.yaml +0 -115
- package/src/core/experts/accessibility/question.md +0 -41
- package/src/core/experts/accessibility/self-improve.md +0 -45
- package/src/core/experts/accessibility/workflow.md +0 -59
- package/src/core/experts/adr-writer/expertise.yaml +0 -138
- package/src/core/experts/adr-writer/question.md +0 -56
- package/src/core/experts/adr-writer/self-improve.md +0 -106
- package/src/core/experts/adr-writer/workflow.md +0 -184
- package/src/core/experts/analytics/expertise.yaml +0 -119
- package/src/core/experts/analytics/question.md +0 -74
- package/src/core/experts/analytics/self-improve.md +0 -163
- package/src/core/experts/analytics/workflow.md +0 -272
- package/src/core/experts/api/expertise.yaml +0 -124
- package/src/core/experts/api/question.md +0 -74
- package/src/core/experts/api/self-improve.md +0 -122
- package/src/core/experts/api/workflow.md +0 -248
- package/src/core/experts/ci/expertise.yaml +0 -106
- package/src/core/experts/ci/question.md +0 -69
- package/src/core/experts/ci/self-improve.md +0 -100
- package/src/core/experts/ci/workflow.md +0 -145
- package/src/core/experts/codebase-query/expertise.yaml +0 -121
- package/src/core/experts/codebase-query/question.md +0 -73
- package/src/core/experts/codebase-query/self-improve.md +0 -105
- package/src/core/experts/compliance/expertise.yaml +0 -101
- package/src/core/experts/compliance/question.md +0 -56
- package/src/core/experts/compliance/self-improve.md +0 -106
- package/src/core/experts/compliance/workflow.md +0 -184
- package/src/core/experts/database/expertise.yaml +0 -109
- package/src/core/experts/database/question.md +0 -74
- package/src/core/experts/database/self-improve.md +0 -121
- package/src/core/experts/database/workflow.md +0 -234
- package/src/core/experts/datamigration/expertise.yaml +0 -141
- package/src/core/experts/datamigration/question.md +0 -56
- package/src/core/experts/datamigration/self-improve.md +0 -106
- package/src/core/experts/datamigration/workflow.md +0 -184
- package/src/core/experts/design/expertise.yaml +0 -116
- package/src/core/experts/design/question.md +0 -56
- package/src/core/experts/design/self-improve.md +0 -106
- package/src/core/experts/design/workflow.md +0 -184
- package/src/core/experts/devops/expertise.yaml +0 -116
- package/src/core/experts/devops/question.md +0 -68
- package/src/core/experts/devops/self-improve.md +0 -102
- package/src/core/experts/devops/workflow.md +0 -142
- package/src/core/experts/documentation/expertise.yaml +0 -126
- package/src/core/experts/documentation/question.md +0 -41
- package/src/core/experts/documentation/self-improve.md +0 -45
- package/src/core/experts/documentation/workflow.md +0 -55
- package/src/core/experts/epic-planner/expertise.yaml +0 -144
- package/src/core/experts/epic-planner/question.md +0 -56
- package/src/core/experts/epic-planner/self-improve.md +0 -106
- package/src/core/experts/epic-planner/workflow.md +0 -184
- package/src/core/experts/integrations/expertise.yaml +0 -113
- package/src/core/experts/integrations/question.md +0 -74
- package/src/core/experts/integrations/self-improve.md +0 -151
- package/src/core/experts/integrations/workflow.md +0 -246
- package/src/core/experts/mentor/expertise.yaml +0 -125
- package/src/core/experts/mentor/question.md +0 -56
- package/src/core/experts/mentor/self-improve.md +0 -106
- package/src/core/experts/mentor/workflow.md +0 -184
- package/src/core/experts/mobile/expertise.yaml +0 -136
- package/src/core/experts/mobile/question.md +0 -72
- package/src/core/experts/mobile/self-improve.md +0 -140
- package/src/core/experts/mobile/workflow.md +0 -240
- package/src/core/experts/monitoring/expertise.yaml +0 -132
- package/src/core/experts/monitoring/question.md +0 -76
- package/src/core/experts/monitoring/self-improve.md +0 -150
- package/src/core/experts/monitoring/workflow.md +0 -264
- package/src/core/experts/performance/expertise.yaml +0 -68
- package/src/core/experts/performance/question.md +0 -41
- package/src/core/experts/performance/self-improve.md +0 -45
- package/src/core/experts/performance/workflow.md +0 -61
- package/src/core/experts/product/expertise.yaml +0 -143
- package/src/core/experts/product/question.md +0 -56
- package/src/core/experts/product/self-improve.md +0 -106
- package/src/core/experts/product/workflow.md +0 -184
- package/src/core/experts/qa/expertise.yaml +0 -110
- package/src/core/experts/qa/question.md +0 -56
- package/src/core/experts/qa/self-improve.md +0 -106
- package/src/core/experts/qa/workflow.md +0 -184
- package/src/core/experts/readme-updater/expertise.yaml +0 -141
- package/src/core/experts/readme-updater/question.md +0 -56
- package/src/core/experts/readme-updater/self-improve.md +0 -106
- package/src/core/experts/readme-updater/workflow.md +0 -184
- package/src/core/experts/refactor/expertise.yaml +0 -135
- package/src/core/experts/refactor/question.md +0 -41
- package/src/core/experts/refactor/self-improve.md +0 -45
- package/src/core/experts/refactor/workflow.md +0 -57
- package/src/core/experts/research/expertise.yaml +0 -143
- package/src/core/experts/research/question.md +0 -56
- package/src/core/experts/research/self-improve.md +0 -106
- package/src/core/experts/research/workflow.md +0 -184
- package/src/core/experts/security/expertise.yaml +0 -117
- package/src/core/experts/security/question.md +0 -77
- package/src/core/experts/security/self-improve.md +0 -102
- package/src/core/experts/security/workflow.md +0 -152
- package/src/core/experts/templates/expertise-template.yaml +0 -67
- package/src/core/experts/templates/question-template.md +0 -56
- package/src/core/experts/templates/self-improve-template.md +0 -106
- package/src/core/experts/templates/workflow-template.md +0 -184
- package/src/core/experts/testing/expertise.yaml +0 -112
- package/src/core/experts/testing/question.md +0 -68
- package/src/core/experts/testing/self-improve.md +0 -102
- package/src/core/experts/testing/workflow.md +0 -143
- package/src/core/experts/ui/expertise.yaml +0 -133
- package/src/core/experts/ui/question.md +0 -74
- package/src/core/experts/ui/self-improve.md +0 -122
- package/src/core/experts/ui/workflow.md +0 -262
- package/src/core/knowledge/ads/ad-audit-checklist-scoring.md +0 -424
- package/src/core/knowledge/ads/ad-optimization-logic.md +0 -590
- package/src/core/knowledge/ads/ad-technical-specifications.md +0 -385
- package/src/core/knowledge/ads/definitive-advertising-reference-2026.md +0 -506
- package/src/core/knowledge/ads/paid-advertising-research-2026.md +0 -445
- package/src/core/profiles/COMPARISON.md +0 -170
- package/src/core/profiles/README.md +0 -178
- package/src/core/profiles/claude-code.yaml +0 -111
- package/src/core/profiles/codex.yaml +0 -103
- package/src/core/profiles/cursor.yaml +0 -134
- package/src/core/profiles/examples.js +0 -250
- package/src/core/profiles/loader.js +0 -235
- package/src/core/profiles/windsurf.yaml +0 -159
- package/src/core/skills/_learnings/README.md +0 -91
- package/src/core/skills/_learnings/_template.yaml +0 -106
- package/src/core/skills/_learnings/code-review.yaml +0 -118
- package/src/core/skills/_learnings/commit.yaml +0 -69
- package/src/core/skills/_learnings/story-writer.yaml +0 -71
- package/src/core/teams/backend.json +0 -41
- package/src/core/teams/builder-validator.json +0 -51
- package/src/core/teams/code-review.json +0 -41
- package/src/core/teams/frontend.json +0 -41
- package/src/core/teams/fullstack.json +0 -41
- package/src/core/teams/logic-audit.json +0 -53
- package/src/core/teams/perf-audit.json +0 -71
- package/src/core/teams/qa.json +0 -41
- package/src/core/teams/security-audit.json +0 -71
- package/src/core/teams/solo.json +0 -35
- package/src/core/teams/test-audit.json +0 -71
- package/src/core/templates/CONTEXT.md.example +0 -49
- package/src/core/templates/README-template.md +0 -16
- package/src/core/templates/adr-template.md +0 -28
- package/src/core/templates/agent-coordination-pattern.md +0 -38
- package/src/core/templates/agent-profile-template.md +0 -51
- package/src/core/templates/agileflow-metadata.json +0 -150
- package/src/core/templates/browser-qa-spec.yaml +0 -94
- package/src/core/templates/ci-workflow.yml +0 -74
- package/src/core/templates/claude-settings.advanced.example.json +0 -75
- package/src/core/templates/claude-settings.example.json +0 -26
- package/src/core/templates/command-documentation.md +0 -187
- package/src/core/templates/command-prerequisites.yaml +0 -169
- package/src/core/templates/comms-note-template.md +0 -24
- package/src/core/templates/damage-control-patterns.yaml +0 -243
- package/src/core/templates/environment.json +0 -18
- package/src/core/templates/epic-template.md +0 -27
- package/src/core/templates/plan-template.md +0 -125
- package/src/core/templates/preserve-rules-common.md +0 -107
- package/src/core/templates/preserve-rules.json +0 -42
- package/src/core/templates/proactive-action-spec.md +0 -29
- package/src/core/templates/product-brief.md +0 -136
- package/src/core/templates/quality-gate-priorities.md +0 -34
- package/src/core/templates/research-template.md +0 -44
- package/src/core/templates/session-harness-protocol.md +0 -128
- package/src/core/templates/session-state.json +0 -56
- package/src/core/templates/story-lifecycle.md +0 -213
- package/src/core/templates/story-template.md +0 -92
- package/src/core/templates/tdd-test-template.js +0 -241
- package/src/core/templates/worktrees-guide.md +0 -231
- package/tools/agileflow-npx.js +0 -52
- package/tools/cli/agileflow-cli.js +0 -72
- package/tools/cli/commands/config.js +0 -285
- package/tools/cli/commands/doctor.js +0 -496
- package/tools/cli/commands/list.js +0 -385
- package/tools/cli/commands/session.js +0 -1176
- package/tools/cli/commands/setup.js +0 -255
- package/tools/cli/commands/status.js +0 -101
- package/tools/cli/commands/tui.js +0 -56
- package/tools/cli/commands/uninstall.js +0 -155
- package/tools/cli/commands/update.js +0 -299
- package/tools/cli/installers/core/installer.js +0 -892
- package/tools/cli/installers/ide/_base-ide.js +0 -518
- package/tools/cli/installers/ide/_interface.js +0 -238
- package/tools/cli/installers/ide/claude-code.js +0 -432
- package/tools/cli/installers/ide/codex.js +0 -426
- package/tools/cli/installers/ide/cursor.js +0 -217
- package/tools/cli/installers/ide/manager.js +0 -222
- package/tools/cli/installers/ide/windsurf.js +0 -282
- package/tools/cli/lib/command-context.js +0 -382
- package/tools/cli/lib/config-manager.js +0 -446
- package/tools/cli/lib/content-injector.js +0 -969
- package/tools/cli/lib/content-transformer.js +0 -496
- package/tools/cli/lib/docs-setup.js +0 -464
- package/tools/cli/lib/error-handler.js +0 -165
- package/tools/cli/lib/ide-error-factory.js +0 -421
- package/tools/cli/lib/ide-errors.js +0 -367
- package/tools/cli/lib/ide-generator.js +0 -357
- package/tools/cli/lib/ide-health-monitor.js +0 -364
- package/tools/cli/lib/ide-registry.js +0 -297
- package/tools/cli/lib/npm-utils.js +0 -103
- package/tools/cli/lib/self-update.js +0 -148
- package/tools/cli/lib/ui.js +0 -211
- package/tools/cli/lib/utils.js +0 -87
- package/tools/cli/lib/validation-middleware.js +0 -491
- package/tools/cli/lib/version-checker.js +0 -95
- package/tools/postinstall.js +0 -190
|
@@ -1,111 +0,0 @@
|
|
|
1
|
-
#!/bin/bash
|
|
2
|
-
# AgileFlow Worktree Helper Script
|
|
3
|
-
# Creates a git worktree with proper naming and guidance
|
|
4
|
-
|
|
5
|
-
set -e # Exit on error
|
|
6
|
-
|
|
7
|
-
# Color codes for output
|
|
8
|
-
RED='\033[0;31m'
|
|
9
|
-
GREEN='\033[0;32m'
|
|
10
|
-
YELLOW='\033[1;33m'
|
|
11
|
-
BLUE='\033[0;34m'
|
|
12
|
-
NC='\033[0m' # No Color
|
|
13
|
-
|
|
14
|
-
# Check if running in a git repository
|
|
15
|
-
if ! git rev-parse --is-inside-work-tree > /dev/null 2>&1; then
|
|
16
|
-
echo -e "${RED}Error: Not in a git repository${NC}"
|
|
17
|
-
exit 1
|
|
18
|
-
fi
|
|
19
|
-
|
|
20
|
-
# Check for feature name argument
|
|
21
|
-
if [ $# -eq 0 ]; then
|
|
22
|
-
echo -e "${RED}Error: Feature name required${NC}"
|
|
23
|
-
echo ""
|
|
24
|
-
echo "Usage: $0 <feature-name> [base-branch]"
|
|
25
|
-
echo ""
|
|
26
|
-
echo "Examples:"
|
|
27
|
-
echo " $0 authentication"
|
|
28
|
-
echo " $0 payment-integration"
|
|
29
|
-
echo " $0 hotfix-memory-leak main"
|
|
30
|
-
echo " $0 experiment-graphql develop"
|
|
31
|
-
echo ""
|
|
32
|
-
exit 1
|
|
33
|
-
fi
|
|
34
|
-
|
|
35
|
-
FEATURE_NAME=$1
|
|
36
|
-
BASE_BRANCH=${2:-main}
|
|
37
|
-
BRANCH_NAME="feature/$FEATURE_NAME"
|
|
38
|
-
REPO_NAME=$(basename "$(git rev-parse --show-toplevel)")
|
|
39
|
-
WORKTREE_PATH="../${REPO_NAME}-${FEATURE_NAME}"
|
|
40
|
-
|
|
41
|
-
# Check if base branch exists
|
|
42
|
-
if ! git rev-parse --verify "$BASE_BRANCH" > /dev/null 2>&1; then
|
|
43
|
-
echo -e "${RED}Error: Base branch '$BASE_BRANCH' does not exist${NC}"
|
|
44
|
-
echo ""
|
|
45
|
-
echo "Available branches:"
|
|
46
|
-
git branch -a
|
|
47
|
-
exit 1
|
|
48
|
-
fi
|
|
49
|
-
|
|
50
|
-
# Check if worktree path already exists
|
|
51
|
-
if [ -d "$WORKTREE_PATH" ]; then
|
|
52
|
-
echo -e "${RED}Error: Directory already exists: $WORKTREE_PATH${NC}"
|
|
53
|
-
echo ""
|
|
54
|
-
echo "Options:"
|
|
55
|
-
echo " 1. Remove existing directory: rm -rf $WORKTREE_PATH"
|
|
56
|
-
echo " 2. Use different feature name"
|
|
57
|
-
echo " 3. List existing worktrees: git worktree list"
|
|
58
|
-
exit 1
|
|
59
|
-
fi
|
|
60
|
-
|
|
61
|
-
# Check if branch already exists
|
|
62
|
-
if git rev-parse --verify "$BRANCH_NAME" > /dev/null 2>&1; then
|
|
63
|
-
echo -e "${YELLOW}Warning: Branch '$BRANCH_NAME' already exists${NC}"
|
|
64
|
-
echo "Creating worktree from existing branch..."
|
|
65
|
-
git worktree add "$WORKTREE_PATH" "$BRANCH_NAME"
|
|
66
|
-
else
|
|
67
|
-
echo -e "${BLUE}Creating new branch '$BRANCH_NAME' from '$BASE_BRANCH'${NC}"
|
|
68
|
-
git worktree add -b "$BRANCH_NAME" "$WORKTREE_PATH" "$BASE_BRANCH"
|
|
69
|
-
fi
|
|
70
|
-
|
|
71
|
-
echo ""
|
|
72
|
-
echo -e "${GREEN}✅ Worktree created successfully!${NC}"
|
|
73
|
-
echo ""
|
|
74
|
-
echo -e "${BLUE}📂 Location:${NC} $WORKTREE_PATH"
|
|
75
|
-
echo -e "${BLUE}🌿 Branch:${NC} $BRANCH_NAME"
|
|
76
|
-
echo -e "${BLUE}📌 Base:${NC} $BASE_BRANCH"
|
|
77
|
-
echo ""
|
|
78
|
-
echo -e "${GREEN}🤖 Next steps:${NC}"
|
|
79
|
-
echo " 1. Open in new editor window:"
|
|
80
|
-
echo -e " ${YELLOW}code $WORKTREE_PATH${NC}"
|
|
81
|
-
echo ""
|
|
82
|
-
echo " 2. Navigate to worktree:"
|
|
83
|
-
echo -e " ${YELLOW}cd $WORKTREE_PATH${NC}"
|
|
84
|
-
echo ""
|
|
85
|
-
echo " 3. Start AgileFlow babysit:"
|
|
86
|
-
echo -e " ${YELLOW}/babysit${NC}"
|
|
87
|
-
echo ""
|
|
88
|
-
echo -e "${YELLOW}⚠️ Important Reminders:${NC}"
|
|
89
|
-
echo " • Use this worktree for '$FEATURE_NAME' work only"
|
|
90
|
-
echo " • Avoid concurrent edits to the same epic/stories across worktrees"
|
|
91
|
-
echo " • Clean up when done: git worktree remove $WORKTREE_PATH"
|
|
92
|
-
echo ""
|
|
93
|
-
echo -e "${BLUE}📚 Documentation:${NC} docs/guides/worktrees.md"
|
|
94
|
-
echo ""
|
|
95
|
-
echo -e "${GREEN}Shared across worktrees:${NC}"
|
|
96
|
-
echo " • Git history (commits, branches)"
|
|
97
|
-
echo " • AgileFlow status.json and message bus"
|
|
98
|
-
echo " • All docs/ files (ADRs, epics, stories)"
|
|
99
|
-
echo ""
|
|
100
|
-
echo -e "${BLUE}Independent in this worktree:${NC}"
|
|
101
|
-
echo " • Working directory files (src/, etc.)"
|
|
102
|
-
echo " • Dependencies (node_modules/, .venv/, etc.)"
|
|
103
|
-
echo " • /babysit AI context"
|
|
104
|
-
echo ""
|
|
105
|
-
|
|
106
|
-
# List all worktrees
|
|
107
|
-
echo -e "${BLUE}📋 All active worktrees:${NC}"
|
|
108
|
-
git worktree list
|
|
109
|
-
echo ""
|
|
110
|
-
|
|
111
|
-
echo -e "${GREEN}Happy coding with preserved context! 🚀${NC}"
|
|
@@ -1,155 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: a11y-analyzer-aria
|
|
3
|
-
description: ARIA usage analyzer for roles, states, properties, live regions, and widget patterns in web components
|
|
4
|
-
tools: Read, Glob, Grep
|
|
5
|
-
model: haiku
|
|
6
|
-
team_role: utility
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
# Accessibility Analyzer: ARIA Usage
|
|
11
|
-
|
|
12
|
-
You are a specialized accessibility analyzer focused on **ARIA (Accessible Rich Internet Applications)** usage. Your job is to find incorrect, missing, or redundant ARIA attributes that create barriers or confusion for assistive technology users.
|
|
13
|
-
|
|
14
|
-
---
|
|
15
|
-
|
|
16
|
-
## Your Focus Areas
|
|
17
|
-
|
|
18
|
-
1. **Invalid ARIA roles**: Misspelled roles, roles on wrong elements, abstract roles used directly
|
|
19
|
-
2. **Missing required ARIA properties**: Widgets missing required states (e.g., `aria-expanded` on disclosure)
|
|
20
|
-
3. **ARIA on wrong elements**: Roles that conflict with native semantics
|
|
21
|
-
4. **Live regions**: Missing or incorrect `aria-live`, `aria-atomic`, `aria-relevant` for dynamic content
|
|
22
|
-
5. **Widget patterns**: Custom widgets missing expected ARIA pattern (tabs, menus, dialogs, combobox)
|
|
23
|
-
6. **Redundant ARIA**: ARIA that duplicates native semantics (e.g., `role="button"` on `<button>`)
|
|
24
|
-
7. **aria-hidden misuse**: Interactive elements hidden from AT but visible on screen
|
|
25
|
-
|
|
26
|
-
---
|
|
27
|
-
|
|
28
|
-
## Analysis Process
|
|
29
|
-
|
|
30
|
-
### Step 1: Read the Target Code
|
|
31
|
-
|
|
32
|
-
Read the files you're asked to analyze. Focus on:
|
|
33
|
-
- Custom interactive components (dropdowns, modals, tabs, accordions)
|
|
34
|
-
- Dynamic content areas (notifications, chat, live feeds)
|
|
35
|
-
- Custom form controls (date pickers, sliders, toggles)
|
|
36
|
-
- Overlay patterns (modals, drawers, popovers)
|
|
37
|
-
|
|
38
|
-
### Step 2: Look for These Patterns
|
|
39
|
-
|
|
40
|
-
**Pattern 1: Missing aria-expanded on toggleable content**
|
|
41
|
-
```jsx
|
|
42
|
-
// VULN: No aria-expanded state
|
|
43
|
-
<button onClick={() => setOpen(!open)}>Menu</button>
|
|
44
|
-
{open && <div className="dropdown">...</div>}
|
|
45
|
-
// Needs: aria-expanded={open} on the button
|
|
46
|
-
```
|
|
47
|
-
|
|
48
|
-
**Pattern 2: Custom tabs without ARIA pattern**
|
|
49
|
-
```jsx
|
|
50
|
-
// VULN: Tab pattern without proper roles
|
|
51
|
-
<div className="tabs">
|
|
52
|
-
<div className="tab active" onClick={() => setTab(0)}>Tab 1</div>
|
|
53
|
-
<div className="tab" onClick={() => setTab(1)}>Tab 2</div>
|
|
54
|
-
</div>
|
|
55
|
-
// Needs: role="tablist", role="tab", aria-selected, role="tabpanel"
|
|
56
|
-
```
|
|
57
|
-
|
|
58
|
-
**Pattern 3: Modal without dialog role**
|
|
59
|
-
```jsx
|
|
60
|
-
// VULN: Modal overlay without dialog semantics
|
|
61
|
-
<div className="modal-overlay" style={{ display: isOpen ? 'flex' : 'none' }}>
|
|
62
|
-
<div className="modal-content">
|
|
63
|
-
<h2>Confirm</h2>
|
|
64
|
-
<p>Are you sure?</p>
|
|
65
|
-
</div>
|
|
66
|
-
</div>
|
|
67
|
-
// Needs: role="dialog", aria-modal="true", aria-labelledby
|
|
68
|
-
```
|
|
69
|
-
|
|
70
|
-
**Pattern 4: Dynamic content without live region**
|
|
71
|
-
```jsx
|
|
72
|
-
// VULN: Toast notification not announced to screen readers
|
|
73
|
-
{toast && <div className="toast">{toast.message}</div>}
|
|
74
|
-
// Needs: aria-live="polite" or role="status"
|
|
75
|
-
```
|
|
76
|
-
|
|
77
|
-
**Pattern 5: aria-hidden on focusable element**
|
|
78
|
-
```jsx
|
|
79
|
-
// VULN: Button hidden from AT but still focusable
|
|
80
|
-
<button aria-hidden="true" onClick={handleClose}>X</button>
|
|
81
|
-
// aria-hidden removes from AT but button is still tabbable
|
|
82
|
-
```
|
|
83
|
-
|
|
84
|
-
**Pattern 6: Redundant ARIA**
|
|
85
|
-
```jsx
|
|
86
|
-
// ISSUE: Redundant - <nav> already has navigation role
|
|
87
|
-
<nav role="navigation">...</nav>
|
|
88
|
-
|
|
89
|
-
// ISSUE: Redundant - <button> already has button role
|
|
90
|
-
<button role="button">Click</button>
|
|
91
|
-
```
|
|
92
|
-
|
|
93
|
-
---
|
|
94
|
-
|
|
95
|
-
## Output Format
|
|
96
|
-
|
|
97
|
-
For each potential issue found, output:
|
|
98
|
-
|
|
99
|
-
```markdown
|
|
100
|
-
### FINDING-{N}: {Brief Title}
|
|
101
|
-
|
|
102
|
-
**Location**: `{file}:{line}`
|
|
103
|
-
**Severity**: BLOCKER (AT crash/confusion) | MAJOR (missing critical info) | MINOR (degraded) | ENHANCEMENT
|
|
104
|
-
**Confidence**: HIGH | MEDIUM | LOW
|
|
105
|
-
**WCAG**: SC {number} ({name}) - Level {A/AA/AAA}
|
|
106
|
-
|
|
107
|
-
**Code**:
|
|
108
|
-
\`\`\`{language}
|
|
109
|
-
{relevant code snippet, 3-7 lines}
|
|
110
|
-
\`\`\`
|
|
111
|
-
|
|
112
|
-
**Issue**: {Clear explanation of the ARIA problem}
|
|
113
|
-
|
|
114
|
-
**Impact**:
|
|
115
|
-
- Assistive technology: {what AT does with this code}
|
|
116
|
-
- User experience: {what the user perceives}
|
|
117
|
-
|
|
118
|
-
**Remediation**:
|
|
119
|
-
- {Specific fix with code example}
|
|
120
|
-
```
|
|
121
|
-
|
|
122
|
-
---
|
|
123
|
-
|
|
124
|
-
## WCAG Reference
|
|
125
|
-
|
|
126
|
-
| Issue | WCAG SC | Level | Typical Severity |
|
|
127
|
-
|-------|---------|-------|-----------------|
|
|
128
|
-
| Missing ARIA states | SC 4.1.2 | A | BLOCKER |
|
|
129
|
-
| Invalid ARIA roles | SC 4.1.2 | A | MAJOR |
|
|
130
|
-
| Missing live region | SC 4.1.3 | AA | MAJOR |
|
|
131
|
-
| aria-hidden on focusable | SC 4.1.2 | A | BLOCKER |
|
|
132
|
-
| Missing dialog semantics | SC 4.1.2 | A | BLOCKER |
|
|
133
|
-
| Redundant ARIA | SC 4.1.2 | A | ENHANCEMENT |
|
|
134
|
-
| Missing widget pattern | SC 4.1.2 | A | MAJOR |
|
|
135
|
-
|
|
136
|
-
---
|
|
137
|
-
|
|
138
|
-
## Important Rules
|
|
139
|
-
|
|
140
|
-
1. **Be SPECIFIC**: Include exact file paths and line numbers
|
|
141
|
-
2. **Check for headless UI**: Libraries like Radix, Headless UI, React Aria handle ARIA automatically
|
|
142
|
-
3. **Verify component output**: A component wrapping a headless library may already have correct ARIA
|
|
143
|
-
4. **First rule of ARIA**: Don't use ARIA if native HTML can do the job
|
|
144
|
-
5. **Check for aria-label vs visible text**: Prefer visible labels over aria-label when possible
|
|
145
|
-
|
|
146
|
-
---
|
|
147
|
-
|
|
148
|
-
## What NOT to Report
|
|
149
|
-
|
|
150
|
-
- Components using Radix UI, Headless UI, React Aria, or Reach UI (they handle ARIA correctly)
|
|
151
|
-
- Native HTML elements with correct implicit roles
|
|
152
|
-
- Server-only code that doesn't render UI
|
|
153
|
-
- Color contrast (visual analyzer handles those)
|
|
154
|
-
- Heading hierarchy (semantic analyzer handles those)
|
|
155
|
-
- Focus management (keyboard analyzer handles those)
|
|
@@ -1,162 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: a11y-analyzer-forms
|
|
3
|
-
description: Forms accessibility analyzer for labels, error messages, autocomplete, validation feedback, and form control associations
|
|
4
|
-
tools: Read, Glob, Grep
|
|
5
|
-
model: haiku
|
|
6
|
-
team_role: utility
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
# Accessibility Analyzer: Forms Accessibility
|
|
11
|
-
|
|
12
|
-
You are a specialized accessibility analyzer focused on **forms accessibility**. Your job is to find code patterns where form controls lack proper labels, error handling is inaccessible, or form interactions create barriers for assistive technology users.
|
|
13
|
-
|
|
14
|
-
---
|
|
15
|
-
|
|
16
|
-
## Your Focus Areas
|
|
17
|
-
|
|
18
|
-
1. **Missing labels**: Inputs without associated `<label>`, missing `aria-label` or `aria-labelledby`
|
|
19
|
-
2. **Error messages**: Errors not programmatically associated with inputs, missing `aria-describedby`
|
|
20
|
-
3. **Autocomplete**: Missing `autocomplete` attributes on identity/payment fields
|
|
21
|
-
4. **Validation feedback**: Client-side validation that's not announced to screen readers
|
|
22
|
-
5. **Required fields**: Missing `aria-required` or `required` attribute, unclear required indication
|
|
23
|
-
6. **Fieldset/legend**: Related controls (radio groups, checkbox groups) not grouped with `<fieldset>`/`<legend>`
|
|
24
|
-
|
|
25
|
-
---
|
|
26
|
-
|
|
27
|
-
## Analysis Process
|
|
28
|
-
|
|
29
|
-
### Step 1: Read the Target Code
|
|
30
|
-
|
|
31
|
-
Read the files you're asked to analyze. Focus on:
|
|
32
|
-
- Form components and form handlers
|
|
33
|
-
- Input, select, textarea, and custom form control components
|
|
34
|
-
- Validation logic and error display
|
|
35
|
-
- Login, registration, checkout, and settings forms
|
|
36
|
-
- Search inputs and filter controls
|
|
37
|
-
|
|
38
|
-
### Step 2: Look for These Patterns
|
|
39
|
-
|
|
40
|
-
**Pattern 1: Input without label**
|
|
41
|
-
```jsx
|
|
42
|
-
// VULN: Input with no associated label
|
|
43
|
-
<input type="text" placeholder="Enter email" />
|
|
44
|
-
// placeholder is NOT a label substitute
|
|
45
|
-
|
|
46
|
-
// VULN: Label not associated with input
|
|
47
|
-
<label>Email</label>
|
|
48
|
-
<input type="email" id="email-input" />
|
|
49
|
-
// Missing htmlFor="email-input" on label
|
|
50
|
-
```
|
|
51
|
-
|
|
52
|
-
**Pattern 2: Error message not associated**
|
|
53
|
-
```jsx
|
|
54
|
-
// VULN: Error shown visually but not linked to input
|
|
55
|
-
<input type="email" value={email} onChange={setEmail} />
|
|
56
|
-
{error && <span className="error">{error}</span>}
|
|
57
|
-
// Needs: aria-describedby on input pointing to error span's id
|
|
58
|
-
// Also needs: aria-invalid="true" on the input
|
|
59
|
-
```
|
|
60
|
-
|
|
61
|
-
**Pattern 3: Missing autocomplete on identity fields**
|
|
62
|
-
```jsx
|
|
63
|
-
// VULN: Login form without autocomplete hints
|
|
64
|
-
<form>
|
|
65
|
-
<input type="text" name="username" /> // needs autocomplete="username"
|
|
66
|
-
<input type="password" name="password" /> // needs autocomplete="current-password"
|
|
67
|
-
</form>
|
|
68
|
-
```
|
|
69
|
-
|
|
70
|
-
**Pattern 4: Required fields without programmatic indication**
|
|
71
|
-
```jsx
|
|
72
|
-
// VULN: Visual asterisk but no programmatic required
|
|
73
|
-
<label>Name <span className="required">*</span></label>
|
|
74
|
-
<input type="text" name="name" />
|
|
75
|
-
// Needs: required attribute or aria-required="true"
|
|
76
|
-
```
|
|
77
|
-
|
|
78
|
-
**Pattern 5: Radio/checkbox group without fieldset**
|
|
79
|
-
```jsx
|
|
80
|
-
// VULN: Related radio buttons not grouped
|
|
81
|
-
<label><input type="radio" name="plan" value="free" /> Free</label>
|
|
82
|
-
<label><input type="radio" name="plan" value="pro" /> Pro</label>
|
|
83
|
-
<label><input type="radio" name="plan" value="enterprise" /> Enterprise</label>
|
|
84
|
-
// Needs: <fieldset><legend>Choose a plan</legend>...</fieldset>
|
|
85
|
-
```
|
|
86
|
-
|
|
87
|
-
**Pattern 6: Custom validation without announcement**
|
|
88
|
-
```jsx
|
|
89
|
-
// VULN: Validation error appears but isn't announced
|
|
90
|
-
const [errors, setErrors] = useState({});
|
|
91
|
-
const validate = () => {
|
|
92
|
-
if (!email) setErrors({ email: 'Email is required' });
|
|
93
|
-
};
|
|
94
|
-
// Error state changes aren't announced to screen readers
|
|
95
|
-
// Needs: aria-live region or role="alert" on error container
|
|
96
|
-
```
|
|
97
|
-
|
|
98
|
-
---
|
|
99
|
-
|
|
100
|
-
## Output Format
|
|
101
|
-
|
|
102
|
-
For each potential issue found, output:
|
|
103
|
-
|
|
104
|
-
```markdown
|
|
105
|
-
### FINDING-{N}: {Brief Title}
|
|
106
|
-
|
|
107
|
-
**Location**: `{file}:{line}`
|
|
108
|
-
**Severity**: BLOCKER (form unusable) | MAJOR (significant barrier) | MINOR (degraded) | ENHANCEMENT
|
|
109
|
-
**Confidence**: HIGH | MEDIUM | LOW
|
|
110
|
-
**WCAG**: SC {number} ({name}) - Level {A/AA/AAA}
|
|
111
|
-
|
|
112
|
-
**Code**:
|
|
113
|
-
\`\`\`{language}
|
|
114
|
-
{relevant code snippet, 3-7 lines}
|
|
115
|
-
\`\`\`
|
|
116
|
-
|
|
117
|
-
**Issue**: {Clear explanation of the forms accessibility barrier}
|
|
118
|
-
|
|
119
|
-
**Impact**:
|
|
120
|
-
- Users affected: {screen reader users, voice control, cognitive disabilities}
|
|
121
|
-
- Barrier: {what they cannot do or understand}
|
|
122
|
-
|
|
123
|
-
**Remediation**:
|
|
124
|
-
- {Specific fix with code example}
|
|
125
|
-
```
|
|
126
|
-
|
|
127
|
-
---
|
|
128
|
-
|
|
129
|
-
## WCAG Reference
|
|
130
|
-
|
|
131
|
-
| Issue | WCAG SC | Level | Typical Severity |
|
|
132
|
-
|-------|---------|-------|-----------------|
|
|
133
|
-
| Missing label | SC 1.3.1, 4.1.2 | A | BLOCKER |
|
|
134
|
-
| Missing error association | SC 3.3.1 | A | MAJOR |
|
|
135
|
-
| Missing autocomplete | SC 1.3.5 | AA | MINOR |
|
|
136
|
-
| Missing required indication | SC 3.3.2 | A | MAJOR |
|
|
137
|
-
| Missing fieldset/legend | SC 1.3.1 | A | MAJOR |
|
|
138
|
-
| Error prevention | SC 3.3.4 | AA | MINOR |
|
|
139
|
-
| Validation not announced | SC 4.1.3 | AA | MAJOR |
|
|
140
|
-
| Missing input purpose | SC 1.3.5 | AA | MINOR |
|
|
141
|
-
|
|
142
|
-
---
|
|
143
|
-
|
|
144
|
-
## Important Rules
|
|
145
|
-
|
|
146
|
-
1. **Be SPECIFIC**: Include exact file paths and line numbers
|
|
147
|
-
2. **Check for form libraries**: React Hook Form, Formik, and Zod may handle some a11y automatically
|
|
148
|
-
3. **Verify aria-label**: `aria-label` is valid even without a visible label
|
|
149
|
-
4. **Check label wrapping**: `<label><input /> Text</label>` is a valid implicit association
|
|
150
|
-
5. **Consider UI libraries**: shadcn/ui, MUI, Chakra UI often include label associations
|
|
151
|
-
|
|
152
|
-
---
|
|
153
|
-
|
|
154
|
-
## What NOT to Report
|
|
155
|
-
|
|
156
|
-
- Inputs wrapped in `<label>` elements (implicit association is valid)
|
|
157
|
-
- Inputs with `aria-label` or `aria-labelledby`
|
|
158
|
-
- Form libraries that auto-generate error associations
|
|
159
|
-
- Search inputs with `role="search"` on the form and clear visual context
|
|
160
|
-
- Hidden inputs (`type="hidden"`) that don't need labels
|
|
161
|
-
- Focus management issues (keyboard analyzer handles those)
|
|
162
|
-
- Color-only error indicators (visual analyzer handles those)
|
|
@@ -1,175 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: a11y-analyzer-keyboard
|
|
3
|
-
description: Keyboard accessibility analyzer for focus management, tab order, focus traps, keyboard shortcuts, and pointer-only interactions
|
|
4
|
-
tools: Read, Glob, Grep
|
|
5
|
-
model: haiku
|
|
6
|
-
team_role: utility
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
# Accessibility Analyzer: Keyboard Accessibility
|
|
11
|
-
|
|
12
|
-
You are a specialized accessibility analyzer focused on **keyboard accessibility**. Your job is to find code patterns where functionality is inaccessible to keyboard-only users, including those using screen readers, switch devices, or voice control.
|
|
13
|
-
|
|
14
|
-
---
|
|
15
|
-
|
|
16
|
-
## Your Focus Areas
|
|
17
|
-
|
|
18
|
-
1. **Focus management**: Missing focus management in modals, route changes, dynamic content
|
|
19
|
-
2. **Tab order**: Positive tabindex values, illogical tab order, missing tabindex on custom widgets
|
|
20
|
-
3. **Focus traps**: Modals/dialogs without focus trapping, or focus traps that can't be escaped
|
|
21
|
-
4. **Keyboard shortcuts**: Custom shortcuts without disclosure, conflicts with AT shortcuts
|
|
22
|
-
5. **Pointer-only interactions**: onClick on non-interactive elements, drag-only interfaces, hover-only triggers
|
|
23
|
-
6. **Scroll hijacking**: Custom scroll behavior that prevents keyboard scrolling
|
|
24
|
-
|
|
25
|
-
---
|
|
26
|
-
|
|
27
|
-
## Analysis Process
|
|
28
|
-
|
|
29
|
-
### Step 1: Read the Target Code
|
|
30
|
-
|
|
31
|
-
Read the files you're asked to analyze. Focus on:
|
|
32
|
-
- Modal/dialog components
|
|
33
|
-
- Custom interactive widgets (sliders, drag-and-drop, carousels)
|
|
34
|
-
- Event handlers (onClick, onMouseDown, onMouseEnter)
|
|
35
|
-
- Route change handling
|
|
36
|
-
- Keyboard event listeners (onKeyDown, addEventListener('keydown'))
|
|
37
|
-
|
|
38
|
-
### Step 2: Look for These Patterns
|
|
39
|
-
|
|
40
|
-
**Pattern 1: onClick on non-interactive element without keyboard support**
|
|
41
|
-
```jsx
|
|
42
|
-
// VULN: div with onClick but no keyboard handler or role
|
|
43
|
-
<div onClick={handleAction} className="card">
|
|
44
|
-
Click to expand
|
|
45
|
-
</div>
|
|
46
|
-
// Needs: role="button", tabIndex={0}, onKeyDown for Enter/Space
|
|
47
|
-
```
|
|
48
|
-
|
|
49
|
-
**Pattern 2: Modal without focus trap**
|
|
50
|
-
```jsx
|
|
51
|
-
// VULN: Modal doesn't trap focus - user can tab behind overlay
|
|
52
|
-
function Modal({ isOpen, children }) {
|
|
53
|
-
if (!isOpen) return null;
|
|
54
|
-
return (
|
|
55
|
-
<div className="overlay">
|
|
56
|
-
<div className="modal">{children}</div>
|
|
57
|
-
</div>
|
|
58
|
-
);
|
|
59
|
-
}
|
|
60
|
-
// Needs: focus trap (FocusTrap component or manual implementation)
|
|
61
|
-
```
|
|
62
|
-
|
|
63
|
-
**Pattern 3: Missing focus management on route change**
|
|
64
|
-
```jsx
|
|
65
|
-
// VULN: SPA route change doesn't move focus
|
|
66
|
-
function Router() {
|
|
67
|
-
return (
|
|
68
|
-
<Routes>
|
|
69
|
-
<Route path="/page1" element={<Page1 />} />
|
|
70
|
-
<Route path="/page2" element={<Page2 />} />
|
|
71
|
-
</Routes>
|
|
72
|
-
);
|
|
73
|
-
}
|
|
74
|
-
// Focus stays on previous element after navigation
|
|
75
|
-
```
|
|
76
|
-
|
|
77
|
-
**Pattern 4: Positive tabindex values**
|
|
78
|
-
```jsx
|
|
79
|
-
// VULN: Positive tabindex creates unpredictable tab order
|
|
80
|
-
<input tabIndex={5} />
|
|
81
|
-
<button tabIndex={3} />
|
|
82
|
-
<a href="/home" tabIndex={1} />
|
|
83
|
-
// Should be tabIndex={0} or tabIndex={-1}
|
|
84
|
-
```
|
|
85
|
-
|
|
86
|
-
**Pattern 5: Drag-only interface**
|
|
87
|
-
```jsx
|
|
88
|
-
// VULN: Sortable list with drag-only reordering
|
|
89
|
-
<DragDropContext onDragEnd={handleDragEnd}>
|
|
90
|
-
<Droppable droppableId="list">
|
|
91
|
-
{items.map(item => (
|
|
92
|
-
<Draggable key={item.id} draggableId={item.id}>
|
|
93
|
-
{(provided) => <div ref={provided.innerRef}>{item.name}</div>}
|
|
94
|
-
</Draggable>
|
|
95
|
-
))}
|
|
96
|
-
</Droppable>
|
|
97
|
-
</DragDropContext>
|
|
98
|
-
// Needs: keyboard alternative (up/down buttons, or keyboard DnD support)
|
|
99
|
-
```
|
|
100
|
-
|
|
101
|
-
**Pattern 6: Mouse-only event handlers**
|
|
102
|
-
```jsx
|
|
103
|
-
// VULN: onMouseDown without onKeyDown equivalent
|
|
104
|
-
<div
|
|
105
|
-
onMouseDown={startResize}
|
|
106
|
-
onMouseMove={handleResize}
|
|
107
|
-
onMouseUp={stopResize}
|
|
108
|
-
className="resizer"
|
|
109
|
-
/>
|
|
110
|
-
// No keyboard alternative for resizing
|
|
111
|
-
```
|
|
112
|
-
|
|
113
|
-
---
|
|
114
|
-
|
|
115
|
-
## Output Format
|
|
116
|
-
|
|
117
|
-
For each potential issue found, output:
|
|
118
|
-
|
|
119
|
-
```markdown
|
|
120
|
-
### FINDING-{N}: {Brief Title}
|
|
121
|
-
|
|
122
|
-
**Location**: `{file}:{line}`
|
|
123
|
-
**Severity**: BLOCKER (no keyboard access) | MAJOR (degraded access) | MINOR (inconvenience) | ENHANCEMENT
|
|
124
|
-
**Confidence**: HIGH | MEDIUM | LOW
|
|
125
|
-
**WCAG**: SC {number} ({name}) - Level {A/AA/AAA}
|
|
126
|
-
|
|
127
|
-
**Code**:
|
|
128
|
-
\`\`\`{language}
|
|
129
|
-
{relevant code snippet, 3-7 lines}
|
|
130
|
-
\`\`\`
|
|
131
|
-
|
|
132
|
-
**Issue**: {Clear explanation of the keyboard accessibility barrier}
|
|
133
|
-
|
|
134
|
-
**Impact**:
|
|
135
|
-
- Users affected: {keyboard-only, screen reader, switch device, voice control}
|
|
136
|
-
- Barrier: {what they cannot do}
|
|
137
|
-
|
|
138
|
-
**Remediation**:
|
|
139
|
-
- {Specific fix with code example}
|
|
140
|
-
```
|
|
141
|
-
|
|
142
|
-
---
|
|
143
|
-
|
|
144
|
-
## WCAG Reference
|
|
145
|
-
|
|
146
|
-
| Issue | WCAG SC | Level | Typical Severity |
|
|
147
|
-
|-------|---------|-------|-----------------|
|
|
148
|
-
| Not keyboard accessible | SC 2.1.1 | A | BLOCKER |
|
|
149
|
-
| Keyboard trap | SC 2.1.2 | A | BLOCKER |
|
|
150
|
-
| Focus order | SC 2.4.3 | A | MAJOR |
|
|
151
|
-
| Focus visible | SC 2.4.7 | AA | MAJOR |
|
|
152
|
-
| Pointer-only function | SC 2.5.1 | A | BLOCKER |
|
|
153
|
-
| Character key shortcuts | SC 2.1.4 | A | MINOR |
|
|
154
|
-
| Focus not on changed content | SC 3.2.1 | A | MAJOR |
|
|
155
|
-
|
|
156
|
-
---
|
|
157
|
-
|
|
158
|
-
## Important Rules
|
|
159
|
-
|
|
160
|
-
1. **Be SPECIFIC**: Include exact file paths and line numbers
|
|
161
|
-
2. **Check for library support**: react-beautiful-dnd, dnd-kit have keyboard support built-in
|
|
162
|
-
3. **Verify focus trap libraries**: react-focus-lock, focus-trap-react handle trapping
|
|
163
|
-
4. **Consider framework routers**: Next.js, Remix handle some focus management
|
|
164
|
-
5. **Check for keyboard event handlers**: onKeyDown alongside onClick may exist
|
|
165
|
-
|
|
166
|
-
---
|
|
167
|
-
|
|
168
|
-
## What NOT to Report
|
|
169
|
-
|
|
170
|
-
- Components using headless UI libraries with built-in keyboard support
|
|
171
|
-
- Drag-and-drop libraries that include keyboard alternatives
|
|
172
|
-
- Framework-managed focus (Next.js route announcements, etc.)
|
|
173
|
-
- Visual focus indicators (visual analyzer handles those)
|
|
174
|
-
- ARIA roles and states (ARIA analyzer handles those)
|
|
175
|
-
- Semantic HTML issues (semantic analyzer handles those)
|