claude-autopm 2.8.2 → 2.8.4

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 (391) hide show
  1. package/README.md +399 -637
  2. package/install/install.js +15 -5
  3. package/package.json +2 -1
  4. package/packages/plugin-ai/LICENSE +21 -0
  5. package/packages/plugin-ai/README.md +316 -0
  6. package/packages/plugin-ai/agents/anthropic-claude-expert.md +579 -0
  7. package/packages/plugin-ai/agents/azure-openai-expert.md +1411 -0
  8. package/packages/plugin-ai/agents/gemini-api-expert.md +880 -0
  9. package/packages/plugin-ai/agents/google-a2a-expert.md +1445 -0
  10. package/packages/plugin-ai/agents/huggingface-expert.md +2131 -0
  11. package/packages/plugin-ai/agents/langchain-expert.md +1427 -0
  12. package/packages/plugin-ai/agents/langgraph-workflow-expert.md +520 -0
  13. package/packages/plugin-ai/agents/openai-python-expert.md +1087 -0
  14. package/packages/plugin-ai/commands/a2a-setup.md +886 -0
  15. package/packages/plugin-ai/commands/ai-model-deployment.md +481 -0
  16. package/packages/plugin-ai/commands/anthropic-optimize.md +793 -0
  17. package/packages/plugin-ai/commands/huggingface-deploy.md +789 -0
  18. package/packages/plugin-ai/commands/langchain-optimize.md +807 -0
  19. package/packages/plugin-ai/commands/llm-optimize.md +348 -0
  20. package/packages/plugin-ai/commands/openai-optimize.md +863 -0
  21. package/packages/plugin-ai/commands/rag-optimize.md +841 -0
  22. package/packages/plugin-ai/commands/rag-setup-scaffold.md +382 -0
  23. package/packages/plugin-ai/package.json +66 -0
  24. package/packages/plugin-ai/plugin.json +519 -0
  25. package/packages/plugin-ai/rules/ai-model-standards.md +449 -0
  26. package/packages/plugin-ai/rules/prompt-engineering-standards.md +509 -0
  27. package/packages/plugin-ai/scripts/examples/huggingface-inference-example.py +145 -0
  28. package/packages/plugin-ai/scripts/examples/langchain-rag-example.py +366 -0
  29. package/packages/plugin-ai/scripts/examples/mlflow-tracking-example.py +224 -0
  30. package/packages/plugin-ai/scripts/examples/openai-chat-example.py +425 -0
  31. package/packages/plugin-cloud/README.md +268 -0
  32. package/packages/plugin-cloud/agents/README.md +55 -0
  33. package/packages/plugin-cloud/agents/aws-cloud-architect.md +521 -0
  34. package/packages/plugin-cloud/agents/azure-cloud-architect.md +436 -0
  35. package/packages/plugin-cloud/agents/gcp-cloud-architect.md +385 -0
  36. package/packages/plugin-cloud/agents/gcp-cloud-functions-engineer.md +306 -0
  37. package/packages/plugin-cloud/agents/gemini-api-expert.md +880 -0
  38. package/packages/plugin-cloud/agents/kubernetes-orchestrator.md +566 -0
  39. package/packages/plugin-cloud/agents/openai-python-expert.md +1087 -0
  40. package/packages/plugin-cloud/agents/terraform-infrastructure-expert.md +454 -0
  41. package/packages/plugin-cloud/commands/cloud-cost-optimize.md +243 -0
  42. package/packages/plugin-cloud/commands/cloud-validate.md +196 -0
  43. package/packages/plugin-cloud/commands/infra-deploy.md +38 -0
  44. package/packages/plugin-cloud/commands/k8s-deploy.md +37 -0
  45. package/packages/plugin-cloud/commands/ssh-security.md +65 -0
  46. package/packages/plugin-cloud/commands/traefik-setup.md +65 -0
  47. package/packages/plugin-cloud/hooks/pre-cloud-deploy.js +456 -0
  48. package/packages/plugin-cloud/package.json +64 -0
  49. package/packages/plugin-cloud/plugin.json +338 -0
  50. package/packages/plugin-cloud/rules/cloud-security-compliance.md +313 -0
  51. package/packages/plugin-cloud/rules/infrastructure-pipeline.md +128 -0
  52. package/packages/plugin-cloud/scripts/examples/aws-validate.sh +30 -0
  53. package/packages/plugin-cloud/scripts/examples/azure-setup.sh +33 -0
  54. package/packages/plugin-cloud/scripts/examples/gcp-setup.sh +39 -0
  55. package/packages/plugin-cloud/scripts/examples/k8s-validate.sh +40 -0
  56. package/packages/plugin-cloud/scripts/examples/terraform-init.sh +26 -0
  57. package/packages/plugin-core/README.md +274 -0
  58. package/packages/plugin-core/agents/core/agent-manager.md +296 -0
  59. package/packages/plugin-core/agents/core/code-analyzer.md +131 -0
  60. package/packages/plugin-core/agents/core/file-analyzer.md +162 -0
  61. package/packages/plugin-core/agents/core/test-runner.md +200 -0
  62. package/packages/plugin-core/commands/code-rabbit.md +128 -0
  63. package/packages/plugin-core/commands/prompt.md +9 -0
  64. package/packages/plugin-core/commands/re-init.md +9 -0
  65. package/packages/plugin-core/hooks/context7-reminder.md +29 -0
  66. package/packages/plugin-core/hooks/enforce-agents.js +125 -0
  67. package/packages/plugin-core/hooks/enforce-agents.sh +35 -0
  68. package/packages/plugin-core/hooks/pre-agent-context7.js +224 -0
  69. package/packages/plugin-core/hooks/pre-command-context7.js +229 -0
  70. package/packages/plugin-core/hooks/strict-enforce-agents.sh +39 -0
  71. package/packages/plugin-core/hooks/test-hook.sh +21 -0
  72. package/packages/plugin-core/hooks/unified-context7-enforcement.sh +38 -0
  73. package/packages/plugin-core/package.json +45 -0
  74. package/packages/plugin-core/plugin.json +387 -0
  75. package/packages/plugin-core/rules/agent-coordination.md +549 -0
  76. package/packages/plugin-core/rules/agent-mandatory.md +170 -0
  77. package/packages/plugin-core/rules/ai-integration-patterns.md +219 -0
  78. package/packages/plugin-core/rules/command-pipelines.md +208 -0
  79. package/packages/plugin-core/rules/context-optimization.md +176 -0
  80. package/packages/plugin-core/rules/context7-enforcement.md +327 -0
  81. package/packages/plugin-core/rules/datetime.md +122 -0
  82. package/packages/plugin-core/rules/definition-of-done.md +272 -0
  83. package/packages/plugin-core/rules/development-environments.md +19 -0
  84. package/packages/plugin-core/rules/development-workflow.md +198 -0
  85. package/packages/plugin-core/rules/framework-path-rules.md +180 -0
  86. package/packages/plugin-core/rules/frontmatter-operations.md +64 -0
  87. package/packages/plugin-core/rules/git-strategy.md +237 -0
  88. package/packages/plugin-core/rules/golden-rules.md +181 -0
  89. package/packages/plugin-core/rules/naming-conventions.md +111 -0
  90. package/packages/plugin-core/rules/no-pr-workflow.md +183 -0
  91. package/packages/plugin-core/rules/performance-guidelines.md +403 -0
  92. package/packages/plugin-core/rules/pipeline-mandatory.md +109 -0
  93. package/packages/plugin-core/rules/security-checklist.md +318 -0
  94. package/packages/plugin-core/rules/standard-patterns.md +197 -0
  95. package/packages/plugin-core/rules/strip-frontmatter.md +85 -0
  96. package/packages/plugin-core/rules/tdd.enforcement.md +103 -0
  97. package/packages/plugin-core/rules/use-ast-grep.md +113 -0
  98. package/packages/plugin-core/scripts/lib/datetime-utils.sh +254 -0
  99. package/packages/plugin-core/scripts/lib/frontmatter-utils.sh +294 -0
  100. package/packages/plugin-core/scripts/lib/github-utils.sh +221 -0
  101. package/packages/plugin-core/scripts/lib/logging-utils.sh +199 -0
  102. package/packages/plugin-core/scripts/lib/validation-utils.sh +339 -0
  103. package/packages/plugin-core/scripts/mcp/add.sh +7 -0
  104. package/packages/plugin-core/scripts/mcp/disable.sh +12 -0
  105. package/packages/plugin-core/scripts/mcp/enable.sh +12 -0
  106. package/packages/plugin-core/scripts/mcp/list.sh +7 -0
  107. package/packages/plugin-core/scripts/mcp/sync.sh +8 -0
  108. package/packages/plugin-data/README.md +315 -0
  109. package/packages/plugin-data/agents/airflow-orchestration-expert.md +158 -0
  110. package/packages/plugin-data/agents/kedro-pipeline-expert.md +304 -0
  111. package/packages/plugin-data/agents/langgraph-workflow-expert.md +530 -0
  112. package/packages/plugin-data/commands/airflow-dag-scaffold.md +413 -0
  113. package/packages/plugin-data/commands/kafka-pipeline-scaffold.md +503 -0
  114. package/packages/plugin-data/package.json +66 -0
  115. package/packages/plugin-data/plugin.json +294 -0
  116. package/packages/plugin-data/rules/data-quality-standards.md +373 -0
  117. package/packages/plugin-data/rules/etl-pipeline-standards.md +255 -0
  118. package/packages/plugin-data/scripts/examples/airflow-dag-example.py +245 -0
  119. package/packages/plugin-data/scripts/examples/dbt-transform-example.sql +238 -0
  120. package/packages/plugin-data/scripts/examples/kafka-streaming-example.py +257 -0
  121. package/packages/plugin-data/scripts/examples/pandas-etl-example.py +332 -0
  122. package/packages/plugin-databases/README.md +330 -0
  123. package/packages/plugin-databases/agents/README.md +50 -0
  124. package/packages/plugin-databases/agents/bigquery-expert.md +401 -0
  125. package/packages/plugin-databases/agents/cosmosdb-expert.md +375 -0
  126. package/packages/plugin-databases/agents/mongodb-expert.md +407 -0
  127. package/packages/plugin-databases/agents/postgresql-expert.md +329 -0
  128. package/packages/plugin-databases/agents/redis-expert.md +74 -0
  129. package/packages/plugin-databases/commands/db-optimize.md +612 -0
  130. package/packages/plugin-databases/package.json +60 -0
  131. package/packages/plugin-databases/plugin.json +237 -0
  132. package/packages/plugin-databases/rules/database-management-strategy.md +146 -0
  133. package/packages/plugin-databases/rules/database-pipeline.md +316 -0
  134. package/packages/plugin-databases/scripts/examples/bigquery-cost-analyze.sh +160 -0
  135. package/packages/plugin-databases/scripts/examples/cosmosdb-ru-optimize.sh +163 -0
  136. package/packages/plugin-databases/scripts/examples/mongodb-shard-check.sh +120 -0
  137. package/packages/plugin-databases/scripts/examples/postgres-index-analyze.sh +95 -0
  138. package/packages/plugin-databases/scripts/examples/redis-cache-stats.sh +121 -0
  139. package/packages/plugin-devops/README.md +367 -0
  140. package/packages/plugin-devops/agents/README.md +52 -0
  141. package/packages/plugin-devops/agents/azure-devops-specialist.md +308 -0
  142. package/packages/plugin-devops/agents/docker-containerization-expert.md +298 -0
  143. package/packages/plugin-devops/agents/github-operations-specialist.md +335 -0
  144. package/packages/plugin-devops/agents/mcp-context-manager.md +319 -0
  145. package/packages/plugin-devops/agents/observability-engineer.md +574 -0
  146. package/packages/plugin-devops/agents/ssh-operations-expert.md +1093 -0
  147. package/packages/plugin-devops/agents/traefik-proxy-expert.md +444 -0
  148. package/packages/plugin-devops/commands/ci-pipeline-create.md +581 -0
  149. package/packages/plugin-devops/commands/docker-optimize.md +493 -0
  150. package/packages/plugin-devops/commands/workflow-create.md +42 -0
  151. package/packages/plugin-devops/hooks/pre-docker-build.js +472 -0
  152. package/packages/plugin-devops/package.json +61 -0
  153. package/packages/plugin-devops/plugin.json +302 -0
  154. package/packages/plugin-devops/rules/ci-cd-kubernetes-strategy.md +25 -0
  155. package/packages/plugin-devops/rules/devops-troubleshooting-playbook.md +450 -0
  156. package/packages/plugin-devops/rules/docker-first-development.md +404 -0
  157. package/packages/plugin-devops/rules/github-operations.md +92 -0
  158. package/packages/plugin-devops/scripts/examples/docker-build-multistage.sh +43 -0
  159. package/packages/plugin-devops/scripts/examples/docker-compose-validate.sh +74 -0
  160. package/packages/plugin-devops/scripts/examples/github-workflow-validate.sh +48 -0
  161. package/packages/plugin-devops/scripts/examples/prometheus-health-check.sh +58 -0
  162. package/packages/plugin-devops/scripts/examples/ssh-key-setup.sh +74 -0
  163. package/packages/plugin-frameworks/README.md +309 -0
  164. package/packages/plugin-frameworks/agents/README.md +64 -0
  165. package/packages/plugin-frameworks/agents/e2e-test-engineer.md +579 -0
  166. package/packages/plugin-frameworks/agents/nats-messaging-expert.md +254 -0
  167. package/packages/plugin-frameworks/agents/react-frontend-engineer.md +393 -0
  168. package/packages/plugin-frameworks/agents/react-ui-expert.md +226 -0
  169. package/packages/plugin-frameworks/agents/tailwindcss-expert.md +1021 -0
  170. package/packages/plugin-frameworks/agents/ux-design-expert.md +244 -0
  171. package/packages/plugin-frameworks/commands/app-scaffold.md +50 -0
  172. package/packages/plugin-frameworks/commands/nextjs-optimize.md +692 -0
  173. package/packages/plugin-frameworks/commands/react-optimize.md +583 -0
  174. package/packages/plugin-frameworks/commands/tailwind-system.md +64 -0
  175. package/packages/plugin-frameworks/package.json +59 -0
  176. package/packages/plugin-frameworks/plugin.json +224 -0
  177. package/packages/plugin-frameworks/rules/performance-guidelines.md +403 -0
  178. package/packages/plugin-frameworks/rules/ui-development-standards.md +281 -0
  179. package/packages/plugin-frameworks/rules/ui-framework-rules.md +151 -0
  180. package/packages/plugin-frameworks/scripts/examples/react-component-perf.sh +34 -0
  181. package/packages/plugin-frameworks/scripts/examples/tailwind-optimize.sh +44 -0
  182. package/packages/plugin-frameworks/scripts/examples/vue-composition-check.sh +41 -0
  183. package/packages/plugin-languages/README.md +333 -0
  184. package/packages/plugin-languages/agents/README.md +50 -0
  185. package/packages/plugin-languages/agents/bash-scripting-expert.md +541 -0
  186. package/packages/plugin-languages/agents/javascript-frontend-engineer.md +197 -0
  187. package/packages/plugin-languages/agents/nodejs-backend-engineer.md +226 -0
  188. package/packages/plugin-languages/agents/python-backend-engineer.md +214 -0
  189. package/packages/plugin-languages/agents/python-backend-expert.md +289 -0
  190. package/packages/plugin-languages/commands/javascript-optimize.md +636 -0
  191. package/packages/plugin-languages/commands/nodejs-api-scaffold.md +341 -0
  192. package/packages/plugin-languages/commands/nodejs-optimize.md +689 -0
  193. package/packages/plugin-languages/commands/python-api-scaffold.md +261 -0
  194. package/packages/plugin-languages/commands/python-optimize.md +593 -0
  195. package/packages/plugin-languages/package.json +65 -0
  196. package/packages/plugin-languages/plugin.json +265 -0
  197. package/packages/plugin-languages/rules/code-quality-standards.md +496 -0
  198. package/packages/plugin-languages/rules/testing-standards.md +768 -0
  199. package/packages/plugin-languages/scripts/examples/bash-production-script.sh +520 -0
  200. package/packages/plugin-languages/scripts/examples/javascript-es6-patterns.js +291 -0
  201. package/packages/plugin-languages/scripts/examples/nodejs-async-iteration.js +360 -0
  202. package/packages/plugin-languages/scripts/examples/python-async-patterns.py +289 -0
  203. package/packages/plugin-languages/scripts/examples/typescript-patterns.ts +432 -0
  204. package/packages/plugin-ml/README.md +430 -0
  205. package/packages/plugin-ml/agents/automl-expert.md +326 -0
  206. package/packages/plugin-ml/agents/computer-vision-expert.md +550 -0
  207. package/packages/plugin-ml/agents/gradient-boosting-expert.md +455 -0
  208. package/packages/plugin-ml/agents/neural-network-architect.md +1228 -0
  209. package/packages/plugin-ml/agents/nlp-transformer-expert.md +584 -0
  210. package/packages/plugin-ml/agents/pytorch-expert.md +412 -0
  211. package/packages/plugin-ml/agents/reinforcement-learning-expert.md +2088 -0
  212. package/packages/plugin-ml/agents/scikit-learn-expert.md +228 -0
  213. package/packages/plugin-ml/agents/tensorflow-keras-expert.md +509 -0
  214. package/packages/plugin-ml/agents/time-series-expert.md +303 -0
  215. package/packages/plugin-ml/commands/ml-automl.md +572 -0
  216. package/packages/plugin-ml/commands/ml-train-optimize.md +657 -0
  217. package/packages/plugin-ml/package.json +52 -0
  218. package/packages/plugin-ml/plugin.json +338 -0
  219. package/packages/plugin-pm/README.md +368 -0
  220. package/packages/plugin-pm/claudeautopm-plugin-pm-2.0.0.tgz +0 -0
  221. package/packages/plugin-pm/commands/azure/COMMANDS.md +107 -0
  222. package/packages/plugin-pm/commands/azure/COMMAND_MAPPING.md +252 -0
  223. package/packages/plugin-pm/commands/azure/INTEGRATION_FIX.md +103 -0
  224. package/packages/plugin-pm/commands/azure/README.md +246 -0
  225. package/packages/plugin-pm/commands/azure/active-work.md +198 -0
  226. package/packages/plugin-pm/commands/azure/aliases.md +143 -0
  227. package/packages/plugin-pm/commands/azure/blocked-items.md +287 -0
  228. package/packages/plugin-pm/commands/azure/clean.md +93 -0
  229. package/packages/plugin-pm/commands/azure/docs-query.md +48 -0
  230. package/packages/plugin-pm/commands/azure/feature-decompose.md +380 -0
  231. package/packages/plugin-pm/commands/azure/feature-list.md +61 -0
  232. package/packages/plugin-pm/commands/azure/feature-new.md +115 -0
  233. package/packages/plugin-pm/commands/azure/feature-show.md +205 -0
  234. package/packages/plugin-pm/commands/azure/feature-start.md +130 -0
  235. package/packages/plugin-pm/commands/azure/fix-integration-example.md +93 -0
  236. package/packages/plugin-pm/commands/azure/help.md +150 -0
  237. package/packages/plugin-pm/commands/azure/import-us.md +269 -0
  238. package/packages/plugin-pm/commands/azure/init.md +211 -0
  239. package/packages/plugin-pm/commands/azure/next-task.md +262 -0
  240. package/packages/plugin-pm/commands/azure/search.md +160 -0
  241. package/packages/plugin-pm/commands/azure/sprint-status.md +235 -0
  242. package/packages/plugin-pm/commands/azure/standup.md +260 -0
  243. package/packages/plugin-pm/commands/azure/sync-all.md +99 -0
  244. package/packages/plugin-pm/commands/azure/task-analyze.md +186 -0
  245. package/packages/plugin-pm/commands/azure/task-close.md +329 -0
  246. package/packages/plugin-pm/commands/azure/task-edit.md +145 -0
  247. package/packages/plugin-pm/commands/azure/task-list.md +263 -0
  248. package/packages/plugin-pm/commands/azure/task-new.md +84 -0
  249. package/packages/plugin-pm/commands/azure/task-reopen.md +79 -0
  250. package/packages/plugin-pm/commands/azure/task-show.md +126 -0
  251. package/packages/plugin-pm/commands/azure/task-start.md +301 -0
  252. package/packages/plugin-pm/commands/azure/task-status.md +65 -0
  253. package/packages/plugin-pm/commands/azure/task-sync.md +67 -0
  254. package/packages/plugin-pm/commands/azure/us-edit.md +164 -0
  255. package/packages/plugin-pm/commands/azure/us-list.md +202 -0
  256. package/packages/plugin-pm/commands/azure/us-new.md +265 -0
  257. package/packages/plugin-pm/commands/azure/us-parse.md +253 -0
  258. package/packages/plugin-pm/commands/azure/us-show.md +188 -0
  259. package/packages/plugin-pm/commands/azure/us-status.md +320 -0
  260. package/packages/plugin-pm/commands/azure/validate.md +86 -0
  261. package/packages/plugin-pm/commands/azure/work-item-sync.md +47 -0
  262. package/packages/plugin-pm/commands/blocked.md +28 -0
  263. package/packages/plugin-pm/commands/clean.md +119 -0
  264. package/packages/plugin-pm/commands/context-create.md +136 -0
  265. package/packages/plugin-pm/commands/context-prime.md +170 -0
  266. package/packages/plugin-pm/commands/context-update.md +292 -0
  267. package/packages/plugin-pm/commands/context.md +28 -0
  268. package/packages/plugin-pm/commands/epic-close.md +86 -0
  269. package/packages/plugin-pm/commands/epic-decompose.md +370 -0
  270. package/packages/plugin-pm/commands/epic-edit.md +83 -0
  271. package/packages/plugin-pm/commands/epic-list.md +30 -0
  272. package/packages/plugin-pm/commands/epic-merge.md +222 -0
  273. package/packages/plugin-pm/commands/epic-oneshot.md +119 -0
  274. package/packages/plugin-pm/commands/epic-refresh.md +119 -0
  275. package/packages/plugin-pm/commands/epic-show.md +28 -0
  276. package/packages/plugin-pm/commands/epic-split.md +120 -0
  277. package/packages/plugin-pm/commands/epic-start.md +195 -0
  278. package/packages/plugin-pm/commands/epic-status.md +28 -0
  279. package/packages/plugin-pm/commands/epic-sync-modular.md +338 -0
  280. package/packages/plugin-pm/commands/epic-sync-original.md +473 -0
  281. package/packages/plugin-pm/commands/epic-sync.md +486 -0
  282. package/packages/plugin-pm/commands/github/workflow-create.md +42 -0
  283. package/packages/plugin-pm/commands/help.md +28 -0
  284. package/packages/plugin-pm/commands/import.md +115 -0
  285. package/packages/plugin-pm/commands/in-progress.md +28 -0
  286. package/packages/plugin-pm/commands/init.md +28 -0
  287. package/packages/plugin-pm/commands/issue-analyze.md +202 -0
  288. package/packages/plugin-pm/commands/issue-close.md +119 -0
  289. package/packages/plugin-pm/commands/issue-edit.md +93 -0
  290. package/packages/plugin-pm/commands/issue-reopen.md +87 -0
  291. package/packages/plugin-pm/commands/issue-show.md +41 -0
  292. package/packages/plugin-pm/commands/issue-start.md +234 -0
  293. package/packages/plugin-pm/commands/issue-status.md +95 -0
  294. package/packages/plugin-pm/commands/issue-sync.md +411 -0
  295. package/packages/plugin-pm/commands/next.md +28 -0
  296. package/packages/plugin-pm/commands/prd-edit.md +82 -0
  297. package/packages/plugin-pm/commands/prd-list.md +28 -0
  298. package/packages/plugin-pm/commands/prd-new.md +55 -0
  299. package/packages/plugin-pm/commands/prd-parse.md +42 -0
  300. package/packages/plugin-pm/commands/prd-status.md +28 -0
  301. package/packages/plugin-pm/commands/search.md +28 -0
  302. package/packages/plugin-pm/commands/standup.md +28 -0
  303. package/packages/plugin-pm/commands/status.md +28 -0
  304. package/packages/plugin-pm/commands/sync.md +99 -0
  305. package/packages/plugin-pm/commands/test-reference-update.md +151 -0
  306. package/packages/plugin-pm/commands/validate.md +28 -0
  307. package/packages/plugin-pm/commands/what-next.md +28 -0
  308. package/packages/plugin-pm/package.json +57 -0
  309. package/packages/plugin-pm/plugin.json +503 -0
  310. package/packages/plugin-pm/scripts/pm/analytics.js +425 -0
  311. package/packages/plugin-pm/scripts/pm/blocked.js +164 -0
  312. package/packages/plugin-pm/scripts/pm/blocked.sh +78 -0
  313. package/packages/plugin-pm/scripts/pm/clean.js +464 -0
  314. package/packages/plugin-pm/scripts/pm/context-create.js +216 -0
  315. package/packages/plugin-pm/scripts/pm/context-prime.js +335 -0
  316. package/packages/plugin-pm/scripts/pm/context-update.js +344 -0
  317. package/packages/plugin-pm/scripts/pm/context.js +338 -0
  318. package/packages/plugin-pm/scripts/pm/epic-close.js +347 -0
  319. package/packages/plugin-pm/scripts/pm/epic-edit.js +382 -0
  320. package/packages/plugin-pm/scripts/pm/epic-list.js +273 -0
  321. package/packages/plugin-pm/scripts/pm/epic-list.sh +109 -0
  322. package/packages/plugin-pm/scripts/pm/epic-show.js +291 -0
  323. package/packages/plugin-pm/scripts/pm/epic-show.sh +105 -0
  324. package/packages/plugin-pm/scripts/pm/epic-split.js +522 -0
  325. package/packages/plugin-pm/scripts/pm/epic-start/epic-start.js +183 -0
  326. package/packages/plugin-pm/scripts/pm/epic-start/epic-start.sh +94 -0
  327. package/packages/plugin-pm/scripts/pm/epic-status.js +291 -0
  328. package/packages/plugin-pm/scripts/pm/epic-status.sh +104 -0
  329. package/packages/plugin-pm/scripts/pm/epic-sync/README.md +208 -0
  330. package/packages/plugin-pm/scripts/pm/epic-sync/create-epic-issue.sh +77 -0
  331. package/packages/plugin-pm/scripts/pm/epic-sync/create-task-issues.sh +86 -0
  332. package/packages/plugin-pm/scripts/pm/epic-sync/update-epic-file.sh +79 -0
  333. package/packages/plugin-pm/scripts/pm/epic-sync/update-references.sh +89 -0
  334. package/packages/plugin-pm/scripts/pm/epic-sync.sh +137 -0
  335. package/packages/plugin-pm/scripts/pm/help.js +92 -0
  336. package/packages/plugin-pm/scripts/pm/help.sh +90 -0
  337. package/packages/plugin-pm/scripts/pm/in-progress.js +178 -0
  338. package/packages/plugin-pm/scripts/pm/in-progress.sh +93 -0
  339. package/packages/plugin-pm/scripts/pm/init.js +321 -0
  340. package/packages/plugin-pm/scripts/pm/init.sh +178 -0
  341. package/packages/plugin-pm/scripts/pm/issue-close.js +232 -0
  342. package/packages/plugin-pm/scripts/pm/issue-edit.js +310 -0
  343. package/packages/plugin-pm/scripts/pm/issue-show.js +272 -0
  344. package/packages/plugin-pm/scripts/pm/issue-start.js +181 -0
  345. package/packages/plugin-pm/scripts/pm/issue-sync/format-comment.sh +468 -0
  346. package/packages/plugin-pm/scripts/pm/issue-sync/gather-updates.sh +460 -0
  347. package/packages/plugin-pm/scripts/pm/issue-sync/post-comment.sh +330 -0
  348. package/packages/plugin-pm/scripts/pm/issue-sync/preflight-validation.sh +348 -0
  349. package/packages/plugin-pm/scripts/pm/issue-sync/update-frontmatter.sh +387 -0
  350. package/packages/plugin-pm/scripts/pm/lib/README.md +85 -0
  351. package/packages/plugin-pm/scripts/pm/lib/epic-discovery.js +119 -0
  352. package/packages/plugin-pm/scripts/pm/lib/logger.js +78 -0
  353. package/packages/plugin-pm/scripts/pm/next.js +189 -0
  354. package/packages/plugin-pm/scripts/pm/next.sh +72 -0
  355. package/packages/plugin-pm/scripts/pm/optimize.js +407 -0
  356. package/packages/plugin-pm/scripts/pm/pr-create.js +337 -0
  357. package/packages/plugin-pm/scripts/pm/pr-list.js +257 -0
  358. package/packages/plugin-pm/scripts/pm/prd-list.js +242 -0
  359. package/packages/plugin-pm/scripts/pm/prd-list.sh +103 -0
  360. package/packages/plugin-pm/scripts/pm/prd-new.js +684 -0
  361. package/packages/plugin-pm/scripts/pm/prd-parse.js +547 -0
  362. package/packages/plugin-pm/scripts/pm/prd-status.js +152 -0
  363. package/packages/plugin-pm/scripts/pm/prd-status.sh +63 -0
  364. package/packages/plugin-pm/scripts/pm/release.js +460 -0
  365. package/packages/plugin-pm/scripts/pm/search.js +192 -0
  366. package/packages/plugin-pm/scripts/pm/search.sh +89 -0
  367. package/packages/plugin-pm/scripts/pm/standup.js +362 -0
  368. package/packages/plugin-pm/scripts/pm/standup.sh +95 -0
  369. package/packages/plugin-pm/scripts/pm/status.js +148 -0
  370. package/packages/plugin-pm/scripts/pm/status.sh +59 -0
  371. package/packages/plugin-pm/scripts/pm/sync-batch.js +337 -0
  372. package/packages/plugin-pm/scripts/pm/sync.js +343 -0
  373. package/packages/plugin-pm/scripts/pm/template-list.js +141 -0
  374. package/packages/plugin-pm/scripts/pm/template-new.js +366 -0
  375. package/packages/plugin-pm/scripts/pm/validate.js +274 -0
  376. package/packages/plugin-pm/scripts/pm/validate.sh +106 -0
  377. package/packages/plugin-pm/scripts/pm/what-next.js +660 -0
  378. package/packages/plugin-testing/README.md +401 -0
  379. package/packages/plugin-testing/agents/frontend-testing-engineer.md +768 -0
  380. package/packages/plugin-testing/commands/jest-optimize.md +800 -0
  381. package/packages/plugin-testing/commands/playwright-optimize.md +887 -0
  382. package/packages/plugin-testing/commands/test-coverage.md +512 -0
  383. package/packages/plugin-testing/commands/test-performance.md +1041 -0
  384. package/packages/plugin-testing/commands/test-setup.md +414 -0
  385. package/packages/plugin-testing/package.json +40 -0
  386. package/packages/plugin-testing/plugin.json +197 -0
  387. package/packages/plugin-testing/rules/test-coverage-requirements.md +581 -0
  388. package/packages/plugin-testing/rules/testing-standards.md +529 -0
  389. package/packages/plugin-testing/scripts/examples/react-testing-example.test.jsx +460 -0
  390. package/packages/plugin-testing/scripts/examples/vitest-config-example.js +352 -0
  391. package/packages/plugin-testing/scripts/examples/vue-testing-example.test.js +586 -0
