claude-autopm 2.8.2 → 2.8.3

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 (390) hide show
  1. package/README.md +399 -637
  2. package/package.json +2 -1
  3. package/packages/plugin-ai/LICENSE +21 -0
  4. package/packages/plugin-ai/README.md +316 -0
  5. package/packages/plugin-ai/agents/anthropic-claude-expert.md +579 -0
  6. package/packages/plugin-ai/agents/azure-openai-expert.md +1411 -0
  7. package/packages/plugin-ai/agents/gemini-api-expert.md +880 -0
  8. package/packages/plugin-ai/agents/google-a2a-expert.md +1445 -0
  9. package/packages/plugin-ai/agents/huggingface-expert.md +2131 -0
  10. package/packages/plugin-ai/agents/langchain-expert.md +1427 -0
  11. package/packages/plugin-ai/agents/langgraph-workflow-expert.md +520 -0
  12. package/packages/plugin-ai/agents/openai-python-expert.md +1087 -0
  13. package/packages/plugin-ai/commands/a2a-setup.md +886 -0
  14. package/packages/plugin-ai/commands/ai-model-deployment.md +481 -0
  15. package/packages/plugin-ai/commands/anthropic-optimize.md +793 -0
  16. package/packages/plugin-ai/commands/huggingface-deploy.md +789 -0
  17. package/packages/plugin-ai/commands/langchain-optimize.md +807 -0
  18. package/packages/plugin-ai/commands/llm-optimize.md +348 -0
  19. package/packages/plugin-ai/commands/openai-optimize.md +863 -0
  20. package/packages/plugin-ai/commands/rag-optimize.md +841 -0
  21. package/packages/plugin-ai/commands/rag-setup-scaffold.md +382 -0
  22. package/packages/plugin-ai/package.json +66 -0
  23. package/packages/plugin-ai/plugin.json +519 -0
  24. package/packages/plugin-ai/rules/ai-model-standards.md +449 -0
  25. package/packages/plugin-ai/rules/prompt-engineering-standards.md +509 -0
  26. package/packages/plugin-ai/scripts/examples/huggingface-inference-example.py +145 -0
  27. package/packages/plugin-ai/scripts/examples/langchain-rag-example.py +366 -0
  28. package/packages/plugin-ai/scripts/examples/mlflow-tracking-example.py +224 -0
  29. package/packages/plugin-ai/scripts/examples/openai-chat-example.py +425 -0
  30. package/packages/plugin-cloud/README.md +268 -0
  31. package/packages/plugin-cloud/agents/README.md +55 -0
  32. package/packages/plugin-cloud/agents/aws-cloud-architect.md +521 -0
  33. package/packages/plugin-cloud/agents/azure-cloud-architect.md +436 -0
  34. package/packages/plugin-cloud/agents/gcp-cloud-architect.md +385 -0
  35. package/packages/plugin-cloud/agents/gcp-cloud-functions-engineer.md +306 -0
  36. package/packages/plugin-cloud/agents/gemini-api-expert.md +880 -0
  37. package/packages/plugin-cloud/agents/kubernetes-orchestrator.md +566 -0
  38. package/packages/plugin-cloud/agents/openai-python-expert.md +1087 -0
  39. package/packages/plugin-cloud/agents/terraform-infrastructure-expert.md +454 -0
  40. package/packages/plugin-cloud/commands/cloud-cost-optimize.md +243 -0
  41. package/packages/plugin-cloud/commands/cloud-validate.md +196 -0
  42. package/packages/plugin-cloud/commands/infra-deploy.md +38 -0
  43. package/packages/plugin-cloud/commands/k8s-deploy.md +37 -0
  44. package/packages/plugin-cloud/commands/ssh-security.md +65 -0
  45. package/packages/plugin-cloud/commands/traefik-setup.md +65 -0
  46. package/packages/plugin-cloud/hooks/pre-cloud-deploy.js +456 -0
  47. package/packages/plugin-cloud/package.json +64 -0
  48. package/packages/plugin-cloud/plugin.json +338 -0
  49. package/packages/plugin-cloud/rules/cloud-security-compliance.md +313 -0
  50. package/packages/plugin-cloud/rules/infrastructure-pipeline.md +128 -0
  51. package/packages/plugin-cloud/scripts/examples/aws-validate.sh +30 -0
  52. package/packages/plugin-cloud/scripts/examples/azure-setup.sh +33 -0
  53. package/packages/plugin-cloud/scripts/examples/gcp-setup.sh +39 -0
  54. package/packages/plugin-cloud/scripts/examples/k8s-validate.sh +40 -0
  55. package/packages/plugin-cloud/scripts/examples/terraform-init.sh +26 -0
  56. package/packages/plugin-core/README.md +274 -0
  57. package/packages/plugin-core/agents/core/agent-manager.md +296 -0
  58. package/packages/plugin-core/agents/core/code-analyzer.md +131 -0
  59. package/packages/plugin-core/agents/core/file-analyzer.md +162 -0
  60. package/packages/plugin-core/agents/core/test-runner.md +200 -0
  61. package/packages/plugin-core/commands/code-rabbit.md +128 -0
  62. package/packages/plugin-core/commands/prompt.md +9 -0
  63. package/packages/plugin-core/commands/re-init.md +9 -0
  64. package/packages/plugin-core/hooks/context7-reminder.md +29 -0
  65. package/packages/plugin-core/hooks/enforce-agents.js +125 -0
  66. package/packages/plugin-core/hooks/enforce-agents.sh +35 -0
  67. package/packages/plugin-core/hooks/pre-agent-context7.js +224 -0
  68. package/packages/plugin-core/hooks/pre-command-context7.js +229 -0
  69. package/packages/plugin-core/hooks/strict-enforce-agents.sh +39 -0
  70. package/packages/plugin-core/hooks/test-hook.sh +21 -0
  71. package/packages/plugin-core/hooks/unified-context7-enforcement.sh +38 -0
  72. package/packages/plugin-core/package.json +45 -0
  73. package/packages/plugin-core/plugin.json +387 -0
  74. package/packages/plugin-core/rules/agent-coordination.md +549 -0
  75. package/packages/plugin-core/rules/agent-mandatory.md +170 -0
  76. package/packages/plugin-core/rules/ai-integration-patterns.md +219 -0
  77. package/packages/plugin-core/rules/command-pipelines.md +208 -0
  78. package/packages/plugin-core/rules/context-optimization.md +176 -0
  79. package/packages/plugin-core/rules/context7-enforcement.md +327 -0
  80. package/packages/plugin-core/rules/datetime.md +122 -0
  81. package/packages/plugin-core/rules/definition-of-done.md +272 -0
  82. package/packages/plugin-core/rules/development-environments.md +19 -0
  83. package/packages/plugin-core/rules/development-workflow.md +198 -0
  84. package/packages/plugin-core/rules/framework-path-rules.md +180 -0
  85. package/packages/plugin-core/rules/frontmatter-operations.md +64 -0
  86. package/packages/plugin-core/rules/git-strategy.md +237 -0
  87. package/packages/plugin-core/rules/golden-rules.md +181 -0
  88. package/packages/plugin-core/rules/naming-conventions.md +111 -0
  89. package/packages/plugin-core/rules/no-pr-workflow.md +183 -0
  90. package/packages/plugin-core/rules/performance-guidelines.md +403 -0
  91. package/packages/plugin-core/rules/pipeline-mandatory.md +109 -0
  92. package/packages/plugin-core/rules/security-checklist.md +318 -0
  93. package/packages/plugin-core/rules/standard-patterns.md +197 -0
  94. package/packages/plugin-core/rules/strip-frontmatter.md +85 -0
  95. package/packages/plugin-core/rules/tdd.enforcement.md +103 -0
  96. package/packages/plugin-core/rules/use-ast-grep.md +113 -0
  97. package/packages/plugin-core/scripts/lib/datetime-utils.sh +254 -0
  98. package/packages/plugin-core/scripts/lib/frontmatter-utils.sh +294 -0
  99. package/packages/plugin-core/scripts/lib/github-utils.sh +221 -0
  100. package/packages/plugin-core/scripts/lib/logging-utils.sh +199 -0
  101. package/packages/plugin-core/scripts/lib/validation-utils.sh +339 -0
  102. package/packages/plugin-core/scripts/mcp/add.sh +7 -0
  103. package/packages/plugin-core/scripts/mcp/disable.sh +12 -0
  104. package/packages/plugin-core/scripts/mcp/enable.sh +12 -0
  105. package/packages/plugin-core/scripts/mcp/list.sh +7 -0
  106. package/packages/plugin-core/scripts/mcp/sync.sh +8 -0
  107. package/packages/plugin-data/README.md +315 -0
  108. package/packages/plugin-data/agents/airflow-orchestration-expert.md +158 -0
  109. package/packages/plugin-data/agents/kedro-pipeline-expert.md +304 -0
  110. package/packages/plugin-data/agents/langgraph-workflow-expert.md +530 -0
  111. package/packages/plugin-data/commands/airflow-dag-scaffold.md +413 -0
  112. package/packages/plugin-data/commands/kafka-pipeline-scaffold.md +503 -0
  113. package/packages/plugin-data/package.json +66 -0
  114. package/packages/plugin-data/plugin.json +294 -0
  115. package/packages/plugin-data/rules/data-quality-standards.md +373 -0
  116. package/packages/plugin-data/rules/etl-pipeline-standards.md +255 -0
  117. package/packages/plugin-data/scripts/examples/airflow-dag-example.py +245 -0
  118. package/packages/plugin-data/scripts/examples/dbt-transform-example.sql +238 -0
  119. package/packages/plugin-data/scripts/examples/kafka-streaming-example.py +257 -0
  120. package/packages/plugin-data/scripts/examples/pandas-etl-example.py +332 -0
  121. package/packages/plugin-databases/README.md +330 -0
  122. package/packages/plugin-databases/agents/README.md +50 -0
  123. package/packages/plugin-databases/agents/bigquery-expert.md +401 -0
  124. package/packages/plugin-databases/agents/cosmosdb-expert.md +375 -0
  125. package/packages/plugin-databases/agents/mongodb-expert.md +407 -0
  126. package/packages/plugin-databases/agents/postgresql-expert.md +329 -0
  127. package/packages/plugin-databases/agents/redis-expert.md +74 -0
  128. package/packages/plugin-databases/commands/db-optimize.md +612 -0
  129. package/packages/plugin-databases/package.json +60 -0
  130. package/packages/plugin-databases/plugin.json +237 -0
  131. package/packages/plugin-databases/rules/database-management-strategy.md +146 -0
  132. package/packages/plugin-databases/rules/database-pipeline.md +316 -0
  133. package/packages/plugin-databases/scripts/examples/bigquery-cost-analyze.sh +160 -0
  134. package/packages/plugin-databases/scripts/examples/cosmosdb-ru-optimize.sh +163 -0
  135. package/packages/plugin-databases/scripts/examples/mongodb-shard-check.sh +120 -0
  136. package/packages/plugin-databases/scripts/examples/postgres-index-analyze.sh +95 -0
  137. package/packages/plugin-databases/scripts/examples/redis-cache-stats.sh +121 -0
  138. package/packages/plugin-devops/README.md +367 -0
  139. package/packages/plugin-devops/agents/README.md +52 -0
  140. package/packages/plugin-devops/agents/azure-devops-specialist.md +308 -0
  141. package/packages/plugin-devops/agents/docker-containerization-expert.md +298 -0
  142. package/packages/plugin-devops/agents/github-operations-specialist.md +335 -0
  143. package/packages/plugin-devops/agents/mcp-context-manager.md +319 -0
  144. package/packages/plugin-devops/agents/observability-engineer.md +574 -0
  145. package/packages/plugin-devops/agents/ssh-operations-expert.md +1093 -0
  146. package/packages/plugin-devops/agents/traefik-proxy-expert.md +444 -0
  147. package/packages/plugin-devops/commands/ci-pipeline-create.md +581 -0
  148. package/packages/plugin-devops/commands/docker-optimize.md +493 -0
  149. package/packages/plugin-devops/commands/workflow-create.md +42 -0
  150. package/packages/plugin-devops/hooks/pre-docker-build.js +472 -0
  151. package/packages/plugin-devops/package.json +61 -0
  152. package/packages/plugin-devops/plugin.json +302 -0
  153. package/packages/plugin-devops/rules/ci-cd-kubernetes-strategy.md +25 -0
  154. package/packages/plugin-devops/rules/devops-troubleshooting-playbook.md +450 -0
  155. package/packages/plugin-devops/rules/docker-first-development.md +404 -0
  156. package/packages/plugin-devops/rules/github-operations.md +92 -0
  157. package/packages/plugin-devops/scripts/examples/docker-build-multistage.sh +43 -0
  158. package/packages/plugin-devops/scripts/examples/docker-compose-validate.sh +74 -0
  159. package/packages/plugin-devops/scripts/examples/github-workflow-validate.sh +48 -0
  160. package/packages/plugin-devops/scripts/examples/prometheus-health-check.sh +58 -0
  161. package/packages/plugin-devops/scripts/examples/ssh-key-setup.sh +74 -0
  162. package/packages/plugin-frameworks/README.md +309 -0
  163. package/packages/plugin-frameworks/agents/README.md +64 -0
  164. package/packages/plugin-frameworks/agents/e2e-test-engineer.md +579 -0
  165. package/packages/plugin-frameworks/agents/nats-messaging-expert.md +254 -0
  166. package/packages/plugin-frameworks/agents/react-frontend-engineer.md +393 -0
  167. package/packages/plugin-frameworks/agents/react-ui-expert.md +226 -0
  168. package/packages/plugin-frameworks/agents/tailwindcss-expert.md +1021 -0
  169. package/packages/plugin-frameworks/agents/ux-design-expert.md +244 -0
  170. package/packages/plugin-frameworks/commands/app-scaffold.md +50 -0
  171. package/packages/plugin-frameworks/commands/nextjs-optimize.md +692 -0
  172. package/packages/plugin-frameworks/commands/react-optimize.md +583 -0
  173. package/packages/plugin-frameworks/commands/tailwind-system.md +64 -0
  174. package/packages/plugin-frameworks/package.json +59 -0
  175. package/packages/plugin-frameworks/plugin.json +224 -0
  176. package/packages/plugin-frameworks/rules/performance-guidelines.md +403 -0
  177. package/packages/plugin-frameworks/rules/ui-development-standards.md +281 -0
  178. package/packages/plugin-frameworks/rules/ui-framework-rules.md +151 -0
  179. package/packages/plugin-frameworks/scripts/examples/react-component-perf.sh +34 -0
  180. package/packages/plugin-frameworks/scripts/examples/tailwind-optimize.sh +44 -0
  181. package/packages/plugin-frameworks/scripts/examples/vue-composition-check.sh +41 -0
  182. package/packages/plugin-languages/README.md +333 -0
  183. package/packages/plugin-languages/agents/README.md +50 -0
  184. package/packages/plugin-languages/agents/bash-scripting-expert.md +541 -0
  185. package/packages/plugin-languages/agents/javascript-frontend-engineer.md +197 -0
  186. package/packages/plugin-languages/agents/nodejs-backend-engineer.md +226 -0
  187. package/packages/plugin-languages/agents/python-backend-engineer.md +214 -0
  188. package/packages/plugin-languages/agents/python-backend-expert.md +289 -0
  189. package/packages/plugin-languages/commands/javascript-optimize.md +636 -0
  190. package/packages/plugin-languages/commands/nodejs-api-scaffold.md +341 -0
  191. package/packages/plugin-languages/commands/nodejs-optimize.md +689 -0
  192. package/packages/plugin-languages/commands/python-api-scaffold.md +261 -0
  193. package/packages/plugin-languages/commands/python-optimize.md +593 -0
  194. package/packages/plugin-languages/package.json +65 -0
  195. package/packages/plugin-languages/plugin.json +265 -0
  196. package/packages/plugin-languages/rules/code-quality-standards.md +496 -0
  197. package/packages/plugin-languages/rules/testing-standards.md +768 -0
  198. package/packages/plugin-languages/scripts/examples/bash-production-script.sh +520 -0
  199. package/packages/plugin-languages/scripts/examples/javascript-es6-patterns.js +291 -0
  200. package/packages/plugin-languages/scripts/examples/nodejs-async-iteration.js +360 -0
  201. package/packages/plugin-languages/scripts/examples/python-async-patterns.py +289 -0
  202. package/packages/plugin-languages/scripts/examples/typescript-patterns.ts +432 -0
  203. package/packages/plugin-ml/README.md +430 -0
  204. package/packages/plugin-ml/agents/automl-expert.md +326 -0
  205. package/packages/plugin-ml/agents/computer-vision-expert.md +550 -0
  206. package/packages/plugin-ml/agents/gradient-boosting-expert.md +455 -0
  207. package/packages/plugin-ml/agents/neural-network-architect.md +1228 -0
  208. package/packages/plugin-ml/agents/nlp-transformer-expert.md +584 -0
  209. package/packages/plugin-ml/agents/pytorch-expert.md +412 -0
  210. package/packages/plugin-ml/agents/reinforcement-learning-expert.md +2088 -0
  211. package/packages/plugin-ml/agents/scikit-learn-expert.md +228 -0
  212. package/packages/plugin-ml/agents/tensorflow-keras-expert.md +509 -0
  213. package/packages/plugin-ml/agents/time-series-expert.md +303 -0
  214. package/packages/plugin-ml/commands/ml-automl.md +572 -0
  215. package/packages/plugin-ml/commands/ml-train-optimize.md +657 -0
  216. package/packages/plugin-ml/package.json +52 -0
  217. package/packages/plugin-ml/plugin.json +338 -0
  218. package/packages/plugin-pm/README.md +368 -0
  219. package/packages/plugin-pm/claudeautopm-plugin-pm-2.0.0.tgz +0 -0
  220. package/packages/plugin-pm/commands/azure/COMMANDS.md +107 -0
  221. package/packages/plugin-pm/commands/azure/COMMAND_MAPPING.md +252 -0
  222. package/packages/plugin-pm/commands/azure/INTEGRATION_FIX.md +103 -0
  223. package/packages/plugin-pm/commands/azure/README.md +246 -0
  224. package/packages/plugin-pm/commands/azure/active-work.md +198 -0
  225. package/packages/plugin-pm/commands/azure/aliases.md +143 -0
  226. package/packages/plugin-pm/commands/azure/blocked-items.md +287 -0
  227. package/packages/plugin-pm/commands/azure/clean.md +93 -0
  228. package/packages/plugin-pm/commands/azure/docs-query.md +48 -0
  229. package/packages/plugin-pm/commands/azure/feature-decompose.md +380 -0
  230. package/packages/plugin-pm/commands/azure/feature-list.md +61 -0
  231. package/packages/plugin-pm/commands/azure/feature-new.md +115 -0
  232. package/packages/plugin-pm/commands/azure/feature-show.md +205 -0
  233. package/packages/plugin-pm/commands/azure/feature-start.md +130 -0
  234. package/packages/plugin-pm/commands/azure/fix-integration-example.md +93 -0
  235. package/packages/plugin-pm/commands/azure/help.md +150 -0
  236. package/packages/plugin-pm/commands/azure/import-us.md +269 -0
  237. package/packages/plugin-pm/commands/azure/init.md +211 -0
  238. package/packages/plugin-pm/commands/azure/next-task.md +262 -0
  239. package/packages/plugin-pm/commands/azure/search.md +160 -0
  240. package/packages/plugin-pm/commands/azure/sprint-status.md +235 -0
  241. package/packages/plugin-pm/commands/azure/standup.md +260 -0
  242. package/packages/plugin-pm/commands/azure/sync-all.md +99 -0
  243. package/packages/plugin-pm/commands/azure/task-analyze.md +186 -0
  244. package/packages/plugin-pm/commands/azure/task-close.md +329 -0
  245. package/packages/plugin-pm/commands/azure/task-edit.md +145 -0
  246. package/packages/plugin-pm/commands/azure/task-list.md +263 -0
  247. package/packages/plugin-pm/commands/azure/task-new.md +84 -0
  248. package/packages/plugin-pm/commands/azure/task-reopen.md +79 -0
  249. package/packages/plugin-pm/commands/azure/task-show.md +126 -0
  250. package/packages/plugin-pm/commands/azure/task-start.md +301 -0
  251. package/packages/plugin-pm/commands/azure/task-status.md +65 -0
  252. package/packages/plugin-pm/commands/azure/task-sync.md +67 -0
  253. package/packages/plugin-pm/commands/azure/us-edit.md +164 -0
  254. package/packages/plugin-pm/commands/azure/us-list.md +202 -0
  255. package/packages/plugin-pm/commands/azure/us-new.md +265 -0
  256. package/packages/plugin-pm/commands/azure/us-parse.md +253 -0
  257. package/packages/plugin-pm/commands/azure/us-show.md +188 -0
  258. package/packages/plugin-pm/commands/azure/us-status.md +320 -0
  259. package/packages/plugin-pm/commands/azure/validate.md +86 -0
  260. package/packages/plugin-pm/commands/azure/work-item-sync.md +47 -0
  261. package/packages/plugin-pm/commands/blocked.md +28 -0
  262. package/packages/plugin-pm/commands/clean.md +119 -0
  263. package/packages/plugin-pm/commands/context-create.md +136 -0
  264. package/packages/plugin-pm/commands/context-prime.md +170 -0
  265. package/packages/plugin-pm/commands/context-update.md +292 -0
  266. package/packages/plugin-pm/commands/context.md +28 -0
  267. package/packages/plugin-pm/commands/epic-close.md +86 -0
  268. package/packages/plugin-pm/commands/epic-decompose.md +370 -0
  269. package/packages/plugin-pm/commands/epic-edit.md +83 -0
  270. package/packages/plugin-pm/commands/epic-list.md +30 -0
  271. package/packages/plugin-pm/commands/epic-merge.md +222 -0
  272. package/packages/plugin-pm/commands/epic-oneshot.md +119 -0
  273. package/packages/plugin-pm/commands/epic-refresh.md +119 -0
  274. package/packages/plugin-pm/commands/epic-show.md +28 -0
  275. package/packages/plugin-pm/commands/epic-split.md +120 -0
  276. package/packages/plugin-pm/commands/epic-start.md +195 -0
  277. package/packages/plugin-pm/commands/epic-status.md +28 -0
  278. package/packages/plugin-pm/commands/epic-sync-modular.md +338 -0
  279. package/packages/plugin-pm/commands/epic-sync-original.md +473 -0
  280. package/packages/plugin-pm/commands/epic-sync.md +486 -0
  281. package/packages/plugin-pm/commands/github/workflow-create.md +42 -0
  282. package/packages/plugin-pm/commands/help.md +28 -0
  283. package/packages/plugin-pm/commands/import.md +115 -0
  284. package/packages/plugin-pm/commands/in-progress.md +28 -0
  285. package/packages/plugin-pm/commands/init.md +28 -0
  286. package/packages/plugin-pm/commands/issue-analyze.md +202 -0
  287. package/packages/plugin-pm/commands/issue-close.md +119 -0
  288. package/packages/plugin-pm/commands/issue-edit.md +93 -0
  289. package/packages/plugin-pm/commands/issue-reopen.md +87 -0
  290. package/packages/plugin-pm/commands/issue-show.md +41 -0
  291. package/packages/plugin-pm/commands/issue-start.md +234 -0
  292. package/packages/plugin-pm/commands/issue-status.md +95 -0
  293. package/packages/plugin-pm/commands/issue-sync.md +411 -0
  294. package/packages/plugin-pm/commands/next.md +28 -0
  295. package/packages/plugin-pm/commands/prd-edit.md +82 -0
  296. package/packages/plugin-pm/commands/prd-list.md +28 -0
  297. package/packages/plugin-pm/commands/prd-new.md +55 -0
  298. package/packages/plugin-pm/commands/prd-parse.md +42 -0
  299. package/packages/plugin-pm/commands/prd-status.md +28 -0
  300. package/packages/plugin-pm/commands/search.md +28 -0
  301. package/packages/plugin-pm/commands/standup.md +28 -0
  302. package/packages/plugin-pm/commands/status.md +28 -0
  303. package/packages/plugin-pm/commands/sync.md +99 -0
  304. package/packages/plugin-pm/commands/test-reference-update.md +151 -0
  305. package/packages/plugin-pm/commands/validate.md +28 -0
  306. package/packages/plugin-pm/commands/what-next.md +28 -0
  307. package/packages/plugin-pm/package.json +57 -0
  308. package/packages/plugin-pm/plugin.json +503 -0
  309. package/packages/plugin-pm/scripts/pm/analytics.js +425 -0
  310. package/packages/plugin-pm/scripts/pm/blocked.js +164 -0
  311. package/packages/plugin-pm/scripts/pm/blocked.sh +78 -0
  312. package/packages/plugin-pm/scripts/pm/clean.js +464 -0
  313. package/packages/plugin-pm/scripts/pm/context-create.js +216 -0
  314. package/packages/plugin-pm/scripts/pm/context-prime.js +335 -0
  315. package/packages/plugin-pm/scripts/pm/context-update.js +344 -0
  316. package/packages/plugin-pm/scripts/pm/context.js +338 -0
  317. package/packages/plugin-pm/scripts/pm/epic-close.js +347 -0
  318. package/packages/plugin-pm/scripts/pm/epic-edit.js +382 -0
  319. package/packages/plugin-pm/scripts/pm/epic-list.js +273 -0
  320. package/packages/plugin-pm/scripts/pm/epic-list.sh +109 -0
  321. package/packages/plugin-pm/scripts/pm/epic-show.js +291 -0
  322. package/packages/plugin-pm/scripts/pm/epic-show.sh +105 -0
  323. package/packages/plugin-pm/scripts/pm/epic-split.js +522 -0
  324. package/packages/plugin-pm/scripts/pm/epic-start/epic-start.js +183 -0
  325. package/packages/plugin-pm/scripts/pm/epic-start/epic-start.sh +94 -0
  326. package/packages/plugin-pm/scripts/pm/epic-status.js +291 -0
  327. package/packages/plugin-pm/scripts/pm/epic-status.sh +104 -0
  328. package/packages/plugin-pm/scripts/pm/epic-sync/README.md +208 -0
  329. package/packages/plugin-pm/scripts/pm/epic-sync/create-epic-issue.sh +77 -0
  330. package/packages/plugin-pm/scripts/pm/epic-sync/create-task-issues.sh +86 -0
  331. package/packages/plugin-pm/scripts/pm/epic-sync/update-epic-file.sh +79 -0
  332. package/packages/plugin-pm/scripts/pm/epic-sync/update-references.sh +89 -0
  333. package/packages/plugin-pm/scripts/pm/epic-sync.sh +137 -0
  334. package/packages/plugin-pm/scripts/pm/help.js +92 -0
  335. package/packages/plugin-pm/scripts/pm/help.sh +90 -0
  336. package/packages/plugin-pm/scripts/pm/in-progress.js +178 -0
  337. package/packages/plugin-pm/scripts/pm/in-progress.sh +93 -0
  338. package/packages/plugin-pm/scripts/pm/init.js +321 -0
  339. package/packages/plugin-pm/scripts/pm/init.sh +178 -0
  340. package/packages/plugin-pm/scripts/pm/issue-close.js +232 -0
  341. package/packages/plugin-pm/scripts/pm/issue-edit.js +310 -0
  342. package/packages/plugin-pm/scripts/pm/issue-show.js +272 -0
  343. package/packages/plugin-pm/scripts/pm/issue-start.js +181 -0
  344. package/packages/plugin-pm/scripts/pm/issue-sync/format-comment.sh +468 -0
  345. package/packages/plugin-pm/scripts/pm/issue-sync/gather-updates.sh +460 -0
  346. package/packages/plugin-pm/scripts/pm/issue-sync/post-comment.sh +330 -0
  347. package/packages/plugin-pm/scripts/pm/issue-sync/preflight-validation.sh +348 -0
  348. package/packages/plugin-pm/scripts/pm/issue-sync/update-frontmatter.sh +387 -0
  349. package/packages/plugin-pm/scripts/pm/lib/README.md +85 -0
  350. package/packages/plugin-pm/scripts/pm/lib/epic-discovery.js +119 -0
  351. package/packages/plugin-pm/scripts/pm/lib/logger.js +78 -0
  352. package/packages/plugin-pm/scripts/pm/next.js +189 -0
  353. package/packages/plugin-pm/scripts/pm/next.sh +72 -0
  354. package/packages/plugin-pm/scripts/pm/optimize.js +407 -0
  355. package/packages/plugin-pm/scripts/pm/pr-create.js +337 -0
  356. package/packages/plugin-pm/scripts/pm/pr-list.js +257 -0
  357. package/packages/plugin-pm/scripts/pm/prd-list.js +242 -0
  358. package/packages/plugin-pm/scripts/pm/prd-list.sh +103 -0
  359. package/packages/plugin-pm/scripts/pm/prd-new.js +684 -0
  360. package/packages/plugin-pm/scripts/pm/prd-parse.js +547 -0
  361. package/packages/plugin-pm/scripts/pm/prd-status.js +152 -0
  362. package/packages/plugin-pm/scripts/pm/prd-status.sh +63 -0
  363. package/packages/plugin-pm/scripts/pm/release.js +460 -0
  364. package/packages/plugin-pm/scripts/pm/search.js +192 -0
  365. package/packages/plugin-pm/scripts/pm/search.sh +89 -0
  366. package/packages/plugin-pm/scripts/pm/standup.js +362 -0
  367. package/packages/plugin-pm/scripts/pm/standup.sh +95 -0
  368. package/packages/plugin-pm/scripts/pm/status.js +148 -0
  369. package/packages/plugin-pm/scripts/pm/status.sh +59 -0
  370. package/packages/plugin-pm/scripts/pm/sync-batch.js +337 -0
  371. package/packages/plugin-pm/scripts/pm/sync.js +343 -0
  372. package/packages/plugin-pm/scripts/pm/template-list.js +141 -0
  373. package/packages/plugin-pm/scripts/pm/template-new.js +366 -0
  374. package/packages/plugin-pm/scripts/pm/validate.js +274 -0
  375. package/packages/plugin-pm/scripts/pm/validate.sh +106 -0
  376. package/packages/plugin-pm/scripts/pm/what-next.js +660 -0
  377. package/packages/plugin-testing/README.md +401 -0
  378. package/packages/plugin-testing/agents/frontend-testing-engineer.md +768 -0
  379. package/packages/plugin-testing/commands/jest-optimize.md +800 -0
  380. package/packages/plugin-testing/commands/playwright-optimize.md +887 -0
  381. package/packages/plugin-testing/commands/test-coverage.md +512 -0
  382. package/packages/plugin-testing/commands/test-performance.md +1041 -0
  383. package/packages/plugin-testing/commands/test-setup.md +414 -0
  384. package/packages/plugin-testing/package.json +40 -0
  385. package/packages/plugin-testing/plugin.json +197 -0
  386. package/packages/plugin-testing/rules/test-coverage-requirements.md +581 -0
  387. package/packages/plugin-testing/rules/testing-standards.md +529 -0
  388. package/packages/plugin-testing/scripts/examples/react-testing-example.test.jsx +460 -0
  389. package/packages/plugin-testing/scripts/examples/vitest-config-example.js +352 -0
  390. package/packages/plugin-testing/scripts/examples/vue-testing-example.test.js +586 -0
