wicked-garden 12.27.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.
Files changed (640) hide show
  1. package/.claude-plugin/archetypes.json +166 -0
  2. package/.claude-plugin/components.json +75 -0
  3. package/.claude-plugin/marketplace.json +15 -0
  4. package/.claude-plugin/plugin.json +174 -0
  5. package/.claude-plugin/specialist.json +48 -0
  6. package/.claude-plugin/stack-registry.json +96 -0
  7. package/AGENTS.md +13 -0
  8. package/CHANGELOG.md +712 -0
  9. package/CONTRIBUTING.md +99 -0
  10. package/ETHOS.md +83 -0
  11. package/LICENSE +21 -0
  12. package/README.md +115 -0
  13. package/WICKED_GARDEN_BUS_EVENTS.md +149 -0
  14. package/agents/agentic/architect.md +449 -0
  15. package/agents/agentic/performance-analyst.md +702 -0
  16. package/agents/agentic/safety-reviewer.md +662 -0
  17. package/agents/crew/implementer.md +163 -0
  18. package/agents/crew/researcher.md +94 -0
  19. package/agents/crew/reviewer.md +184 -0
  20. package/agents/data/data-engineer.md +227 -0
  21. package/agents/engineering/api-documentarian.md +440 -0
  22. package/agents/engineering/migration-engineer.md +301 -0
  23. package/agents/engineering/solution-architect.md +208 -0
  24. package/agents/jam/brainstorm-facilitator.md +297 -0
  25. package/agents/jam/council.md +322 -0
  26. package/agents/jam/quick-facilitator.md +85 -0
  27. package/agents/persona/persona-agent.md +121 -0
  28. package/agents/platform/compliance-officer.md +266 -0
  29. package/agents/platform/privacy-expert.md +496 -0
  30. package/agents/platform/security-engineer.md +287 -0
  31. package/agents/product/a11y-expert.md +323 -0
  32. package/agents/product/requirements-analyst.md +238 -0
  33. package/agents/product/ui-reviewer.md +180 -0
  34. package/agents/product/ux-designer.md +199 -0
  35. package/agents/product/value-strategist.md +269 -0
  36. package/agents/qe/semantic-reviewer.md +78 -0
  37. package/commands/agentic/audit.md +24 -0
  38. package/commands/agentic/design.md +24 -0
  39. package/commands/agentic/frameworks.md +25 -0
  40. package/commands/agentic/review.md +27 -0
  41. package/commands/archetype/build.md +12 -0
  42. package/commands/archetype/decide.md +12 -0
  43. package/commands/archetype/explore.md +12 -0
  44. package/commands/archetype/incident.md +12 -0
  45. package/commands/archetype/migrate.md +12 -0
  46. package/commands/archetype/modernize.md +12 -0
  47. package/commands/archetype/review.md +14 -0
  48. package/commands/archetype/ship.md +12 -0
  49. package/commands/archetype/specify.md +12 -0
  50. package/commands/archetype/triage.md +12 -0
  51. package/commands/compile.md +37 -0
  52. package/commands/data/analyze.md +18 -0
  53. package/commands/data/data.md +21 -0
  54. package/commands/data/ml.md +18 -0
  55. package/commands/data/ontology.md +22 -0
  56. package/commands/data/pipeline.md +17 -0
  57. package/commands/deliberate.md +181 -0
  58. package/commands/engineering/add-field.md +77 -0
  59. package/commands/engineering/apply.md +58 -0
  60. package/commands/engineering/arch.md +26 -0
  61. package/commands/engineering/debug.md +27 -0
  62. package/commands/engineering/docs.md +27 -0
  63. package/commands/engineering/new-generator.md +257 -0
  64. package/commands/engineering/patch-plan.md +59 -0
  65. package/commands/engineering/plan.md +29 -0
  66. package/commands/engineering/remove.md +48 -0
  67. package/commands/engineering/rename.md +44 -0
  68. package/commands/engineering/review.md +32 -0
  69. package/commands/help.md +128 -0
  70. package/commands/install.md +118 -0
  71. package/commands/intent.md +54 -0
  72. package/commands/jam/brainstorm.md +37 -0
  73. package/commands/jam/council.md +49 -0
  74. package/commands/jam/quick.md +21 -0
  75. package/commands/jam/revisit.md +79 -0
  76. package/commands/persona/as.md +136 -0
  77. package/commands/persona/define.md +24 -0
  78. package/commands/persona/list.md +118 -0
  79. package/commands/platform/actions.md +20 -0
  80. package/commands/platform/assert.md +18 -0
  81. package/commands/platform/audit.md +23 -0
  82. package/commands/platform/compliance.md +20 -0
  83. package/commands/platform/gh.md +22 -0
  84. package/commands/platform/health.md +22 -0
  85. package/commands/platform/incident.md +23 -0
  86. package/commands/platform/infra.md +24 -0
  87. package/commands/platform/peer-health.md +103 -0
  88. package/commands/platform/plugin-health.md +58 -0
  89. package/commands/platform/security.md +38 -0
  90. package/commands/platform/toolchain.md +96 -0
  91. package/commands/platform/traces.md +20 -0
  92. package/commands/product/a11y.md +19 -0
  93. package/commands/product/acceptance.md +19 -0
  94. package/commands/product/align.md +20 -0
  95. package/commands/product/analyze.md +23 -0
  96. package/commands/product/elicit.md +19 -0
  97. package/commands/product/listen.md +24 -0
  98. package/commands/product/mockup.md +20 -0
  99. package/commands/product/screenshot.md +19 -0
  100. package/commands/product/strategy.md +40 -0
  101. package/commands/product/synthesize.md +23 -0
  102. package/commands/product/ux-review.md +42 -0
  103. package/commands/product/ux.md +20 -0
  104. package/commands/product/visual-direction.md +34 -0
  105. package/commands/prove.md +47 -0
  106. package/commands/report-issue.md +243 -0
  107. package/commands/reset.md +144 -0
  108. package/commands/search/blast-radius.md +58 -0
  109. package/commands/search/hotspots.md +55 -0
  110. package/commands/search/index.md +38 -0
  111. package/commands/search/lineage.md +47 -0
  112. package/commands/search/service-map.md +79 -0
  113. package/commands/setup.md +363 -0
  114. package/commands/smaht/briefing.md +200 -0
  115. package/commands/smaht/events-import.md +95 -0
  116. package/commands/smaht/state.md +19 -0
  117. package/commands/where-am-i.md +58 -0
  118. package/docs/README.md +32 -0
  119. package/docs/adr/0001-code-relationship-graph-engine.md +116 -0
  120. package/docs/adr/0002-major-cleanup-keep-cut.md +91 -0
  121. package/docs/adr/0003-peers-gate-required-layers-optin.md +41 -0
  122. package/docs/adr/0004-code-graph-moves-to-wicked-brain.md +47 -0
  123. package/docs/brain-chunk-format.md +135 -0
  124. package/docs/compiler.md +95 -0
  125. package/docs/daemon-api.md +70 -0
  126. package/docs/domains.md +197 -0
  127. package/docs/getting-started.md +208 -0
  128. package/docs/plans/2026-06-08-wicked-loom-conduct.md +1337 -0
  129. package/docs/plans/2026-06-08-wicked-loom-contract.md +638 -0
  130. package/docs/plans/2026-06-08-wicked-loom-cutover.md +1300 -0
  131. package/docs/plans/2026-06-08-wicked-loom-expand-compose.md +843 -0
  132. package/docs/plans/2026-06-08-wicked-loom-flow-cutover.md +403 -0
  133. package/docs/plans/2026-06-10-codegraph-to-brain-phase1a-graph-core.md +838 -0
  134. package/docs/plans/2026-06-10-codegraph-to-brain-phase1b-injected-edges.md +44 -0
  135. package/docs/required-peers.md +60 -0
  136. package/docs/specs/2026-06-08-wicked-loom-extraction.md +225 -0
  137. package/docs/specs/2026-06-10-codegraph-to-brain-migration.md +168 -0
  138. package/docs/v11/archetypes.md +231 -0
  139. package/hooks/hooks.json +275 -0
  140. package/hooks/scripts/bootstrap.py +1797 -0
  141. package/hooks/scripts/invoke.py +62 -0
  142. package/hooks/scripts/notification.py +166 -0
  143. package/hooks/scripts/permission_request.py +223 -0
  144. package/hooks/scripts/post_tool.py +1374 -0
  145. package/hooks/scripts/pre_compact.py +272 -0
  146. package/hooks/scripts/pre_tool.py +1278 -0
  147. package/hooks/scripts/prompt_submit.py +1109 -0
  148. package/hooks/scripts/session_end.py +95 -0
  149. package/hooks/scripts/stop.py +624 -0
  150. package/hooks/scripts/subagent_lifecycle.py +464 -0
  151. package/hooks/scripts/subscribers/on_gate_decided.py +84 -0
  152. package/hooks/scripts/task_completed.py +322 -0
  153. package/hooks/scripts/worktree_guard.py +148 -0
  154. package/hooks/subscriptions/on_gate_decided.json +9 -0
  155. package/install.mjs +128 -0
  156. package/package.json +41 -0
  157. package/pyproject.toml +59 -0
  158. package/schemas/README.md +32 -0
  159. package/schemas/assert_contracts.json +37 -0
  160. package/schemas/health_probe.json +46 -0
  161. package/schemas/plugin_status.json +37 -0
  162. package/scripts/_adapters/__init__.py +166 -0
  163. package/scripts/_adapters/jira_adapter.py +18 -0
  164. package/scripts/_adapters/linear_adapter.py +18 -0
  165. package/scripts/_adapters/miro_adapter.py +18 -0
  166. package/scripts/_adapters/notion_adapter.py +18 -0
  167. package/scripts/_agents.py +357 -0
  168. package/scripts/_brain_ingest/__init__.py +2 -0
  169. package/scripts/_brain_ingest/session_fact_extractor.py +341 -0
  170. package/scripts/_brain_port.py +163 -0
  171. package/scripts/_bus.py +1081 -0
  172. package/scripts/_bus_catalog_gen.py +93 -0
  173. package/scripts/_bus_consumers.json +46 -0
  174. package/scripts/_bus_emit.py +43 -0
  175. package/scripts/_capability_registry.py +334 -0
  176. package/scripts/_capability_resolver.py +322 -0
  177. package/scripts/_domain_store.py +559 -0
  178. package/scripts/_event_log_reader.py +154 -0
  179. package/scripts/_event_schema.py +305 -0
  180. package/scripts/_event_store.py +397 -0
  181. package/scripts/_heavy_cadence.py +324 -0
  182. package/scripts/_integration_resolver.py +321 -0
  183. package/scripts/_logger.py +151 -0
  184. package/scripts/_loom.py +482 -0
  185. package/scripts/_paths.py +133 -0
  186. package/scripts/_python.sh +22 -0
  187. package/scripts/_run.py +137 -0
  188. package/scripts/_session.py +502 -0
  189. package/scripts/_validate_registry.py +1042 -0
  190. package/scripts/_wicked_testing_probe.py +277 -0
  191. package/scripts/agentic/analyze_agents.py +391 -0
  192. package/scripts/agentic/detect_framework.py +420 -0
  193. package/scripts/agentic/issue_taxonomy.py +357 -0
  194. package/scripts/agentic/pattern_scorer.py +434 -0
  195. package/scripts/classify/persist.py +169 -0
  196. package/scripts/compiler/compile.py +552 -0
  197. package/scripts/compiler/phase0/VERDICT.md +60 -0
  198. package/scripts/compiler/phase0/detect.py +292 -0
  199. package/scripts/compiler/phase0/emit.py +228 -0
  200. package/scripts/compiler/phase0/evidence/Enterprise-AISDLC.bindings.json +30 -0
  201. package/scripts/compiler/phase0/evidence/Enterprise-AISDLC.lint-output.txt +17 -0
  202. package/scripts/compiler/phase0/evidence/Enterprise-AISDLC.stage/.wg/evidence/failing-tests.txt +4 -0
  203. package/scripts/compiler/phase0/evidence/Enterprise-AISDLC.stage/.wg/evidence/honest-tests.txt +2 -0
  204. package/scripts/compiler/phase0/evidence/Enterprise-AISDLC.stage/fab-fail.build.md +8 -0
  205. package/scripts/compiler/phase0/evidence/Enterprise-AISDLC.stage/fab-missing.build.md +8 -0
  206. package/scripts/compiler/phase0/evidence/Enterprise-AISDLC.stage/honest.build.md +8 -0
  207. package/scripts/compiler/phase0/evidence/Enterprise-AISDLC.stage/wg_check_claims.py +174 -0
  208. package/scripts/compiler/phase0/evidence/command_iq.bindings.json +45 -0
  209. package/scripts/compiler/phase0/evidence/command_iq.lint-output.txt +17 -0
  210. package/scripts/compiler/phase0/evidence/command_iq.stage/.projects/evidence-domain/phase-1-clarify/evidence/failing-tests.txt +4 -0
  211. package/scripts/compiler/phase0/evidence/command_iq.stage/.projects/evidence-domain/phase-1-clarify/evidence/honest-tests.txt +3 -0
  212. package/scripts/compiler/phase0/evidence/command_iq.stage/fab-fail.build.md +8 -0
  213. package/scripts/compiler/phase0/evidence/command_iq.stage/fab-missing.build.md +8 -0
  214. package/scripts/compiler/phase0/evidence/command_iq.stage/honest.build.md +8 -0
  215. package/scripts/compiler/phase0/evidence/command_iq.stage/wg_check_claims.py +174 -0
  216. package/scripts/compiler/phase0/evidence/memos.bindings.json +28 -0
  217. package/scripts/compiler/phase0/evidence/memos.lint-output.txt +17 -0
  218. package/scripts/compiler/phase0/evidence/memos.stage/.wg/evidence/failing-tests.txt +4 -0
  219. package/scripts/compiler/phase0/evidence/memos.stage/.wg/evidence/honest-tests.txt +2 -0
  220. package/scripts/compiler/phase0/evidence/memos.stage/fab-fail.build.md +8 -0
  221. package/scripts/compiler/phase0/evidence/memos.stage/fab-missing.build.md +8 -0
  222. package/scripts/compiler/phase0/evidence/memos.stage/honest.build.md +8 -0
  223. package/scripts/compiler/phase0/evidence/memos.stage/wg_check_claims.py +174 -0
  224. package/scripts/compiler/phase0/evidence/verdict.json +104 -0
  225. package/scripts/compiler/phase0/evidence/wicked-bus.bindings.json +29 -0
  226. package/scripts/compiler/phase0/evidence/wicked-bus.lint-output.txt +17 -0
  227. package/scripts/compiler/phase0/evidence/wicked-bus.stage/coverage/failing-tests.txt +4 -0
  228. package/scripts/compiler/phase0/evidence/wicked-bus.stage/coverage/honest-tests.txt +3 -0
  229. package/scripts/compiler/phase0/evidence/wicked-bus.stage/fab-fail.build.md +8 -0
  230. package/scripts/compiler/phase0/evidence/wicked-bus.stage/fab-missing.build.md +8 -0
  231. package/scripts/compiler/phase0/evidence/wicked-bus.stage/honest.build.md +8 -0
  232. package/scripts/compiler/phase0/evidence/wicked-bus.stage/wg_check_claims.py +174 -0
  233. package/scripts/compiler/phase0/evidence/wire-vault-transcript.txt +60 -0
  234. package/scripts/compiler/phase0/run_probe.py +234 -0
  235. package/scripts/compiler/phase0/wire_vault.py +310 -0
  236. package/scripts/crew/__init__.py +0 -0
  237. package/scripts/crew/_task_audit_writer.py +243 -0
  238. package/scripts/crew/_task_reader.py +389 -0
  239. package/scripts/crew/archetypes_v11.py +348 -0
  240. package/scripts/crew/detectors/__init__.py +12 -0
  241. package/scripts/crew/flow_compiler.py +121 -0
  242. package/scripts/crew/phase_manager.py +703 -0
  243. package/scripts/crew/scope_delta.py +264 -0
  244. package/scripts/crew/specialist_resolver.py +218 -0
  245. package/scripts/crew/stack_registry.py +189 -0
  246. package/scripts/data/data_profiler.py +271 -0
  247. package/scripts/data/ontology_recommender.py +231 -0
  248. package/scripts/data/schema_validator.py +267 -0
  249. package/scripts/delivery/drift.py +739 -0
  250. package/scripts/delivery/telemetry.py +614 -0
  251. package/scripts/engineering/patch/codegraph_db.py +125 -0
  252. package/scripts/engineering/patch/generators/__init__.py +56 -0
  253. package/scripts/engineering/patch/generators/base.py +373 -0
  254. package/scripts/engineering/patch/generators/csharp_generator.py +494 -0
  255. package/scripts/engineering/patch/generators/go_generator.py +430 -0
  256. package/scripts/engineering/patch/generators/java_generator.py +928 -0
  257. package/scripts/engineering/patch/generators/jsp_generator.py +454 -0
  258. package/scripts/engineering/patch/generators/kotlin_generator.py +561 -0
  259. package/scripts/engineering/patch/generators/perl_generator.py +510 -0
  260. package/scripts/engineering/patch/generators/php_generator.py +644 -0
  261. package/scripts/engineering/patch/generators/propagation_engine.py +929 -0
  262. package/scripts/engineering/patch/generators/python_generator.py +487 -0
  263. package/scripts/engineering/patch/generators/ruby_generator.py +463 -0
  264. package/scripts/engineering/patch/generators/rust_generator.py +400 -0
  265. package/scripts/engineering/patch/generators/sql_generator.py +594 -0
  266. package/scripts/engineering/patch/generators/typescript_generator.py +439 -0
  267. package/scripts/engineering/patch/patch.py +800 -0
  268. package/scripts/engineering/patch/safety.py +429 -0
  269. package/scripts/jam/__init__.py +0 -0
  270. package/scripts/jam/_bus_consumers.py +271 -0
  271. package/scripts/jam/agentic_cli_registry.py +703 -0
  272. package/scripts/jam/consensus.py +737 -0
  273. package/scripts/jam/detect_clis.py +409 -0
  274. package/scripts/jam/jam.py +283 -0
  275. package/scripts/jam/save_transcript.py +171 -0
  276. package/scripts/loom/__init__.py +22 -0
  277. package/scripts/loom/cli.py +170 -0
  278. package/scripts/loom/compose.py +180 -0
  279. package/scripts/loom/gate.py +120 -0
  280. package/scripts/loom/manifest.py +140 -0
  281. package/scripts/loom/resolve.py +59 -0
  282. package/scripts/persona/__init__.py +0 -0
  283. package/scripts/persona/registry.py +688 -0
  284. package/scripts/platform/guard_pipeline.py +1214 -0
  285. package/scripts/platform/guard_profiles.py +216 -0
  286. package/scripts/platform/observability/assert_contracts.py +434 -0
  287. package/scripts/platform/observability/health_probe.py +915 -0
  288. package/scripts/platform/observability/ops_log_viewer.py +209 -0
  289. package/scripts/platform/prereq_doctor.py +567 -0
  290. package/scripts/qe/conditions_manifest.py +260 -0
  291. package/scripts/qe/content_sanitizer.py +160 -0
  292. package/scripts/qe/coverage_tracker.py +535 -0
  293. package/scripts/qe/discover_scenarios.py +243 -0
  294. package/scripts/qe/evidence_tracker.py +232 -0
  295. package/scripts/qe/prove.py +196 -0
  296. package/scripts/qe/registry_lookup.py +80 -0
  297. package/scripts/qe/registry_store.py +176 -0
  298. package/scripts/qe/semantic_review.py +1005 -0
  299. package/scripts/qe/vault_gate.py +382 -0
  300. package/scripts/qe/verdict_audit.py +175 -0
  301. package/scripts/qe/verdict_schema.py +335 -0
  302. package/scripts/reset.py +220 -0
  303. package/scripts/resolve_path.py +22 -0
  304. package/scripts/sentinel/invariants.py +402 -0
  305. package/scripts/sentinel/pre_push.py +73 -0
  306. package/scripts/setup/__init__.py +1 -0
  307. package/scripts/setup/detect_state.py +114 -0
  308. package/scripts/setup/migrate_legacy.py +67 -0
  309. package/scripts/setup/migrate_v6_projects.py +232 -0
  310. package/scripts/setup/onboarding.py +114 -0
  311. package/scripts/smaht/_bus_consumers.py +98 -0
  312. package/scripts/smaht/adapters/__init__.py +83 -0
  313. package/scripts/smaht/adapters/brain_adapter.py +254 -0
  314. package/scripts/smaht/adapters/context7_adapter.py +438 -0
  315. package/scripts/smaht/adapters/delegation_adapter.py +104 -0
  316. package/scripts/smaht/adapters/domain_adapter.py +206 -0
  317. package/scripts/smaht/adapters/events_adapter.py +231 -0
  318. package/scripts/smaht/adapters/tools_adapter.py +49 -0
  319. package/scripts/smaht/cheatsheet_store.py +236 -0
  320. package/scripts/smaht/context_package.py +386 -0
  321. package/scripts/smaht/knowledge_graph.py +395 -0
  322. package/scripts/smaht/propose_skills.py +856 -0
  323. package/scripts/smaht/test_cheatsheet_store.py +428 -0
  324. package/scripts/statusline.py +151 -0
  325. package/scripts/where_am_i.py +236 -0
  326. package/skills/agentic/agentic-patterns/SKILL.md +91 -0
  327. package/skills/agentic/agentic-patterns/refs/anti-patterns-design.md +283 -0
  328. package/skills/agentic/agentic-patterns/refs/anti-patterns-operational.md +216 -0
  329. package/skills/agentic/agentic-patterns/refs/pattern-catalog.md +329 -0
  330. package/skills/agentic/context-engineering/SKILL.md +142 -0
  331. package/skills/agentic/context-engineering/refs/caching-and-optimization.md +251 -0
  332. package/skills/agentic/context-engineering/refs/compression-techniques.md +171 -0
  333. package/skills/agentic/context-engineering/refs/cost-calculation-budget.md +250 -0
  334. package/skills/agentic/context-engineering/refs/cost-optimization-reporting.md +300 -0
  335. package/skills/agentic/context-engineering/refs/selective-loading.md +179 -0
  336. package/skills/agentic/frameworks/SKILL.md +191 -0
  337. package/skills/agentic/frameworks/refs/framework-profiles-1.md +209 -0
  338. package/skills/agentic/frameworks/refs/framework-profiles-2.md +214 -0
  339. package/skills/agentic/frameworks/refs/migration-patterns-paths.md +267 -0
  340. package/skills/agentic/frameworks/refs/migration-patterns-testing.md +208 -0
  341. package/skills/agentic/refs/audit.md +134 -0
  342. package/skills/agentic/refs/design.md +137 -0
  343. package/skills/agentic/refs/frameworks.md +102 -0
  344. package/skills/agentic/refs/review.md +160 -0
  345. package/skills/agentic/review-methodology/SKILL.md +186 -0
  346. package/skills/agentic/review-methodology/refs/deliverable-templates.md +246 -0
  347. package/skills/agentic/review-methodology/refs/issue-taxonomy-quality-testing.md +277 -0
  348. package/skills/agentic/review-methodology/refs/issue-taxonomy-reliability-safety.md +253 -0
  349. package/skills/agentic/trust-and-safety/SKILL.md +177 -0
  350. package/skills/agentic/trust-and-safety/refs/guardrails-actions.md +246 -0
  351. package/skills/agentic/trust-and-safety/refs/guardrails-input-output.md +238 -0
  352. package/skills/agentic/trust-and-safety/refs/guardrails-resources.md +209 -0
  353. package/skills/agentic/trust-and-safety/refs/safety-checklist-advanced.md +209 -0
  354. package/skills/agentic/trust-and-safety/refs/safety-checklist-core.md +215 -0
  355. package/skills/archetype/SKILL.md +104 -0
  356. package/skills/archetype/refs/build.md +142 -0
  357. package/skills/archetype/refs/decide.md +117 -0
  358. package/skills/archetype/refs/explore.md +66 -0
  359. package/skills/archetype/refs/incident.md +149 -0
  360. package/skills/archetype/refs/migrate.md +170 -0
  361. package/skills/archetype/refs/modernize.md +187 -0
  362. package/skills/archetype/refs/review.md +145 -0
  363. package/skills/archetype/refs/ship.md +117 -0
  364. package/skills/archetype/refs/specify.md +108 -0
  365. package/skills/archetype/refs/triage.md +62 -0
  366. package/skills/classify/SKILL.md +157 -0
  367. package/skills/data/analysis/SKILL.md +125 -0
  368. package/skills/data/analysis/refs/templates.md +170 -0
  369. package/skills/data/data/SKILL.md +118 -0
  370. package/skills/data/data/refs/examples.md +235 -0
  371. package/skills/data/ml/SKILL.md +125 -0
  372. package/skills/data/ml/refs/templates.md +172 -0
  373. package/skills/data/pipeline/SKILL.md +136 -0
  374. package/skills/data/pipeline/refs/templates.md +175 -0
  375. package/skills/data/refs/analyze.md +123 -0
  376. package/skills/data/refs/data.md +95 -0
  377. package/skills/data/refs/ml.md +118 -0
  378. package/skills/data/refs/pipeline.md +92 -0
  379. package/skills/deliberate/SKILL.md +125 -0
  380. package/skills/deliberate/refs/architecture-lens.md +37 -0
  381. package/skills/deliberate/refs/assumptions-lens.md +43 -0
  382. package/skills/deliberate/refs/code-lens.md +38 -0
  383. package/skills/deliberate/refs/content-lens.md +37 -0
  384. package/skills/deliberate/refs/data-lens.md +43 -0
  385. package/skills/deliberate/refs/design-lens.md +37 -0
  386. package/skills/deliberate/refs/opportunity-patterns.md +107 -0
  387. package/skills/deliberate/refs/ops-lens.md +43 -0
  388. package/skills/deliberate/refs/product-lens.md +46 -0
  389. package/skills/deliberate/refs/rethink-framework.md +77 -0
  390. package/skills/deliberate/refs/security-lens.md +47 -0
  391. package/skills/deliberate/refs/testing-lens.md +45 -0
  392. package/skills/deliberate/refs/timing-lens.md +42 -0
  393. package/skills/engineering/architecture/SKILL.md +177 -0
  394. package/skills/engineering/architecture/refs/adr-template.md +268 -0
  395. package/skills/engineering/architecture/refs/architecture-template-deployment.md +176 -0
  396. package/skills/engineering/architecture/refs/architecture-template-design.md +300 -0
  397. package/skills/engineering/architecture/refs/examples-ecommerce-analytics.md +299 -0
  398. package/skills/engineering/architecture/refs/examples-saas-trading.md +291 -0
  399. package/skills/engineering/architecture/refs/patterns-advanced.md +238 -0
  400. package/skills/engineering/architecture/refs/patterns-structural.md +303 -0
  401. package/skills/engineering/backend/SKILL.md +102 -0
  402. package/skills/engineering/backend/refs/checklists.md +146 -0
  403. package/skills/engineering/backend/refs/patterns.md +181 -0
  404. package/skills/engineering/debugging/SKILL.md +99 -0
  405. package/skills/engineering/debugging/refs/patterns.md +248 -0
  406. package/skills/engineering/debugging/refs/process.md +203 -0
  407. package/skills/engineering/docs/SKILL.md +97 -0
  408. package/skills/engineering/engineering/SKILL.md +88 -0
  409. package/skills/engineering/engineering/refs/checklists.md +91 -0
  410. package/skills/engineering/engineering/refs/templates.md +71 -0
  411. package/skills/engineering/frontend/SKILL.md +92 -0
  412. package/skills/engineering/frontend/refs/checklists.md +96 -0
  413. package/skills/engineering/frontend/refs/patterns.md +167 -0
  414. package/skills/engineering/integration/SKILL.md +183 -0
  415. package/skills/engineering/integration/refs/error-handling-best-practices.md +139 -0
  416. package/skills/engineering/integration/refs/error-handling-error-classes-typescript.md +212 -0
  417. package/skills/engineering/integration/refs/error-handling-error-response-format.md +301 -0
  418. package/skills/engineering/integration/refs/error-handling-retry-strategies.md +190 -0
  419. package/skills/engineering/integration/refs/event-schemas-best-practices.md +225 -0
  420. package/skills/engineering/integration/refs/event-schemas-event-naming-conventions.md +303 -0
  421. package/skills/engineering/integration/refs/event-schemas-event-structure.md +288 -0
  422. package/skills/engineering/integration/refs/graphql-best-practices.md +138 -0
  423. package/skills/engineering/integration/refs/graphql-error-handling.md +198 -0
  424. package/skills/engineering/integration/refs/graphql-graphql-basics.md +197 -0
  425. package/skills/engineering/integration/refs/graphql-query-examples.md +226 -0
  426. package/skills/engineering/integration/refs/graphql-schema-design-patterns.md +280 -0
  427. package/skills/engineering/integration/refs/grpc-grpc-overview.md +246 -0
  428. package/skills/engineering/integration/refs/grpc-implementation-examples.md +269 -0
  429. package/skills/engineering/integration/refs/grpc-metadata-headers.md +304 -0
  430. package/skills/engineering/integration/refs/grpc-testing.md +49 -0
  431. package/skills/engineering/integration/refs/openapi-template.yaml +682 -0
  432. package/skills/engineering/integration/refs/resilience-best-practices.md +109 -0
  433. package/skills/engineering/integration/refs/resilience-circuit-breaker-pattern.md +302 -0
  434. package/skills/engineering/integration/refs/resilience-rate-limiting.md +245 -0
  435. package/skills/engineering/integration/refs/resilience-timeout-pattern.md +212 -0
  436. package/skills/engineering/integration/refs/rest-api-fundamentals.md +299 -0
  437. package/skills/engineering/integration/refs/rest-api-responses-security.md +302 -0
  438. package/skills/engineering/integration/refs/versioning-breaking-changes.md +237 -0
  439. package/skills/engineering/integration/refs/versioning-migration-strategies.md +257 -0
  440. package/skills/engineering/integration/refs/versioning-versioning-strategies.md +296 -0
  441. package/skills/engineering/large-scale-migration/SKILL.md +65 -0
  442. package/skills/engineering/patch/SKILL.md +184 -0
  443. package/skills/engineering/refs/arch.md +126 -0
  444. package/skills/engineering/refs/debug.md +142 -0
  445. package/skills/engineering/refs/docs.md +190 -0
  446. package/skills/engineering/refs/plan.md +109 -0
  447. package/skills/engineering/refs/review.md +138 -0
  448. package/skills/engineering/system-design/SKILL.md +154 -0
  449. package/skills/engineering/system-design/refs/anti-patterns-big-ball-of-mud.md +254 -0
  450. package/skills/engineering/system-design/refs/anti-patterns-circular-dependencies.md +241 -0
  451. package/skills/engineering/system-design/refs/anti-patterns-feature-envy.md +168 -0
  452. package/skills/engineering/system-design/refs/anti-patterns-god-object.md +247 -0
  453. package/skills/engineering/system-design/refs/component-template-lifecycle.md +210 -0
  454. package/skills/engineering/system-design/refs/component-template-maintenance.md +219 -0
  455. package/skills/engineering/system-design/refs/component-template-structure.md +276 -0
  456. package/skills/engineering/system-design/refs/dependencies-best-practices.md +260 -0
  457. package/skills/engineering/system-design/refs/dependencies-dependency-principles.md +295 -0
  458. package/skills/engineering/system-design/refs/dependencies-dependency-tracking.md +261 -0
  459. package/skills/engineering/system-design/refs/interface-template-lifecycle.md +211 -0
  460. package/skills/engineering/system-design/refs/interface-template-maintenance.md +212 -0
  461. package/skills/engineering/system-design/refs/interface-template-structure.md +269 -0
  462. package/skills/engineering/system-design/refs/patterns-dependency-injection.md +151 -0
  463. package/skills/engineering/system-design/refs/patterns-facade-pattern.md +257 -0
  464. package/skills/engineering/system-design/refs/patterns-layered-pattern.md +204 -0
  465. package/skills/engineering/system-design/refs/patterns-plugin-architecture.md +229 -0
  466. package/skills/engineering/unit-test-quality/SKILL.md +194 -0
  467. package/skills/ground/SKILL.md +130 -0
  468. package/skills/integration-discovery/SKILL.md +168 -0
  469. package/skills/integration-discovery/refs/capabilities.md +282 -0
  470. package/skills/integration-discovery/refs/cli-detection.md +295 -0
  471. package/skills/integration-discovery/refs/discovery-sources.md +233 -0
  472. package/skills/integration-discovery/refs/task-patterns.md +206 -0
  473. package/skills/jam/SKILL.md +45 -0
  474. package/skills/jam/refs/facilitation-patterns.md +125 -0
  475. package/skills/jam/refs/quick.md +64 -0
  476. package/skills/jam/refs/synthesis-patterns.md +114 -0
  477. package/skills/multi-model/SKILL.md +168 -0
  478. package/skills/multi-model/refs/aichat.md +119 -0
  479. package/skills/multi-model/refs/aider.md +100 -0
  480. package/skills/multi-model/refs/auditability.md +238 -0
  481. package/skills/multi-model/refs/codex.md +169 -0
  482. package/skills/multi-model/refs/context.md +306 -0
  483. package/skills/multi-model/refs/copilot.md +161 -0
  484. package/skills/multi-model/refs/examples.md +224 -0
  485. package/skills/multi-model/refs/gemini.md +185 -0
  486. package/skills/multi-model/refs/goose.md +112 -0
  487. package/skills/multi-model/refs/llm.md +124 -0
  488. package/skills/multi-model/refs/opencode.md +196 -0
  489. package/skills/multi-model/refs/orchestration.md +188 -0
  490. package/skills/multi-model/refs/pi.md +208 -0
  491. package/skills/persona/SKILL.md +144 -0
  492. package/skills/persona/refs/define.md +133 -0
  493. package/skills/platform/actions/refs/actions.md +114 -0
  494. package/skills/platform/audit/SKILL.md +174 -0
  495. package/skills/platform/audit/refs/audit.md +145 -0
  496. package/skills/platform/audit/refs/checklists-evidence-operations.md +144 -0
  497. package/skills/platform/audit/refs/checklists-gdpr-pci-evidence.md +213 -0
  498. package/skills/platform/audit/refs/checklists-soc2-hipaa.md +120 -0
  499. package/skills/platform/audit/refs/frameworks-gdpr-pci.md +225 -0
  500. package/skills/platform/audit/refs/frameworks-soc2-hipaa.md +228 -0
  501. package/skills/platform/compliance/SKILL.md +169 -0
  502. package/skills/platform/compliance/refs/checklists.md +303 -0
  503. package/skills/platform/compliance/refs/compliance.md +117 -0
  504. package/skills/platform/compliance/refs/frameworks.md +282 -0
  505. package/skills/platform/errors/SKILL.md +183 -0
  506. package/skills/platform/errors/refs/patterns.md +271 -0
  507. package/skills/platform/errors/refs/severity.md +264 -0
  508. package/skills/platform/gate-benchmark-rebaseline/SKILL.md +108 -0
  509. package/skills/platform/gh/refs/gh.md +105 -0
  510. package/skills/platform/gh-cli/SKILL.md +120 -0
  511. package/skills/platform/gh-cli/refs/automation.md +63 -0
  512. package/skills/platform/gh-cli/refs/gh-ops.md +103 -0
  513. package/skills/platform/gh-cli/refs/patterns.md +132 -0
  514. package/skills/platform/gh-cli/scripts/gh_ops.py +454 -0
  515. package/skills/platform/github-actions/SKILL.md +159 -0
  516. package/skills/platform/github-actions/refs/security.md +150 -0
  517. package/skills/platform/github-actions/refs/templates.md +230 -0
  518. package/skills/platform/github-actions/refs/troubleshooting.md +174 -0
  519. package/skills/platform/github-actions/scripts/workflow_gen.py +215 -0
  520. package/skills/platform/gitlab-ci/SKILL.md +140 -0
  521. package/skills/platform/gitlab-ci/refs/templates.md +223 -0
  522. package/skills/platform/gitlab-ci/refs/troubleshooting.md +213 -0
  523. package/skills/platform/glab-cli/SKILL.md +133 -0
  524. package/skills/platform/glab-cli/refs/ci-debugging.md +95 -0
  525. package/skills/platform/glab-cli/refs/glab-ops.md +78 -0
  526. package/skills/platform/glab-cli/refs/patterns.md +131 -0
  527. package/skills/platform/glab-cli/scripts/glab_ops.py +313 -0
  528. package/skills/platform/health/SKILL.md +177 -0
  529. package/skills/platform/health/refs/health.md +72 -0
  530. package/skills/platform/health/refs/sources.md +302 -0
  531. package/skills/platform/incident/refs/incident.md +136 -0
  532. package/skills/platform/infra/refs/infra.md +104 -0
  533. package/skills/platform/observability/SKILL.md +128 -0
  534. package/skills/platform/observability/refs/toolchain-discovery.md +243 -0
  535. package/skills/platform/prereq-doctor/SKILL.md +57 -0
  536. package/skills/platform/prereq-doctor/refs/tool-registry.md +58 -0
  537. package/skills/platform/traces/refs/traces.md +101 -0
  538. package/skills/product/acceptance-criteria/SKILL.md +193 -0
  539. package/skills/product/acceptance-criteria/refs/ac-anti-patterns.md +291 -0
  540. package/skills/product/acceptance-criteria/refs/ac-examples.md +277 -0
  541. package/skills/product/accessibility/SKILL.md +197 -0
  542. package/skills/product/accessibility/refs/aria-patterns-basics.md +250 -0
  543. package/skills/product/accessibility/refs/aria-patterns-dynamic.md +187 -0
  544. package/skills/product/accessibility/refs/aria-patterns-interactive.md +246 -0
  545. package/skills/product/accessibility/refs/audit-report-findings.md +248 -0
  546. package/skills/product/accessibility/refs/audit-report-results.md +276 -0
  547. package/skills/product/accessibility/refs/common-violations-html-css.md +270 -0
  548. package/skills/product/accessibility/refs/common-violations-interactive.md +303 -0
  549. package/skills/product/accessibility/refs/keyboard-testing-basics.md +222 -0
  550. package/skills/product/accessibility/refs/keyboard-testing-patterns.md +173 -0
  551. package/skills/product/accessibility/refs/screen-reader-testing-advanced.md +294 -0
  552. package/skills/product/accessibility/refs/screen-reader-testing-commands.md +255 -0
  553. package/skills/product/accessibility/refs/wcag-checklist.md +262 -0
  554. package/skills/product/analyze/SKILL.md +164 -0
  555. package/skills/product/analyze/refs/algorithms.md +238 -0
  556. package/skills/product/analyze/refs/sentiment-patterns.md +180 -0
  557. package/skills/product/imagery/SKILL.md +97 -0
  558. package/skills/product/imagery/alter/SKILL.md +105 -0
  559. package/skills/product/imagery/alter/refs/editing-reference.md +146 -0
  560. package/skills/product/imagery/create/SKILL.md +109 -0
  561. package/skills/product/imagery/create/refs/prompt-engineering.md +112 -0
  562. package/skills/product/imagery/create/refs/provider-reference.md +219 -0
  563. package/skills/product/imagery/review/SKILL.md +101 -0
  564. package/skills/product/imagery/review/refs/analysis-lenses.md +136 -0
  565. package/skills/product/imagery/review/refs/quality-gates.md +153 -0
  566. package/skills/product/imagery/scripts/analyze.sh +23 -0
  567. package/skills/product/imagery/scripts/edit.sh +14 -0
  568. package/skills/product/imagery/scripts/generate.sh +13 -0
  569. package/skills/product/imagery/scripts/provider.py +787 -0
  570. package/skills/product/listen/SKILL.md +175 -0
  571. package/skills/product/listen/refs/channels.md +220 -0
  572. package/skills/product/mockup/SKILL.md +106 -0
  573. package/skills/product/mockup/refs/templates.md +95 -0
  574. package/skills/product/refs/a11y.md +109 -0
  575. package/skills/product/refs/acceptance.md +79 -0
  576. package/skills/product/refs/align.md +67 -0
  577. package/skills/product/refs/analyze.md +77 -0
  578. package/skills/product/refs/elicit.md +67 -0
  579. package/skills/product/refs/listen.md +58 -0
  580. package/skills/product/refs/mockup.md +77 -0
  581. package/skills/product/refs/screenshot.md +59 -0
  582. package/skills/product/refs/strategy.md +77 -0
  583. package/skills/product/refs/synthesize.md +54 -0
  584. package/skills/product/refs/ux-review.md +68 -0
  585. package/skills/product/refs/ux.md +101 -0
  586. package/skills/product/requirements-analysis/SKILL.md +136 -0
  587. package/skills/product/requirements-analysis/refs/requirements-example-auth.md +264 -0
  588. package/skills/product/requirements-analysis/refs/requirements-example-export-integration.md +88 -0
  589. package/skills/product/requirements-analysis/refs/requirements-output-format-template.md +247 -0
  590. package/skills/product/requirements-analysis/refs/user-story-guide.md +296 -0
  591. package/skills/product/requirements-graph/SKILL.md +155 -0
  592. package/skills/product/requirements-graph/refs/examples.md +223 -0
  593. package/skills/product/requirements-graph/refs/schema.md +162 -0
  594. package/skills/product/requirements-migrate/SKILL.md +90 -0
  595. package/skills/product/requirements-navigate/SKILL.md +141 -0
  596. package/skills/product/requirements-navigate/refs/meta-templates.md +141 -0
  597. package/skills/product/screenshot/SKILL.md +147 -0
  598. package/skills/product/strategy/SKILL.md +198 -0
  599. package/skills/product/strategy/refs/frameworks.md +295 -0
  600. package/skills/product/strategy/refs/templates-competitive-market.md +299 -0
  601. package/skills/product/strategy/refs/templates-roi-value.md +207 -0
  602. package/skills/product/synthesize/SKILL.md +116 -0
  603. package/skills/product/synthesize/refs/journey-mapping.md +212 -0
  604. package/skills/product/synthesize/refs/prioritization.md +193 -0
  605. package/skills/product/ux-review/SKILL.md +164 -0
  606. package/skills/product/visual-direction/SKILL.md +137 -0
  607. package/skills/product/visual-review/SKILL.md +131 -0
  608. package/skills/runtime-exec/SKILL.md +138 -0
  609. package/skills/search/codebase-narrator/SKILL.md +131 -0
  610. package/skills/search/codebase-narrator/refs/output-template.md +100 -0
  611. package/skills/smaht/SKILL.md +72 -0
  612. package/skills/smaht/discovery/SKILL.md +65 -0
  613. package/skills/smaht/intent/SKILL.md +89 -0
  614. package/skills/smaht/propose-skills/SKILL.md +142 -0
  615. package/skills/smaht/refs/state.md +76 -0
  616. package/skills/swarm/SKILL.md +132 -0
  617. package/skills/swarm/refs/fan-out.md +104 -0
  618. package/skills/swarm/refs/independent-verification.md +86 -0
  619. package/skills/swarm/refs/receipts-and-evidence.md +69 -0
  620. package/skills/swarm/refs/recon-synthesis.md +87 -0
  621. package/skills/swarm/refs/ship-discipline.md +90 -0
  622. package/skills/wickedizer/SKILL.md +147 -0
  623. package/skills/wickedizer/refs/artifact-types.md +238 -0
  624. package/skills/wickedizer/refs/complexity.md +278 -0
  625. package/skills/wickedizer/refs/de-ai-pass.md +140 -0
  626. package/skills/wickedizer/refs/failure-modes.md +249 -0
  627. package/skills/wickedizer/refs/patterns.md +282 -0
  628. package/skills/wickedizer/refs/review.md +221 -0
  629. package/skills/wickedizer/refs/structure.md +282 -0
  630. package/skills/wickedizer/refs/voice-profile.md +125 -0
  631. package/skills/workflow/SKILL.md +132 -0
  632. package/skills/workflow/refs/archetype-adjustments.md +205 -0
  633. package/skills/workflow/refs/evidence.md +58 -0
  634. package/skills/workflow/refs/integration.md +130 -0
  635. package/skills/workflow/refs/risk-dimension-signals.md +260 -0
  636. package/skills/workflow/refs/scoring-rubric.md +49 -0
  637. package/skills/workflow/refs/signal-keywords.md +176 -0
  638. package/skills/workflow/refs/specialist-routing-rules.md +159 -0
  639. package/skills/worktrees/SKILL.md +87 -0
  640. package/skills/worktrees/refs/recipes.md +96 -0
