code-ai-installer 1.1.11 → 1.3.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 (1016) hide show
  1. package/.agents/a11y_baseline/SKILL.md +260 -41
  2. package/.agents/a11y_baseline/agents/claude.json +18 -0
  3. package/.agents/a11y_baseline/agents/copilot.json +18 -0
  4. package/.agents/a11y_baseline/agents/gemini.json +18 -0
  5. package/.agents/a11y_baseline/agents/openai.yaml +8 -0
  6. package/.agents/a11y_baseline/agents/qwen.json +18 -0
  7. package/.agents/a11y_baseline/agents/skill.yaml +22 -0
  8. package/.agents/adr_log/SKILL.md +369 -69
  9. package/.agents/adr_log/agents/claude.json +18 -0
  10. package/.agents/adr_log/agents/copilot.json +18 -0
  11. package/.agents/adr_log/agents/gemini.json +18 -0
  12. package/.agents/adr_log/agents/openai.yaml +8 -0
  13. package/.agents/adr_log/agents/qwen.json +18 -0
  14. package/.agents/adr_log/agents/skill.yaml +22 -0
  15. package/.agents/api_contract_compliance_review/SKILL.md +224 -18
  16. package/.agents/api_contract_compliance_review/agents/claude.json +20 -0
  17. package/.agents/api_contract_compliance_review/agents/copilot.json +20 -0
  18. package/.agents/api_contract_compliance_review/agents/gemini.json +20 -0
  19. package/.agents/api_contract_compliance_review/agents/openai.yaml +8 -0
  20. package/.agents/api_contract_compliance_review/agents/qwen.json +20 -0
  21. package/.agents/api_contract_compliance_review/agents/skill.yaml +24 -0
  22. package/.agents/api_contracts/SKILL.md +329 -42
  23. package/.agents/api_contracts/agents/claude.json +18 -0
  24. package/.agents/api_contracts/agents/copilot.json +18 -0
  25. package/.agents/api_contracts/agents/gemini.json +18 -0
  26. package/.agents/api_contracts/agents/openai.yaml +8 -0
  27. package/.agents/api_contracts/agents/qwen.json +18 -0
  28. package/.agents/api_contracts/agents/skill.yaml +22 -0
  29. package/.agents/architecture_compliance_review/SKILL.md +213 -17
  30. package/.agents/architecture_compliance_review/agents/claude.json +19 -0
  31. package/.agents/architecture_compliance_review/agents/copilot.json +19 -0
  32. package/.agents/architecture_compliance_review/agents/gemini.json +19 -0
  33. package/.agents/architecture_compliance_review/agents/openai.yaml +8 -0
  34. package/.agents/architecture_compliance_review/agents/qwen.json +19 -0
  35. package/.agents/architecture_compliance_review/agents/skill.yaml +23 -0
  36. package/.agents/architecture_doc/SKILL.md +384 -92
  37. package/.agents/architecture_doc/agents/claude.json +18 -0
  38. package/.agents/architecture_doc/agents/copilot.json +18 -0
  39. package/.agents/architecture_doc/agents/gemini.json +18 -0
  40. package/.agents/architecture_doc/agents/openai.yaml +8 -0
  41. package/.agents/architecture_doc/agents/qwen.json +18 -0
  42. package/.agents/architecture_doc/agents/skill.yaml +22 -0
  43. package/.agents/board/SKILL.md +232 -43
  44. package/.agents/board/agents/claude.json +16 -0
  45. package/.agents/board/agents/copilot.json +16 -0
  46. package/.agents/board/agents/gemini.json +16 -0
  47. package/.agents/board/agents/openai.yaml +8 -0
  48. package/.agents/board/agents/qwen.json +16 -0
  49. package/.agents/board/agents/skill.yaml +20 -0
  50. package/.agents/cloud_infrastructure_security/SKILL.md +277 -68
  51. package/.agents/cloud_infrastructure_security/agents/claude.json +19 -0
  52. package/.agents/cloud_infrastructure_security/agents/copilot.json +19 -0
  53. package/.agents/cloud_infrastructure_security/agents/gemini.json +19 -0
  54. package/.agents/cloud_infrastructure_security/agents/openai.yaml +8 -0
  55. package/.agents/cloud_infrastructure_security/agents/qwen.json +19 -0
  56. package/.agents/cloud_infrastructure_security/agents/skill.yaml +23 -0
  57. package/.agents/code_review_checklist/SKILL.md +200 -47
  58. package/.agents/code_review_checklist/agents/claude.json +19 -0
  59. package/.agents/code_review_checklist/agents/copilot.json +19 -0
  60. package/.agents/code_review_checklist/agents/gemini.json +19 -0
  61. package/.agents/code_review_checklist/agents/openai.yaml +8 -0
  62. package/.agents/code_review_checklist/agents/qwen.json +19 -0
  63. package/.agents/code_review_checklist/agents/skill.yaml +23 -0
  64. package/.agents/current_state_analysis/SKILL.md +225 -44
  65. package/.agents/current_state_analysis/agents/claude.json +19 -0
  66. package/.agents/current_state_analysis/agents/copilot.json +19 -0
  67. package/.agents/current_state_analysis/agents/gemini.json +19 -0
  68. package/.agents/current_state_analysis/agents/openai.yaml +8 -0
  69. package/.agents/current_state_analysis/agents/qwen.json +19 -0
  70. package/.agents/current_state_analysis/agents/skill.yaml +23 -0
  71. package/.agents/data_model/SKILL.md +285 -40
  72. package/.agents/data_model/agents/claude.json +18 -0
  73. package/.agents/data_model/agents/copilot.json +18 -0
  74. package/.agents/data_model/agents/gemini.json +18 -0
  75. package/.agents/data_model/agents/openai.yaml +8 -0
  76. package/.agents/data_model/agents/qwen.json +18 -0
  77. package/.agents/data_model/agents/skill.yaml +22 -0
  78. package/.agents/dependency_supply_chain_review/SKILL.md +300 -20
  79. package/.agents/dependency_supply_chain_review/agents/claude.json +20 -0
  80. package/.agents/dependency_supply_chain_review/agents/copilot.json +20 -0
  81. package/.agents/dependency_supply_chain_review/agents/gemini.json +20 -0
  82. package/.agents/dependency_supply_chain_review/agents/openai.yaml +8 -0
  83. package/.agents/dependency_supply_chain_review/agents/qwen.json +20 -0
  84. package/.agents/dependency_supply_chain_review/agents/skill.yaml +24 -0
  85. package/.agents/deployment_ci_plan/SKILL.md +410 -51
  86. package/.agents/deployment_ci_plan/agents/claude.json +19 -0
  87. package/.agents/deployment_ci_plan/agents/copilot.json +19 -0
  88. package/.agents/deployment_ci_plan/agents/gemini.json +19 -0
  89. package/.agents/deployment_ci_plan/agents/openai.yaml +8 -0
  90. package/.agents/deployment_ci_plan/agents/qwen.json +19 -0
  91. package/.agents/deployment_ci_plan/agents/skill.yaml +23 -0
  92. package/.agents/design_intake/SKILL.md +225 -71
  93. package/.agents/design_intake/agents/claude.json +18 -0
  94. package/.agents/design_intake/agents/copilot.json +18 -0
  95. package/.agents/design_intake/agents/gemini.json +18 -0
  96. package/.agents/design_intake/agents/openai.yaml +8 -0
  97. package/.agents/design_intake/agents/qwen.json +18 -0
  98. package/.agents/design_intake/agents/skill.yaml +22 -0
  99. package/.agents/design_parity_review/SKILL.md +216 -90
  100. package/.agents/design_parity_review/agents/claude.json +19 -0
  101. package/.agents/design_parity_review/agents/copilot.json +19 -0
  102. package/.agents/design_parity_review/agents/gemini.json +19 -0
  103. package/.agents/design_parity_review/agents/openai.yaml +8 -0
  104. package/.agents/design_parity_review/agents/qwen.json +19 -0
  105. package/.agents/design_parity_review/agents/skill.yaml +23 -0
  106. package/.agents/design_systems/SKILL.md +432 -15
  107. package/.agents/design_systems/agents/claude.json +18 -0
  108. package/.agents/design_systems/agents/copilot.json +18 -0
  109. package/.agents/design_systems/agents/gemini.json +18 -0
  110. package/.agents/design_systems/agents/openai.yaml +8 -0
  111. package/.agents/design_systems/agents/qwen.json +18 -0
  112. package/.agents/design_systems/agents/skill.yaml +22 -0
  113. package/.agents/dev_reference_snippets/SKILL.md +305 -117
  114. package/.agents/dev_reference_snippets/agents/claude.json +19 -0
  115. package/.agents/dev_reference_snippets/agents/copilot.json +19 -0
  116. package/.agents/dev_reference_snippets/agents/gemini.json +19 -0
  117. package/.agents/dev_reference_snippets/agents/openai.yaml +8 -0
  118. package/.agents/dev_reference_snippets/agents/qwen.json +19 -0
  119. package/.agents/dev_reference_snippets/agents/skill.yaml +23 -0
  120. package/.agents/docker_kubernetes_architecture/SKILL.md +480 -145
  121. package/.agents/docker_kubernetes_architecture/agents/claude.json +19 -0
  122. package/.agents/docker_kubernetes_architecture/agents/copilot.json +19 -0
  123. package/.agents/docker_kubernetes_architecture/agents/gemini.json +19 -0
  124. package/.agents/docker_kubernetes_architecture/agents/openai.yaml +8 -0
  125. package/.agents/docker_kubernetes_architecture/agents/qwen.json +19 -0
  126. package/.agents/docker_kubernetes_architecture/agents/skill.yaml +23 -0
  127. package/.agents/es2025_beast_practices/SKILL.md +433 -8
  128. package/.agents/es2025_beast_practices/agents/claude.json +19 -0
  129. package/.agents/es2025_beast_practices/agents/copilot.json +19 -0
  130. package/.agents/es2025_beast_practices/agents/gemini.json +19 -0
  131. package/.agents/es2025_beast_practices/agents/openai.yaml +8 -0
  132. package/.agents/es2025_beast_practices/agents/qwen.json +19 -0
  133. package/.agents/es2025_beast_practices/agents/skill.yaml +23 -0
  134. package/.agents/gates/SKILL.md +134 -35
  135. package/.agents/gates/agents/claude.json +16 -0
  136. package/.agents/gates/agents/copilot.json +16 -0
  137. package/.agents/gates/agents/gemini.json +16 -0
  138. package/.agents/gates/agents/openai.yaml +8 -0
  139. package/.agents/gates/agents/qwen.json +16 -0
  140. package/.agents/gates/agents/skill.yaml +20 -0
  141. package/.agents/go_beast_practices/SKILL.md +557 -23
  142. package/.agents/go_beast_practices/agents/claude.json +19 -0
  143. package/.agents/go_beast_practices/agents/copilot.json +19 -0
  144. package/.agents/go_beast_practices/agents/gemini.json +19 -0
  145. package/.agents/go_beast_practices/agents/openai.yaml +8 -0
  146. package/.agents/go_beast_practices/agents/qwen.json +19 -0
  147. package/.agents/go_beast_practices/agents/skill.yaml +23 -0
  148. package/.agents/google_stitch_skill/SKILL.md +553 -0
  149. package/.agents/google_stitch_skill/agents/claude.json +18 -0
  150. package/.agents/google_stitch_skill/agents/copilot.json +18 -0
  151. package/.agents/google_stitch_skill/agents/gemini.json +18 -0
  152. package/.agents/google_stitch_skill/agents/openai.yaml +8 -0
  153. package/.agents/google_stitch_skill/agents/qwen.json +18 -0
  154. package/.agents/google_stitch_skill/agents/skill.yaml +22 -0
  155. package/.agents/google_stitch_skill/examples/scr_prompts.md +125 -0
  156. package/.agents/google_stitch_skill/resources/budget_planner.md +35 -0
  157. package/.agents/handoff/SKILL.md +212 -52
  158. package/.agents/handoff/agents/claude.json +16 -0
  159. package/.agents/handoff/agents/copilot.json +16 -0
  160. package/.agents/handoff/agents/gemini.json +16 -0
  161. package/.agents/handoff/agents/openai.yaml +8 -0
  162. package/.agents/handoff/agents/qwen.json +16 -0
  163. package/.agents/handoff/agents/skill.yaml +20 -0
  164. package/.agents/k8s_manifests_conventions/SKILL.md +548 -176
  165. package/.agents/k8s_manifests_conventions/agents/claude.json +19 -0
  166. package/.agents/k8s_manifests_conventions/agents/copilot.json +19 -0
  167. package/.agents/k8s_manifests_conventions/agents/gemini.json +19 -0
  168. package/.agents/k8s_manifests_conventions/agents/openai.yaml +8 -0
  169. package/.agents/k8s_manifests_conventions/agents/qwen.json +19 -0
  170. package/.agents/k8s_manifests_conventions/agents/skill.yaml +23 -0
  171. package/.agents/memory/SKILL.md +219 -29
  172. package/.agents/memory/agents/claude.json +16 -0
  173. package/.agents/memory/agents/copilot.json +16 -0
  174. package/.agents/memory/agents/gemini.json +16 -0
  175. package/.agents/memory/agents/openai.yaml +8 -0
  176. package/.agents/memory/agents/qwen.json +16 -0
  177. package/.agents/memory/agents/skill.yaml +20 -0
  178. package/.agents/mongodb_mongoose_best_practices/SKILL.md +724 -236
  179. package/.agents/mongodb_mongoose_best_practices/agents/claude.json +20 -0
  180. package/.agents/mongodb_mongoose_best_practices/agents/copilot.json +20 -0
  181. package/.agents/mongodb_mongoose_best_practices/agents/gemini.json +20 -0
  182. package/.agents/mongodb_mongoose_best_practices/agents/openai.yaml +8 -0
  183. package/.agents/mongodb_mongoose_best_practices/agents/qwen.json +20 -0
  184. package/.agents/mongodb_mongoose_best_practices/agents/skill.yaml +24 -0
  185. package/.agents/n8n_pinecone_qdrant_supabase/SKILL.md +671 -61
  186. package/.agents/n8n_pinecone_qdrant_supabase/agents/claude.json +20 -0
  187. package/.agents/n8n_pinecone_qdrant_supabase/agents/copilot.json +20 -0
  188. package/.agents/n8n_pinecone_qdrant_supabase/agents/gemini.json +20 -0
  189. package/.agents/n8n_pinecone_qdrant_supabase/agents/openai.yaml +8 -0
  190. package/.agents/n8n_pinecone_qdrant_supabase/agents/qwen.json +20 -0
  191. package/.agents/n8n_pinecone_qdrant_supabase/agents/skill.yaml +24 -0
  192. package/.agents/node_express_beast_practices/SKILL.md +729 -30
  193. package/.agents/node_express_beast_practices/agents/claude.json +20 -0
  194. package/.agents/node_express_beast_practices/agents/copilot.json +20 -0
  195. package/.agents/node_express_beast_practices/agents/gemini.json +20 -0
  196. package/.agents/node_express_beast_practices/agents/openai.yaml +8 -0
  197. package/.agents/node_express_beast_practices/agents/qwen.json +20 -0
  198. package/.agents/node_express_beast_practices/agents/skill.yaml +24 -0
  199. package/.agents/observability_logging/SKILL.md +499 -16
  200. package/.agents/observability_logging/agents/claude.json +18 -0
  201. package/.agents/observability_logging/agents/copilot.json +18 -0
  202. package/.agents/observability_logging/agents/gemini.json +18 -0
  203. package/.agents/observability_logging/agents/openai.yaml +8 -0
  204. package/.agents/observability_logging/agents/qwen.json +18 -0
  205. package/.agents/observability_logging/agents/skill.yaml +22 -0
  206. package/.agents/observability_plan/SKILL.md +279 -38
  207. package/.agents/observability_plan/agents/claude.json +18 -0
  208. package/.agents/observability_plan/agents/copilot.json +18 -0
  209. package/.agents/observability_plan/agents/gemini.json +18 -0
  210. package/.agents/observability_plan/agents/openai.yaml +8 -0
  211. package/.agents/observability_plan/agents/qwen.json +18 -0
  212. package/.agents/observability_plan/agents/skill.yaml +22 -0
  213. package/.agents/observability_review/SKILL.md +254 -20
  214. package/.agents/observability_review/agents/claude.json +18 -0
  215. package/.agents/observability_review/agents/copilot.json +18 -0
  216. package/.agents/observability_review/agents/gemini.json +18 -0
  217. package/.agents/observability_review/agents/openai.yaml +8 -0
  218. package/.agents/observability_review/agents/qwen.json +18 -0
  219. package/.agents/observability_review/agents/skill.yaml +22 -0
  220. package/.agents/performance_review_baseline/SKILL.md +239 -17
  221. package/.agents/performance_review_baseline/agents/claude.json +19 -0
  222. package/.agents/performance_review_baseline/agents/copilot.json +19 -0
  223. package/.agents/performance_review_baseline/agents/gemini.json +19 -0
  224. package/.agents/performance_review_baseline/agents/openai.yaml +8 -0
  225. package/.agents/performance_review_baseline/agents/qwen.json +19 -0
  226. package/.agents/performance_review_baseline/agents/skill.yaml +23 -0
  227. package/.agents/pm_backlog/SKILL.md +250 -32
  228. package/.agents/pm_backlog/agents/claude.json +18 -0
  229. package/.agents/pm_backlog/agents/copilot.json +18 -0
  230. package/.agents/pm_backlog/agents/gemini.json +18 -0
  231. package/.agents/pm_backlog/agents/openai.yaml +8 -0
  232. package/.agents/pm_backlog/agents/qwen.json +18 -0
  233. package/.agents/pm_backlog/agents/skill.yaml +22 -0
  234. package/.agents/pm_interview/SKILL.md +197 -56
  235. package/.agents/pm_interview/agents/claude.json +18 -0
  236. package/.agents/pm_interview/agents/copilot.json +18 -0
  237. package/.agents/pm_interview/agents/gemini.json +18 -0
  238. package/.agents/pm_interview/agents/openai.yaml +8 -0
  239. package/.agents/pm_interview/agents/qwen.json +18 -0
  240. package/.agents/pm_interview/agents/skill.yaml +22 -0
  241. package/.agents/pm_prd/SKILL.md +215 -56
  242. package/.agents/pm_prd/agents/claude.json +18 -0
  243. package/.agents/pm_prd/agents/copilot.json +18 -0
  244. package/.agents/pm_prd/agents/gemini.json +18 -0
  245. package/.agents/pm_prd/agents/openai.yaml +8 -0
  246. package/.agents/pm_prd/agents/qwen.json +18 -0
  247. package/.agents/pm_prd/agents/skill.yaml +22 -0
  248. package/.agents/qa_api_contract_tests/SKILL.md +207 -16
  249. package/.agents/qa_api_contract_tests/agents/claude.json +20 -0
  250. package/.agents/qa_api_contract_tests/agents/copilot.json +20 -0
  251. package/.agents/qa_api_contract_tests/agents/gemini.json +20 -0
  252. package/.agents/qa_api_contract_tests/agents/openai.yaml +8 -0
  253. package/.agents/qa_api_contract_tests/agents/qwen.json +20 -0
  254. package/.agents/qa_api_contract_tests/agents/skill.yaml +24 -0
  255. package/.agents/qa_browser_testing/SKILL.md +255 -0
  256. package/.agents/qa_browser_testing/agents/claude.json +19 -0
  257. package/.agents/qa_browser_testing/agents/copilot.json +19 -0
  258. package/.agents/qa_browser_testing/agents/gemini.json +19 -0
  259. package/.agents/qa_browser_testing/agents/openai.yaml +8 -0
  260. package/.agents/qa_browser_testing/agents/qwen.json +19 -0
  261. package/.agents/qa_browser_testing/agents/skill.yaml +23 -0
  262. package/.agents/qa_e2e_playwright/SKILL.md +313 -0
  263. package/.agents/qa_e2e_playwright/agents/claude.json +19 -0
  264. package/.agents/qa_e2e_playwright/agents/copilot.json +19 -0
  265. package/.agents/qa_e2e_playwright/agents/gemini.json +19 -0
  266. package/.agents/qa_e2e_playwright/agents/openai.yaml +8 -0
  267. package/.agents/qa_e2e_playwright/agents/qwen.json +19 -0
  268. package/.agents/qa_e2e_playwright/agents/skill.yaml +23 -0
  269. package/.agents/qa_manual_run/SKILL.md +209 -16
  270. package/.agents/qa_manual_run/agents/claude.json +19 -0
  271. package/.agents/qa_manual_run/agents/copilot.json +19 -0
  272. package/.agents/qa_manual_run/agents/gemini.json +19 -0
  273. package/.agents/qa_manual_run/agents/openai.yaml +8 -0
  274. package/.agents/qa_manual_run/agents/qwen.json +19 -0
  275. package/.agents/qa_manual_run/agents/skill.yaml +23 -0
  276. package/.agents/qa_regression_baseline/SKILL.md +217 -0
  277. package/.agents/qa_regression_baseline/agents/claude.json +19 -0
  278. package/.agents/qa_regression_baseline/agents/copilot.json +19 -0
  279. package/.agents/qa_regression_baseline/agents/gemini.json +19 -0
  280. package/.agents/qa_regression_baseline/agents/openai.yaml +8 -0
  281. package/.agents/qa_regression_baseline/agents/qwen.json +19 -0
  282. package/.agents/qa_regression_baseline/agents/skill.yaml +23 -0
  283. package/.agents/qa_security_smoke_tests/SKILL.md +188 -14
  284. package/.agents/qa_security_smoke_tests/agents/claude.json +20 -0
  285. package/.agents/qa_security_smoke_tests/agents/copilot.json +20 -0
  286. package/.agents/qa_security_smoke_tests/agents/gemini.json +20 -0
  287. package/.agents/qa_security_smoke_tests/agents/openai.yaml +8 -0
  288. package/.agents/qa_security_smoke_tests/agents/qwen.json +20 -0
  289. package/.agents/qa_security_smoke_tests/agents/skill.yaml +24 -0
  290. package/.agents/qa_test_plan/SKILL.md +203 -20
  291. package/.agents/qa_test_plan/agents/claude.json +19 -0
  292. package/.agents/qa_test_plan/agents/copilot.json +19 -0
  293. package/.agents/qa_test_plan/agents/gemini.json +19 -0
  294. package/.agents/qa_test_plan/agents/openai.yaml +8 -0
  295. package/.agents/qa_test_plan/agents/qwen.json +19 -0
  296. package/.agents/qa_test_plan/agents/skill.yaml +23 -0
  297. package/.agents/qa_ui_a11y_smoke/SKILL.md +230 -12
  298. package/.agents/qa_ui_a11y_smoke/agents/claude.json +20 -0
  299. package/.agents/qa_ui_a11y_smoke/agents/copilot.json +20 -0
  300. package/.agents/qa_ui_a11y_smoke/agents/gemini.json +20 -0
  301. package/.agents/qa_ui_a11y_smoke/agents/openai.yaml +8 -0
  302. package/.agents/qa_ui_a11y_smoke/agents/qwen.json +20 -0
  303. package/.agents/qa_ui_a11y_smoke/agents/skill.yaml +24 -0
  304. package/.agents/react_15_3_wix_iframe/SKILL.md +411 -12
  305. package/.agents/react_15_3_wix_iframe/agents/claude.json +21 -0
  306. package/.agents/react_15_3_wix_iframe/agents/copilot.json +21 -0
  307. package/.agents/react_15_3_wix_iframe/agents/gemini.json +21 -0
  308. package/.agents/react_15_3_wix_iframe/agents/openai.yaml +8 -0
  309. package/.agents/react_15_3_wix_iframe/agents/qwen.json +21 -0
  310. package/.agents/react_15_3_wix_iframe/agents/skill.yaml +25 -0
  311. package/.agents/react_beast_practices/SKILL.md +285 -18
  312. package/.agents/react_beast_practices/agents/claude.json +19 -0
  313. package/.agents/react_beast_practices/agents/copilot.json +19 -0
  314. package/.agents/react_beast_practices/agents/gemini.json +19 -0
  315. package/.agents/react_beast_practices/agents/openai.yaml +8 -0
  316. package/.agents/react_beast_practices/agents/qwen.json +19 -0
  317. package/.agents/react_beast_practices/agents/skill.yaml +23 -0
  318. package/.agents/release_gate/SKILL.md +213 -77
  319. package/.agents/release_gate/agents/claude.json +18 -0
  320. package/.agents/release_gate/agents/copilot.json +18 -0
  321. package/.agents/release_gate/agents/gemini.json +18 -0
  322. package/.agents/release_gate/agents/openai.yaml +8 -0
  323. package/.agents/release_gate/agents/qwen.json +18 -0
  324. package/.agents/release_gate/agents/skill.yaml +22 -0
  325. package/.agents/release_gate_checklist_template/SKILL.md +182 -68
  326. package/.agents/release_gate_checklist_template/agents/claude.json +20 -0
  327. package/.agents/release_gate_checklist_template/agents/copilot.json +20 -0
  328. package/.agents/release_gate_checklist_template/agents/gemini.json +20 -0
  329. package/.agents/release_gate_checklist_template/agents/openai.yaml +8 -0
  330. package/.agents/release_gate_checklist_template/agents/qwen.json +20 -0
  331. package/.agents/release_gate_checklist_template/agents/skill.yaml +24 -0
  332. package/.agents/review_reference_snippets/SKILL.md +116 -0
  333. package/.agents/review_reference_snippets/agents/claude.json +19 -0
  334. package/.agents/review_reference_snippets/agents/copilot.json +19 -0
  335. package/.agents/review_reference_snippets/agents/gemini.json +19 -0
  336. package/.agents/review_reference_snippets/agents/openai.yaml +8 -0
  337. package/.agents/review_reference_snippets/agents/qwen.json +19 -0
  338. package/.agents/review_reference_snippets/agents/skill.yaml +23 -0
  339. package/.agents/security_baseline_dev/SKILL.md +496 -16
  340. package/.agents/security_baseline_dev/agents/claude.json +19 -0
  341. package/.agents/security_baseline_dev/agents/copilot.json +19 -0
  342. package/.agents/security_baseline_dev/agents/gemini.json +19 -0
  343. package/.agents/security_baseline_dev/agents/openai.yaml +8 -0
  344. package/.agents/security_baseline_dev/agents/qwen.json +19 -0
  345. package/.agents/security_baseline_dev/agents/skill.yaml +23 -0
  346. package/.agents/security_review/SKILL.md +277 -55
  347. package/.agents/security_review/agents/claude.json +18 -0
  348. package/.agents/security_review/agents/copilot.json +18 -0
  349. package/.agents/security_review/agents/gemini.json +18 -0
  350. package/.agents/security_review/agents/openai.yaml +8 -0
  351. package/.agents/security_review/agents/qwen.json +18 -0
  352. package/.agents/security_review/agents/skill.yaml +22 -0
  353. package/.agents/security_review_baseline/SKILL.md +119 -25
  354. package/.agents/security_review_baseline/agents/claude.json +19 -0
  355. package/.agents/security_review_baseline/agents/copilot.json +19 -0
  356. package/.agents/security_review_baseline/agents/gemini.json +19 -0
  357. package/.agents/security_review_baseline/agents/openai.yaml +8 -0
  358. package/.agents/security_review_baseline/agents/qwen.json +19 -0
  359. package/.agents/security_review_baseline/agents/skill.yaml +23 -0
  360. package/.agents/state_rtk_beast_practices/SKILL.md +735 -15
  361. package/.agents/state_rtk_beast_practices/agents/claude.json +20 -0
  362. package/.agents/state_rtk_beast_practices/agents/copilot.json +20 -0
  363. package/.agents/state_rtk_beast_practices/agents/gemini.json +20 -0
  364. package/.agents/state_rtk_beast_practices/agents/openai.yaml +8 -0
  365. package/.agents/state_rtk_beast_practices/agents/qwen.json +20 -0
  366. package/.agents/state_rtk_beast_practices/agents/skill.yaml +24 -0
  367. package/.agents/state_zustand_beast_practices/SKILL.md +808 -11
  368. package/.agents/state_zustand_beast_practices/agents/claude.json +20 -0
  369. package/.agents/state_zustand_beast_practices/agents/copilot.json +20 -0
  370. package/.agents/state_zustand_beast_practices/agents/gemini.json +20 -0
  371. package/.agents/state_zustand_beast_practices/agents/openai.yaml +8 -0
  372. package/.agents/state_zustand_beast_practices/agents/qwen.json +20 -0
  373. package/.agents/state_zustand_beast_practices/agents/skill.yaml +24 -0
  374. package/.agents/styling_css_stack/SKILL.md +558 -12
  375. package/.agents/styling_css_stack/agents/claude.json +19 -0
  376. package/.agents/styling_css_stack/agents/copilot.json +19 -0
  377. package/.agents/styling_css_stack/agents/gemini.json +19 -0
  378. package/.agents/styling_css_stack/agents/openai.yaml +8 -0
  379. package/.agents/styling_css_stack/agents/qwen.json +19 -0
  380. package/.agents/styling_css_stack/agents/skill.yaml +23 -0
  381. package/.agents/system_design_checklist/SKILL.md +207 -48
  382. package/.agents/system_design_checklist/agents/claude.json +19 -0
  383. package/.agents/system_design_checklist/agents/copilot.json +19 -0
  384. package/.agents/system_design_checklist/agents/gemini.json +19 -0
  385. package/.agents/system_design_checklist/agents/openai.yaml +8 -0
  386. package/.agents/system_design_checklist/agents/qwen.json +19 -0
  387. package/.agents/system_design_checklist/agents/skill.yaml +23 -0
  388. package/.agents/tailwind_beast_practices/SKILL.md +512 -0
  389. package/.agents/tailwind_beast_practices/agents/claude.json +18 -0
  390. package/.agents/tailwind_beast_practices/agents/copilot.json +18 -0
  391. package/.agents/tailwind_beast_practices/agents/gemini.json +18 -0
  392. package/.agents/tailwind_beast_practices/agents/openai.yaml +8 -0
  393. package/.agents/tailwind_beast_practices/agents/qwen.json +18 -0
  394. package/.agents/tailwind_beast_practices/agents/skill.yaml +22 -0
  395. package/.agents/tanstack_beast_practices/SKILL.md +465 -11
  396. package/.agents/tanstack_beast_practices/agents/claude.json +19 -0
  397. package/.agents/tanstack_beast_practices/agents/copilot.json +19 -0
  398. package/.agents/tanstack_beast_practices/agents/gemini.json +19 -0
  399. package/.agents/tanstack_beast_practices/agents/openai.yaml +8 -0
  400. package/.agents/tanstack_beast_practices/agents/qwen.json +19 -0
  401. package/.agents/tanstack_beast_practices/agents/skill.yaml +23 -0
  402. package/.agents/tdd_workflow/SKILL.md +441 -22
  403. package/.agents/tdd_workflow/agents/claude.json +18 -0
  404. package/.agents/tdd_workflow/agents/copilot.json +18 -0
  405. package/.agents/tdd_workflow/agents/gemini.json +18 -0
  406. package/.agents/tdd_workflow/agents/openai.yaml +8 -0
  407. package/.agents/tdd_workflow/agents/qwen.json +18 -0
  408. package/.agents/tdd_workflow/agents/skill.yaml +22 -0
  409. package/.agents/testing_strategy_js/SKILL.md +636 -30
  410. package/.agents/testing_strategy_js/agents/claude.json +19 -0
  411. package/.agents/testing_strategy_js/agents/copilot.json +19 -0
  412. package/.agents/testing_strategy_js/agents/gemini.json +19 -0
  413. package/.agents/testing_strategy_js/agents/openai.yaml +8 -0
  414. package/.agents/testing_strategy_js/agents/qwen.json +19 -0
  415. package/.agents/testing_strategy_js/agents/skill.yaml +23 -0
  416. package/.agents/tests_quality_review/SKILL.md +279 -18
  417. package/.agents/tests_quality_review/agents/claude.json +19 -0
  418. package/.agents/tests_quality_review/agents/copilot.json +19 -0
  419. package/.agents/tests_quality_review/agents/gemini.json +19 -0
  420. package/.agents/tests_quality_review/agents/openai.yaml +8 -0
  421. package/.agents/tests_quality_review/agents/qwen.json +19 -0
  422. package/.agents/tests_quality_review/agents/skill.yaml +23 -0
  423. package/.agents/threat_model_baseline/SKILL.md +210 -57
  424. package/.agents/threat_model_baseline/agents/claude.json +19 -0
  425. package/.agents/threat_model_baseline/agents/copilot.json +19 -0
  426. package/.agents/threat_model_baseline/agents/gemini.json +19 -0
  427. package/.agents/threat_model_baseline/agents/openai.yaml +8 -0
  428. package/.agents/threat_model_baseline/agents/qwen.json +19 -0
  429. package/.agents/threat_model_baseline/agents/skill.yaml +23 -0
  430. package/.agents/tooling_bun_biome/SKILL.md +539 -17
  431. package/.agents/tooling_bun_biome/agents/claude.json +19 -0
  432. package/.agents/tooling_bun_biome/agents/copilot.json +19 -0
  433. package/.agents/tooling_bun_biome/agents/gemini.json +19 -0
  434. package/.agents/tooling_bun_biome/agents/openai.yaml +8 -0
  435. package/.agents/tooling_bun_biome/agents/qwen.json +19 -0
  436. package/.agents/tooling_bun_biome/agents/skill.yaml +23 -0
  437. package/.agents/typescript_beast_practices/SKILL.md +427 -8
  438. package/.agents/typescript_beast_practices/agents/claude.json +19 -0
  439. package/.agents/typescript_beast_practices/agents/copilot.json +19 -0
  440. package/.agents/typescript_beast_practices/agents/gemini.json +19 -0
  441. package/.agents/typescript_beast_practices/agents/openai.yaml +8 -0
  442. package/.agents/typescript_beast_practices/agents/qwen.json +19 -0
  443. package/.agents/typescript_beast_practices/agents/skill.yaml +23 -0
  444. package/.agents/ui_a11y_smoke_review/SKILL.md +195 -15
  445. package/.agents/ui_a11y_smoke_review/agents/claude.json +20 -0
  446. package/.agents/ui_a11y_smoke_review/agents/copilot.json +20 -0
  447. package/.agents/ui_a11y_smoke_review/agents/gemini.json +20 -0
  448. package/.agents/ui_a11y_smoke_review/agents/openai.yaml +8 -0
  449. package/.agents/ui_a11y_smoke_review/agents/qwen.json +20 -0
  450. package/.agents/ui_a11y_smoke_review/agents/skill.yaml +24 -0
  451. package/.agents/ui_inventory/SKILL.md +277 -50
  452. package/.agents/ui_inventory/agents/claude.json +18 -0
  453. package/.agents/ui_inventory/agents/copilot.json +18 -0
  454. package/.agents/ui_inventory/agents/gemini.json +18 -0
  455. package/.agents/ui_inventory/agents/openai.yaml +8 -0
  456. package/.agents/ui_inventory/agents/qwen.json +18 -0
  457. package/.agents/ui_inventory/agents/skill.yaml +22 -0
  458. package/.agents/ux_discovery/SKILL.md +214 -48
  459. package/.agents/ux_discovery/agents/claude.json +17 -0
  460. package/.agents/ux_discovery/agents/copilot.json +17 -0
  461. package/.agents/ux_discovery/agents/gemini.json +17 -0
  462. package/.agents/ux_discovery/agents/openai.yaml +8 -0
  463. package/.agents/ux_discovery/agents/qwen.json +17 -0
  464. package/.agents/ux_discovery/agents/skill.yaml +21 -0
  465. package/.agents/ux_spec/SKILL.md +282 -56
  466. package/.agents/ux_spec/agents/claude.json +18 -0
  467. package/.agents/ux_spec/agents/copilot.json +18 -0
  468. package/.agents/ux_spec/agents/gemini.json +18 -0
  469. package/.agents/ux_spec/agents/openai.yaml +8 -0
  470. package/.agents/ux_spec/agents/qwen.json +18 -0
  471. package/.agents/ux_spec/agents/skill.yaml +22 -0
  472. package/.agents/wix_iframe_sdk/SKILL.md +277 -50
  473. package/.agents/wix_iframe_sdk/agents/claude.json +18 -0
  474. package/.agents/wix_iframe_sdk/agents/copilot.json +18 -0
  475. package/.agents/wix_iframe_sdk/agents/gemini.json +18 -0
  476. package/.agents/wix_iframe_sdk/agents/openai.yaml +8 -0
  477. package/.agents/wix_iframe_sdk/agents/qwen.json +18 -0
  478. package/.agents/wix_iframe_sdk/agents/skill.yaml +22 -0
  479. package/.agents/wix_self_hosted_embedded_script/SKILL.md +605 -82
  480. package/.agents/wix_self_hosted_embedded_script/agents/claude.json +21 -0
  481. package/.agents/wix_self_hosted_embedded_script/agents/copilot.json +21 -0
  482. package/.agents/wix_self_hosted_embedded_script/agents/gemini.json +21 -0
  483. package/.agents/wix_self_hosted_embedded_script/agents/openai.yaml +8 -0
  484. package/.agents/wix_self_hosted_embedded_script/agents/qwen.json +21 -0
  485. package/.agents/wix_self_hosted_embedded_script/agents/skill.yaml +25 -0
  486. package/.agents/workflows/auto-restart-containers.md +51 -0
  487. package/.agents/workflows/pipeline-rules.md +137 -0
  488. package/.agents/workflows/start-task.md +121 -0
  489. package/AGENTS.md +3 -0
  490. package/AGENTS.yaml +107 -0
  491. package/README.md +2 -2
  492. package/agents/architect.md +21 -0
  493. package/agents/conductor.md +81 -12
  494. package/agents/devops.md +48 -0
  495. package/agents/orchestrator.claude.json +97 -0
  496. package/agents/orchestrator.copilot.json +97 -0
  497. package/agents/orchestrator.gemini.json +97 -0
  498. package/agents/orchestrator.openai.yaml +94 -0
  499. package/agents/orchestrator.qwen.json +97 -0
  500. package/agents/product_manager.md +6 -0
  501. package/agents/reviewer.md +14 -0
  502. package/agents/senior_full_stack.md +16 -0
  503. package/agents/tester.md +70 -1
  504. package/agents/ux_ui_designer.md +282 -272
  505. package/dist/doctor.js +6 -1
  506. package/dist/installer.js +4 -0
  507. package/dist/metadataAudit.d.ts +15 -0
  508. package/dist/metadataAudit.js +277 -0
  509. package/dist/platforms/adapters.js +32 -5
  510. package/dist/platforms/metadataSidecars.d.ts +55 -0
  511. package/dist/platforms/metadataSidecars.js +96 -0
  512. package/dist/types.d.ts +1 -0
  513. package/locales/en/.agents/a11y_baseline/SKILL.md +260 -41
  514. package/locales/en/.agents/a11y_baseline/agents/claude.json +18 -0
  515. package/locales/en/.agents/a11y_baseline/agents/copilot.json +18 -0
  516. package/locales/en/.agents/a11y_baseline/agents/gemini.json +18 -0
  517. package/locales/en/.agents/a11y_baseline/agents/openai.yaml +8 -0
  518. package/locales/en/.agents/a11y_baseline/agents/qwen.json +18 -0
  519. package/locales/en/.agents/a11y_baseline/agents/skill.yaml +22 -0
  520. package/locales/en/.agents/adr_log/SKILL.md +330 -30
  521. package/locales/en/.agents/adr_log/agents/claude.json +18 -0
  522. package/locales/en/.agents/adr_log/agents/copilot.json +18 -0
  523. package/locales/en/.agents/adr_log/agents/gemini.json +18 -0
  524. package/locales/en/.agents/adr_log/agents/openai.yaml +8 -0
  525. package/locales/en/.agents/adr_log/agents/qwen.json +18 -0
  526. package/locales/en/.agents/adr_log/agents/skill.yaml +22 -0
  527. package/locales/en/.agents/api_contract_compliance_review/SKILL.md +218 -12
  528. package/locales/en/.agents/api_contract_compliance_review/agents/claude.json +19 -0
  529. package/locales/en/.agents/api_contract_compliance_review/agents/copilot.json +19 -0
  530. package/locales/en/.agents/api_contract_compliance_review/agents/gemini.json +19 -0
  531. package/locales/en/.agents/api_contract_compliance_review/agents/openai.yaml +8 -0
  532. package/locales/en/.agents/api_contract_compliance_review/agents/qwen.json +19 -0
  533. package/locales/en/.agents/api_contract_compliance_review/agents/skill.yaml +23 -0
  534. package/locales/en/.agents/api_contracts/SKILL.md +323 -36
  535. package/locales/en/.agents/api_contracts/agents/claude.json +17 -0
  536. package/locales/en/.agents/api_contracts/agents/copilot.json +17 -0
  537. package/locales/en/.agents/api_contracts/agents/gemini.json +17 -0
  538. package/locales/en/.agents/api_contracts/agents/openai.yaml +8 -0
  539. package/locales/en/.agents/api_contracts/agents/qwen.json +17 -0
  540. package/locales/en/.agents/api_contracts/agents/skill.yaml +21 -0
  541. package/locales/en/.agents/architecture_compliance_review/SKILL.md +206 -10
  542. package/locales/en/.agents/architecture_compliance_review/agents/claude.json +19 -0
  543. package/locales/en/.agents/architecture_compliance_review/agents/copilot.json +19 -0
  544. package/locales/en/.agents/architecture_compliance_review/agents/gemini.json +19 -0
  545. package/locales/en/.agents/architecture_compliance_review/agents/openai.yaml +8 -0
  546. package/locales/en/.agents/architecture_compliance_review/agents/qwen.json +19 -0
  547. package/locales/en/.agents/architecture_compliance_review/agents/skill.yaml +23 -0
  548. package/locales/en/.agents/architecture_doc/SKILL.md +374 -82
  549. package/locales/en/.agents/architecture_doc/agents/claude.json +18 -0
  550. package/locales/en/.agents/architecture_doc/agents/copilot.json +18 -0
  551. package/locales/en/.agents/architecture_doc/agents/gemini.json +18 -0
  552. package/locales/en/.agents/architecture_doc/agents/openai.yaml +8 -0
  553. package/locales/en/.agents/architecture_doc/agents/qwen.json +18 -0
  554. package/locales/en/.agents/architecture_doc/agents/skill.yaml +22 -0
  555. package/locales/en/.agents/board/SKILL.md +232 -43
  556. package/locales/en/.agents/board/agents/claude.json +16 -0
  557. package/locales/en/.agents/board/agents/copilot.json +16 -0
  558. package/locales/en/.agents/board/agents/gemini.json +16 -0
  559. package/locales/en/.agents/board/agents/openai.yaml +8 -0
  560. package/locales/en/.agents/board/agents/qwen.json +16 -0
  561. package/locales/en/.agents/board/agents/skill.yaml +20 -0
  562. package/locales/en/.agents/cloud_infrastructure_security/SKILL.md +277 -68
  563. package/locales/en/.agents/cloud_infrastructure_security/agents/claude.json +19 -0
  564. package/locales/en/.agents/cloud_infrastructure_security/agents/copilot.json +19 -0
  565. package/locales/en/.agents/cloud_infrastructure_security/agents/gemini.json +19 -0
  566. package/locales/en/.agents/cloud_infrastructure_security/agents/openai.yaml +8 -0
  567. package/locales/en/.agents/cloud_infrastructure_security/agents/qwen.json +19 -0
  568. package/locales/en/.agents/cloud_infrastructure_security/agents/skill.yaml +23 -0
  569. package/locales/en/.agents/code_review_checklist/SKILL.md +194 -41
  570. package/locales/en/.agents/code_review_checklist/agents/claude.json +18 -0
  571. package/locales/en/.agents/code_review_checklist/agents/copilot.json +18 -0
  572. package/locales/en/.agents/code_review_checklist/agents/gemini.json +18 -0
  573. package/locales/en/.agents/code_review_checklist/agents/openai.yaml +8 -0
  574. package/locales/en/.agents/code_review_checklist/agents/qwen.json +18 -0
  575. package/locales/en/.agents/code_review_checklist/agents/skill.yaml +22 -0
  576. package/locales/en/.agents/current_state_analysis/SKILL.md +225 -44
  577. package/locales/en/.agents/current_state_analysis/agents/claude.json +19 -0
  578. package/locales/en/.agents/current_state_analysis/agents/copilot.json +19 -0
  579. package/locales/en/.agents/current_state_analysis/agents/gemini.json +19 -0
  580. package/locales/en/.agents/current_state_analysis/agents/openai.yaml +8 -0
  581. package/locales/en/.agents/current_state_analysis/agents/qwen.json +19 -0
  582. package/locales/en/.agents/current_state_analysis/agents/skill.yaml +23 -0
  583. package/locales/en/.agents/data_model/SKILL.md +277 -32
  584. package/locales/en/.agents/data_model/agents/claude.json +17 -0
  585. package/locales/en/.agents/data_model/agents/copilot.json +17 -0
  586. package/locales/en/.agents/data_model/agents/gemini.json +17 -0
  587. package/locales/en/.agents/data_model/agents/openai.yaml +8 -0
  588. package/locales/en/.agents/data_model/agents/qwen.json +17 -0
  589. package/locales/en/.agents/data_model/agents/skill.yaml +21 -0
  590. package/locales/en/.agents/dependency_supply_chain_review/SKILL.md +291 -11
  591. package/locales/en/.agents/dependency_supply_chain_review/agents/claude.json +20 -0
  592. package/locales/en/.agents/dependency_supply_chain_review/agents/copilot.json +20 -0
  593. package/locales/en/.agents/dependency_supply_chain_review/agents/gemini.json +20 -0
  594. package/locales/en/.agents/dependency_supply_chain_review/agents/openai.yaml +8 -0
  595. package/locales/en/.agents/dependency_supply_chain_review/agents/qwen.json +20 -0
  596. package/locales/en/.agents/dependency_supply_chain_review/agents/skill.yaml +24 -0
  597. package/locales/en/.agents/deployment_ci_plan/SKILL.md +404 -45
  598. package/locales/en/.agents/deployment_ci_plan/agents/claude.json +19 -0
  599. package/locales/en/.agents/deployment_ci_plan/agents/copilot.json +19 -0
  600. package/locales/en/.agents/deployment_ci_plan/agents/gemini.json +19 -0
  601. package/locales/en/.agents/deployment_ci_plan/agents/openai.yaml +8 -0
  602. package/locales/en/.agents/deployment_ci_plan/agents/qwen.json +19 -0
  603. package/locales/en/.agents/deployment_ci_plan/agents/skill.yaml +23 -0
  604. package/locales/en/.agents/design_intake/SKILL.md +221 -67
  605. package/locales/en/.agents/design_intake/agents/claude.json +17 -0
  606. package/locales/en/.agents/design_intake/agents/copilot.json +17 -0
  607. package/locales/en/.agents/design_intake/agents/gemini.json +17 -0
  608. package/locales/en/.agents/design_intake/agents/openai.yaml +8 -0
  609. package/locales/en/.agents/design_intake/agents/qwen.json +17 -0
  610. package/locales/en/.agents/design_intake/agents/skill.yaml +21 -0
  611. package/locales/en/.agents/design_parity_review/SKILL.md +213 -87
  612. package/locales/en/.agents/design_parity_review/agents/claude.json +18 -0
  613. package/locales/en/.agents/design_parity_review/agents/copilot.json +18 -0
  614. package/locales/en/.agents/design_parity_review/agents/gemini.json +18 -0
  615. package/locales/en/.agents/design_parity_review/agents/openai.yaml +8 -0
  616. package/locales/en/.agents/design_parity_review/agents/qwen.json +18 -0
  617. package/locales/en/.agents/design_parity_review/agents/skill.yaml +22 -0
  618. package/locales/en/.agents/design_systems/SKILL.md +432 -15
  619. package/locales/en/.agents/design_systems/agents/claude.json +18 -0
  620. package/locales/en/.agents/design_systems/agents/copilot.json +18 -0
  621. package/locales/en/.agents/design_systems/agents/gemini.json +18 -0
  622. package/locales/en/.agents/design_systems/agents/openai.yaml +8 -0
  623. package/locales/en/.agents/design_systems/agents/qwen.json +18 -0
  624. package/locales/en/.agents/design_systems/agents/skill.yaml +22 -0
  625. package/locales/en/.agents/dev_reference_snippets/SKILL.md +585 -397
  626. package/locales/en/.agents/dev_reference_snippets/agents/claude.json +19 -0
  627. package/locales/en/.agents/dev_reference_snippets/agents/copilot.json +19 -0
  628. package/locales/en/.agents/dev_reference_snippets/agents/gemini.json +19 -0
  629. package/locales/en/.agents/dev_reference_snippets/agents/openai.yaml +8 -0
  630. package/locales/en/.agents/dev_reference_snippets/agents/qwen.json +19 -0
  631. package/locales/en/.agents/dev_reference_snippets/agents/skill.yaml +23 -0
  632. package/locales/en/.agents/docker_kubernetes_architecture/SKILL.md +473 -137
  633. package/locales/en/.agents/docker_kubernetes_architecture/agents/claude.json +19 -0
  634. package/locales/en/.agents/docker_kubernetes_architecture/agents/copilot.json +19 -0
  635. package/locales/en/.agents/docker_kubernetes_architecture/agents/gemini.json +19 -0
  636. package/locales/en/.agents/docker_kubernetes_architecture/agents/openai.yaml +8 -0
  637. package/locales/en/.agents/docker_kubernetes_architecture/agents/qwen.json +19 -0
  638. package/locales/en/.agents/docker_kubernetes_architecture/agents/skill.yaml +23 -0
  639. package/locales/en/.agents/es2025_beast_practices/SKILL.md +440 -15
  640. package/locales/en/.agents/es2025_beast_practices/agents/claude.json +18 -0
  641. package/locales/en/.agents/es2025_beast_practices/agents/copilot.json +18 -0
  642. package/locales/en/.agents/es2025_beast_practices/agents/gemini.json +18 -0
  643. package/locales/en/.agents/es2025_beast_practices/agents/openai.yaml +8 -0
  644. package/locales/en/.agents/es2025_beast_practices/agents/qwen.json +18 -0
  645. package/locales/en/.agents/es2025_beast_practices/agents/skill.yaml +22 -0
  646. package/locales/en/.agents/gates/SKILL.md +128 -29
  647. package/locales/en/.agents/gates/agents/claude.json +16 -0
  648. package/locales/en/.agents/gates/agents/copilot.json +16 -0
  649. package/locales/en/.agents/gates/agents/gemini.json +16 -0
  650. package/locales/en/.agents/gates/agents/openai.yaml +8 -0
  651. package/locales/en/.agents/gates/agents/qwen.json +16 -0
  652. package/locales/en/.agents/gates/agents/skill.yaml +20 -0
  653. package/locales/en/.agents/go_beast_practices/SKILL.md +557 -23
  654. package/locales/en/.agents/go_beast_practices/agents/claude.json +19 -0
  655. package/locales/en/.agents/go_beast_practices/agents/copilot.json +19 -0
  656. package/locales/en/.agents/go_beast_practices/agents/gemini.json +19 -0
  657. package/locales/en/.agents/go_beast_practices/agents/openai.yaml +8 -0
  658. package/locales/en/.agents/go_beast_practices/agents/qwen.json +19 -0
  659. package/locales/en/.agents/go_beast_practices/agents/skill.yaml +23 -0
  660. package/locales/en/.agents/google_stitch_skill/SKILL.md +553 -0
  661. package/locales/en/.agents/google_stitch_skill/agents/claude.json +18 -0
  662. package/locales/en/.agents/google_stitch_skill/agents/copilot.json +18 -0
  663. package/locales/en/.agents/google_stitch_skill/agents/gemini.json +18 -0
  664. package/locales/en/.agents/google_stitch_skill/agents/openai.yaml +8 -0
  665. package/locales/en/.agents/google_stitch_skill/agents/qwen.json +18 -0
  666. package/locales/en/.agents/google_stitch_skill/agents/skill.yaml +22 -0
  667. package/locales/en/.agents/google_stitch_skill/examples/scr_prompts.md +21 -0
  668. package/locales/en/.agents/google_stitch_skill/resources/budget_planner.md +23 -0
  669. package/locales/en/.agents/handoff/SKILL.md +206 -46
  670. package/locales/en/.agents/handoff/agents/claude.json +16 -0
  671. package/locales/en/.agents/handoff/agents/copilot.json +16 -0
  672. package/locales/en/.agents/handoff/agents/gemini.json +16 -0
  673. package/locales/en/.agents/handoff/agents/openai.yaml +8 -0
  674. package/locales/en/.agents/handoff/agents/qwen.json +16 -0
  675. package/locales/en/.agents/handoff/agents/skill.yaml +20 -0
  676. package/locales/en/.agents/k8s_manifests_conventions/SKILL.md +540 -167
  677. package/locales/en/.agents/k8s_manifests_conventions/agents/claude.json +18 -0
  678. package/locales/en/.agents/k8s_manifests_conventions/agents/copilot.json +18 -0
  679. package/locales/en/.agents/k8s_manifests_conventions/agents/gemini.json +18 -0
  680. package/locales/en/.agents/k8s_manifests_conventions/agents/openai.yaml +8 -0
  681. package/locales/en/.agents/k8s_manifests_conventions/agents/qwen.json +18 -0
  682. package/locales/en/.agents/k8s_manifests_conventions/agents/skill.yaml +22 -0
  683. package/locales/en/.agents/memory/SKILL.md +211 -21
  684. package/locales/en/.agents/memory/agents/claude.json +16 -0
  685. package/locales/en/.agents/memory/agents/copilot.json +16 -0
  686. package/locales/en/.agents/memory/agents/gemini.json +16 -0
  687. package/locales/en/.agents/memory/agents/openai.yaml +8 -0
  688. package/locales/en/.agents/memory/agents/qwen.json +16 -0
  689. package/locales/en/.agents/memory/agents/skill.yaml +20 -0
  690. package/locales/en/.agents/mongodb_mongoose_best_practices/SKILL.md +669 -178
  691. package/locales/en/.agents/mongodb_mongoose_best_practices/agents/claude.json +19 -0
  692. package/locales/en/.agents/mongodb_mongoose_best_practices/agents/copilot.json +19 -0
  693. package/locales/en/.agents/mongodb_mongoose_best_practices/agents/gemini.json +19 -0
  694. package/locales/en/.agents/mongodb_mongoose_best_practices/agents/openai.yaml +8 -0
  695. package/locales/en/.agents/mongodb_mongoose_best_practices/agents/qwen.json +19 -0
  696. package/locales/en/.agents/mongodb_mongoose_best_practices/agents/skill.yaml +23 -0
  697. package/locales/en/.agents/n8n_pinecone_qdrant_supabase/SKILL.md +669 -59
  698. package/locales/en/.agents/n8n_pinecone_qdrant_supabase/agents/claude.json +20 -0
  699. package/locales/en/.agents/n8n_pinecone_qdrant_supabase/agents/copilot.json +20 -0
  700. package/locales/en/.agents/n8n_pinecone_qdrant_supabase/agents/gemini.json +20 -0
  701. package/locales/en/.agents/n8n_pinecone_qdrant_supabase/agents/openai.yaml +8 -0
  702. package/locales/en/.agents/n8n_pinecone_qdrant_supabase/agents/qwen.json +20 -0
  703. package/locales/en/.agents/n8n_pinecone_qdrant_supabase/agents/skill.yaml +24 -0
  704. package/locales/en/.agents/node_express_beast_practices/SKILL.md +718 -19
  705. package/locales/en/.agents/node_express_beast_practices/agents/claude.json +20 -0
  706. package/locales/en/.agents/node_express_beast_practices/agents/copilot.json +20 -0
  707. package/locales/en/.agents/node_express_beast_practices/agents/gemini.json +20 -0
  708. package/locales/en/.agents/node_express_beast_practices/agents/openai.yaml +8 -0
  709. package/locales/en/.agents/node_express_beast_practices/agents/qwen.json +20 -0
  710. package/locales/en/.agents/node_express_beast_practices/agents/skill.yaml +24 -0
  711. package/locales/en/.agents/observability_logging/SKILL.md +499 -16
  712. package/locales/en/.agents/observability_logging/agents/claude.json +17 -0
  713. package/locales/en/.agents/observability_logging/agents/copilot.json +17 -0
  714. package/locales/en/.agents/observability_logging/agents/gemini.json +17 -0
  715. package/locales/en/.agents/observability_logging/agents/openai.yaml +8 -0
  716. package/locales/en/.agents/observability_logging/agents/qwen.json +17 -0
  717. package/locales/en/.agents/observability_logging/agents/skill.yaml +21 -0
  718. package/locales/en/.agents/observability_plan/SKILL.md +273 -32
  719. package/locales/en/.agents/observability_plan/agents/claude.json +18 -0
  720. package/locales/en/.agents/observability_plan/agents/copilot.json +18 -0
  721. package/locales/en/.agents/observability_plan/agents/gemini.json +18 -0
  722. package/locales/en/.agents/observability_plan/agents/openai.yaml +8 -0
  723. package/locales/en/.agents/observability_plan/agents/qwen.json +18 -0
  724. package/locales/en/.agents/observability_plan/agents/skill.yaml +22 -0
  725. package/locales/en/.agents/observability_review/SKILL.md +245 -11
  726. package/locales/en/.agents/observability_review/agents/claude.json +18 -0
  727. package/locales/en/.agents/observability_review/agents/copilot.json +18 -0
  728. package/locales/en/.agents/observability_review/agents/gemini.json +18 -0
  729. package/locales/en/.agents/observability_review/agents/openai.yaml +8 -0
  730. package/locales/en/.agents/observability_review/agents/qwen.json +18 -0
  731. package/locales/en/.agents/observability_review/agents/skill.yaml +22 -0
  732. package/locales/en/.agents/performance_review_baseline/SKILL.md +232 -10
  733. package/locales/en/.agents/performance_review_baseline/agents/claude.json +19 -0
  734. package/locales/en/.agents/performance_review_baseline/agents/copilot.json +19 -0
  735. package/locales/en/.agents/performance_review_baseline/agents/gemini.json +19 -0
  736. package/locales/en/.agents/performance_review_baseline/agents/openai.yaml +8 -0
  737. package/locales/en/.agents/performance_review_baseline/agents/qwen.json +19 -0
  738. package/locales/en/.agents/performance_review_baseline/agents/skill.yaml +23 -0
  739. package/locales/en/.agents/pm_backlog/SKILL.md +239 -21
  740. package/locales/en/.agents/pm_backlog/agents/claude.json +18 -0
  741. package/locales/en/.agents/pm_backlog/agents/copilot.json +18 -0
  742. package/locales/en/.agents/pm_backlog/agents/gemini.json +18 -0
  743. package/locales/en/.agents/pm_backlog/agents/openai.yaml +8 -0
  744. package/locales/en/.agents/pm_backlog/agents/qwen.json +18 -0
  745. package/locales/en/.agents/pm_backlog/agents/skill.yaml +22 -0
  746. package/locales/en/.agents/pm_interview/SKILL.md +178 -37
  747. package/locales/en/.agents/pm_interview/agents/claude.json +18 -0
  748. package/locales/en/.agents/pm_interview/agents/copilot.json +18 -0
  749. package/locales/en/.agents/pm_interview/agents/gemini.json +18 -0
  750. package/locales/en/.agents/pm_interview/agents/openai.yaml +8 -0
  751. package/locales/en/.agents/pm_interview/agents/qwen.json +18 -0
  752. package/locales/en/.agents/pm_interview/agents/skill.yaml +22 -0
  753. package/locales/en/.agents/pm_prd/SKILL.md +197 -38
  754. package/locales/en/.agents/pm_prd/agents/claude.json +18 -0
  755. package/locales/en/.agents/pm_prd/agents/copilot.json +18 -0
  756. package/locales/en/.agents/pm_prd/agents/gemini.json +18 -0
  757. package/locales/en/.agents/pm_prd/agents/openai.yaml +8 -0
  758. package/locales/en/.agents/pm_prd/agents/qwen.json +18 -0
  759. package/locales/en/.agents/pm_prd/agents/skill.yaml +22 -0
  760. package/locales/en/.agents/qa_api_contract_tests/SKILL.md +207 -16
  761. package/locales/en/.agents/qa_api_contract_tests/agents/claude.json +19 -0
  762. package/locales/en/.agents/qa_api_contract_tests/agents/copilot.json +19 -0
  763. package/locales/en/.agents/qa_api_contract_tests/agents/gemini.json +19 -0
  764. package/locales/en/.agents/qa_api_contract_tests/agents/openai.yaml +8 -0
  765. package/locales/en/.agents/qa_api_contract_tests/agents/qwen.json +19 -0
  766. package/locales/en/.agents/qa_api_contract_tests/agents/skill.yaml +23 -0
  767. package/locales/en/.agents/qa_browser_testing/SKILL.md +255 -0
  768. package/locales/en/.agents/qa_browser_testing/agents/claude.json +19 -0
  769. package/locales/en/.agents/qa_browser_testing/agents/copilot.json +19 -0
  770. package/locales/en/.agents/qa_browser_testing/agents/gemini.json +19 -0
  771. package/locales/en/.agents/qa_browser_testing/agents/openai.yaml +8 -0
  772. package/locales/en/.agents/qa_browser_testing/agents/qwen.json +19 -0
  773. package/locales/en/.agents/qa_browser_testing/agents/skill.yaml +23 -0
  774. package/locales/en/.agents/qa_e2e_playwright/SKILL.md +313 -0
  775. package/locales/en/.agents/qa_e2e_playwright/agents/claude.json +19 -0
  776. package/locales/en/.agents/qa_e2e_playwright/agents/copilot.json +19 -0
  777. package/locales/en/.agents/qa_e2e_playwright/agents/gemini.json +19 -0
  778. package/locales/en/.agents/qa_e2e_playwright/agents/openai.yaml +8 -0
  779. package/locales/en/.agents/qa_e2e_playwright/agents/qwen.json +19 -0
  780. package/locales/en/.agents/qa_e2e_playwright/agents/skill.yaml +23 -0
  781. package/locales/en/.agents/qa_manual_run/SKILL.md +202 -9
  782. package/locales/en/.agents/qa_manual_run/agents/claude.json +18 -0
  783. package/locales/en/.agents/qa_manual_run/agents/copilot.json +18 -0
  784. package/locales/en/.agents/qa_manual_run/agents/gemini.json +18 -0
  785. package/locales/en/.agents/qa_manual_run/agents/openai.yaml +8 -0
  786. package/locales/en/.agents/qa_manual_run/agents/qwen.json +18 -0
  787. package/locales/en/.agents/qa_manual_run/agents/skill.yaml +22 -0
  788. package/locales/en/.agents/qa_regression_baseline/SKILL.md +217 -0
  789. package/locales/en/.agents/qa_regression_baseline/agents/claude.json +19 -0
  790. package/locales/en/.agents/qa_regression_baseline/agents/copilot.json +19 -0
  791. package/locales/en/.agents/qa_regression_baseline/agents/gemini.json +19 -0
  792. package/locales/en/.agents/qa_regression_baseline/agents/openai.yaml +8 -0
  793. package/locales/en/.agents/qa_regression_baseline/agents/qwen.json +19 -0
  794. package/locales/en/.agents/qa_regression_baseline/agents/skill.yaml +23 -0
  795. package/locales/en/.agents/qa_security_smoke_tests/SKILL.md +182 -8
  796. package/locales/en/.agents/qa_security_smoke_tests/agents/claude.json +19 -0
  797. package/locales/en/.agents/qa_security_smoke_tests/agents/copilot.json +19 -0
  798. package/locales/en/.agents/qa_security_smoke_tests/agents/gemini.json +19 -0
  799. package/locales/en/.agents/qa_security_smoke_tests/agents/openai.yaml +8 -0
  800. package/locales/en/.agents/qa_security_smoke_tests/agents/qwen.json +19 -0
  801. package/locales/en/.agents/qa_security_smoke_tests/agents/skill.yaml +23 -0
  802. package/locales/en/.agents/qa_test_plan/SKILL.md +197 -14
  803. package/locales/en/.agents/qa_test_plan/agents/claude.json +18 -0
  804. package/locales/en/.agents/qa_test_plan/agents/copilot.json +18 -0
  805. package/locales/en/.agents/qa_test_plan/agents/gemini.json +18 -0
  806. package/locales/en/.agents/qa_test_plan/agents/openai.yaml +8 -0
  807. package/locales/en/.agents/qa_test_plan/agents/qwen.json +18 -0
  808. package/locales/en/.agents/qa_test_plan/agents/skill.yaml +22 -0
  809. package/locales/en/.agents/qa_ui_a11y_smoke/SKILL.md +224 -6
  810. package/locales/en/.agents/qa_ui_a11y_smoke/agents/claude.json +20 -0
  811. package/locales/en/.agents/qa_ui_a11y_smoke/agents/copilot.json +20 -0
  812. package/locales/en/.agents/qa_ui_a11y_smoke/agents/gemini.json +20 -0
  813. package/locales/en/.agents/qa_ui_a11y_smoke/agents/openai.yaml +8 -0
  814. package/locales/en/.agents/qa_ui_a11y_smoke/agents/qwen.json +20 -0
  815. package/locales/en/.agents/qa_ui_a11y_smoke/agents/skill.yaml +24 -0
  816. package/locales/en/.agents/react_15_3_wix_iframe/SKILL.md +419 -20
  817. package/locales/en/.agents/react_15_3_wix_iframe/agents/claude.json +21 -0
  818. package/locales/en/.agents/react_15_3_wix_iframe/agents/copilot.json +21 -0
  819. package/locales/en/.agents/react_15_3_wix_iframe/agents/gemini.json +21 -0
  820. package/locales/en/.agents/react_15_3_wix_iframe/agents/openai.yaml +8 -0
  821. package/locales/en/.agents/react_15_3_wix_iframe/agents/qwen.json +21 -0
  822. package/locales/en/.agents/react_15_3_wix_iframe/agents/skill.yaml +25 -0
  823. package/locales/en/.agents/react_beast_practices/SKILL.md +285 -18
  824. package/locales/en/.agents/react_beast_practices/agents/claude.json +18 -0
  825. package/locales/en/.agents/react_beast_practices/agents/copilot.json +18 -0
  826. package/locales/en/.agents/react_beast_practices/agents/gemini.json +18 -0
  827. package/locales/en/.agents/react_beast_practices/agents/openai.yaml +8 -0
  828. package/locales/en/.agents/react_beast_practices/agents/qwen.json +18 -0
  829. package/locales/en/.agents/react_beast_practices/agents/skill.yaml +22 -0
  830. package/locales/en/.agents/release_gate/SKILL.md +205 -69
  831. package/locales/en/.agents/release_gate/agents/claude.json +18 -0
  832. package/locales/en/.agents/release_gate/agents/copilot.json +18 -0
  833. package/locales/en/.agents/release_gate/agents/gemini.json +18 -0
  834. package/locales/en/.agents/release_gate/agents/openai.yaml +8 -0
  835. package/locales/en/.agents/release_gate/agents/qwen.json +18 -0
  836. package/locales/en/.agents/release_gate/agents/skill.yaml +22 -0
  837. package/locales/en/.agents/release_gate_checklist_template/SKILL.md +175 -61
  838. package/locales/en/.agents/release_gate_checklist_template/agents/claude.json +20 -0
  839. package/locales/en/.agents/release_gate_checklist_template/agents/copilot.json +20 -0
  840. package/locales/en/.agents/release_gate_checklist_template/agents/gemini.json +20 -0
  841. package/locales/en/.agents/release_gate_checklist_template/agents/openai.yaml +8 -0
  842. package/locales/en/.agents/release_gate_checklist_template/agents/qwen.json +20 -0
  843. package/locales/en/.agents/release_gate_checklist_template/agents/skill.yaml +24 -0
  844. package/locales/en/.agents/review_reference_snippets/SKILL.md +163 -46
  845. package/locales/en/.agents/review_reference_snippets/agents/claude.json +19 -0
  846. package/locales/en/.agents/review_reference_snippets/agents/copilot.json +19 -0
  847. package/locales/en/.agents/review_reference_snippets/agents/gemini.json +19 -0
  848. package/locales/en/.agents/review_reference_snippets/agents/openai.yaml +8 -0
  849. package/locales/en/.agents/review_reference_snippets/agents/qwen.json +19 -0
  850. package/locales/en/.agents/review_reference_snippets/agents/skill.yaml +23 -0
  851. package/locales/en/.agents/security_baseline_dev/SKILL.md +496 -16
  852. package/locales/en/.agents/security_baseline_dev/agents/claude.json +19 -0
  853. package/locales/en/.agents/security_baseline_dev/agents/copilot.json +19 -0
  854. package/locales/en/.agents/security_baseline_dev/agents/gemini.json +19 -0
  855. package/locales/en/.agents/security_baseline_dev/agents/openai.yaml +8 -0
  856. package/locales/en/.agents/security_baseline_dev/agents/qwen.json +19 -0
  857. package/locales/en/.agents/security_baseline_dev/agents/skill.yaml +23 -0
  858. package/locales/en/.agents/security_review/SKILL.md +277 -55
  859. package/locales/en/.agents/security_review/agents/claude.json +18 -0
  860. package/locales/en/.agents/security_review/agents/copilot.json +18 -0
  861. package/locales/en/.agents/security_review/agents/gemini.json +18 -0
  862. package/locales/en/.agents/security_review/agents/openai.yaml +8 -0
  863. package/locales/en/.agents/security_review/agents/qwen.json +18 -0
  864. package/locales/en/.agents/security_review/agents/skill.yaml +22 -0
  865. package/locales/en/.agents/security_review_baseline/SKILL.md +113 -19
  866. package/locales/en/.agents/security_review_baseline/agents/claude.json +18 -0
  867. package/locales/en/.agents/security_review_baseline/agents/copilot.json +18 -0
  868. package/locales/en/.agents/security_review_baseline/agents/gemini.json +18 -0
  869. package/locales/en/.agents/security_review_baseline/agents/openai.yaml +8 -0
  870. package/locales/en/.agents/security_review_baseline/agents/qwen.json +18 -0
  871. package/locales/en/.agents/security_review_baseline/agents/skill.yaml +22 -0
  872. package/locales/en/.agents/state_rtk_beast_practices/SKILL.md +735 -15
  873. package/locales/en/.agents/state_rtk_beast_practices/agents/claude.json +20 -0
  874. package/locales/en/.agents/state_rtk_beast_practices/agents/copilot.json +20 -0
  875. package/locales/en/.agents/state_rtk_beast_practices/agents/gemini.json +20 -0
  876. package/locales/en/.agents/state_rtk_beast_practices/agents/openai.yaml +8 -0
  877. package/locales/en/.agents/state_rtk_beast_practices/agents/qwen.json +20 -0
  878. package/locales/en/.agents/state_rtk_beast_practices/agents/skill.yaml +24 -0
  879. package/locales/en/.agents/state_zustand_beast_practices/SKILL.md +808 -11
  880. package/locales/en/.agents/state_zustand_beast_practices/agents/claude.json +20 -0
  881. package/locales/en/.agents/state_zustand_beast_practices/agents/copilot.json +20 -0
  882. package/locales/en/.agents/state_zustand_beast_practices/agents/gemini.json +20 -0
  883. package/locales/en/.agents/state_zustand_beast_practices/agents/openai.yaml +8 -0
  884. package/locales/en/.agents/state_zustand_beast_practices/agents/qwen.json +20 -0
  885. package/locales/en/.agents/state_zustand_beast_practices/agents/skill.yaml +24 -0
  886. package/locales/en/.agents/styling_css_stack/SKILL.md +558 -12
  887. package/locales/en/.agents/styling_css_stack/agents/claude.json +19 -0
  888. package/locales/en/.agents/styling_css_stack/agents/copilot.json +19 -0
  889. package/locales/en/.agents/styling_css_stack/agents/gemini.json +19 -0
  890. package/locales/en/.agents/styling_css_stack/agents/openai.yaml +8 -0
  891. package/locales/en/.agents/styling_css_stack/agents/qwen.json +19 -0
  892. package/locales/en/.agents/styling_css_stack/agents/skill.yaml +23 -0
  893. package/locales/en/.agents/system_design_checklist/SKILL.md +201 -42
  894. package/locales/en/.agents/system_design_checklist/agents/claude.json +18 -0
  895. package/locales/en/.agents/system_design_checklist/agents/copilot.json +18 -0
  896. package/locales/en/.agents/system_design_checklist/agents/gemini.json +18 -0
  897. package/locales/en/.agents/system_design_checklist/agents/openai.yaml +8 -0
  898. package/locales/en/.agents/system_design_checklist/agents/qwen.json +18 -0
  899. package/locales/en/.agents/system_design_checklist/agents/skill.yaml +22 -0
  900. package/locales/en/.agents/tailwind_beast_practices/SKILL.md +512 -0
  901. package/locales/en/.agents/tailwind_beast_practices/agents/claude.json +18 -0
  902. package/locales/en/.agents/tailwind_beast_practices/agents/copilot.json +18 -0
  903. package/locales/en/.agents/tailwind_beast_practices/agents/gemini.json +18 -0
  904. package/locales/en/.agents/tailwind_beast_practices/agents/openai.yaml +8 -0
  905. package/locales/en/.agents/tailwind_beast_practices/agents/qwen.json +18 -0
  906. package/locales/en/.agents/tailwind_beast_practices/agents/skill.yaml +22 -0
  907. package/locales/en/.agents/tanstack_beast_practices/SKILL.md +473 -19
  908. package/locales/en/.agents/tanstack_beast_practices/agents/claude.json +18 -0
  909. package/locales/en/.agents/tanstack_beast_practices/agents/copilot.json +18 -0
  910. package/locales/en/.agents/tanstack_beast_practices/agents/gemini.json +18 -0
  911. package/locales/en/.agents/tanstack_beast_practices/agents/openai.yaml +8 -0
  912. package/locales/en/.agents/tanstack_beast_practices/agents/qwen.json +18 -0
  913. package/locales/en/.agents/tanstack_beast_practices/agents/skill.yaml +22 -0
  914. package/locales/en/.agents/tdd_workflow/SKILL.md +452 -33
  915. package/locales/en/.agents/tdd_workflow/agents/claude.json +17 -0
  916. package/locales/en/.agents/tdd_workflow/agents/copilot.json +17 -0
  917. package/locales/en/.agents/tdd_workflow/agents/gemini.json +17 -0
  918. package/locales/en/.agents/tdd_workflow/agents/openai.yaml +8 -0
  919. package/locales/en/.agents/tdd_workflow/agents/qwen.json +17 -0
  920. package/locales/en/.agents/tdd_workflow/agents/skill.yaml +21 -0
  921. package/locales/en/.agents/testing_strategy_js/SKILL.md +635 -29
  922. package/locales/en/.agents/testing_strategy_js/agents/claude.json +19 -0
  923. package/locales/en/.agents/testing_strategy_js/agents/copilot.json +19 -0
  924. package/locales/en/.agents/testing_strategy_js/agents/gemini.json +19 -0
  925. package/locales/en/.agents/testing_strategy_js/agents/openai.yaml +8 -0
  926. package/locales/en/.agents/testing_strategy_js/agents/qwen.json +19 -0
  927. package/locales/en/.agents/testing_strategy_js/agents/skill.yaml +23 -0
  928. package/locales/en/.agents/tests_quality_review/SKILL.md +279 -18
  929. package/locales/en/.agents/tests_quality_review/agents/claude.json +18 -0
  930. package/locales/en/.agents/tests_quality_review/agents/copilot.json +18 -0
  931. package/locales/en/.agents/tests_quality_review/agents/gemini.json +18 -0
  932. package/locales/en/.agents/tests_quality_review/agents/openai.yaml +8 -0
  933. package/locales/en/.agents/tests_quality_review/agents/qwen.json +18 -0
  934. package/locales/en/.agents/tests_quality_review/agents/skill.yaml +22 -0
  935. package/locales/en/.agents/threat_model_baseline/SKILL.md +204 -51
  936. package/locales/en/.agents/threat_model_baseline/agents/claude.json +18 -0
  937. package/locales/en/.agents/threat_model_baseline/agents/copilot.json +18 -0
  938. package/locales/en/.agents/threat_model_baseline/agents/gemini.json +18 -0
  939. package/locales/en/.agents/threat_model_baseline/agents/openai.yaml +8 -0
  940. package/locales/en/.agents/threat_model_baseline/agents/qwen.json +18 -0
  941. package/locales/en/.agents/threat_model_baseline/agents/skill.yaml +22 -0
  942. package/locales/en/.agents/tooling_bun_biome/SKILL.md +532 -10
  943. package/locales/en/.agents/tooling_bun_biome/agents/claude.json +19 -0
  944. package/locales/en/.agents/tooling_bun_biome/agents/copilot.json +19 -0
  945. package/locales/en/.agents/tooling_bun_biome/agents/gemini.json +19 -0
  946. package/locales/en/.agents/tooling_bun_biome/agents/openai.yaml +8 -0
  947. package/locales/en/.agents/tooling_bun_biome/agents/qwen.json +19 -0
  948. package/locales/en/.agents/tooling_bun_biome/agents/skill.yaml +23 -0
  949. package/locales/en/.agents/typescript_beast_practices/SKILL.md +434 -15
  950. package/locales/en/.agents/typescript_beast_practices/agents/claude.json +18 -0
  951. package/locales/en/.agents/typescript_beast_practices/agents/copilot.json +18 -0
  952. package/locales/en/.agents/typescript_beast_practices/agents/gemini.json +18 -0
  953. package/locales/en/.agents/typescript_beast_practices/agents/openai.yaml +8 -0
  954. package/locales/en/.agents/typescript_beast_practices/agents/qwen.json +18 -0
  955. package/locales/en/.agents/typescript_beast_practices/agents/skill.yaml +22 -0
  956. package/locales/en/.agents/ui_a11y_smoke_review/SKILL.md +189 -9
  957. package/locales/en/.agents/ui_a11y_smoke_review/agents/claude.json +20 -0
  958. package/locales/en/.agents/ui_a11y_smoke_review/agents/copilot.json +20 -0
  959. package/locales/en/.agents/ui_a11y_smoke_review/agents/gemini.json +20 -0
  960. package/locales/en/.agents/ui_a11y_smoke_review/agents/openai.yaml +8 -0
  961. package/locales/en/.agents/ui_a11y_smoke_review/agents/qwen.json +20 -0
  962. package/locales/en/.agents/ui_a11y_smoke_review/agents/skill.yaml +24 -0
  963. package/locales/en/.agents/ui_inventory/SKILL.md +271 -44
  964. package/locales/en/.agents/ui_inventory/agents/claude.json +18 -0
  965. package/locales/en/.agents/ui_inventory/agents/copilot.json +18 -0
  966. package/locales/en/.agents/ui_inventory/agents/gemini.json +18 -0
  967. package/locales/en/.agents/ui_inventory/agents/openai.yaml +8 -0
  968. package/locales/en/.agents/ui_inventory/agents/qwen.json +18 -0
  969. package/locales/en/.agents/ui_inventory/agents/skill.yaml +22 -0
  970. package/locales/en/.agents/ux_discovery/SKILL.md +199 -33
  971. package/locales/en/.agents/ux_discovery/agents/claude.json +17 -0
  972. package/locales/en/.agents/ux_discovery/agents/copilot.json +17 -0
  973. package/locales/en/.agents/ux_discovery/agents/gemini.json +17 -0
  974. package/locales/en/.agents/ux_discovery/agents/openai.yaml +8 -0
  975. package/locales/en/.agents/ux_discovery/agents/qwen.json +17 -0
  976. package/locales/en/.agents/ux_discovery/agents/skill.yaml +21 -0
  977. package/locales/en/.agents/ux_spec/SKILL.md +276 -50
  978. package/locales/en/.agents/ux_spec/agents/claude.json +18 -0
  979. package/locales/en/.agents/ux_spec/agents/copilot.json +18 -0
  980. package/locales/en/.agents/ux_spec/agents/gemini.json +18 -0
  981. package/locales/en/.agents/ux_spec/agents/openai.yaml +8 -0
  982. package/locales/en/.agents/ux_spec/agents/qwen.json +18 -0
  983. package/locales/en/.agents/ux_spec/agents/skill.yaml +22 -0
  984. package/locales/en/.agents/wix_iframe_sdk/SKILL.md +271 -44
  985. package/locales/en/.agents/wix_iframe_sdk/agents/claude.json +18 -0
  986. package/locales/en/.agents/wix_iframe_sdk/agents/copilot.json +18 -0
  987. package/locales/en/.agents/wix_iframe_sdk/agents/gemini.json +18 -0
  988. package/locales/en/.agents/wix_iframe_sdk/agents/openai.yaml +8 -0
  989. package/locales/en/.agents/wix_iframe_sdk/agents/qwen.json +18 -0
  990. package/locales/en/.agents/wix_iframe_sdk/agents/skill.yaml +22 -0
  991. package/locales/en/.agents/wix_self_hosted_embedded_script/SKILL.md +611 -88
  992. package/locales/en/.agents/wix_self_hosted_embedded_script/agents/claude.json +21 -0
  993. package/locales/en/.agents/wix_self_hosted_embedded_script/agents/copilot.json +21 -0
  994. package/locales/en/.agents/wix_self_hosted_embedded_script/agents/gemini.json +21 -0
  995. package/locales/en/.agents/wix_self_hosted_embedded_script/agents/openai.yaml +8 -0
  996. package/locales/en/.agents/wix_self_hosted_embedded_script/agents/qwen.json +21 -0
  997. package/locales/en/.agents/wix_self_hosted_embedded_script/agents/skill.yaml +25 -0
  998. package/locales/en/.agents/workflows/auto-restart-containers.md +24 -0
  999. package/locales/en/.agents/workflows/pipeline-rules.md +24 -0
  1000. package/locales/en/.agents/workflows/start-task.md +27 -0
  1001. package/locales/en/AGENTS.md +4 -1
  1002. package/locales/en/AGENTS.yaml +107 -0
  1003. package/locales/en/agents/architect.md +316 -298
  1004. package/locales/en/agents/conductor.md +373 -307
  1005. package/locales/en/agents/devops.md +290 -243
  1006. package/locales/en/agents/orchestrator.claude.json +97 -0
  1007. package/locales/en/agents/orchestrator.copilot.json +97 -0
  1008. package/locales/en/agents/orchestrator.gemini.json +97 -0
  1009. package/locales/en/agents/orchestrator.openai.yaml +94 -0
  1010. package/locales/en/agents/orchestrator.qwen.json +97 -0
  1011. package/locales/en/agents/product_manager.md +210 -208
  1012. package/locales/en/agents/reviewer.md +253 -241
  1013. package/locales/en/agents/senior_full_stack.md +286 -274
  1014. package/locales/en/agents/tester.md +320 -254
  1015. package/locales/en/agents/ux_ui_designer.md +283 -275
  1016. package/package.json +54 -53