@@ -0,0 +1,529 @@
1
+ # Testing Standards Rule
2
+
3
+ **Rule Name**: testing-standards
4
+ **Priority**: High
5
+ **Applies To**: commands, agents
6
+ **Enforces On**: frontend-testing-engineer
7
+
8
+ ## Description
9
+
10
+ Comprehensive testing standards with Context7-verified best practices for unit, integration, and E2E tests. This rule ensures all tests follow industry-standard patterns from official testing framework documentation.
11
+
12
+ ## Context7 Documentation Sources
13
+
14
+ **MANDATORY:** All testing implementations must reference these Context7 sources:
15
+
16
+ - `/vitest-dev/vitest` - Vitest testing framework patterns
17
+ - `/testing-library/testing-library-docs` - Testing Library query patterns
18
+ - `/testing-library/react-testing-library` - React Testing Library best practices
19
+ - `/jestjs/jest` - Jest testing framework (when applicable)
20
+
21
+ ## Core Testing Principles
22
+
23
+ ### 1. Test-Driven Development (TDD)
24
+
25
+ **MANDATORY for all new features:**
26
+
27
+ ```
28
+ Red-Green-Refactor Cycle:
29
+ ┌──────────────────────────────────────┐
30
+ │ 1. RED: Write failing test first │
31
+ │ ↓ │
32
+ │ 2. GREEN: Write minimum code to pass│
33
+ │ ↓ │
34
+ │ 3. REFACTOR: Improve code quality │
35
+ │ ↓ │
36
+ │ 4. REPEAT for next feature │
37
+ └──────────────────────────────────────┘
38
+ ```
39
+
40
+ **Example:**
41
+ ```javascript
42
+ // ✅ CORRECT TDD Flow
43
+ // Step 1: Write failing test FIRST
44
+ test('should calculate total price', () => {
45
+ expect(calculateTotal([10, 20, 30])).toBe(60);
46
+ });
47
+
48
+ // Step 2: Implement minimum code
49
+ function calculateTotal(prices) {
50
+ return prices.reduce((sum, price) => sum + price, 0);
51
+ }
52
+
53
+ // Step 3: Refactor if needed
54
+ function calculateTotal(prices) {
55
+ if (!Array.isArray(prices)) throw new Error('Invalid input');
56
+ return prices.reduce((sum, price) => sum + price, 0);
57
+ }
58
+ ```
59
+
60
+ ### 2. Query Priority (Testing Library Standard)
61
+
62
+ **MANDATORY:** Follow Testing Library's query priority hierarchy:
63
+
64
+ ```javascript
65
+ // Priority 1: Accessible to Everyone (BEST)
66
+ // ✅ Queries accessible to screen readers and users
67
+ screen.getByRole('button', { name: 'Submit' })
68
+ screen.getByLabelText('Email address')
69
+ screen.getByPlaceholderText('Enter your name')
70
+ screen.getByText('Welcome back!')
71
+ screen.getByDisplayValue('current value')
72
+
73
+ // Priority 2: Semantic Queries (GOOD)
74
+ // ✅ Queries that match HTML semantics
75
+ screen.getByAltText('Profile picture')
76
+ screen.getByTitle('Close dialog')
77
+
78
+ // Priority 3: Test IDs (ACCEPTABLE)
79
+ // ⚠️ Only when semantic queries don't work
80
+ screen.getByTestId('custom-element')
81
+
82
+ // Priority 4: CSS Selectors (AVOID)
83
+ // ❌ Tied to implementation, breaks easily
84
+ container.querySelector('.submit-button') // DON'T USE
85
+ container.querySelector('#email-input') // DON'T USE
86
+ ```
87
+
88
+ ### 3. Test Independence
89
+
90
+ **MANDATORY:** Each test must be completely independent:
91
+
92
+ ```javascript
93
+ // ❌ WRONG: Tests depend on each other
94
+ let user = null;
95
+
96
+ test('creates user', () => {
97
+ user = { id: 1, name: 'John' };
98
+ expect(user).toBeTruthy();
99
+ });
100
+
101
+ test('updates user', () => {
102
+ user.name = 'Jane'; // Depends on previous test
103
+ expect(user.name).toBe('Jane');
104
+ });
105
+
106
+ // ✅ CORRECT: Independent tests
107
+ describe('User operations', () => {
108
+ beforeEach(() => {
109
+ // Fresh state for each test
110
+ mockDatabase.reset();
111
+ });
112
+
113
+ test('creates user', () => {
114
+ const user = createUser({ name: 'John' });
115
+ expect(user).toEqual({ id: 1, name: 'John' });
116
+ });
117
+
118
+ test('updates user', () => {
119
+ const user = createUser({ name: 'John' });
120
+ const updated = updateUser(user.id, { name: 'Jane' });
121
+ expect(updated.name).toBe('Jane');
122
+ });
123
+ });
124
+ ```
125
+
126
+ ### 4. Async Testing Best Practices
127
+
128
+ **MANDATORY:** Use Testing Library's async utilities:
129
+
130
+ ```javascript
131
+ // ❌ WRONG: Manual delays
132
+ test('shows data after loading', async () => {
133
+ render(<DataDisplay />);
134
+ await new Promise(resolve => setTimeout(resolve, 1000));
135
+ expect(screen.getByText('Data loaded')).toBeInTheDocument();
136
+ });
137
+
138
+ // ✅ CORRECT: Async utilities with auto-retry
139
+ test('shows data after loading', async () => {
140
+ render(<DataDisplay />);
141
+
142
+ // Automatically waits and retries
143
+ expect(await screen.findByText('Data loaded')).toBeInTheDocument();
144
+ });
145
+
146
+ // ✅ CORRECT: waitFor for complex conditions
147
+ test('shows updated count', async () => {
148
+ render(<Counter />);
149
+
150
+ await userEvent.click(screen.getByRole('button', { name: 'Increment' }));
151
+
152
+ await waitFor(() => {
153
+ expect(screen.getByText('Count: 1')).toBeInTheDocument();
154
+ });
155
+ });
156
+ ```
157
+
158
+ ### 5. User-Centric Testing
159
+
160
+ **MANDATORY:** Test behavior, not implementation:
161
+
162
+ ```javascript
163
+ // ❌ WRONG: Testing implementation details
164
+ test('sets loading state to true', () => {
165
+ const { result } = renderHook(() => useData());
166
+ expect(result.current.loading).toBe(true); // Internal state
167
+ });
168
+
169
+ // ✅ CORRECT: Testing user-visible behavior
170
+ test('shows loading indicator while fetching', () => {
171
+ render(<DataComponent />);
172
+ expect(screen.getByText('Loading...')).toBeInTheDocument();
173
+ });
174
+
175
+ // ❌ WRONG: Accessing component internals
176
+ test('updates state on click', () => {
177
+ const wrapper = shallow(<Component />);
178
+ wrapper.find('button').simulate('click');
179
+ expect(wrapper.state('clicked')).toBe(true);
180
+ });
181
+
182
+ // ✅ CORRECT: Testing user interactions
183
+ test('shows success message after submit', async () => {
184
+ const user = userEvent.setup();
185
+ render(<Form />);
186
+
187
+ await user.click(screen.getByRole('button', { name: 'Submit' }));
188
+
189
+ expect(await screen.findByText('Success!')).toBeInTheDocument();
190
+ });
191
+ ```
192
+
193
+ ## Test Structure Standards
194
+
195
+ ### AAA Pattern (Arrange-Act-Assert)
196
+
197
+ **MANDATORY for all tests:**
198
+
199
+ ```javascript
200
+ test('user can log in with valid credentials', async () => {
201
+ // ARRANGE: Set up test data and environment
202
+ const user = userEvent.setup();
203
+ const credentials = { email: 'user@example.com', password: 'pass123' };
204
+ render(<LoginForm />);
205
+
206
+ // ACT: Perform the action being tested
207
+ await user.type(screen.getByLabelText('Email'), credentials.email);
208
+ await user.type(screen.getByLabelText('Password'), credentials.password);
209
+ await user.click(screen.getByRole('button', { name: 'Log in' }));
210
+
211
+ // ASSERT: Verify expected outcome
212
+ expect(await screen.findByText('Welcome!')).toBeInTheDocument();
213
+ });
214
+ ```
215
+
216
+ ### Descriptive Test Names
217
+
218
+ **MANDATORY:** Test names must describe behavior:
219
+
220
+ ```javascript
221
+ // ❌ WRONG: Vague test names
222
+ test('it works', () => { });
223
+ test('button', () => { });
224
+ test('user test', () => { });
225
+
226
+ // ✅ CORRECT: Descriptive behavior-focused names
227
+ test('should display error message when email is invalid', () => { });
228
+ test('should navigate to dashboard after successful login', () => { });
229
+ test('should disable submit button while form is submitting', () => { });
230
+
231
+ // ✅ CORRECT: Organized with describe blocks
232
+ describe('LoginForm', () => {
233
+ describe('when user provides valid credentials', () => {
234
+ test('should successfully log in', () => { });
235
+ test('should clear form fields', () => { });
236
+ test('should redirect to dashboard', () => { });
237
+ });
238
+
239
+ describe('when user provides invalid credentials', () => {
240
+ test('should display error message', () => { });
241
+ test('should keep user on login page', () => { });
242
+ test('should clear password field', () => { });
243
+ });
244
+ });
245
+ ```
246
+
247
+ ## Coverage Standards
248
+
249
+ ### Minimum Coverage Thresholds
250
+
251
+ **MANDATORY:** All new code must meet these thresholds:
252
+
253
+ ```javascript
254
+ // vitest.config.js
255
+ export default {
256
+ test: {
257
+ coverage: {
258
+ thresholds: {
259
+ lines: 80, // Minimum 80% line coverage
260
+ functions: 80, // Minimum 80% function coverage
261
+ branches: 75, // Minimum 75% branch coverage
262
+ statements: 80 // Minimum 80% statement coverage
263
+ }
264
+ }
265
+ }
266
+ };
267
+ ```
268
+
269
+ ### What to Exclude from Coverage
270
+
271
+ ```javascript
272
+ // ✅ CORRECT: Exclude non-testable code
273
+ coverage: {
274
+ exclude: [
275
+ 'node_modules/',
276
+ 'test/',
277
+ '**/*.config.js',
278
+ '**/*.spec.js',
279
+ '**/*.test.js',
280
+ 'src/main.js', // App entry point
281
+ 'src/index.js', // Entry point
282
+ 'src/**/*.d.ts', // Type definitions
283
+ 'src/constants.js', // Pure constants
284
+ 'src/types.js' // Type exports
285
+ ]
286
+ }
287
+ ```
288
+
289
+ ### Coverage Quality over Quantity
290
+
291
+ ```
292
+ Coverage Checklist:
293
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
294
+
295
+ ❌ 100% coverage with poor tests:
296
+ - Tests that only check code executes
297
+ - No assertions about correctness
298
+ - Testing implementation details
299
+ - Brittle tests that break easily
300
+
301
+ ✅ 80% coverage with quality tests:
302
+ - Tests verify correct behavior
303
+ - Tests check edge cases
304
+ - Tests use semantic queries
305
+ - Tests are maintainable
306
+ - Tests document expected behavior
307
+
308
+ 💡 Focus on test quality, not just coverage numbers!
309
+ ```
310
+
311
+ ## Mocking Standards
312
+
313
+ ### API Mocking (Recommended: MSW)
314
+
315
+ ```javascript
316
+ // ✅ CORRECT: Mock at network level with MSW
317
+ import { rest } from 'msw';
318
+ import { setupServer } from 'msw/node';
319
+
320
+ const server = setupServer(
321
+ rest.get('/api/user/:id', (req, res, ctx) => {
322
+ return res(ctx.json({ id: req.params.id, name: 'Test User' }));
323
+ })
324
+ );
325
+
326
+ beforeAll(() => server.listen());
327
+ afterEach(() => server.resetHandlers());
328
+ afterAll(() => server.close());
329
+
330
+ test('fetches user data', async () => {
331
+ render(<UserProfile userId={1} />);
332
+
333
+ expect(await screen.findByText('Test User')).toBeInTheDocument();
334
+ });
335
+ ```
336
+
337
+ ### Module Mocking (When Necessary)
338
+
339
+ ```javascript
340
+ // ✅ CORRECT: Mock external dependencies
341
+ import { vi } from 'vitest';
342
+
343
+ vi.mock('../services/analytics', () => ({
344
+ trackEvent: vi.fn(),
345
+ trackPageView: vi.fn()
346
+ }));
347
+
348
+ test('tracks button click', async () => {
349
+ const { trackEvent } = await import('../services/analytics');
350
+ render(<Button />);
351
+
352
+ await userEvent.click(screen.getByRole('button'));
353
+
354
+ expect(trackEvent).toHaveBeenCalledWith('button_click');
355
+ });
356
+ ```
357
+
358
+ ## Accessibility Testing
359
+
360
+ **MANDATORY for UI components:**
361
+
362
+ ```javascript
363
+ import { axe, toHaveNoViolations } from 'jest-axe';
364
+ expect.extend(toHaveNoViolations);
365
+
366
+ test('should have no accessibility violations', async () => {
367
+ const { container } = render(<MyComponent />);
368
+ const results = await axe(container);
369
+ expect(results).toHaveNoViolations();
370
+ });
371
+
372
+ // ✅ Test keyboard navigation
373
+ test('should be keyboard navigable', async () => {
374
+ const user = userEvent.setup();
375
+ render(<Form />);
376
+
377
+ // Tab through form fields
378
+ await user.tab();
379
+ expect(screen.getByLabelText('Name')).toHaveFocus();
380
+
381
+ await user.tab();
382
+ expect(screen.getByLabelText('Email')).toHaveFocus();
383
+ });
384
+
385
+ // ✅ Test screen reader text
386
+ test('should have descriptive aria-label', () => {
387
+ render(<IconButton icon="close" />);
388
+
389
+ expect(screen.getByRole('button', { name: 'Close dialog' }))
390
+ .toBeInTheDocument();
391
+ });
392
+ ```
393
+
394
+ ## Performance Testing
395
+
396
+ ```javascript
397
+ // ✅ Test component rendering performance
398
+ test('should render large list efficiently', () => {
399
+ const items = Array.from({ length: 10000 }, (_, i) => ({ id: i }));
400
+
401
+ const start = performance.now();
402
+ render(<VirtualizedList items={items} />);
403
+ const duration = performance.now() - start;
404
+
405
+ expect(duration).toBeLessThan(100); // Should render in < 100ms
406
+ });
407
+
408
+ // ✅ Use Vitest's benchmark feature
409
+ import { bench, describe } from 'vitest';
410
+
411
+ describe('Array operations', () => {
412
+ bench('Array.push', () => {
413
+ const arr = [];
414
+ for (let i = 0; i < 1000; i++) {
415
+ arr.push(i);
416
+ }
417
+ });
418
+
419
+ bench('Array spread', () => {
420
+ let arr = [];
421
+ for (let i = 0; i < 1000; i++) {
422
+ arr = [...arr, i];
423
+ }
424
+ });
425
+ });
426
+ ```
427
+
428
+ ## Anti-Patterns to Avoid
429
+
430
+ ### ❌ Don't Test Third-Party Libraries
431
+
432
+ ```javascript
433
+ // ❌ WRONG: Testing React itself
434
+ test('useState works', () => {
435
+ const { result } = renderHook(() => useState(0));
436
+ expect(result.current[0]).toBe(0); // Don't test React
437
+ });
438
+
439
+ // ✅ CORRECT: Test your component behavior
440
+ test('counter increments when button clicked', async () => {
441
+ render(<Counter />);
442
+ await userEvent.click(screen.getByRole('button', { name: 'Increment' }));
443
+ expect(screen.getByText('Count: 1')).toBeInTheDocument();
444
+ });
445
+ ```
446
+
447
+ ### ❌ Don't Use Snapshot Testing for Everything
448
+
449
+ ```javascript
450
+ // ❌ WRONG: Large snapshots that break often
451
+ test('renders correctly', () => {
452
+ const { container } = render(<ComplexComponent />);
453
+ expect(container).toMatchSnapshot(); // 500 line snapshot
454
+ });
455
+
456
+ // ✅ CORRECT: Targeted snapshots for specific elements
457
+ test('renders error message correctly', () => {
458
+ render(<Form error="Invalid input" />);
459
+ const errorEl = screen.getByRole('alert');
460
+ expect(errorEl).toMatchInlineSnapshot(`
461
+ <div role="alert" class="error">
462
+ Invalid input
463
+ </div>
464
+ `);
465
+ });
466
+ ```
467
+
468
+ ### ❌ Don't Rely on Test Order
469
+
470
+ ```javascript
471
+ // ❌ WRONG: Tests depend on execution order
472
+ test.only('test 1', () => { sharedState = 'value'; });
473
+ test('test 2', () => { expect(sharedState).toBe('value'); });
474
+
475
+ // ✅ CORRECT: Tests are independent
476
+ beforeEach(() => {
477
+ sharedState = getInitialState();
478
+ });
479
+
480
+ test('test 1', () => { /* uses sharedState */ });
481
+ test('test 2', () => { /* uses sharedState */ });
482
+ ```
483
+
484
+ ## Enforcement Checklist
485
+
486
+ Before committing test code, verify:
487
+
488
+ - [ ] All new code has corresponding tests
489
+ - [ ] Tests follow AAA pattern (Arrange-Act-Assert)
490
+ - [ ] Query priority is respected (getByRole preferred)
491
+ - [ ] No manual delays (use waitFor, findBy)
492
+ - [ ] Tests are independent (beforeEach used properly)
493
+ - [ ] Test names are descriptive
494
+ - [ ] Coverage thresholds are met (80%+)
495
+ - [ ] Accessibility is tested for UI components
496
+ - [ ] No testing of third-party libraries
497
+ - [ ] Mocks are cleaned up properly
498
+ - [ ] CI/CD integration is configured
499
+
500
+ ## Validation
501
+
502
+ Run these checks before merge:
503
+
504
+ ```bash
505
+ # Run all tests
506
+ npm test
507
+
508
+ # Check coverage
509
+ npm run test:coverage
510
+
511
+ # Run accessibility tests
512
+ npm run test:a11y
513
+
514
+ # Run in CI mode
515
+ npm run test:ci
516
+ ```
517
+
518
+ ## Related Rules
519
+
520
+ - `test-coverage-requirements` - Coverage threshold enforcement
521
+ - `accessibility-standards` - A11y testing requirements
522
+ - `code-quality-standards` - General code quality rules
523
+
524
+ ## Support
525
+
526
+ For questions about testing standards:
527
+ - Review Context7 documentation for testing libraries
528
+ - Consult frontend-testing-engineer agent
529
+ - Review example tests in `test/examples/`