@@ -0,0 +1,581 @@
1
+ # Test Coverage Requirements Rule
2
+
3
+ **Rule Name**: test-coverage-requirements
4
+ **Priority**: High
5
+ **Applies To**: commands, agents
6
+ **Enforces On**: frontend-testing-engineer
7
+
8
+ ## Description
9
+
10
+ Test coverage thresholds and quality metrics enforcement. This rule defines mandatory coverage requirements for all code changes and ensures coverage metrics meet industry standards based on Context7-verified best practices.
11
+
12
+ ## Context7 Documentation Sources
13
+
14
+ **MANDATORY:** Coverage requirements based on these Context7 sources:
15
+
16
+ - `/vitest-dev/vitest` - Coverage configuration and thresholds
17
+ - `/testing-library/testing-library-docs` - Test quality metrics
18
+ - `/istanbul/istanbuljs` - Coverage reporting standards
19
+ - `/c8/c8` - V8 coverage provider patterns
20
+
21
+ ## Coverage Thresholds
22
+
23
+ ### Global Thresholds (MANDATORY)
24
+
25
+ **All new code must meet these minimum thresholds:**
26
+
27
+ ```javascript
28
+ // vitest.config.js or jest.config.js
29
+ export default {
30
+ test: {
31
+ coverage: {
32
+ provider: 'v8', // or 'istanbul'
33
+
34
+ // MANDATORY minimum thresholds
35
+ thresholds: {
36
+ lines: 80, // 80% of lines must be covered
37
+ functions: 80, // 80% of functions must be tested
38
+ branches: 75, // 75% of branches must be covered
39
+ statements: 80 // 80% of statements must be executed
40
+ },
41
+
42
+ // Fail tests if thresholds not met
43
+ reporter: ['text', 'json', 'html', 'lcov'],
44
+
45
+ // Include only source code
46
+ include: ['src/**/*.{js,jsx,ts,tsx}'],
47
+
48
+ // Exclude non-testable code
49
+ exclude: [
50
+ 'node_modules/',
51
+ 'test/',
52
+ '**/*.config.js',
53
+ '**/*.spec.js',
54
+ '**/*.test.js',
55
+ 'src/main.{js,ts}',
56
+ 'src/index.{js,ts}',
57
+ 'src/**/*.d.ts'
58
+ ]
59
+ }
60
+ }
61
+ };
62
+ ```
63
+
64
+ ### Per-Directory Thresholds (RECOMMENDED)
65
+
66
+ **Critical directories require higher coverage:**
67
+
68
+ ```javascript
69
+ // Higher thresholds for critical code
70
+ coverage: {
71
+ thresholds: {
72
+ // Global minimum
73
+ global: {
74
+ lines: 80,
75
+ functions: 80,
76
+ branches: 75,
77
+ statements: 80
78
+ },
79
+
80
+ // Critical business logic - higher standards
81
+ './src/services/': {
82
+ lines: 90,
83
+ functions: 90,
84
+ branches: 85,
85
+ statements: 90
86
+ },
87
+
88
+ // UI components - focus on user interactions
89
+ './src/components/': {
90
+ lines: 85,
91
+ functions: 85,
92
+ branches: 80,
93
+ statements: 85
94
+ },
95
+
96
+ // Utilities - comprehensive coverage
97
+ './src/utils/': {
98
+ lines: 95,
99
+ functions: 95,
100
+ branches: 90,
101
+ statements: 95
102
+ }
103
+ }
104
+ }
105
+ ```
106
+
107
+ ## Coverage Quality Standards
108
+
109
+ ### Lines vs. Branches
110
+
111
+ ```
112
+ Understanding Coverage Metrics:
113
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
114
+
115
+ 📊 Line Coverage: Were all lines executed?
116
+ - ✅ Good indicator of basic coverage
117
+ - ❌ Doesn't ensure all paths tested
118
+
119
+ 📊 Branch Coverage: Were all code paths tested?
120
+ - ✅ Tests if/else, switch, ternary operators
121
+ - ✅ Better indicator of thorough testing
122
+ - ⚠️ More important than line coverage
123
+
124
+ 📊 Function Coverage: Were all functions called?
125
+ - ✅ Ensures no dead code
126
+ - ✅ Validates all exports are used
127
+
128
+ 📊 Statement Coverage: Were all statements executed?
129
+ - ✅ Similar to line coverage
130
+ - ✅ More granular (multiple statements per line)
131
+
132
+ 💡 Priority: Branch > Functions > Lines > Statements
133
+ ```
134
+
135
+ ### Example: Why Branch Coverage Matters
136
+
137
+ ```javascript
138
+ // Function with 100% line coverage but poor branch coverage
139
+ function processUser(user) {
140
+ if (user.isActive) {
141
+ return user.name; // Line covered ✓
142
+ } else {
143
+ return 'Inactive'; // Line NOT covered ✗
144
+ }
145
+ }
146
+
147
+ // ❌ INSUFFICIENT: Only 50% branch coverage
148
+ test('returns name for active user', () => {
149
+ expect(processUser({ isActive: true, name: 'John' })).toBe('John');
150
+ // Only tests the 'if' branch, not 'else'
151
+ });
152
+
153
+ // ✅ CORRECT: 100% branch coverage
154
+ test('returns name for active user', () => {
155
+ expect(processUser({ isActive: true, name: 'John' })).toBe('John');
156
+ });
157
+
158
+ test('returns "Inactive" for inactive user', () => {
159
+ expect(processUser({ isActive: false, name: 'John' })).toBe('Inactive');
160
+ });
161
+ ```
162
+
163
+ ## Mandatory Coverage Checks
164
+
165
+ ### Pre-Commit Hook (MANDATORY)
166
+
167
+ ```bash
168
+ #!/bin/bash
169
+ # .git/hooks/pre-commit
170
+
171
+ # Run tests with coverage
172
+ npm run test:coverage > /dev/null 2>&1
173
+
174
+ # Extract coverage percentage
175
+ COVERAGE=$(node -e "
176
+ const data = require('./coverage/coverage-summary.json');
177
+ console.log(data.total.lines.pct);
178
+ ")
179
+
180
+ # Check threshold
181
+ THRESHOLD=80
182
+
183
+ if (( $(echo "$COVERAGE < $THRESHOLD" | bc -l) )); then
184
+ echo "❌ Coverage $COVERAGE% is below $THRESHOLD% threshold"
185
+ echo " Run 'npm run test:coverage' for details"
186
+ exit 1
187
+ fi
188
+
189
+ echo "✅ Coverage: $COVERAGE%"
190
+ exit 0
191
+ ```
192
+
193
+ ### Pull Request Check (MANDATORY)
194
+
195
+ ```yaml
196
+ # .github/workflows/coverage.yml
197
+ name: Coverage Check
198
+
199
+ on:
200
+ pull_request:
201
+ branches: [main, develop]
202
+
203
+ jobs:
204
+ coverage:
205
+ runs-on: ubuntu-latest
206
+
207
+ steps:
208
+ - uses: actions/checkout@v3
209
+
210
+ - name: Setup Node.js
211
+ uses: actions/setup-node@v3
212
+ with:
213
+ node-version: '18'
214
+
215
+ - name: Install dependencies
216
+ run: npm ci
217
+
218
+ - name: Run tests with coverage
219
+ run: npm run test:coverage
220
+
221
+ - name: Check coverage threshold
222
+ run: |
223
+ LINES=$(node -e "console.log(require('./coverage/coverage-summary.json').total.lines.pct)")
224
+ BRANCHES=$(node -e "console.log(require('./coverage/coverage-summary.json').total.branches.pct)")
225
+
226
+ echo "Lines: $LINES%"
227
+ echo "Branches: $BRANCHES%"
228
+
229
+ if (( $(echo "$LINES < 80" | bc -l) )); then
230
+ echo "❌ Line coverage below 80%"
231
+ exit 1
232
+ fi
233
+
234
+ if (( $(echo "$BRANCHES < 75" | bc -l) )); then
235
+ echo "❌ Branch coverage below 75%"
236
+ exit 1
237
+ fi
238
+
239
+ - name: Upload coverage to Codecov
240
+ uses: codecov/codecov-action@v3
241
+ with:
242
+ files: ./coverage/lcov.info
243
+ fail_ci_if_error: true
244
+
245
+ - name: Comment PR with coverage
246
+ uses: romeovs/lcov-reporter-action@v0.3.1
247
+ with:
248
+ lcov-file: ./coverage/lcov.info
249
+ github-token: ${{ secrets.GITHUB_TOKEN }}
250
+ filter-changed-files: true
251
+ ```
252
+
253
+ ## Coverage Exceptions
254
+
255
+ ### When to Exclude Code
256
+
257
+ **Legitimate exclusions (must be documented):**
258
+
259
+ ```javascript
260
+ // ✅ CORRECT: Exclude defensive error handling for impossible cases
261
+ function processData(data) {
262
+ /* istanbul ignore next */
263
+ if (!data) {
264
+ throw new Error('Data is required'); // Can't happen in practice
265
+ }
266
+
267
+ return data.map(item => item.value);
268
+ }
269
+
270
+ // ✅ CORRECT: Exclude debug-only code
271
+ function debugLog(message) {
272
+ /* istanbul ignore if */
273
+ if (process.env.NODE_ENV === 'development') {
274
+ console.log(message); // Not covered in test environment
275
+ }
276
+ }
277
+
278
+ // ✅ CORRECT: Exclude type guards that TypeScript ensures
279
+ function isString(value: unknown): value is string {
280
+ /* istanbul ignore next */
281
+ return typeof value === 'string'; // TypeScript handles this
282
+ }
283
+ ```
284
+
285
+ **Invalid exclusions (not allowed):**
286
+
287
+ ```javascript
288
+ // ❌ WRONG: Excluding untested business logic
289
+ function calculateDiscount(price, user) {
290
+ /* istanbul ignore next */
291
+ if (user.isPremium) {
292
+ return price * 0.8; // Should be tested!
293
+ }
294
+
295
+ return price;
296
+ }
297
+
298
+ // ❌ WRONG: Excluding error handling
299
+ async function fetchUser(id) {
300
+ try {
301
+ return await api.getUser(id);
302
+ } catch (error) {
303
+ /* istanbul ignore next */
304
+ throw new Error('Failed to fetch user'); // Should be tested!
305
+ }
306
+ }
307
+ ```
308
+
309
+ ## Coverage Reporting Standards
310
+
311
+ ### Required Reports (MANDATORY)
312
+
313
+ ```javascript
314
+ coverage: {
315
+ reporter: [
316
+ 'text', // Terminal output (for developers)
317
+ 'text-summary',// Quick summary
318
+ 'json', // Machine-readable (for CI)
319
+ 'json-summary',// Quick machine-readable
320
+ 'html', // Visual report (for deep dive)
321
+ 'lcov' // For coverage services (Codecov, Coveralls)
322
+ ],
323
+
324
+ // Report directory
325
+ reportsDirectory: './coverage',
326
+
327
+ // Always clean before new run
328
+ clean: true
329
+ }
330
+ ```
331
+
332
+ ### Coverage Trend Tracking
333
+
334
+ ```javascript
335
+ // scripts/track-coverage.js
336
+ import { readFileSync, writeFileSync } from 'fs';
337
+
338
+ const summary = JSON.parse(
339
+ readFileSync('./coverage/coverage-summary.json', 'utf-8')
340
+ );
341
+
342
+ const trend = {
343
+ date: new Date().toISOString(),
344
+ lines: summary.total.lines.pct,
345
+ branches: summary.total.branches.pct,
346
+ functions: summary.total.functions.pct,
347
+ statements: summary.total.statements.pct
348
+ };
349
+
350
+ // Append to history
351
+ const history = JSON.parse(
352
+ readFileSync('./coverage/history.json', 'utf-8')
353
+ );
354
+ history.push(trend);
355
+
356
+ writeFileSync(
357
+ './coverage/history.json',
358
+ JSON.stringify(history, null, 2)
359
+ );
360
+
361
+ // Check if coverage decreased
362
+ const previous = history[history.length - 2];
363
+ if (previous && trend.lines < previous.lines) {
364
+ console.error(`❌ Coverage decreased from ${previous.lines}% to ${trend.lines}%`);
365
+ process.exit(1);
366
+ }
367
+ ```
368
+
369
+ ## Coverage for Different Code Types
370
+
371
+ ### Components (85% minimum)
372
+
373
+ ```javascript
374
+ // ✅ REQUIRED: Test all component states
375
+ describe('LoadingButton', () => {
376
+ test('shows button text when not loading', () => {
377
+ render(<LoadingButton>Submit</LoadingButton>);
378
+ expect(screen.getByRole('button', { name: 'Submit' })).toBeInTheDocument();
379
+ });
380
+
381
+ test('shows spinner when loading', () => {
382
+ render(<LoadingButton loading>Submit</LoadingButton>);
383
+ expect(screen.getByRole('status')).toBeInTheDocument();
384
+ });
385
+
386
+ test('is disabled when loading', () => {
387
+ render(<LoadingButton loading>Submit</LoadingButton>);
388
+ expect(screen.getByRole('button')).toBeDisabled();
389
+ });
390
+
391
+ test('is disabled when disabled prop is true', () => {
392
+ render(<LoadingButton disabled>Submit</LoadingButton>);
393
+ expect(screen.getByRole('button')).toBeDisabled();
394
+ });
395
+
396
+ test('calls onClick when clicked', async () => {
397
+ const onClick = vi.fn();
398
+ render(<LoadingButton onClick={onClick}>Submit</LoadingButton>);
399
+
400
+ await userEvent.click(screen.getByRole('button'));
401
+
402
+ expect(onClick).toHaveBeenCalledTimes(1);
403
+ });
404
+ });
405
+ ```
406
+
407
+ ### Services/API (90% minimum)
408
+
409
+ ```javascript
410
+ // ✅ REQUIRED: Test all API methods and error cases
411
+ describe('UserService', () => {
412
+ test('fetches user by ID', async () => {
413
+ const user = await UserService.getUser(1);
414
+ expect(user).toEqual({ id: 1, name: 'Test User' });
415
+ });
416
+
417
+ test('creates new user', async () => {
418
+ const newUser = await UserService.createUser({ name: 'John' });
419
+ expect(newUser).toHaveProperty('id');
420
+ expect(newUser.name).toBe('John');
421
+ });
422
+
423
+ test('updates existing user', async () => {
424
+ const updated = await UserService.updateUser(1, { name: 'Jane' });
425
+ expect(updated.name).toBe('Jane');
426
+ });
427
+
428
+ test('deletes user', async () => {
429
+ await expect(UserService.deleteUser(1)).resolves.toBeUndefined();
430
+ });
431
+
432
+ test('handles network errors', async () => {
433
+ server.use(
434
+ rest.get('/api/user/:id', (req, res, ctx) => {
435
+ return res(ctx.status(500));
436
+ })
437
+ );
438
+
439
+ await expect(UserService.getUser(1)).rejects.toThrow('Network error');
440
+ });
441
+
442
+ test('handles validation errors', async () => {
443
+ await expect(
444
+ UserService.createUser({ name: '' })
445
+ ).rejects.toThrow('Name is required');
446
+ });
447
+ });
448
+ ```
449
+
450
+ ### Utilities (95% minimum)
451
+
452
+ ```javascript
453
+ // ✅ REQUIRED: Test all utility functions and edge cases
454
+ describe('formatCurrency', () => {
455
+ test('formats positive numbers', () => {
456
+ expect(formatCurrency(1234.56)).toBe('$1,234.56');
457
+ });
458
+
459
+ test('formats zero', () => {
460
+ expect(formatCurrency(0)).toBe('$0.00');
461
+ });
462
+
463
+ test('formats negative numbers', () => {
464
+ expect(formatCurrency(-1234.56)).toBe('-$1,234.56');
465
+ });
466
+
467
+ test('rounds to 2 decimal places', () => {
468
+ expect(formatCurrency(1234.567)).toBe('$1,234.57');
469
+ });
470
+
471
+ test('handles very large numbers', () => {
472
+ expect(formatCurrency(1234567890.12)).toBe('$1,234,567,890.12');
473
+ });
474
+
475
+ test('handles very small numbers', () => {
476
+ expect(formatCurrency(0.01)).toBe('$0.01');
477
+ });
478
+
479
+ test('throws error for invalid input', () => {
480
+ expect(() => formatCurrency('invalid')).toThrow('Invalid number');
481
+ expect(() => formatCurrency(NaN)).toThrow('Invalid number');
482
+ expect(() => formatCurrency(null)).toThrow('Invalid number');
483
+ });
484
+ });
485
+ ```
486
+
487
+ ## Mutation Testing (RECOMMENDED)
488
+
489
+ ```bash
490
+ # Install Stryker mutation testing
491
+ npm install -D @stryker-mutator/core @stryker-mutator/vitest-runner
492
+
493
+ # stryker.config.json
494
+ {
495
+ "testRunner": "vitest",
496
+ "coverageAnalysis": "perTest",
497
+ "mutate": [
498
+ "src/**/*.{js,jsx,ts,tsx}",
499
+ "!src/**/*.{spec,test}.{js,jsx,ts,tsx}"
500
+ ],
501
+ "thresholds": {
502
+ "high": 80,
503
+ "low": 60,
504
+ "break": 50
505
+ }
506
+ }
507
+
508
+ # Run mutation testing
509
+ npx stryker run
510
+ ```
511
+
512
+ **Why Mutation Testing:**
513
+ - Validates test quality, not just coverage
514
+ - Finds weak tests that don't catch bugs
515
+ - Mutates code and checks if tests fail
516
+ - Higher mutation score = better tests
517
+
518
+ ## Enforcement Checklist
519
+
520
+ Before merging code, verify:
521
+
522
+ - [ ] Overall coverage meets 80% minimum
523
+ - [ ] Branch coverage meets 75% minimum
524
+ - [ ] No decrease in coverage from previous commit
525
+ - [ ] All new files have corresponding tests
526
+ - [ ] Coverage report generated and reviewed
527
+ - [ ] Critical paths have 90%+ coverage
528
+ - [ ] Error handling is tested
529
+ - [ ] Edge cases are covered
530
+ - [ ] Coverage exclusions are documented
531
+ - [ ] CI/CD coverage check passes
532
+
533
+ ## Validation Commands
534
+
535
+ ```bash
536
+ # Generate coverage report
537
+ npm run test:coverage
538
+
539
+ # Check coverage thresholds (fails if below)
540
+ npm run test:coverage -- --reporter=json
541
+
542
+ # View detailed HTML report
543
+ open coverage/index.html
544
+
545
+ # Track coverage trend
546
+ node scripts/track-coverage.js
547
+ ```
548
+
549
+ ## Coverage Improvement Strategies
550
+
551
+ ### Identify Low Coverage Areas
552
+
553
+ ```bash
554
+ # Find files with < 80% coverage
555
+ node -e "
556
+ const data = require('./coverage/coverage-summary.json');
557
+ Object.entries(data)
558
+ .filter(([file, d]) => d.lines.pct < 80 && file !== 'total')
559
+ .forEach(([file, d]) => console.log(\`\${file}: \${d.lines.pct}%\`));
560
+ "
561
+ ```
562
+
563
+ ### Prioritize High-Impact Tests
564
+
565
+ 1. **Critical Business Logic** (highest priority)
566
+ 2. **Error Handling** (prevents crashes)
567
+ 3. **Edge Cases** (prevents bugs)
568
+ 4. **Happy Path** (ensures core functionality)
569
+
570
+ ## Related Rules
571
+
572
+ - `testing-standards` - Test quality and patterns
573
+ - `code-quality-standards` - General code quality
574
+ - `ci-cd-requirements` - CI/CD integration rules
575
+
576
+ ## Support
577
+
578
+ For coverage questions:
579
+ - Review Context7 documentation for coverage tools
580
+ - Run `/test:coverage` command for detailed analysis
581
+ - Consult frontend-testing-engineer agent