@@ -1,30 +1,729 @@
1
- ---
2
- name: node_express_beast_practices
3
- description: Node.js + Express: REST API, middleware, сервисный слой, репозитории, централизованная обработка ошибок, retries, rate limiting, фоновые задачи, структурированные логи.
4
- ---
5
-
6
- # Skill: Node/Express Beast Practices
7
-
8
- ## Архитектура
9
- - REST ресурсы и предсказуемые URL
10
- - Middleware для кросс-сечений (auth, rate limit, logging)
11
- - Service layer (бизнес-логика)
12
- - Repository layer (доступ к данным)
13
-
14
- ## Ошибки
15
- - Централизованный error handler
16
- - Валидация ошибок: 400/401/403/404/409/422/500 по контракту
17
- - Безопасные сообщения, без утечек
18
-
19
- ## Надёжность
20
- - Retry с backoff для внешних вызовов
21
- - Rate limiting для публичных эндпоинтов
22
- - Background jobs для долгих операций
23
-
24
- ## Производительность
25
- - избегать N+1
26
- - пагинация/батчи
27
- - кэширование (по архитектуре)
28
-
29
- ## См. также
30
- - Примеры: `$dev_reference_snippets`
1
+ ---
2
+ name: node_express_beast_practices
3
+ description: Node.js + Express REST API, middleware pipeline, сервисный слой, репозитории, централизованная обработка ошибок, валидация (Zod), graceful shutdown, health checks, security headers. Активируй при написании API, рефакторинге Express-приложений, или при вопросах «как правильно организовать backend на Express».
4
+ ---
5
+
6
+ # Skill: Node/Express Beast Practices
7
+
8
+ Конкретные DO/DON'T паттерны для Express API — от архитектуры до graceful shutdown.
9
+
10
+ **Разделы:**
11
+ 1. [Архитектура: слои](#1-архитектура)
12
+ 2. [App Factory](#2-app-factory)
13
+ 3. [Router + Controller](#3-router--controller)
14
+ 4. [Middleware Pipeline](#4-middleware-pipeline)
15
+ 5. [Централизованная обработка ошибок](#5-обработка-ошибок)
16
+ 6. [Валидация (Zod)](#6-валидация)
17
+ 7. [Service + Repository](#7-service--repository)
18
+ 8. [Graceful Shutdown и Health Checks](#8-graceful-shutdown)
19
+ 9. [Anti-patterns](#9-anti-patterns)
20
+
21
+ ---
22
+
23
+ ## 1. Архитектура
24
+
25
+ ```
26
+ src/
27
+ ├── app.js # Express app factory (no listen)
28
+ ├── server.js # HTTP server + graceful shutdown
29
+ ├── config/
30
+ │ └── env.js # Env validation + export
31
+ ├── middleware/
32
+ │ ├── errorHandler.js # Centralized error handler
33
+ │ ├── requestId.js # x-request-id injection
34
+ │ ├── validate.js # Zod validation middleware
35
+ │ └── auth.js # Auth middleware
36
+ ├── routes/
37
+ │ ├── index.js # Router aggregation
38
+ │ ├── coupons.router.js
39
+ │ └── templates.router.js
40
+ ├── controllers/
41
+ │ ├── coupons.controller.js
42
+ │ └── templates.controller.js
43
+ ├── services/
44
+ │ ├── coupon.service.js # Business logic
45
+ │ └── template.service.js
46
+ ├── repositories/
47
+ │ ├── coupon.repo.js # Data access
48
+ │ └── template.repo.js
49
+ ├── errors/
50
+ │ └── AppError.js # Custom error classes
51
+ └── utils/
52
+ └── asyncHandler.js # Async wrapper
53
+ ```
54
+
55
+ ### Слои и ответственность
56
+
57
+ | Слой | Отвечает за | НЕ делает |
58
+ |------|-----------|----------|
59
+ | **Router** | URL → Controller mapping | Бизнес-логику |
60
+ | **Controller** | Парсинг req → вызов service → формирование res | SQL/DB, валидацию |
61
+ | **Middleware** | Кросс-сечения (auth, logging, rate limit) | Бизнес-логику |
62
+ | **Service** | Бизнес-логика, оркестрация | Работу с req/res |
63
+ | **Repository** | Доступ к данным (DB, API) | Бизнес-логику |
64
+
65
+ ---
66
+
67
+ ## 2. App Factory
68
+
69
+ ### ✅ DO: app отдельно от server (тестируемость)
70
+
71
+ ```js
72
+ // app.js — чистый Express app, без listen()
73
+ import express from 'express';
74
+ import helmet from 'helmet';
75
+ import cors from 'cors';
76
+ import compression from 'compression';
77
+ import { requestIdMiddleware } from './middleware/requestId.js';
78
+ import { errorHandler } from './middleware/errorHandler.js';
79
+ import { routes } from './routes/index.js';
80
+
81
+ /**
82
+ * Создаёт и конфигурирует Express приложение.
83
+ * @param {{ db: object, logger: object }} deps - зависимости.
84
+ * @returns {express.Express} сконфигурированное приложение.
85
+ */
86
+ export function createApp(deps) {
87
+ const app = express();
88
+
89
+ // ── Security ──
90
+ app.use(helmet());
91
+ app.use(cors({ origin: deps.config?.corsOrigin ?? '*' }));
92
+
93
+ // ── Parsing ──
94
+ app.use(express.json({ limit: '1mb' }));
95
+ app.use(express.urlencoded({ extended: false }));
96
+
97
+ // ── Compression ──
98
+ app.use(compression());
99
+
100
+ // ── Request ID ──
101
+ app.use(requestIdMiddleware);
102
+
103
+ // ── Routes ──
104
+ app.use('/api', routes(deps));
105
+
106
+ // ── Health ──
107
+ app.get('/health', (_req, res) => res.json({ status: 'ok' }));
108
+
109
+ // ── 404 ──
110
+ app.use((_req, _res, next) => {
111
+ next(new AppError('Route not found', 404));
112
+ });
113
+
114
+ // ── Error Handler (MUST be last) ──
115
+ app.use(errorHandler(deps.logger));
116
+
117
+ return app;
118
+ }
119
+ ```
120
+
121
+ ```js
122
+ // server.js — HTTP сервер + graceful shutdown
123
+ import { createApp } from './app.js';
124
+ import { config } from './config/env.js';
125
+ import { logger } from './utils/logger.js';
126
+ import { connectDb } from './db/connection.js';
127
+
128
+ async function main() {
129
+ const db = await connectDb(config.databaseUrl);
130
+ const app = createApp({ db, logger, config });
131
+
132
+ const server = app.listen(config.port, () => {
133
+ logger.info({ port: config.port }, 'Server started');
134
+ });
135
+
136
+ // Graceful shutdown (see section 8)
137
+ setupGracefulShutdown(server, db);
138
+ }
139
+
140
+ main().catch((err) => {
141
+ console.error('Fatal startup error:', err);
142
+ process.exit(1);
143
+ });
144
+ ```
145
+
146
+ ---
147
+
148
+ ## 3. Router + Controller
149
+
150
+ ### ✅ DO: тонкие контроллеры, бизнес-логика в service
151
+
152
+ ```js
153
+ // routes/coupons.router.js
154
+ import { Router } from 'express';
155
+ import { CouponController } from '../controllers/coupons.controller.js';
156
+ import { validate } from '../middleware/validate.js';
157
+ import { createCouponSchema, updateCouponSchema } from '../schemas/coupon.schema.js';
158
+
159
+ /**
160
+ * Роутер для купонов.
161
+ * @param {{ db: object }} deps - зависимости.
162
+ * @returns {Router} Express router.
163
+ */
164
+ export function couponRouter(deps) {
165
+ const router = Router();
166
+ const ctrl = new CouponController(deps);
167
+
168
+ router.get('/', ctrl.list);
169
+ router.get('/:id', ctrl.getById);
170
+ router.post('/', validate(createCouponSchema), ctrl.create);
171
+ router.patch('/:id', validate(updateCouponSchema), ctrl.update);
172
+ router.delete('/:id', ctrl.remove);
173
+
174
+ return router;
175
+ }
176
+ ```
177
+
178
+ ```js
179
+ // controllers/coupons.controller.js
180
+ import { asyncHandler } from '../utils/asyncHandler.js';
181
+ import { CouponService } from '../services/coupon.service.js';
182
+
183
+ export class CouponController {
184
+ #service;
185
+
186
+ /**
187
+ * @param {{ db: object }} deps - зависимости.
188
+ */
189
+ constructor(deps) {
190
+ this.#service = new CouponService(deps);
191
+ }
192
+
193
+ /**
194
+ * Возвращает список купонов.
195
+ * GET /api/coupons
196
+ */
197
+ list = asyncHandler(async (req, res) => {
198
+ const { page = 1, limit = 20 } = req.query;
199
+ const result = await this.#service.list({ page: +page, limit: +limit });
200
+ res.json(result);
201
+ });
202
+
203
+ /**
204
+ * Возвращает купон по ID.
205
+ * GET /api/coupons/:id
206
+ */
207
+ getById = asyncHandler(async (req, res) => {
208
+ const coupon = await this.#service.getById(req.params.id);
209
+ res.json(coupon);
210
+ });
211
+
212
+ /**
213
+ * Создаёт новый купон.
214
+ * POST /api/coupons
215
+ */
216
+ create = asyncHandler(async (req, res) => {
217
+ const coupon = await this.#service.create(req.body);
218
+ res.status(201).json(coupon);
219
+ });
220
+
221
+ /**
222
+ * Обновляет купон.
223
+ * PATCH /api/coupons/:id
224
+ */
225
+ update = asyncHandler(async (req, res) => {
226
+ const coupon = await this.#service.update(req.params.id, req.body);
227
+ res.json(coupon);
228
+ });
229
+
230
+ /**
231
+ * Удаляет купон.
232
+ * DELETE /api/coupons/:id
233
+ */
234
+ remove = asyncHandler(async (req, res) => {
235
+ await this.#service.remove(req.params.id);
236
+ res.status(204).end();
237
+ });
238
+ }
239
+ ```
240
+
241
+ ### ✅ DO: asyncHandler для автоматического перехвата ошибок
242
+
243
+ ```js
244
+ // utils/asyncHandler.js
245
+
246
+ /**
247
+ * Оборачивает async controller в try/catch, передавая ошибку в next().
248
+ * @param {Function} fn - async route handler.
249
+ * @returns {Function} Express middleware.
250
+ */
251
+ export function asyncHandler(fn) {
252
+ return (req, res, next) => {
253
+ Promise.resolve(fn(req, res, next)).catch(next);
254
+ };
255
+ }
256
+ ```
257
+
258
+ ---
259
+
260
+ ## 4. Middleware Pipeline
261
+
262
+ ### Порядок middleware (критически важен)
263
+
264
+ ```
265
+ 1. helmet() — Security headers
266
+ 2. cors() — CORS
267
+ 3. express.json() — Body parsing
268
+ 4. compression() — Response compression
269
+ 5. requestIdMiddleware — x-request-id
270
+ 6. requestLogMiddleware — Access logging
271
+ 7. rateLimiter — Rate limiting
272
+ 8. authMiddleware — Authentication (route-level)
273
+ 9. validate(schema) — Input validation (route-level)
274
+ 10. controller — Business logic
275
+ 11. 404 handler — Not found
276
+ 12. errorHandler — Centralized error (MUST BE LAST)
277
+ ```
278
+
279
+ ### ✅ DO: request ID middleware
280
+
281
+ ```js
282
+ // middleware/requestId.js
283
+ import { randomUUID } from 'node:crypto';
284
+
285
+ /**
286
+ * Добавляет request ID к каждому запросу для корреляции логов.
287
+ */
288
+ export function requestIdMiddleware(req, _res, next) {
289
+ req.id = req.headers['x-request-id'] || randomUUID();
290
+ next();
291
+ }
292
+ ```
293
+
294
+ ### ✅ DO: request logging middleware
295
+
296
+ ```js
297
+ // middleware/requestLog.js
298
+
299
+ /**
300
+ * Логирует HTTP запросы с длительностью.
301
+ * @param {object} logger - структурированный логгер (pino).
302
+ */
303
+ export function requestLogMiddleware(logger) {
304
+ return (req, res, next) => {
305
+ const start = performance.now();
306
+
307
+ res.on('finish', () => {
308
+ const duration = Math.round(performance.now() - start);
309
+ logger.info({
310
+ method: req.method,
311
+ url: req.originalUrl,
312
+ status: res.statusCode,
313
+ durationMs: duration,
314
+ requestId: req.id,
315
+ });
316
+ });
317
+
318
+ next();
319
+ };
320
+ }
321
+ ```
322
+
323
+ ---
324
+
325
+ ## 5. Обработка ошибок
326
+
327
+ ### ✅ DO: кастомный AppError
328
+
329
+ ```js
330
+ // errors/AppError.js
331
+
332
+ /**
333
+ * Базовый класс ошибки приложения с HTTP-кодом.
334
+ */
335
+ export class AppError extends Error {
336
+ /**
337
+ * @param {string} message - сообщение для клиента.
338
+ * @param {number} statusCode - HTTP статус.
339
+ * @param {object} [details] - дополнительные данные.
340
+ */
341
+ constructor(message, statusCode = 500, details = undefined) {
342
+ super(message);
343
+ this.name = 'AppError';
344
+ this.statusCode = statusCode;
345
+ this.details = details;
346
+ this.isOperational = true; // отличает от programmer errors
347
+ }
348
+ }
349
+
350
+ export class NotFoundError extends AppError {
351
+ constructor(resource = 'Resource') {
352
+ super(`${resource} not found`, 404);
353
+ }
354
+ }
355
+
356
+ export class ValidationError extends AppError {
357
+ constructor(details) {
358
+ super('Validation failed', 400, details);
359
+ }
360
+ }
361
+
362
+ export class ConflictError extends AppError {
363
+ constructor(message = 'Resource already exists') {
364
+ super(message, 409);
365
+ }
366
+ }
367
+
368
+ export class UnauthorizedError extends AppError {
369
+ constructor(message = 'Authentication required') {
370
+ super(message, 401);
371
+ }
372
+ }
373
+
374
+ export class ForbiddenError extends AppError {
375
+ constructor(message = 'Access denied') {
376
+ super(message, 403);
377
+ }
378
+ }
379
+ ```
380
+
381
+ ### ✅ DO: централизованный error handler
382
+
383
+ ```js
384
+ // middleware/errorHandler.js
385
+
386
+ /**
387
+ * Централизованный обработчик ошибок Express.
388
+ * MUST be the last middleware in the pipeline.
389
+ * @param {object} logger - структурированный логгер.
390
+ */
391
+ export function errorHandler(logger) {
392
+ // eslint-disable-next-line no-unused-vars -- Express requires 4 params for error middleware
393
+ return (err, req, res, _next) => {
394
+ // Operational errors (expected)
395
+ if (err.isOperational) {
396
+ logger.warn({
397
+ err: { message: err.message, statusCode: err.statusCode },
398
+ requestId: req.id,
399
+ });
400
+
401
+ return res.status(err.statusCode).json({
402
+ error: err.message,
403
+ ...(err.details && { details: err.details }),
404
+ });
405
+ }
406
+
407
+ // Programmer errors (unexpected) — log full stack, return generic message
408
+ logger.error({
409
+ err,
410
+ requestId: req.id,
411
+ method: req.method,
412
+ url: req.originalUrl,
413
+ });
414
+
415
+ res.status(500).json({
416
+ error: 'Internal server error',
417
+ // ❌ NEVER expose stack trace or internal details
418
+ });
419
+ };
420
+ }
421
+ ```
422
+
423
+ ### HTTP Status Codes по контракту
424
+
425
+ | Код | Когда | Класс |
426
+ |-----|-------|-------|
427
+ | 200 | Успех (GET, PATCH, PUT) | — |
428
+ | 201 | Ресурс создан (POST) | — |
429
+ | 204 | Успех без тела (DELETE) | — |
430
+ | 400 | Невалидные данные | `ValidationError` |
431
+ | 401 | Не аутентифицирован | `UnauthorizedError` |
432
+ | 403 | Нет прав | `ForbiddenError` |
433
+ | 404 | Не найден | `NotFoundError` |
434
+ | 409 | Конфликт (дубликат) | `ConflictError` |
435
+ | 422 | Семантическая ошибка | `AppError(msg, 422)` |
436
+ | 429 | Rate limit exceeded | rate limiter middleware |
437
+ | 500 | Внутренняя ошибка | Programmer error |
438
+
439
+ ---
440
+
441
+ ## 6. Валидация
442
+
443
+ ### ✅ DO: Zod schema + validation middleware
444
+
445
+ ```js
446
+ // schemas/coupon.schema.js
447
+ import { z } from 'zod';
448
+
449
+ export const createCouponSchema = z.object({
450
+ body: z.object({
451
+ code: z.string().min(3).max(20).toUpperCase(),
452
+ discount: z.number().min(1).max(100),
453
+ type: z.enum(['percent', 'fixed']),
454
+ expiresAt: z.string().datetime().optional(),
455
+ }),
456
+ });
457
+
458
+ export const updateCouponSchema = z.object({
459
+ params: z.object({
460
+ id: z.string().uuid(),
461
+ }),
462
+ body: z.object({
463
+ code: z.string().min(3).max(20).toUpperCase().optional(),
464
+ discount: z.number().min(1).max(100).optional(),
465
+ active: z.boolean().optional(),
466
+ }),
467
+ });
468
+ ```
469
+
470
+ ```js
471
+ // middleware/validate.js
472
+ import { AppError } from '../errors/AppError.js';
473
+
474
+ /**
475
+ * Middleware для валидации req через Zod schema.
476
+ * @param {import('zod').ZodSchema} schema - Zod schema.
477
+ */
478
+ export function validate(schema) {
479
+ return (req, _res, next) => {
480
+ const result = schema.safeParse({
481
+ body: req.body,
482
+ query: req.query,
483
+ params: req.params,
484
+ });
485
+
486
+ if (!result.success) {
487
+ const errors = result.error.issues.map((issue) => ({
488
+ path: issue.path.join('.'),
489
+ message: issue.message,
490
+ }));
491
+ return next(new AppError('Validation failed', 400, errors));
492
+ }
493
+
494
+ // ✅ Заменяем req данные на parsed (coerced, defaults applied)
495
+ req.body = result.data.body ?? req.body;
496
+ req.query = result.data.query ?? req.query;
497
+ req.params = result.data.params ?? req.params;
498
+
499
+ next();
500
+ };
501
+ }
502
+ ```
503
+
504
+ ---
505
+
506
+ ## 7. Service + Repository
507
+
508
+ ### ✅ DO: service layer для бизнес-логики
509
+
510
+ ```js
511
+ // services/coupon.service.js
512
+ import { CouponRepo } from '../repositories/coupon.repo.js';
513
+ import { NotFoundError, ConflictError } from '../errors/AppError.js';
514
+
515
+ export class CouponService {
516
+ #repo;
517
+
518
+ constructor({ db }) {
519
+ this.#repo = new CouponRepo(db);
520
+ }
521
+
522
+ /**
523
+ * Возвращает список купонов с пагинацией.
524
+ * @param {{ page: number, limit: number }} params
525
+ * @returns {Promise<{ data: Coupon[], total: number }>}
526
+ */
527
+ async list({ page, limit }) {
528
+ const offset = (page - 1) * limit;
529
+ const [data, total] = await Promise.all([
530
+ this.#repo.findAll({ offset, limit }),
531
+ this.#repo.count(),
532
+ ]);
533
+ return { data, total, page, limit };
534
+ }
535
+
536
+ /**
537
+ * Возвращает купон по ID или выбрасывает NotFoundError.
538
+ * @param {string} id - ID купона.
539
+ * @returns {Promise<Coupon>}
540
+ */
541
+ async getById(id) {
542
+ const coupon = await this.#repo.findById(id);
543
+ if (!coupon) throw new NotFoundError('Coupon');
544
+ return coupon;
545
+ }
546
+
547
+ /**
548
+ * Создаёт купон, проверяя уникальность кода.
549
+ * @param {object} data - данные купона.
550
+ * @returns {Promise<Coupon>}
551
+ */
552
+ async create(data) {
553
+ const existing = await this.#repo.findByCode(data.code);
554
+ if (existing) throw new ConflictError(`Coupon code "${data.code}" already exists`);
555
+ return this.#repo.create(data);
556
+ }
557
+
558
+ async update(id, data) {
559
+ await this.getById(id); // throws NotFoundError
560
+ return this.#repo.update(id, data);
561
+ }
562
+
563
+ async remove(id) {
564
+ await this.getById(id);
565
+ return this.#repo.remove(id);
566
+ }
567
+ }
568
+ ```
569
+
570
+ ### ✅ DO: repository для доступа к данным
571
+
572
+ ```js
573
+ // repositories/coupon.repo.js
574
+
575
+ export class CouponRepo {
576
+ #db;
577
+
578
+ constructor(db) {
579
+ this.#db = db;
580
+ }
581
+
582
+ async findAll({ offset, limit }) {
583
+ return this.#db.collection('coupons')
584
+ .find({})
585
+ .skip(offset)
586
+ .limit(limit)
587
+ .toArray();
588
+ }
589
+
590
+ async findById(id) {
591
+ return this.#db.collection('coupons').findOne({ _id: id });
592
+ }
593
+
594
+ async findByCode(code) {
595
+ return this.#db.collection('coupons').findOne({ code });
596
+ }
597
+
598
+ async count() {
599
+ return this.#db.collection('coupons').countDocuments();
600
+ }
601
+
602
+ async create(data) {
603
+ const result = await this.#db.collection('coupons').insertOne({
604
+ ...data,
605
+ active: true,
606
+ createdAt: new Date(),
607
+ });
608
+ return { _id: result.insertedId, ...data };
609
+ }
610
+
611
+ async update(id, data) {
612
+ const result = await this.#db.collection('coupons').findOneAndUpdate(
613
+ { _id: id },
614
+ { $set: { ...data, updatedAt: new Date() } },
615
+ { returnDocument: 'after' }
616
+ );
617
+ return result;
618
+ }
619
+
620
+ async remove(id) {
621
+ await this.#db.collection('coupons').deleteOne({ _id: id });
622
+ }
623
+ }
624
+ ```
625
+
626
+ ---
627
+
628
+ ## 8. Graceful Shutdown
629
+
630
+ ### ✅ DO: graceful shutdown + health check
631
+
632
+ ```js
633
+ // server.js (фрагмент)
634
+
635
+ /**
636
+ * Настраивает graceful shutdown.
637
+ * @param {import('http').Server} server
638
+ * @param {object} db - database connection.
639
+ */
640
+ function setupGracefulShutdown(server, db) {
641
+ let isShuttingDown = false;
642
+
643
+ async function shutdown(signal) {
644
+ if (isShuttingDown) return;
645
+ isShuttingDown = true;
646
+
647
+ logger.info({ signal }, 'Graceful shutdown started');
648
+
649
+ // 1. Stop accepting new connections
650
+ server.close(async () => {
651
+ try {
652
+ // 2. Close DB connections
653
+ await db.close();
654
+ logger.info('Graceful shutdown complete');
655
+ process.exit(0);
656
+ } catch (err) {
657
+ logger.error({ err }, 'Error during shutdown');
658
+ process.exit(1);
659
+ }
660
+ });
661
+
662
+ // 3. Force kill after timeout
663
+ setTimeout(() => {
664
+ logger.error('Forced shutdown after timeout');
665
+ process.exit(1);
666
+ }, 10_000);
667
+ }
668
+
669
+ process.on('SIGTERM', () => shutdown('SIGTERM'));
670
+ process.on('SIGINT', () => shutdown('SIGINT'));
671
+
672
+ // Unhandled errors — log and exit
673
+ process.on('unhandledRejection', (reason) => {
674
+ logger.fatal({ reason }, 'Unhandled rejection');
675
+ process.exit(1);
676
+ });
677
+ }
678
+ ```
679
+
680
+ ### ✅ DO: env validation
681
+
682
+ ```js
683
+ // config/env.js
684
+ import { z } from 'zod';
685
+
686
+ const envSchema = z.object({
687
+ NODE_ENV: z.enum(['development', 'production', 'test']).default('development'),
688
+ PORT: z.coerce.number().default(3000),
689
+ DATABASE_URL: z.string().url(),
690
+ CORS_ORIGIN: z.string().default('*'),
691
+ LOG_LEVEL: z.enum(['debug', 'info', 'warn', 'error']).default('info'),
692
+ });
693
+
694
+ const parsed = envSchema.safeParse(process.env);
695
+
696
+ if (!parsed.success) {
697
+ console.error('❌ Invalid environment variables:', parsed.error.flatten().fieldErrors);
698
+ process.exit(1);
699
+ }
700
+
701
+ export const config = parsed.data;
702
+ ```
703
+
704
+ ---
705
+
706
+ ## 9. Anti-patterns
707
+
708
+ | ❌ Anti-pattern | ✅ Решение |
709
+ |----------------|-----------|
710
+ | Бизнес-логика в controller | Service layer |
711
+ | SQL/DB в controller | Repository layer |
712
+ | `try/catch` в каждом handler | `asyncHandler` wrapper |
713
+ | `app.listen()` в app.js | Отдельный server.js (тестируемость) |
714
+ | `res.status(500).json({ error: err.message })` | Централизованный error handler |
715
+ | `req.body.email` без валидации | Zod schema + validate middleware |
716
+ | `console.log` для логов | Структурированный logger (pino) |
717
+ | Секреты в коде | Env config + validation |
718
+ | `process.exit()` без cleanup | Graceful shutdown |
719
+ | N+1 запросы в циклах | Batch / aggregate queries |
720
+ | Отсутствие CORS / Helmet | Всегда в middleware pipeline |
721
+
722
+ ---
723
+
724
+ ## См. также
725
+ - `$security_baseline_dev` — безопасность в реализации
726
+ - `$observability_logging` — структурированные логи и метрики
727
+ - `$es2025_beast_practices` — современный JavaScript
728
+ - `$testing_strategy_js` — тестирование API (integration tests)
729
+ - `$mongodb_mongoose_best_practices` — MongoDB/Mongoose