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,15 +1,735 @@
1
- ---
2
- name: state_rtk_beast_practices
3
- description: Redux Toolkit: предсказуемый state для сложных приложений, slices, async thunks, нормализация, селекторы, тестируемость.
4
- ---
5
-
6
- # Skill: RTK Beast Practices
7
-
8
- ## Когда выбирать RTK
9
- - Сложные домены, много событий, сложная синхронизация UI/данных
10
-
11
- ## Правила
12
- - slices по доменам
13
- - нормализация сущностей
14
- - селекторы и мемоизация
15
- - side effects — через thunks/мидлвары, не в компонентах
1
+ ---
2
+ name: state_rtk_beast_practices
3
+ description: Redux Toolkit предсказуемый state для сложных приложений. createSlice, createAsyncThunk, createEntityAdapter, createSelector, RTK Query, middleware, TypeScript типизация, тестирование. Активируй при создании нового slice, рефакторинге Redux, или при вопросах «как правильно организовать RTK».
4
+ ---
5
+
6
+ # Skill: RTK Beast Practices
7
+
8
+ Конкретные DO/DON'T паттерны для Redux Toolkit — от архитектуры slices до тестирования.
9
+
10
+ **Разделы:**
11
+ 1. [Когда RTK vs Zustand](#1-когда-rtk-vs-zustand)
12
+ 2. [createSlice: архитектура](#2-createslice-архитектура)
13
+ 3. [createAsyncThunk: async operations](#3-createasyncthunk)
14
+ 4. [createEntityAdapter: нормализация](#4-createentityadapter)
15
+ 5. [Селекторы и createSelector](#5-селекторы)
16
+ 6. [RTK Query: server state](#6-rtk-query)
17
+ 7. [TypeScript типизация](#7-typescript)
18
+ 8. [Тестирование](#8-тестирование)
19
+ 9. [Anti-patterns](#9-anti-patterns)
20
+
21
+ ---
22
+
23
+ ## 1. Когда RTK vs Zustand
24
+
25
+ | Критерий | RTK ✅ | Zustand ✅ |
26
+ |---------|--------|-----------|
27
+ | Сложные домены с множеством событий | ✅ | ⚠️ Возможно, но сложнее |
28
+ | Нормализация сущностей (entities) | ✅ `createEntityAdapter` | ❌ Вручную |
29
+ | Middleware (logging, analytics, undo) | ✅ Встроенный | ⚠️ Базовый |
30
+ | DevTools | ✅ Redux DevTools (полный) | ✅ Redux DevTools (базовый) |
31
+ | Server state кэширование | ✅ RTK Query | ❌ Вручную или TanStack Query |
32
+ | Небольшой проект, мало state | ❌ Оверкилл | ✅ Минимальный boilerplate |
33
+ | Размер бандла | ⚠️ ~11KB | ✅ ~1KB |
34
+ | Learning curve | ⚠️ Средняя | ✅ Низкая |
35
+
36
+ > [!TIP]
37
+ > **Простое правило:** Zustand для простого client state, RTK для сложных доменов с нормализацией и middleware. RTK Query заменяет TanStack Query в RTK-экосистеме.
38
+
39
+ ---
40
+
41
+ ## 2. createSlice: архитектура
42
+
43
+ ### ✅ DO: один slice на домен (bounded context)
44
+
45
+ ```js
46
+ // features/coupons/couponsSlice.js
47
+ import { createSlice } from '@reduxjs/toolkit';
48
+
49
+ const INITIAL_STATE = {
50
+ items: [],
51
+ selectedId: null,
52
+ status: 'idle', // 'idle' | 'loading' | 'succeeded' | 'failed'
53
+ error: null,
54
+ };
55
+
56
+ const couponsSlice = createSlice({
57
+ name: 'coupons',
58
+ initialState: INITIAL_STATE,
59
+ reducers: {
60
+ /**
61
+ * Выбирает купон по ID.
62
+ * @param {Object} state - текущее состояние.
63
+ * @param {{ payload: string }} action - ID купона.
64
+ */
65
+ couponSelected(state, action) {
66
+ state.selectedId = action.payload;
67
+ },
68
+
69
+ /**
70
+ * Деактивирует купон по ID.
71
+ * @param {Object} state - текущее состояние.
72
+ * @param {{ payload: string }} action - ID купона.
73
+ */
74
+ couponDeactivated(state, action) {
75
+ const coupon = state.items.find((c) => c.id === action.payload);
76
+ if (coupon) coupon.active = false; // ✅ Мутация OK внутри createSlice (Immer)
77
+ },
78
+
79
+ /** Сбрасывает slice к начальному состоянию. */
80
+ couponsReset() {
81
+ return INITIAL_STATE;
82
+ },
83
+ },
84
+ });
85
+
86
+ export const { couponSelected, couponDeactivated, couponsReset } = couponsSlice.actions;
87
+ export default couponsSlice.reducer;
88
+ ```
89
+
90
+ ### ✅ DO: Naming convention для actions
91
+
92
+ ```js
93
+ // Формат: [noun][PastTenseVerb]
94
+ // Описывает ЧТО ПРОИЗОШЛО, а не что делать
95
+
96
+ // ✅ Events (что произошло)
97
+ couponSelected // купон выбран
98
+ couponDeactivated // купон деактивирован
99
+ templateLoaded // шаблон загружен
100
+ formSubmitted // форма отправлена
101
+
102
+ // ❌ Commands (что делать) — менее предсказуемо
103
+ selectCoupon // императивный стиль
104
+ deactivateCoupon
105
+ loadTemplate
106
+ ```
107
+
108
+ ### ✅ DO: prepare callback для формирования payload
109
+
110
+ ```js
111
+ const couponsSlice = createSlice({
112
+ name: 'coupons',
113
+ initialState,
114
+ reducers: {
115
+ /**
116
+ * Добавляет новый купон с автоматическим ID и timestamp.
117
+ * @param {Object} state - текущее состояние.
118
+ * @param {{ payload: { id: string, createdAt: string, code: string, discount: number } }} action
119
+ */
120
+ couponAdded: {
121
+ reducer(state, action) {
122
+ state.items.push(action.payload);
123
+ },
124
+ // ✅ prepare отделяет логику создания payload от reducer
125
+ prepare(code, discount) {
126
+ return {
127
+ payload: {
128
+ id: crypto.randomUUID(),
129
+ createdAt: new Date().toISOString(),
130
+ code,
131
+ discount,
132
+ },
133
+ };
134
+ },
135
+ },
136
+ },
137
+ });
138
+
139
+ // Использование:
140
+ dispatch(couponAdded('SAVE20', 20));
141
+ // payload: { id: 'abc...', createdAt: '2026-...', code: 'SAVE20', discount: 20 }
142
+ ```
143
+
144
+ ### Структура директорий
145
+
146
+ ```
147
+ src/
148
+ ├── app/
149
+ │ ├── store.js # configureStore
150
+ │ └── hooks.js # useAppDispatch, useAppSelector
151
+ ├── features/
152
+ │ ├── coupons/
153
+ │ │ ├── couponsSlice.js
154
+ │ │ ├── couponsSlice.test.js
155
+ │ │ ├── couponsSelectors.js
156
+ │ │ └── CouponList.jsx
157
+ │ └── templates/
158
+ │ ├── templatesSlice.js
159
+ │ ├── templatesSlice.test.js
160
+ │ └── TemplateEditor.jsx
161
+ ```
162
+
163
+ ---
164
+
165
+ ## 3. createAsyncThunk
166
+
167
+ ### ✅ DO: async operations через createAsyncThunk
168
+
169
+ ```js
170
+ import { createSlice, createAsyncThunk } from '@reduxjs/toolkit';
171
+
172
+ /**
173
+ * Загружает список купонов с сервера.
174
+ * @returns {Promise<Coupon[]>} массив купонов.
175
+ */
176
+ export const fetchCoupons = createAsyncThunk(
177
+ 'coupons/fetchCoupons',
178
+ async (_, { rejectWithValue }) => {
179
+ try {
180
+ const res = await fetch('/api/coupons');
181
+ if (!res.ok) throw new Error(`HTTP ${res.status}`);
182
+ return await res.json();
183
+ } catch (err) {
184
+ return rejectWithValue(err.message);
185
+ }
186
+ }
187
+ );
188
+
189
+ /**
190
+ * Удаляет купон по ID.
191
+ * @param {string} couponId - ID купона для удаления.
192
+ * @returns {Promise<string>} ID удалённого купона.
193
+ */
194
+ export const deleteCoupon = createAsyncThunk(
195
+ 'coupons/deleteCoupon',
196
+ async (couponId, { rejectWithValue }) => {
197
+ try {
198
+ const res = await fetch(`/api/coupons/${couponId}`, { method: 'DELETE' });
199
+ if (!res.ok) throw new Error(`HTTP ${res.status}`);
200
+ return couponId; // ✅ Возвращаем ID для удаления из state
201
+ } catch (err) {
202
+ return rejectWithValue(err.message);
203
+ }
204
+ }
205
+ );
206
+
207
+ const couponsSlice = createSlice({
208
+ name: 'coupons',
209
+ initialState: { items: [], status: 'idle', error: null },
210
+ reducers: {},
211
+ extraReducers: (builder) => {
212
+ builder
213
+ // fetchCoupons
214
+ .addCase(fetchCoupons.pending, (state) => {
215
+ state.status = 'loading';
216
+ state.error = null;
217
+ })
218
+ .addCase(fetchCoupons.fulfilled, (state, action) => {
219
+ state.status = 'succeeded';
220
+ state.items = action.payload;
221
+ })
222
+ .addCase(fetchCoupons.rejected, (state, action) => {
223
+ state.status = 'failed';
224
+ state.error = action.payload ?? action.error.message;
225
+ })
226
+ // deleteCoupon
227
+ .addCase(deleteCoupon.fulfilled, (state, action) => {
228
+ state.items = state.items.filter((c) => c.id !== action.payload);
229
+ });
230
+ },
231
+ });
232
+ ```
233
+
234
+ ### ✅ DO: условные thunks с condition
235
+
236
+ ```js
237
+ export const fetchCouponsIfNeeded = createAsyncThunk(
238
+ 'coupons/fetchCoupons',
239
+ async () => {
240
+ const res = await fetch('/api/coupons');
241
+ return res.json();
242
+ },
243
+ {
244
+ // ✅ Не запускаем повторно если уже загружено
245
+ condition: (_, { getState }) => {
246
+ const { status } = getState().coupons;
247
+ return status === 'idle'; // Запускаем только из idle
248
+ },
249
+ }
250
+ );
251
+ ```
252
+
253
+ ### ✅ DO: thunk с доступом к другим slices
254
+
255
+ ```js
256
+ export const applyCouponToOrder = createAsyncThunk(
257
+ 'coupons/applyCouponToOrder',
258
+ async ({ couponId, orderId }, { getState, rejectWithValue }) => {
259
+ const coupon = getState().coupons.items.find((c) => c.id === couponId);
260
+ if (!coupon?.active) {
261
+ return rejectWithValue('Coupon is inactive');
262
+ }
263
+
264
+ const res = await fetch(`/api/orders/${orderId}/apply-coupon`, {
265
+ method: 'POST',
266
+ body: JSON.stringify({ couponId }),
267
+ headers: { 'Content-Type': 'application/json' },
268
+ });
269
+ return res.json();
270
+ }
271
+ );
272
+ ```
273
+
274
+ ---
275
+
276
+ ## 4. createEntityAdapter
277
+
278
+ ### ✅ DO: нормализация для коллекций сущностей
279
+
280
+ ```js
281
+ import { createSlice, createEntityAdapter } from '@reduxjs/toolkit';
282
+
283
+ // ✅ EntityAdapter: автоматические ids[] и entities{} + CRUD операции
284
+ const couponsAdapter = createEntityAdapter({
285
+ sortComparer: (a, b) => a.code.localeCompare(b.code), // сортировка по коду
286
+ });
287
+
288
+ const couponsSlice = createSlice({
289
+ name: 'coupons',
290
+ initialState: couponsAdapter.getInitialState({
291
+ status: 'idle',
292
+ error: null,
293
+ }),
294
+ // initialState = { ids: [], entities: {}, status: 'idle', error: null }
295
+
296
+ reducers: {
297
+ couponAdded: couponsAdapter.addOne,
298
+ couponUpdated: couponsAdapter.updateOne,
299
+ couponRemoved: couponsAdapter.removeOne,
300
+ couponsReceived: couponsAdapter.setAll,
301
+ },
302
+ extraReducers: (builder) => {
303
+ builder
304
+ .addCase(fetchCoupons.fulfilled, (state, action) => {
305
+ couponsAdapter.setAll(state, action.payload);
306
+ state.status = 'succeeded';
307
+ });
308
+ },
309
+ });
310
+
311
+ // ✅ Автоматические селекторы
312
+ export const {
313
+ selectAll: selectAllCoupons, // все купоны как массив
314
+ selectById: selectCouponById, // купон по ID
315
+ selectIds: selectCouponIds, // массив ID
316
+ selectTotal: selectTotalCoupons, // количество
317
+ selectEntities: selectCouponEntities, // словарь
318
+ } = couponsAdapter.getSelectors((state) => state.coupons);
319
+ ```
320
+
321
+ ### Dispatch примеры
322
+
323
+ ```js
324
+ // Добавить
325
+ dispatch(couponAdded({ id: '1', code: 'SAVE10', discount: 10, active: true }));
326
+
327
+ // Обновить (partial update)
328
+ dispatch(couponUpdated({ id: '1', changes: { active: false } }));
329
+
330
+ // Удалить
331
+ dispatch(couponRemoved('1'));
332
+
333
+ // Загрузить все
334
+ dispatch(couponsReceived(couponsFromApi));
335
+ ```
336
+
337
+ ---
338
+
339
+ ## 5. Селекторы
340
+
341
+ ### ✅ DO: createSelector для мемоизированных derived данных
342
+
343
+ ```js
344
+ import { createSelector } from '@reduxjs/toolkit';
345
+
346
+ // Базовый селектор
347
+ const selectCouponsState = (state) => state.coupons;
348
+
349
+ // ✅ Мемоизированный: пересчитывается только при изменении `items`
350
+ export const selectActiveCoupons = createSelector(
351
+ [selectAllCoupons],
352
+ (coupons) => coupons.filter((c) => c.active)
353
+ );
354
+
355
+ export const selectCouponStats = createSelector(
356
+ [selectAllCoupons],
357
+ (coupons) => ({
358
+ total: coupons.length,
359
+ active: coupons.filter((c) => c.active).length,
360
+ inactive: coupons.filter((c) => !c.active).length,
361
+ totalDiscount: coupons.reduce((sum, c) => sum + c.discount, 0),
362
+ })
363
+ );
364
+
365
+ // ✅ Параметризованный селектор
366
+ export const selectCouponsByType = createSelector(
367
+ [selectAllCoupons, (_, type) => type],
368
+ (coupons, type) => coupons.filter((c) => c.type === type)
369
+ );
370
+
371
+ // Использование: selectCouponsByType(state, 'percent')
372
+ ```
373
+
374
+ ### ❌ DON'T: вычисления в компоненте без мемоизации
375
+
376
+ ```js
377
+ // ❌ Фильтрация вызывается при КАЖДОМ рендере — новый массив → ререндер дочерних
378
+ function ActiveCoupons() {
379
+ const coupons = useSelector((state) => state.coupons.items);
380
+ const active = coupons.filter((c) => c.active); // ❌ каждый раз новый массив
381
+ return <List items={active} />;
382
+ }
383
+
384
+ // ✅ С мемоизированным селектором — один и тот же массив если данные не менялись
385
+ function ActiveCoupons() {
386
+ const active = useSelector(selectActiveCoupons);
387
+ return <List items={active} />;
388
+ }
389
+ ```
390
+
391
+ ---
392
+
393
+ ## 6. RTK Query
394
+
395
+ ### ✅ DO: RTK Query для server state
396
+
397
+ ```js
398
+ // features/api/apiSlice.js
399
+ import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query/react';
400
+
401
+ export const apiSlice = createApi({
402
+ reducerPath: 'api',
403
+ baseQuery: fetchBaseQuery({ baseUrl: '/api' }),
404
+ tagTypes: ['Coupon', 'Template'],
405
+ endpoints: (builder) => ({
406
+
407
+ /**
408
+ * Получить все купоны.
409
+ */
410
+ getCoupons: builder.query({
411
+ query: () => '/coupons',
412
+ providesTags: (result) =>
413
+ result
414
+ ? [
415
+ ...result.map(({ id }) => ({ type: 'Coupon', id })),
416
+ { type: 'Coupon', id: 'LIST' },
417
+ ]
418
+ : [{ type: 'Coupon', id: 'LIST' }],
419
+ }),
420
+
421
+ /**
422
+ * Создать новый купон.
423
+ */
424
+ addCoupon: builder.mutation({
425
+ query: (coupon) => ({
426
+ url: '/coupons',
427
+ method: 'POST',
428
+ body: coupon,
429
+ }),
430
+ invalidatesTags: [{ type: 'Coupon', id: 'LIST' }],
431
+ }),
432
+
433
+ /**
434
+ * Удалить купон.
435
+ */
436
+ deleteCoupon: builder.mutation({
437
+ query: (id) => ({
438
+ url: `/coupons/${id}`,
439
+ method: 'DELETE',
440
+ }),
441
+ invalidatesTags: (_, __, id) => [
442
+ { type: 'Coupon', id },
443
+ { type: 'Coupon', id: 'LIST' },
444
+ ],
445
+ }),
446
+ }),
447
+ });
448
+
449
+ export const {
450
+ useGetCouponsQuery,
451
+ useAddCouponMutation,
452
+ useDeleteCouponMutation,
453
+ } = apiSlice;
454
+ ```
455
+
456
+ ### Использование в компоненте
457
+
458
+ ```jsx
459
+ function CouponList() {
460
+ const { data: coupons, isLoading, error } = useGetCouponsQuery();
461
+ const [deleteCoupon] = useDeleteCouponMutation();
462
+
463
+ if (isLoading) return <Spinner />;
464
+ if (error) return <Error message={error.message} />;
465
+
466
+ return (
467
+ <ul>
468
+ {coupons.map((c) => (
469
+ <li key={c.id}>
470
+ {c.code} — {c.discount}%
471
+ <button onClick={() => deleteCoupon(c.id)}>Delete</button>
472
+ </li>
473
+ ))}
474
+ </ul>
475
+ );
476
+ }
477
+ ```
478
+
479
+ ---
480
+
481
+ ## 7. TypeScript
482
+
483
+ ### ✅ DO: типизированные hooks
484
+
485
+ ```ts
486
+ // app/hooks.ts
487
+ import { useDispatch, useSelector } from 'react-redux';
488
+ import type { AppDispatch, RootState } from './store';
489
+
490
+ export const useAppDispatch = useDispatch.withTypes<AppDispatch>();
491
+ export const useAppSelector = useSelector.withTypes<RootState>();
492
+ ```
493
+
494
+ ### ✅ DO: типизированный store
495
+
496
+ ```ts
497
+ // app/store.ts
498
+ import { configureStore } from '@reduxjs/toolkit';
499
+ import couponsReducer from '../features/coupons/couponsSlice';
500
+ import { apiSlice } from '../features/api/apiSlice';
501
+
502
+ export const store = configureStore({
503
+ reducer: {
504
+ coupons: couponsReducer,
505
+ [apiSlice.reducerPath]: apiSlice.reducer,
506
+ },
507
+ middleware: (getDefaultMiddleware) =>
508
+ getDefaultMiddleware().concat(apiSlice.middleware),
509
+ });
510
+
511
+ export type RootState = ReturnType<typeof store.getState>;
512
+ export type AppDispatch = typeof store.dispatch;
513
+ ```
514
+
515
+ ### ✅ DO: типизированный slice
516
+
517
+ ```ts
518
+ interface CouponState {
519
+ items: Coupon[];
520
+ selectedId: string | null;
521
+ status: 'idle' | 'loading' | 'succeeded' | 'failed';
522
+ error: string | null;
523
+ }
524
+
525
+ const initialState: CouponState = {
526
+ items: [],
527
+ selectedId: null,
528
+ status: 'idle',
529
+ error: null,
530
+ };
531
+
532
+ const couponsSlice = createSlice({
533
+ name: 'coupons',
534
+ initialState,
535
+ reducers: {
536
+ couponSelected(state, action: PayloadAction<string>) {
537
+ state.selectedId = action.payload;
538
+ },
539
+ },
540
+ });
541
+ ```
542
+
543
+ ---
544
+
545
+ ## 8. Тестирование
546
+
547
+ ### ✅ DO: тестировать reducer напрямую
548
+
549
+ ```js
550
+ import { describe, it, expect } from 'vitest';
551
+ import reducer, { couponSelected, couponDeactivated, couponsReset } from './couponsSlice';
552
+
553
+ describe('couponsSlice reducer', () => {
554
+ const initialState = { items: [], selectedId: null, status: 'idle', error: null };
555
+
556
+ it('should return initial state', () => {
557
+ expect(reducer(undefined, { type: 'unknown' })).toEqual(initialState);
558
+ });
559
+
560
+ it('should select coupon', () => {
561
+ const state = reducer(initialState, couponSelected('c-1'));
562
+ expect(state.selectedId).toBe('c-1');
563
+ });
564
+
565
+ it('should deactivate coupon by id', () => {
566
+ const state = {
567
+ ...initialState,
568
+ items: [{ id: 'c-1', code: 'X', active: true }],
569
+ };
570
+
571
+ const next = reducer(state, couponDeactivated('c-1'));
572
+ expect(next.items[0].active).toBe(false);
573
+ });
574
+
575
+ it('should reset to initial state', () => {
576
+ const dirty = { items: [{ id: '1' }], selectedId: '1', status: 'failed', error: 'err' };
577
+ expect(reducer(dirty, couponsReset())).toEqual(initialState);
578
+ });
579
+ });
580
+ ```
581
+
582
+ ### ✅ DO: тестировать async thunks
583
+
584
+ ```js
585
+ import { describe, it, expect, vi, beforeEach } from 'vitest';
586
+ import { configureStore } from '@reduxjs/toolkit';
587
+ import reducer, { fetchCoupons } from './couponsSlice';
588
+
589
+ describe('fetchCoupons thunk', () => {
590
+ let store;
591
+
592
+ beforeEach(() => {
593
+ store = configureStore({ reducer: { coupons: reducer } });
594
+ global.fetch = vi.fn();
595
+ });
596
+
597
+ it('should fetch and store coupons on success', async () => {
598
+ const mockCoupons = [{ id: '1', code: 'A', active: true }];
599
+ fetch.mockResolvedValue({ ok: true, json: () => Promise.resolve(mockCoupons) });
600
+
601
+ await store.dispatch(fetchCoupons());
602
+
603
+ const state = store.getState().coupons;
604
+ expect(state.status).toBe('succeeded');
605
+ expect(state.items).toEqual(mockCoupons);
606
+ expect(state.error).toBeNull();
607
+ });
608
+
609
+ it('should set error on failure', async () => {
610
+ fetch.mockResolvedValue({ ok: false, status: 500 });
611
+
612
+ await store.dispatch(fetchCoupons());
613
+
614
+ const state = store.getState().coupons;
615
+ expect(state.status).toBe('failed');
616
+ expect(state.error).toMatch(/500/);
617
+ });
618
+ });
619
+ ```
620
+
621
+ ### ✅ DO: тестировать селекторы
622
+
623
+ ```js
624
+ import { selectActiveCoupons, selectCouponStats } from './couponsSelectors';
625
+
626
+ describe('coupon selectors', () => {
627
+ const state = {
628
+ coupons: {
629
+ ids: ['1', '2', '3'],
630
+ entities: {
631
+ '1': { id: '1', code: 'A', active: true, discount: 10 },
632
+ '2': { id: '2', code: 'B', active: false, discount: 20 },
633
+ '3': { id: '3', code: 'C', active: true, discount: 15 },
634
+ },
635
+ },
636
+ };
637
+
638
+ it('should select only active coupons', () => {
639
+ const active = selectActiveCoupons(state);
640
+ expect(active).toHaveLength(2);
641
+ expect(active.every((c) => c.active)).toBe(true);
642
+ });
643
+
644
+ it('should compute stats', () => {
645
+ const stats = selectCouponStats(state);
646
+ expect(stats).toEqual({ total: 3, active: 2, inactive: 1, totalDiscount: 45 });
647
+ });
648
+ });
649
+ ```
650
+
651
+ ---
652
+
653
+ ## 9. Anti-patterns
654
+
655
+ ### ❌ DON'T: мутировать state вне createSlice
656
+
657
+ ```js
658
+ // ❌ Мутация вне Immer — баг
659
+ const newState = state;
660
+ newState.items.push(item); // мутация оригинала!
661
+
662
+ // ✅ Мутация только внутри createSlice reducers (Immer обёрнут)
663
+ reducers: {
664
+ itemAdded(state, action) {
665
+ state.items.push(action.payload); // ✅ OK — Immer proxy
666
+ },
667
+ },
668
+ ```
669
+
670
+ ### ❌ DON'T: dispatch в render
671
+
672
+ ```jsx
673
+ // ❌ Dispatch при каждом рендере — бесконечный цикл
674
+ function CouponList() {
675
+ const dispatch = useDispatch();
676
+ dispatch(fetchCoupons()); // ❌ каждый рендер
677
+
678
+ // ✅ Правильно:
679
+ useEffect(() => {
680
+ dispatch(fetchCoupons());
681
+ }, [dispatch]);
682
+ }
683
+ ```
684
+
685
+ ### ❌ DON'T: хранить не-сериализуемые данные в state
686
+
687
+ ```js
688
+ // ❌ Date, Map, Set, Class instances, Functions — не сериализуемы
689
+ const initialState = {
690
+ createdAt: new Date(), // ❌ Date объект
691
+ cache: new Map(), // ❌ Map
692
+ onClick: () => {}, // ❌ Function
693
+ };
694
+
695
+ // ✅ Только plain objects, arrays, primitives
696
+ const initialState = {
697
+ createdAt: new Date().toISOString(), // ✅ string
698
+ cache: {}, // ✅ plain object
699
+ };
700
+ ```
701
+
702
+ ### ❌ DON'T: вкладывать state глубже 3 уровней
703
+
704
+ ```js
705
+ // ❌ Глубокая вложенность — даже с Immer тяжело читать
706
+ state.orders[0].items[2].variants[0].price = 100;
707
+
708
+ // ✅ Нормализовать через createEntityAdapter
709
+ // orders: { ids, entities }
710
+ // items: { ids, entities }
711
+ // variants: { ids, entities }
712
+ ```
713
+
714
+ ---
715
+
716
+ ## Краткая шпаргалка
717
+
718
+ | Задача | Решение |
719
+ |--------|---------|
720
+ | Создать slice | `createSlice({ name, initialState, reducers, extraReducers })` |
721
+ | Async операция | `createAsyncThunk('name', async (arg, { rejectWithValue }) => ...)` |
722
+ | Нормализация | `createEntityAdapter()` → `getSelectors()` |
723
+ | Мемоизация | `createSelector([inputs], output)` |
724
+ | Server state | RTK Query: `createApi({ endpoints })` |
725
+ | Типизация hooks | `useDispatch.withTypes<AppDispatch>()` |
726
+ | Reset state | `return initialState` в reducer |
727
+ | Тестирование | `reducer(state, action)`, `store.dispatch(thunk())`, `selector(state)` |
728
+
729
+ ---
730
+
731
+ ## См. также
732
+ - `$state_zustand_beast_practices` — Zustand для простого client state
733
+ - `$react_beast_practices` — React-специфичные паттерны
734
+ - `$testing_strategy_js` — стратегия тестирования
735
+ - `$es2025_beast_practices` — современный JavaScript