@@ -0,0 +1,303 @@
1
+ ---
2
+ phase_relevance: ["clarify", "design", "review"]
3
+ archetype_relevance: ["*"]
4
+ ---
5
+ # Common Accessibility Violations: Interactive Components
6
+
7
+ Violations in custom components, forms, keyboard navigation, dynamic content, and headings with fixes.
8
+
9
+ ## 6. Inaccessible Custom Components
10
+
11
+ ### Modal Without Proper ARIA
12
+
13
+ ```html
14
+ <!-- ✗ VIOLATION -->
15
+ <div class="modal">
16
+ <div class="modal-content">
17
+ <h2>Confirm</h2>
18
+ <button>OK</button>
19
+ </div>
20
+ </div>
21
+
22
+ <!-- ✓ FIX -->
23
+ <div class="modal"
24
+ role="dialog"
25
+ aria-modal="true"
26
+ aria-labelledby="modal-title">
27
+ <div class="modal-content">
28
+ <h2 id="modal-title">Confirm</h2>
29
+ <button>OK</button>
30
+ </div>
31
+ </div>
32
+ ```
33
+
34
+ ### Dropdown Menu
35
+
36
+ ```html
37
+ <!-- ✗ VIOLATION -->
38
+ <button onclick="toggleMenu()">Menu</button>
39
+ <div id="menu" style="display:none">
40
+ <a href="/home">Home</a>
41
+ <a href="/about">About</a>
42
+ </div>
43
+
44
+ <!-- ✓ FIX -->
45
+ <button onclick="toggleMenu()"
46
+ aria-expanded="false"
47
+ aria-controls="menu">
48
+ Menu
49
+ </button>
50
+ <div id="menu" hidden>
51
+ <a href="/home">Home</a>
52
+ <a href="/about">About</a>
53
+ </div>
54
+
55
+ <script>
56
+ function toggleMenu() {
57
+ const button = document.querySelector('[aria-controls="menu"]');
58
+ const menu = document.getElementById('menu');
59
+ const isExpanded = button.getAttribute('aria-expanded') === 'true';
60
+
61
+ button.setAttribute('aria-expanded', !isExpanded);
62
+ menu.hidden = isExpanded;
63
+ }
64
+ </script>
65
+ ```
66
+
67
+ ### Tabs Without ARIA
68
+
69
+ ```html
70
+ <!-- ✗ VIOLATION -->
71
+ <div class="tabs">
72
+ <button onclick="showTab(1)">Tab 1</button>
73
+ <button onclick="showTab(2)">Tab 2</button>
74
+ </div>
75
+ <div id="panel1">Content 1</div>
76
+ <div id="panel2" hidden>Content 2</div>
77
+
78
+ <!-- ✓ FIX -->
79
+ <div class="tabs" role="tablist">
80
+ <button role="tab"
81
+ aria-selected="true"
82
+ aria-controls="panel1"
83
+ id="tab1">
84
+ Tab 1
85
+ </button>
86
+ <button role="tab"
87
+ aria-selected="false"
88
+ aria-controls="panel2"
89
+ id="tab2">
90
+ Tab 2
91
+ </button>
92
+ </div>
93
+ <div id="panel1" role="tabpanel" aria-labelledby="tab1">
94
+ Content 1
95
+ </div>
96
+ <div id="panel2" role="tabpanel" aria-labelledby="tab2" hidden>
97
+ Content 2
98
+ </div>
99
+ ```
100
+
101
+ ## 7. Form Validation Errors
102
+
103
+ **WCAG**: 3.3.1 Error Identification, 3.3.3 Error Suggestion (Level A, AA)
104
+ **Impact**: Users don't know what's wrong or how to fix it
105
+
106
+ ### Error Not Announced
107
+
108
+ ```html
109
+ <!-- ✗ VIOLATION - Error shown visually only -->
110
+ <input type="email" id="email">
111
+ <span class="error" style="display:none;">Invalid email</span>
112
+
113
+ <!-- ✓ FIX -->
114
+ <label for="email">Email</label>
115
+ <input type="email"
116
+ id="email"
117
+ aria-describedby="email-error"
118
+ aria-invalid="true">
119
+ <span id="email-error" role="alert" class="error">
120
+ Please enter a valid email address
121
+ </span>
122
+ ```
123
+
124
+ ### Inline Validation
125
+
126
+ ```javascript
127
+ // ✗ VIOLATION - No ARIA update
128
+ input.addEventListener('blur', () => {
129
+ if (!isValid(input.value)) {
130
+ errorDiv.style.display = 'block';
131
+ }
132
+ });
133
+
134
+ // ✓ FIX - ARIA attributes + live region
135
+ input.addEventListener('blur', () => {
136
+ if (!isValid(input.value)) {
137
+ input.setAttribute('aria-invalid', 'true');
138
+ input.setAttribute('aria-describedby', 'error-id');
139
+ errorDiv.setAttribute('role', 'alert');
140
+ errorDiv.textContent = 'Please enter a valid value';
141
+ }
142
+ });
143
+ ```
144
+
145
+ ## 8. Keyboard Navigation Issues
146
+
147
+ ### Keyboard Trap
148
+
149
+ ```javascript
150
+ // ✗ VIOLATION - Can't exit modal with keyboard
151
+ function openModal() {
152
+ modal.style.display = 'block';
153
+ modal.querySelector('button').focus();
154
+ }
155
+
156
+ // ✓ FIX - Escape key closes modal
157
+ modal.addEventListener('keydown', (e) => {
158
+ if (e.key === 'Escape') {
159
+ closeModal();
160
+ }
161
+ });
162
+ ```
163
+
164
+ ### Missing Tab Index
165
+
166
+ ```html
167
+ <!-- ✗ VIOLATION - Custom control not focusable -->
168
+ <div onclick="toggle()">Toggle</div>
169
+
170
+ <!-- ✓ FIX -->
171
+ <div tabindex="0"
172
+ role="button"
173
+ onclick="toggle()"
174
+ onkeydown="if(event.key==='Enter'||event.key===' ')toggle()">
175
+ Toggle
176
+ </div>
177
+ ```
178
+
179
+ ## 9. Dynamic Content Not Announced
180
+
181
+ **WCAG**: 4.1.3 Status Messages (Level AA)
182
+ **Impact**: Screen reader users miss important updates
183
+
184
+ ### Loading State
185
+
186
+ ```javascript
187
+ // ✗ VIOLATION - Visual spinner only
188
+ button.innerHTML = '<span class="spinner"></span>';
189
+
190
+ // ✓ FIX - Announce loading state
191
+ button.innerHTML = '<span role="status" aria-live="polite">Loading...</span>';
192
+ ```
193
+
194
+ ### Success Message
195
+
196
+ ```javascript
197
+ // ✗ VIOLATION - Not announced
198
+ document.getElementById('message').textContent = 'Saved successfully';
199
+
200
+ // ✓ FIX - Use alert role
201
+ const message = document.getElementById('message');
202
+ message.setAttribute('role', 'alert');
203
+ message.textContent = 'Saved successfully';
204
+ ```
205
+
206
+ ### Live Region for Updates
207
+
208
+ ```html
209
+ <!-- ✗ VIOLATION -->
210
+ <div id="results">
211
+ <!-- Results updated via JS, but not announced -->
212
+ </div>
213
+
214
+ <!-- ✓ FIX -->
215
+ <div id="results" role="region" aria-live="polite" aria-atomic="true">
216
+ <!-- Results announced when updated -->
217
+ </div>
218
+ ```
219
+
220
+ ## 10. Heading Structure Issues
221
+
222
+ **WCAG**: 2.4.6 Headings and Labels (Level AA)
223
+ **Impact**: Screen reader users can't navigate page structure
224
+
225
+ ### Skipped Heading Levels
226
+
227
+ ```html
228
+ <!-- ✗ VIOLATION - Skips from h1 to h3 -->
229
+ <h1>Page Title</h1>
230
+ <h3>Section Title</h3>
231
+
232
+ <!-- ✓ FIX -->
233
+ <h1>Page Title</h1>
234
+ <h2>Section Title</h2>
235
+ ```
236
+
237
+ ### Multiple H1s
238
+
239
+ ```html
240
+ <!-- ✗ VIOLATION - Multiple h1s confuse page structure -->
241
+ <h1>Site Name</h1>
242
+ <h1>Page Title</h1>
243
+
244
+ <!-- ✓ FIX - Single h1 per page -->
245
+ <div class="site-name">Site Name</div>
246
+ <h1>Page Title</h1>
247
+ ```
248
+
249
+ ### Non-Descriptive Headings
250
+
251
+ ```html
252
+ <!-- ✗ VIOLATION -->
253
+ <h2>Click Here</h2>
254
+
255
+ <!-- ✓ FIX -->
256
+ <h2>Download Annual Report</h2>
257
+ ```
258
+
259
+ ## Quick Testing Checklist
260
+
261
+ Use this checklist to catch most violations:
262
+
263
+ ```
264
+ □ All images have alt text (or alt="" if decorative)
265
+ □ All form inputs have associated labels
266
+ □ Color contrast meets 4.5:1 (normal text) or 3:1 (large text)
267
+ □ All interactive elements use semantic HTML or ARIA
268
+ □ Focus indicators visible on all focusable elements
269
+ □ Custom components have proper ARIA roles and states
270
+ □ Form errors announced and linked to fields
271
+ □ No keyboard traps (can Tab through and Escape modals)
272
+ □ Dynamic updates use role="alert" or aria-live
273
+ □ Heading structure logical (single h1, no skipped levels)
274
+ ```
275
+
276
+ ## Automated Tools
277
+
278
+ Catch many of these violations automatically:
279
+
280
+ ```bash
281
+ # Browser extensions
282
+ - axe DevTools
283
+ - WAVE
284
+ - Lighthouse
285
+
286
+ # CLI tools
287
+ npx @axe-core/cli https://example.com
288
+ npx pa11y https://example.com
289
+ ```
290
+
291
+ ## Priority Fixes
292
+
293
+ If you have limited time, fix these first:
294
+
295
+ 1. **Missing alt text** - Screen readers completely miss content
296
+ 2. **Form labels** - Users can't complete tasks
297
+ 3. **Color contrast** - Text unreadable for many users
298
+ 4. **Keyboard access** - Blocks keyboard-only users
299
+ 5. **Focus indicators** - Users get lost
300
+
301
+ ## Resources
302
+
303
+ WebAIM WCAG Checklist · A11Y Style Guide (a11y-style-guide.com) · Inclusive Components (inclusive-components.design)
@@ -0,0 +1,222 @@
1
+ ---
2
+ phase_relevance: ["clarify", "design", "review"]
3
+ archetype_relevance: ["*"]
4
+ ---
5
+ # Keyboard Testing Guide: Basics
6
+
7
+ Core keyboard navigation testing for WCAG 2.1 compliance.
8
+
9
+ ## Core Keyboard Requirements
10
+
11
+ All interactive functionality must be operable through keyboard alone (WCAG 2.1.1).
12
+
13
+ ### Essential Keys
14
+
15
+ - **Tab**: Move forward through interactive elements
16
+ - **Shift+Tab**: Move backward through interactive elements
17
+ - **Enter**: Activate buttons, links, form submissions
18
+ - **Space**: Toggle checkboxes, activate buttons, scroll page
19
+ - **Arrow Keys**: Navigate within menus, radio groups, sliders, tabs
20
+ - **Escape**: Close modals, cancel operations, dismiss popovers
21
+ - **Home/End**: Jump to first/last item in lists or text inputs
22
+
23
+ ## Comprehensive Testing Checklist
24
+
25
+ ### 1. Tab Order Test
26
+
27
+ **Goal**: Verify logical tab sequence and no missing interactive elements.
28
+
29
+ ```
30
+ [] Tab through entire page from top to bottom
31
+ [] Tab order matches visual layout (left-to-right, top-to-bottom)
32
+ [] All interactive elements are reachable
33
+ [] No unexpected tab stops on non-interactive elements
34
+ [] Skip links (if present) appear first
35
+ [] Tab order within complex components is logical
36
+ [] Form fields follow a natural sequence
37
+ ```
38
+
39
+ ### 2. Focus Visibility Test
40
+
41
+ **Goal**: Ensure focus is always clearly visible (WCAG 2.4.7).
42
+
43
+ ```
44
+ [] Focus indicator visible on ALL interactive elements
45
+ [] Focus ring contrast meets 3:1 minimum
46
+ [] Focus indicator not obscured by other elements
47
+ [] Focus indicator clearly distinguishable from hover state
48
+ [] Focus visible in both light and dark modes
49
+ [] Custom focus styles meet visibility standards
50
+ [] Focus visible on all form controls
51
+ [] Focus visible on custom components
52
+ ```
53
+
54
+ **Common Issues:**
55
+ ```css
56
+ /* BAD - Removes focus indicator */
57
+ button:focus { outline: none; }
58
+
59
+ /* GOOD - Custom accessible focus */
60
+ button:focus-visible {
61
+ outline: 2px solid #0066cc;
62
+ outline-offset: 2px;
63
+ }
64
+ ```
65
+
66
+ ### 3. Keyboard Trap Test
67
+
68
+ **Goal**: Ensure users can always move focus away (WCAG 2.1.2).
69
+
70
+ ```
71
+ [] Can exit all modals with Escape
72
+ [] Can tab out of custom widgets
73
+ [] No infinite tab loops
74
+ [] Can exit autocomplete/dropdown menus
75
+ [] Can leave embedded iframes
76
+ [] Modal focus management returns to trigger element
77
+ [] No focus lost into hidden elements
78
+ ```
79
+
80
+ ### 4. Interactive Element Test
81
+
82
+ **Goal**: All interactive elements work with keyboard.
83
+
84
+ #### Buttons
85
+ ```
86
+ [] Activate with Enter
87
+ [] Activate with Space
88
+ [] Both <button> and role="button" work
89
+ ```
90
+
91
+ #### Links
92
+ ```
93
+ [] Activate with Enter
94
+ [] Space scrolls page (doesn't activate)
95
+ [] Fragment links (#) work correctly
96
+ ```
97
+
98
+ #### Form Controls
99
+ ```
100
+ [] Text inputs: Type, navigate with arrows
101
+ [] Checkboxes: Toggle with Space
102
+ [] Radio buttons: Select with Arrow keys
103
+ [] Select dropdowns: Open with Space/Enter, navigate with Arrows
104
+ [] Textareas: Enter creates new line (doesn't submit form)
105
+ ```
106
+
107
+ #### Custom Components
108
+ ```
109
+ [] Tabs: Arrow keys navigate, Enter/Space activate
110
+ [] Accordions: Enter/Space toggle, Arrow keys navigate
111
+ [] Carousels: Arrow keys navigate slides
112
+ [] Sliders: Arrow keys adjust value
113
+ [] Menus: Arrow keys navigate, Enter selects, Escape closes
114
+ ```
115
+
116
+ ### 5. Modal and Dialog Test
117
+
118
+ **Goal**: Proper focus management in overlay interfaces.
119
+
120
+ ```
121
+ [] Focus moves to modal when opened
122
+ [] Tab cycles within modal only (focus trap)
123
+ [] First focusable element receives focus on open
124
+ [] Escape closes modal
125
+ [] Focus returns to trigger element on close
126
+ [] Background content is inert (can't tab to it)
127
+ [] Modal can be operated entirely by keyboard
128
+ ```
129
+
130
+ **Example Implementation:**
131
+ ```javascript
132
+ // Focus trap in modal
133
+ modal.addEventListener('keydown', (e) => {
134
+ if (e.key === 'Escape') closeModal();
135
+
136
+ if (e.key === 'Tab') {
137
+ const focusable = modal.querySelectorAll('button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])');
138
+ const first = focusable[0];
139
+ const last = focusable[focusable.length - 1];
140
+
141
+ if (e.shiftKey && document.activeElement === first) {
142
+ last.focus();
143
+ e.preventDefault();
144
+ } else if (!e.shiftKey && document.activeElement === last) {
145
+ first.focus();
146
+ e.preventDefault();
147
+ }
148
+ }
149
+ });
150
+ ```
151
+
152
+ ### 6. Dropdown and Menu Test
153
+
154
+ **Goal**: Keyboard-accessible menu navigation.
155
+
156
+ ```
157
+ [] Open with Enter or Space
158
+ [] Arrow Down: Move to next item
159
+ [] Arrow Up: Move to previous item
160
+ [] Home: Jump to first item
161
+ [] End: Jump to last item
162
+ [] Type to search/filter items
163
+ [] Enter: Select item and close
164
+ [] Escape: Close without selecting
165
+ [] Tab: Close and move to next element
166
+ ```
167
+
168
+ ### 7. Skip Links Test
169
+
170
+ **Goal**: Efficient navigation for keyboard users.
171
+
172
+ ```
173
+ [] "Skip to main content" link is first tab stop
174
+ [] Skip link becomes visible on focus
175
+ [] Skip link actually moves focus to main content
176
+ [] Additional skip links for repetitive navigation
177
+ ```
178
+
179
+ **Example:**
180
+ ```html
181
+ <a href="#main-content" class="skip-link">Skip to main content</a>
182
+
183
+ <style>
184
+ .skip-link {
185
+ position: absolute;
186
+ top: -40px;
187
+ left: 0;
188
+ background: #000;
189
+ color: #fff;
190
+ padding: 8px;
191
+ z-index: 100;
192
+ }
193
+
194
+ .skip-link:focus {
195
+ top: 0;
196
+ }
197
+ </style>
198
+ ```
199
+
200
+ ### 8. Form Validation Test
201
+
202
+ **Goal**: Keyboard users can identify and fix errors.
203
+
204
+ ```
205
+ [] Error messages appear without requiring mouse
206
+ [] Focus moves to first error on submit
207
+ [] Inline validation doesn't break keyboard flow
208
+ [] Error messages are keyboard-accessible
209
+ [] Success messages are announced
210
+ ```
211
+
212
+ ### 9. Dynamic Content Test
213
+
214
+ **Goal**: Keyboard users aren't lost when content changes.
215
+
216
+ ```
217
+ [] Focus maintained when content updates
218
+ [] Loading states don't trap focus
219
+ [] Infinite scroll accessible via keyboard
220
+ [] Lazy-loaded content is reachable
221
+ [] AJAX updates don't break tab order
222
+ ```
@@ -0,0 +1,173 @@
1
+ ---
2
+ phase_relevance: ["clarify", "design", "review"]
3
+ archetype_relevance: ["*"]
4
+ ---
5
+ # Keyboard Testing Guide: Patterns & Tools
6
+
7
+ Testing workflows, common violations with fixes, tools, and quick reference.
8
+
9
+ ## Testing Workflow
10
+
11
+ ### Basic Test (5 minutes)
12
+ 1. Close your mouse/trackpad
13
+ 2. Tab through the page
14
+ 3. Try to complete primary user action
15
+ 4. Can you do everything without a mouse?
16
+
17
+ ### Comprehensive Test (20 minutes)
18
+ 1. Test all checklist items from keyboard-testing-basics.md
19
+ 2. Try each interactive element
20
+ 3. Test modal/overlay interactions
21
+ 4. Test form submission flow
22
+ 5. Test error states and recovery
23
+
24
+ ### Advanced Test (Browser DevTools)
25
+ ```javascript
26
+ // Find all tabbable elements
27
+ document.querySelectorAll('button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])')
28
+
29
+ // Highlight focus order
30
+ let tabIndex = 0;
31
+ document.addEventListener('focus', (e) => {
32
+ e.target.dataset.tabOrder = ++tabIndex;
33
+ console.log(`Tab ${tabIndex}:`, e.target);
34
+ }, true);
35
+ ```
36
+
37
+ ## Common Violations and Fixes
38
+
39
+ ### 1. Missing Tabindex on Custom Controls
40
+
41
+ ```html
42
+ <!-- BAD: Not keyboard accessible -->
43
+ <div onclick="handleClick()">Click me</div>
44
+
45
+ <!-- GOOD: Keyboard accessible -->
46
+ <button onclick="handleClick()">Click me</button>
47
+
48
+ <!-- If div required, add role and tabindex -->
49
+ <div role="button" tabindex="0" onclick="handleClick()"
50
+ onkeydown="if(event.key==='Enter'||event.key===' ')handleClick()">
51
+ Click me
52
+ </div>
53
+ ```
54
+
55
+ ### 2. Invisible Focus Indicator
56
+
57
+ ```css
58
+ /* BAD */
59
+ *:focus { outline: none; }
60
+
61
+ /* GOOD */
62
+ *:focus-visible {
63
+ outline: 2px solid var(--focus-color);
64
+ outline-offset: 2px;
65
+ }
66
+ ```
67
+
68
+ ### 3. Keyboard Trap in Modal
69
+
70
+ ```javascript
71
+ // BAD - Focus escapes modal
72
+ <div class="modal">...</div>
73
+
74
+ // GOOD - Focus trapped in modal
75
+ function trapFocus(modal) {
76
+ const focusable = modal.querySelectorAll(
77
+ 'button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])'
78
+ );
79
+ const first = focusable[0];
80
+ const last = focusable[focusable.length - 1];
81
+
82
+ modal.addEventListener('keydown', (e) => {
83
+ if (e.key === 'Tab') {
84
+ if (e.shiftKey) {
85
+ if (document.activeElement === first) {
86
+ last.focus();
87
+ e.preventDefault();
88
+ }
89
+ } else {
90
+ if (document.activeElement === last) {
91
+ first.focus();
92
+ e.preventDefault();
93
+ }
94
+ }
95
+ }
96
+ });
97
+
98
+ first.focus();
99
+ }
100
+ ```
101
+
102
+ ### 4. Incorrect Tab Order
103
+
104
+ ```html
105
+ <!-- BAD - Positive tabindex -->
106
+ <button tabindex="3">Third</button>
107
+ <button tabindex="1">First</button>
108
+ <button tabindex="2">Second</button>
109
+
110
+ <!-- GOOD - Natural DOM order -->
111
+ <button>First</button>
112
+ <button>Second</button>
113
+ <button>Third</button>
114
+
115
+ <!-- ACCEPTABLE - Only 0 and -1 -->
116
+ <div tabindex="0">Focusable</div>
117
+ <div tabindex="-1">Programmatically focusable</div>
118
+ ```
119
+
120
+ ## Testing Tools
121
+
122
+ ### Browser Extensions
123
+ - **Tab Order Viewer**: Visualize tab sequence
124
+ - **Accessibility Insights**: Automated and guided tests
125
+ - **axe DevTools**: Keyboard accessibility checks
126
+
127
+ ### Manual Testing
128
+ - Disconnect mouse/trackpad
129
+ - Use browser without extensions
130
+ - Test on actual keyboard (not just Tab)
131
+
132
+ ### Automated Checks
133
+ ```bash
134
+ # axe-core includes keyboard checks
135
+ npx @axe-core/cli https://example.com
136
+
137
+ # pa11y
138
+ npx pa11y https://example.com
139
+ ```
140
+
141
+ ## Quick Reference Card
142
+
143
+ ```
144
+ Action | Keys
145
+ ------------------------|------------------------
146
+ Navigate forward | Tab
147
+ Navigate backward | Shift+Tab
148
+ Activate button/link | Enter (or Space for buttons)
149
+ Toggle checkbox | Space
150
+ Select radio button | Arrow keys
151
+ Open dropdown | Space or Enter
152
+ Navigate menu | Arrow keys
153
+ Close modal/menu | Escape
154
+ Submit form | Enter (in text input)
155
+ Scroll page | Space, Arrow keys, Page Up/Down
156
+ ```
157
+
158
+ ## Success Criteria
159
+
160
+ **Pass if:**
161
+ - All interactive elements reachable via Tab
162
+ - Focus always visible
163
+ - No keyboard traps
164
+ - All functionality works via keyboard
165
+ - Tab order is logical
166
+ - Enter/Space activate elements appropriately
167
+
168
+ **Fail if:**
169
+ - Any interactive element unreachable
170
+ - Focus invisible at any point
171
+ - User gets stuck anywhere
172
+ - Primary action requires mouse
173
+ - Tab order confusing or broken