codehava-agent-kit 1.0.1 → 3.0.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 (1164) hide show
  1. package/README.md +79 -37
  2. package/bin/cli.js +2 -6
  3. package/package.json +2 -2
  4. package/templates/.agent/.shared/ACTIVE-template.md +44 -0
  5. package/templates/.agent/.shared/HANDOFF-template.md +75 -0
  6. package/templates/.agent/.shared/MEMORY-schema.md +117 -0
  7. package/templates/.agent/.shared/STATE-template.md +59 -0
  8. package/templates/.agent/.shared/checklists/planning-quality.md +69 -0
  9. package/templates/.agent/.shared/types/api-backend/config.md +25 -0
  10. package/templates/.agent/.shared/types/api-backend/guide.md +41 -0
  11. package/templates/.agent/.shared/types/api-backend/skill-loadout.md +16 -0
  12. package/templates/.agent/.shared/types/application/config.md +27 -0
  13. package/templates/.agent/.shared/types/application/guide.md +51 -0
  14. package/templates/.agent/.shared/types/application/skill-loadout.md +39 -0
  15. package/templates/.agent/.shared/types/campaign/config.md +24 -0
  16. package/templates/.agent/.shared/types/campaign/guide.md +36 -0
  17. package/templates/.agent/.shared/types/campaign/skill-loadout.md +12 -0
  18. package/templates/.agent/.shared/types/utility/config.md +24 -0
  19. package/templates/.agent/.shared/types/utility/guide.md +31 -0
  20. package/templates/.agent/.shared/types/utility/skill-loadout.md +10 -0
  21. package/templates/.agent/.shared/types/workflow/config.md +25 -0
  22. package/templates/.agent/.shared/types/workflow/guide.md +41 -0
  23. package/templates/.agent/.shared/types/workflow/skill-loadout.md +13 -0
  24. package/templates/.agent/AGENTS_INDEX.md +11 -24
  25. package/templates/.agent/SKILLS_INDEX.md +75 -56
  26. package/templates/.agent/agents/backend-specialist.md +12 -0
  27. package/templates/.agent/agents/database-architect.md +11 -0
  28. package/templates/.agent/agents/frontend-specialist.md +12 -0
  29. package/templates/.agent/agents/mobile-developer.md +11 -0
  30. package/templates/.agent/agents/penetration-tester.md +13 -0
  31. package/templates/.agent/agents/test-engineer.md +10 -0
  32. package/templates/.agent/mcp_config.json +32 -15
  33. package/templates/.agent/rules/GEMINI.md +299 -159
  34. package/templates/.agent/skills/3d-web-experience/SKILL.md +259 -0
  35. package/templates/.agent/skills/acceptance-orchestrator/SKILL.md +106 -0
  36. package/templates/.agent/skills/address-github-comments/SKILL.md +61 -0
  37. package/templates/.agent/skills/advogado-especialista/SKILL.md +1109 -0
  38. package/templates/.agent/skills/advogado-especialista/references/fontes.md +139 -0
  39. package/templates/.agent/skills/agent-evaluation/SKILL.md +69 -0
  40. package/templates/.agent/skills/agent-framework-azure-ai-py/SKILL.md +338 -0
  41. package/templates/.agent/skills/agent-manager-skill/SKILL.md +42 -0
  42. package/templates/.agent/skills/agent-memory-mcp/SKILL.md +87 -0
  43. package/templates/.agent/skills/agent-memory-systems/SKILL.md +72 -0
  44. package/templates/.agent/skills/agent-orchestration-improve-agent/SKILL.md +352 -0
  45. package/templates/.agent/skills/agent-orchestration-multi-agent-optimize/SKILL.md +242 -0
  46. package/templates/.agent/skills/agent-orchestrator/SKILL.md +316 -0
  47. package/templates/.agent/skills/agent-orchestrator/references/capability-taxonomy.md +85 -0
  48. package/templates/.agent/skills/agent-orchestrator/references/orchestration-patterns.md +129 -0
  49. package/templates/.agent/skills/agent-orchestrator/scripts/match_skills.py +329 -0
  50. package/templates/.agent/skills/agent-orchestrator/scripts/orchestrate.py +304 -0
  51. package/templates/.agent/skills/agent-orchestrator/scripts/requirements.txt +1 -0
  52. package/templates/.agent/skills/agent-orchestrator/scripts/scan_registry.py +508 -0
  53. package/templates/.agent/skills/agent-tool-builder/SKILL.md +58 -0
  54. package/templates/.agent/skills/agentfolio/SKILL.md +96 -0
  55. package/templates/.agent/skills/agentic-actions-auditor/SKILL.md +332 -0
  56. package/templates/.agent/skills/agentmail/SKILL.md +247 -0
  57. package/templates/.agent/skills/agents-md/SKILL.md +120 -0
  58. package/templates/.agent/skills/agents-v2-py/SKILL.md +326 -0
  59. package/templates/.agent/skills/ai-agent-development/SKILL.md +173 -0
  60. package/templates/.agent/skills/ai-agents-architect/SKILL.md +96 -0
  61. package/templates/.agent/skills/ai-seo/SKILL.md +407 -0
  62. package/templates/.agent/skills/ai-seo/evals/evals.json +90 -0
  63. package/templates/.agent/skills/ai-seo/references/content-patterns.md +285 -0
  64. package/templates/.agent/skills/ai-seo/references/platform-ranking-factors.md +152 -0
  65. package/templates/.agent/skills/airflow-dag-patterns/SKILL.md +44 -0
  66. package/templates/.agent/skills/airflow-dag-patterns/resources/implementation-playbook.md +509 -0
  67. package/templates/.agent/skills/akf-trust-metadata/SKILL.md +69 -0
  68. package/templates/.agent/skills/algolia-search/SKILL.md +68 -0
  69. package/templates/.agent/skills/algorithmic-art/LICENSE.txt +202 -0
  70. package/templates/.agent/skills/algorithmic-art/SKILL.md +410 -0
  71. package/templates/.agent/skills/algorithmic-art/templates/generator_template.js +223 -0
  72. package/templates/.agent/skills/algorithmic-art/templates/viewer.html +599 -0
  73. package/templates/.agent/skills/angular-ui-patterns/README.md +55 -0
  74. package/templates/.agent/skills/angular-ui-patterns/SKILL.md +512 -0
  75. package/templates/.agent/skills/angular-ui-patterns/metadata.json +12 -0
  76. package/templates/.agent/skills/antigravity-design-expert/SKILL.md +42 -0
  77. package/templates/.agent/skills/antigravity-skill-orchestrator/README.md +32 -0
  78. package/templates/.agent/skills/antigravity-skill-orchestrator/SKILL.md +123 -0
  79. package/templates/.agent/skills/api-design-principles/SKILL.md +40 -0
  80. package/templates/.agent/skills/api-design-principles/assets/api-design-checklist.md +155 -0
  81. package/templates/.agent/skills/api-design-principles/assets/rest-api-template.py +182 -0
  82. package/templates/.agent/skills/api-design-principles/references/graphql-schema-design.md +583 -0
  83. package/templates/.agent/skills/api-design-principles/references/rest-best-practices.md +408 -0
  84. package/templates/.agent/skills/api-design-principles/resources/implementation-playbook.md +513 -0
  85. package/templates/.agent/skills/api-documentation/SKILL.md +163 -0
  86. package/templates/.agent/skills/api-documentation-generator/SKILL.md +487 -0
  87. package/templates/.agent/skills/api-documenter/SKILL.md +182 -0
  88. package/templates/.agent/skills/api-endpoint-builder/README.md +15 -0
  89. package/templates/.agent/skills/api-endpoint-builder/SKILL.md +324 -0
  90. package/templates/.agent/skills/api-fuzzing-bug-bounty/SKILL.md +437 -0
  91. package/templates/.agent/skills/api-security-best-practices/SKILL.md +910 -0
  92. package/templates/.agent/skills/api-security-testing/SKILL.md +171 -0
  93. package/templates/.agent/skills/api-testing-observability-api-mock/SKILL.md +49 -0
  94. package/templates/.agent/skills/api-testing-observability-api-mock/resources/implementation-playbook.md +1327 -0
  95. package/templates/.agent/skills/apify-actor-development/SKILL.md +221 -0
  96. package/templates/.agent/skills/apify-actor-development/references/actor-json.md +66 -0
  97. package/templates/.agent/skills/apify-actor-development/references/dataset-schema.md +209 -0
  98. package/templates/.agent/skills/apify-actor-development/references/input-schema.md +66 -0
  99. package/templates/.agent/skills/apify-actor-development/references/key-value-store-schema.md +129 -0
  100. package/templates/.agent/skills/apify-actor-development/references/logging.md +50 -0
  101. package/templates/.agent/skills/apify-actor-development/references/output-schema.md +49 -0
  102. package/templates/.agent/skills/apify-actor-development/references/standby-mode.md +61 -0
  103. package/templates/.agent/skills/apify-actorization/SKILL.md +185 -0
  104. package/templates/.agent/skills/apify-actorization/references/cli-actorization.md +81 -0
  105. package/templates/.agent/skills/apify-actorization/references/js-ts-actorization.md +111 -0
  106. package/templates/.agent/skills/apify-actorization/references/python-actorization.md +95 -0
  107. package/templates/.agent/skills/apify-actorization/references/schemas-and-output.md +140 -0
  108. package/templates/.agent/skills/apify-audience-analysis/SKILL.md +122 -0
  109. package/templates/.agent/skills/apify-audience-analysis/reference/scripts/run_actor.js +363 -0
  110. package/templates/.agent/skills/apify-brand-reputation-monitoring/SKILL.md +122 -0
  111. package/templates/.agent/skills/apify-brand-reputation-monitoring/reference/scripts/run_actor.js +363 -0
  112. package/templates/.agent/skills/apify-competitor-intelligence/SKILL.md +132 -0
  113. package/templates/.agent/skills/apify-competitor-intelligence/reference/scripts/run_actor.js +363 -0
  114. package/templates/.agent/skills/apify-content-analytics/SKILL.md +121 -0
  115. package/templates/.agent/skills/apify-content-analytics/reference/scripts/run_actor.js +363 -0
  116. package/templates/.agent/skills/apify-ecommerce/SKILL.md +265 -0
  117. package/templates/.agent/skills/apify-ecommerce/reference/scripts/package.json +3 -0
  118. package/templates/.agent/skills/apify-ecommerce/reference/scripts/run_actor.js +369 -0
  119. package/templates/.agent/skills/apify-influencer-discovery/SKILL.md +119 -0
  120. package/templates/.agent/skills/apify-influencer-discovery/reference/scripts/run_actor.js +363 -0
  121. package/templates/.agent/skills/apify-lead-generation/SKILL.md +121 -0
  122. package/templates/.agent/skills/apify-lead-generation/reference/scripts/run_actor.js +363 -0
  123. package/templates/.agent/skills/apify-market-research/SKILL.md +120 -0
  124. package/templates/.agent/skills/apify-market-research/reference/scripts/run_actor.js +363 -0
  125. package/templates/.agent/skills/apify-trend-analysis/SKILL.md +128 -0
  126. package/templates/.agent/skills/apify-trend-analysis/reference/scripts/run_actor.js +363 -0
  127. package/templates/.agent/skills/apify-ultimate-scraper/SKILL.md +231 -0
  128. package/templates/.agent/skills/apify-ultimate-scraper/reference/scripts/run_actor.js +363 -0
  129. package/templates/.agent/skills/app-store-optimization/HOW_TO_USE.md +281 -0
  130. package/templates/.agent/skills/app-store-optimization/README.md +430 -0
  131. package/templates/.agent/skills/app-store-optimization/SKILL.md +409 -0
  132. package/templates/.agent/skills/app-store-optimization/ab_test_planner.py +662 -0
  133. package/templates/.agent/skills/app-store-optimization/aso_scorer.py +482 -0
  134. package/templates/.agent/skills/app-store-optimization/competitor_analyzer.py +577 -0
  135. package/templates/.agent/skills/app-store-optimization/expected_output.json +170 -0
  136. package/templates/.agent/skills/app-store-optimization/keyword_analyzer.py +406 -0
  137. package/templates/.agent/skills/app-store-optimization/launch_checklist.py +739 -0
  138. package/templates/.agent/skills/app-store-optimization/localization_helper.py +588 -0
  139. package/templates/.agent/skills/app-store-optimization/metadata_optimizer.py +581 -0
  140. package/templates/.agent/skills/app-store-optimization/review_analyzer.py +714 -0
  141. package/templates/.agent/skills/app-store-optimization/sample_input.json +30 -0
  142. package/templates/.agent/skills/application-performance-performance-optimization/SKILL.md +157 -0
  143. package/templates/.agent/skills/architect-review/SKILL.md +172 -0
  144. package/templates/.agent/skills/architecture-decision-records/SKILL.md +444 -0
  145. package/templates/.agent/skills/architecture-patterns/SKILL.md +45 -0
  146. package/templates/.agent/skills/architecture-patterns/resources/implementation-playbook.md +479 -0
  147. package/templates/.agent/skills/ask-questions-if-underspecified/SKILL.md +86 -0
  148. package/templates/.agent/skills/async-python-patterns/SKILL.md +42 -0
  149. package/templates/.agent/skills/async-python-patterns/resources/implementation-playbook.md +678 -0
  150. package/templates/.agent/skills/auth-implementation-patterns/SKILL.md +42 -0
  151. package/templates/.agent/skills/auth-implementation-patterns/resources/implementation-playbook.md +618 -0
  152. package/templates/.agent/skills/autonomous-agent-patterns/SKILL.md +764 -0
  153. package/templates/.agent/skills/autonomous-agents/SKILL.md +73 -0
  154. package/templates/.agent/skills/aws-cost-cleanup/SKILL.md +310 -0
  155. package/templates/.agent/skills/aws-cost-optimizer/SKILL.md +193 -0
  156. package/templates/.agent/skills/aws-penetration-testing/SKILL.md +409 -0
  157. package/templates/.agent/skills/aws-penetration-testing/references/advanced-aws-pentesting.md +469 -0
  158. package/templates/.agent/skills/aws-serverless/SKILL.md +328 -0
  159. package/templates/.agent/skills/aws-skills/SKILL.md +23 -0
  160. package/templates/.agent/skills/awt-e2e-testing/SKILL.md +30 -0
  161. package/templates/.agent/skills/azure-ai-agents-persistent-dotnet/SKILL.md +353 -0
  162. package/templates/.agent/skills/azure-ai-agents-persistent-java/SKILL.md +140 -0
  163. package/templates/.agent/skills/azure-cosmos-rust/SKILL.md +138 -0
  164. package/templates/.agent/skills/azure-eventhub-rust/SKILL.md +130 -0
  165. package/templates/.agent/skills/azure-identity-rust/SKILL.md +118 -0
  166. package/templates/.agent/skills/azure-keyvault-certificates-rust/SKILL.md +180 -0
  167. package/templates/.agent/skills/azure-keyvault-keys-rust/SKILL.md +170 -0
  168. package/templates/.agent/skills/azure-keyvault-secrets-rust/SKILL.md +145 -0
  169. package/templates/.agent/skills/azure-messaging-webpubsub-java/SKILL.md +307 -0
  170. package/templates/.agent/skills/azure-messaging-webpubsubservice-py/SKILL.md +248 -0
  171. package/templates/.agent/skills/azure-mgmt-apicenter-dotnet/SKILL.md +415 -0
  172. package/templates/.agent/skills/azure-mgmt-apicenter-py/SKILL.md +245 -0
  173. package/templates/.agent/skills/azure-mgmt-apimanagement-dotnet/SKILL.md +314 -0
  174. package/templates/.agent/skills/azure-mgmt-apimanagement-py/SKILL.md +281 -0
  175. package/templates/.agent/skills/azure-mgmt-mongodbatlas-dotnet/SKILL.md +359 -0
  176. package/templates/.agent/skills/azure-microsoft-playwright-testing-ts/SKILL.md +307 -0
  177. package/templates/.agent/skills/azure-security-keyvault-keys-dotnet/SKILL.md +410 -0
  178. package/templates/.agent/skills/azure-security-keyvault-keys-java/SKILL.md +367 -0
  179. package/templates/.agent/skills/azure-security-keyvault-secrets-java/SKILL.md +361 -0
  180. package/templates/.agent/skills/azure-storage-blob-rust/SKILL.md +135 -0
  181. package/templates/.agent/skills/azure-web-pubsub-ts/SKILL.md +315 -0
  182. package/templates/.agent/skills/backend-architect/SKILL.md +329 -0
  183. package/templates/.agent/skills/backend-dev-guidelines/SKILL.md +347 -0
  184. package/templates/.agent/skills/backend-dev-guidelines/resources/architecture-overview.md +451 -0
  185. package/templates/.agent/skills/backend-dev-guidelines/resources/async-and-errors.md +307 -0
  186. package/templates/.agent/skills/backend-dev-guidelines/resources/complete-examples.md +638 -0
  187. package/templates/.agent/skills/backend-dev-guidelines/resources/configuration.md +275 -0
  188. package/templates/.agent/skills/backend-dev-guidelines/resources/database-patterns.md +224 -0
  189. package/templates/.agent/skills/backend-dev-guidelines/resources/middleware-guide.md +213 -0
  190. package/templates/.agent/skills/backend-dev-guidelines/resources/routing-and-controllers.md +756 -0
  191. package/templates/.agent/skills/backend-dev-guidelines/resources/sentry-and-monitoring.md +336 -0
  192. package/templates/.agent/skills/backend-dev-guidelines/resources/services-and-repositories.md +789 -0
  193. package/templates/.agent/skills/backend-dev-guidelines/resources/testing-guide.md +235 -0
  194. package/templates/.agent/skills/backend-dev-guidelines/resources/validation-patterns.md +754 -0
  195. package/templates/.agent/skills/backend-development-feature-development/SKILL.md +183 -0
  196. package/templates/.agent/skills/backend-security-coder/SKILL.md +155 -0
  197. package/templates/.agent/skills/backtesting-frameworks/SKILL.md +42 -0
  198. package/templates/.agent/skills/backtesting-frameworks/resources/implementation-playbook.md +647 -0
  199. package/templates/.agent/skills/bash-defensive-patterns/SKILL.md +46 -0
  200. package/templates/.agent/skills/bash-defensive-patterns/resources/implementation-playbook.md +517 -0
  201. package/templates/.agent/skills/bats-testing-patterns/SKILL.md +37 -0
  202. package/templates/.agent/skills/bats-testing-patterns/resources/implementation-playbook.md +614 -0
  203. package/templates/.agent/skills/bazel-build-optimization/SKILL.md +400 -0
  204. package/templates/.agent/skills/binary-analysis-patterns/SKILL.md +453 -0
  205. package/templates/.agent/skills/biopython/SKILL.md +442 -0
  206. package/templates/.agent/skills/broken-authentication/SKILL.md +480 -0
  207. package/templates/.agent/skills/bullmq-specialist/SKILL.md +62 -0
  208. package/templates/.agent/skills/burp-suite-testing/SKILL.md +384 -0
  209. package/templates/.agent/skills/c4-architecture-c4-architecture/SKILL.md +392 -0
  210. package/templates/.agent/skills/canvas-design/LICENSE.txt +202 -0
  211. package/templates/.agent/skills/canvas-design/SKILL.md +135 -0
  212. package/templates/.agent/skills/canvas-design/canvas-fonts/ArsenalSC-OFL.txt +93 -0
  213. package/templates/.agent/skills/canvas-design/canvas-fonts/ArsenalSC-Regular.ttf +0 -0
  214. package/templates/.agent/skills/canvas-design/canvas-fonts/BigShoulders-Bold.ttf +0 -0
  215. package/templates/.agent/skills/canvas-design/canvas-fonts/BigShoulders-OFL.txt +93 -0
  216. package/templates/.agent/skills/canvas-design/canvas-fonts/BigShoulders-Regular.ttf +0 -0
  217. package/templates/.agent/skills/canvas-design/canvas-fonts/Boldonse-OFL.txt +93 -0
  218. package/templates/.agent/skills/canvas-design/canvas-fonts/Boldonse-Regular.ttf +0 -0
  219. package/templates/.agent/skills/canvas-design/canvas-fonts/BricolageGrotesque-Bold.ttf +0 -0
  220. package/templates/.agent/skills/canvas-design/canvas-fonts/BricolageGrotesque-OFL.txt +93 -0
  221. package/templates/.agent/skills/canvas-design/canvas-fonts/BricolageGrotesque-Regular.ttf +0 -0
  222. package/templates/.agent/skills/canvas-design/canvas-fonts/CrimsonPro-Bold.ttf +0 -0
  223. package/templates/.agent/skills/canvas-design/canvas-fonts/CrimsonPro-Italic.ttf +0 -0
  224. package/templates/.agent/skills/canvas-design/canvas-fonts/CrimsonPro-OFL.txt +93 -0
  225. package/templates/.agent/skills/canvas-design/canvas-fonts/CrimsonPro-Regular.ttf +0 -0
  226. package/templates/.agent/skills/canvas-design/canvas-fonts/DMMono-OFL.txt +93 -0
  227. package/templates/.agent/skills/canvas-design/canvas-fonts/DMMono-Regular.ttf +0 -0
  228. package/templates/.agent/skills/canvas-design/canvas-fonts/EricaOne-OFL.txt +94 -0
  229. package/templates/.agent/skills/canvas-design/canvas-fonts/EricaOne-Regular.ttf +0 -0
  230. package/templates/.agent/skills/canvas-design/canvas-fonts/GeistMono-Bold.ttf +0 -0
  231. package/templates/.agent/skills/canvas-design/canvas-fonts/GeistMono-OFL.txt +93 -0
  232. package/templates/.agent/skills/canvas-design/canvas-fonts/GeistMono-Regular.ttf +0 -0
  233. package/templates/.agent/skills/canvas-design/canvas-fonts/Gloock-OFL.txt +93 -0
  234. package/templates/.agent/skills/canvas-design/canvas-fonts/Gloock-Regular.ttf +0 -0
  235. package/templates/.agent/skills/canvas-design/canvas-fonts/IBMPlexMono-Bold.ttf +0 -0
  236. package/templates/.agent/skills/canvas-design/canvas-fonts/IBMPlexMono-OFL.txt +93 -0
  237. package/templates/.agent/skills/canvas-design/canvas-fonts/IBMPlexMono-Regular.ttf +0 -0
  238. package/templates/.agent/skills/canvas-design/canvas-fonts/IBMPlexSerif-Bold.ttf +0 -0
  239. package/templates/.agent/skills/canvas-design/canvas-fonts/IBMPlexSerif-BoldItalic.ttf +0 -0
  240. package/templates/.agent/skills/canvas-design/canvas-fonts/IBMPlexSerif-Italic.ttf +0 -0
  241. package/templates/.agent/skills/canvas-design/canvas-fonts/IBMPlexSerif-Regular.ttf +0 -0
  242. package/templates/.agent/skills/canvas-design/canvas-fonts/InstrumentSans-Bold.ttf +0 -0
  243. package/templates/.agent/skills/canvas-design/canvas-fonts/InstrumentSans-BoldItalic.ttf +0 -0
  244. package/templates/.agent/skills/canvas-design/canvas-fonts/InstrumentSans-Italic.ttf +0 -0
  245. package/templates/.agent/skills/canvas-design/canvas-fonts/InstrumentSans-OFL.txt +93 -0
  246. package/templates/.agent/skills/canvas-design/canvas-fonts/InstrumentSans-Regular.ttf +0 -0
  247. package/templates/.agent/skills/canvas-design/canvas-fonts/InstrumentSerif-Italic.ttf +0 -0
  248. package/templates/.agent/skills/canvas-design/canvas-fonts/InstrumentSerif-Regular.ttf +0 -0
  249. package/templates/.agent/skills/canvas-design/canvas-fonts/Italiana-OFL.txt +93 -0
  250. package/templates/.agent/skills/canvas-design/canvas-fonts/Italiana-Regular.ttf +0 -0
  251. package/templates/.agent/skills/canvas-design/canvas-fonts/JetBrainsMono-Bold.ttf +0 -0
  252. package/templates/.agent/skills/canvas-design/canvas-fonts/JetBrainsMono-OFL.txt +93 -0
  253. package/templates/.agent/skills/canvas-design/canvas-fonts/JetBrainsMono-Regular.ttf +0 -0
  254. package/templates/.agent/skills/canvas-design/canvas-fonts/Jura-Light.ttf +0 -0
  255. package/templates/.agent/skills/canvas-design/canvas-fonts/Jura-Medium.ttf +0 -0
  256. package/templates/.agent/skills/canvas-design/canvas-fonts/Jura-OFL.txt +93 -0
  257. package/templates/.agent/skills/canvas-design/canvas-fonts/LibreBaskerville-OFL.txt +93 -0
  258. package/templates/.agent/skills/canvas-design/canvas-fonts/LibreBaskerville-Regular.ttf +0 -0
  259. package/templates/.agent/skills/canvas-design/canvas-fonts/Lora-Bold.ttf +0 -0
  260. package/templates/.agent/skills/canvas-design/canvas-fonts/Lora-BoldItalic.ttf +0 -0
  261. package/templates/.agent/skills/canvas-design/canvas-fonts/Lora-Italic.ttf +0 -0
  262. package/templates/.agent/skills/canvas-design/canvas-fonts/Lora-OFL.txt +93 -0
  263. package/templates/.agent/skills/canvas-design/canvas-fonts/Lora-Regular.ttf +0 -0
  264. package/templates/.agent/skills/canvas-design/canvas-fonts/NationalPark-Bold.ttf +0 -0
  265. package/templates/.agent/skills/canvas-design/canvas-fonts/NationalPark-OFL.txt +93 -0
  266. package/templates/.agent/skills/canvas-design/canvas-fonts/NationalPark-Regular.ttf +0 -0
  267. package/templates/.agent/skills/canvas-design/canvas-fonts/NothingYouCouldDo-OFL.txt +93 -0
  268. package/templates/.agent/skills/canvas-design/canvas-fonts/NothingYouCouldDo-Regular.ttf +0 -0
  269. package/templates/.agent/skills/canvas-design/canvas-fonts/Outfit-Bold.ttf +0 -0
  270. package/templates/.agent/skills/canvas-design/canvas-fonts/Outfit-OFL.txt +93 -0
  271. package/templates/.agent/skills/canvas-design/canvas-fonts/Outfit-Regular.ttf +0 -0
  272. package/templates/.agent/skills/canvas-design/canvas-fonts/PixelifySans-Medium.ttf +0 -0
  273. package/templates/.agent/skills/canvas-design/canvas-fonts/PixelifySans-OFL.txt +93 -0
  274. package/templates/.agent/skills/canvas-design/canvas-fonts/PoiretOne-OFL.txt +93 -0
  275. package/templates/.agent/skills/canvas-design/canvas-fonts/PoiretOne-Regular.ttf +0 -0
  276. package/templates/.agent/skills/canvas-design/canvas-fonts/RedHatMono-Bold.ttf +0 -0
  277. package/templates/.agent/skills/canvas-design/canvas-fonts/RedHatMono-OFL.txt +93 -0
  278. package/templates/.agent/skills/canvas-design/canvas-fonts/RedHatMono-Regular.ttf +0 -0
  279. package/templates/.agent/skills/canvas-design/canvas-fonts/Silkscreen-OFL.txt +93 -0
  280. package/templates/.agent/skills/canvas-design/canvas-fonts/Silkscreen-Regular.ttf +0 -0
  281. package/templates/.agent/skills/canvas-design/canvas-fonts/SmoochSans-Medium.ttf +0 -0
  282. package/templates/.agent/skills/canvas-design/canvas-fonts/SmoochSans-OFL.txt +93 -0
  283. package/templates/.agent/skills/canvas-design/canvas-fonts/Tektur-Medium.ttf +0 -0
  284. package/templates/.agent/skills/canvas-design/canvas-fonts/Tektur-OFL.txt +93 -0
  285. package/templates/.agent/skills/canvas-design/canvas-fonts/Tektur-Regular.ttf +0 -0
  286. package/templates/.agent/skills/canvas-design/canvas-fonts/WorkSans-Bold.ttf +0 -0
  287. package/templates/.agent/skills/canvas-design/canvas-fonts/WorkSans-BoldItalic.ttf +0 -0
  288. package/templates/.agent/skills/canvas-design/canvas-fonts/WorkSans-Italic.ttf +0 -0
  289. package/templates/.agent/skills/canvas-design/canvas-fonts/WorkSans-OFL.txt +93 -0
  290. package/templates/.agent/skills/canvas-design/canvas-fonts/WorkSans-Regular.ttf +0 -0
  291. package/templates/.agent/skills/canvas-design/canvas-fonts/YoungSerif-OFL.txt +93 -0
  292. package/templates/.agent/skills/canvas-design/canvas-fonts/YoungSerif-Regular.ttf +0 -0
  293. package/templates/.agent/skills/cc-skill-backend-patterns/SKILL.md +588 -0
  294. package/templates/.agent/skills/cc-skill-frontend-patterns/SKILL.md +637 -0
  295. package/templates/.agent/skills/cc-skill-security-review/SKILL.md +499 -0
  296. package/templates/.agent/skills/cdk-patterns/SKILL.md +78 -0
  297. package/templates/.agent/skills/claude-api/LICENSE.txt +202 -0
  298. package/templates/.agent/skills/claude-api/SKILL.md +252 -0
  299. package/templates/.agent/skills/claude-api/csharp/claude-api.md +70 -0
  300. package/templates/.agent/skills/claude-api/curl/examples.md +164 -0
  301. package/templates/.agent/skills/claude-api/go/claude-api.md +146 -0
  302. package/templates/.agent/skills/claude-api/java/claude-api.md +128 -0
  303. package/templates/.agent/skills/claude-api/php/claude-api.md +88 -0
  304. package/templates/.agent/skills/claude-api/python/agent-sdk/README.md +269 -0
  305. package/templates/.agent/skills/claude-api/python/agent-sdk/patterns.md +319 -0
  306. package/templates/.agent/skills/claude-api/python/claude-api/README.md +404 -0
  307. package/templates/.agent/skills/claude-api/python/claude-api/batches.md +182 -0
  308. package/templates/.agent/skills/claude-api/python/claude-api/files-api.md +162 -0
  309. package/templates/.agent/skills/claude-api/python/claude-api/streaming.md +162 -0
  310. package/templates/.agent/skills/claude-api/python/claude-api/tool-use.md +587 -0
  311. package/templates/.agent/skills/claude-api/ruby/claude-api.md +87 -0
  312. package/templates/.agent/skills/claude-api/shared/error-codes.md +205 -0
  313. package/templates/.agent/skills/claude-api/shared/live-sources.md +121 -0
  314. package/templates/.agent/skills/claude-api/shared/models.md +68 -0
  315. package/templates/.agent/skills/claude-api/shared/tool-use-concepts.md +305 -0
  316. package/templates/.agent/skills/claude-api/typescript/agent-sdk/README.md +220 -0
  317. package/templates/.agent/skills/claude-api/typescript/agent-sdk/patterns.md +150 -0
  318. package/templates/.agent/skills/claude-api/typescript/claude-api/README.md +313 -0
  319. package/templates/.agent/skills/claude-api/typescript/claude-api/batches.md +106 -0
  320. package/templates/.agent/skills/claude-api/typescript/claude-api/files-api.md +98 -0
  321. package/templates/.agent/skills/claude-api/typescript/claude-api/streaming.md +178 -0
  322. package/templates/.agent/skills/claude-api/typescript/claude-api/tool-use.md +477 -0
  323. package/templates/.agent/skills/claude-win11-speckit-update-skill/SKILL.md +23 -0
  324. package/templates/.agent/skills/clerk-auth/SKILL.md +58 -0
  325. package/templates/.agent/skills/cloud-architect/SKILL.md +131 -0
  326. package/templates/.agent/skills/cloud-devops/SKILL.md +235 -0
  327. package/templates/.agent/skills/cloud-penetration-testing/SKILL.md +507 -0
  328. package/templates/.agent/skills/cloud-penetration-testing/references/advanced-cloud-scripts.md +318 -0
  329. package/templates/.agent/skills/cloudflare-workers-expert/SKILL.md +89 -0
  330. package/templates/.agent/skills/code-refactoring-refactor-clean/SKILL.md +54 -0
  331. package/templates/.agent/skills/code-refactoring-refactor-clean/resources/implementation-playbook.md +879 -0
  332. package/templates/.agent/skills/codebase-cleanup-deps-audit/SKILL.md +54 -0
  333. package/templates/.agent/skills/codebase-cleanup-deps-audit/resources/implementation-playbook.md +766 -0
  334. package/templates/.agent/skills/codebase-cleanup-refactor-clean/SKILL.md +54 -0
  335. package/templates/.agent/skills/codebase-cleanup-refactor-clean/resources/implementation-playbook.md +879 -0
  336. package/templates/.agent/skills/codebase-cleanup-tech-debt/SKILL.md +389 -0
  337. package/templates/.agent/skills/computer-use-agents/SKILL.md +320 -0
  338. package/templates/.agent/skills/context-agent/SKILL.md +188 -0
  339. package/templates/.agent/skills/context-agent/references/compression-rules.md +64 -0
  340. package/templates/.agent/skills/context-agent/references/context-format.md +116 -0
  341. package/templates/.agent/skills/context-agent/scripts/active_context.py +227 -0
  342. package/templates/.agent/skills/context-agent/scripts/compressor.py +149 -0
  343. package/templates/.agent/skills/context-agent/scripts/config.py +69 -0
  344. package/templates/.agent/skills/context-agent/scripts/context_loader.py +155 -0
  345. package/templates/.agent/skills/context-agent/scripts/context_manager.py +302 -0
  346. package/templates/.agent/skills/context-agent/scripts/models.py +103 -0
  347. package/templates/.agent/skills/context-agent/scripts/project_registry.py +132 -0
  348. package/templates/.agent/skills/context-agent/scripts/requirements.txt +6 -0
  349. package/templates/.agent/skills/context-agent/scripts/search.py +115 -0
  350. package/templates/.agent/skills/context-agent/scripts/session_parser.py +206 -0
  351. package/templates/.agent/skills/context-agent/scripts/session_summary.py +319 -0
  352. package/templates/.agent/skills/context-optimization/SKILL.md +180 -0
  353. package/templates/.agent/skills/cost-optimization/SKILL.md +289 -0
  354. package/templates/.agent/skills/crypto-bd-agent/SKILL.md +235 -0
  355. package/templates/.agent/skills/database/SKILL.md +212 -0
  356. package/templates/.agent/skills/database-admin/SKILL.md +161 -0
  357. package/templates/.agent/skills/database-architect/SKILL.md +263 -0
  358. package/templates/.agent/skills/database-cloud-optimization-cost-optimize/SKILL.md +47 -0
  359. package/templates/.agent/skills/database-cloud-optimization-cost-optimize/resources/implementation-playbook.md +1441 -0
  360. package/templates/.agent/skills/database-migration/SKILL.md +439 -0
  361. package/templates/.agent/skills/database-migrations-migration-observability/SKILL.md +420 -0
  362. package/templates/.agent/skills/database-migrations-sql-migrations/SKILL.md +49 -0
  363. package/templates/.agent/skills/database-migrations-sql-migrations/resources/implementation-playbook.md +499 -0
  364. package/templates/.agent/skills/database-optimizer/SKILL.md +163 -0
  365. package/templates/.agent/skills/dbos-golang/AGENTS.md +92 -0
  366. package/templates/.agent/skills/dbos-golang/SKILL.md +126 -0
  367. package/templates/.agent/skills/dbos-golang/references/_sections.md +41 -0
  368. package/templates/.agent/skills/dbos-golang/references/advanced-patching.md +86 -0
  369. package/templates/.agent/skills/dbos-golang/references/advanced-versioning.md +58 -0
  370. package/templates/.agent/skills/dbos-golang/references/client-enqueue.md +65 -0
  371. package/templates/.agent/skills/dbos-golang/references/client-setup.md +65 -0
  372. package/templates/.agent/skills/dbos-golang/references/comm-events.md +69 -0
  373. package/templates/.agent/skills/dbos-golang/references/comm-messages.md +57 -0
  374. package/templates/.agent/skills/dbos-golang/references/comm-streaming.md +75 -0
  375. package/templates/.agent/skills/dbos-golang/references/lifecycle-config.md +70 -0
  376. package/templates/.agent/skills/dbos-golang/references/pattern-debouncing.md +47 -0
  377. package/templates/.agent/skills/dbos-golang/references/pattern-idempotency.md +63 -0
  378. package/templates/.agent/skills/dbos-golang/references/pattern-scheduled.md +69 -0
  379. package/templates/.agent/skills/dbos-golang/references/pattern-sleep.md +52 -0
  380. package/templates/.agent/skills/dbos-golang/references/queue-basics.md +53 -0
  381. package/templates/.agent/skills/dbos-golang/references/queue-concurrency.md +49 -0
  382. package/templates/.agent/skills/dbos-golang/references/queue-deduplication.md +52 -0
  383. package/templates/.agent/skills/dbos-golang/references/queue-listening.md +49 -0
  384. package/templates/.agent/skills/dbos-golang/references/queue-partitioning.md +42 -0
  385. package/templates/.agent/skills/dbos-golang/references/queue-priority.md +45 -0
  386. package/templates/.agent/skills/dbos-golang/references/queue-rate-limiting.md +50 -0
  387. package/templates/.agent/skills/dbos-golang/references/step-basics.md +81 -0
  388. package/templates/.agent/skills/dbos-golang/references/step-concurrency.md +79 -0
  389. package/templates/.agent/skills/dbos-golang/references/step-retries.md +66 -0
  390. package/templates/.agent/skills/dbos-golang/references/test-setup.md +90 -0
  391. package/templates/.agent/skills/dbos-golang/references/workflow-background.md +64 -0
  392. package/templates/.agent/skills/dbos-golang/references/workflow-constraints.md +68 -0
  393. package/templates/.agent/skills/dbos-golang/references/workflow-control.md +48 -0
  394. package/templates/.agent/skills/dbos-golang/references/workflow-determinism.md +51 -0
  395. package/templates/.agent/skills/dbos-golang/references/workflow-introspection.md +64 -0
  396. package/templates/.agent/skills/dbos-golang/references/workflow-timeout.md +38 -0
  397. package/templates/.agent/skills/dbos-python/AGENTS.md +95 -0
  398. package/templates/.agent/skills/dbos-python/SKILL.md +95 -0
  399. package/templates/.agent/skills/dbos-python/references/_sections.md +41 -0
  400. package/templates/.agent/skills/dbos-python/references/advanced-async.md +101 -0
  401. package/templates/.agent/skills/dbos-python/references/advanced-patching.md +68 -0
  402. package/templates/.agent/skills/dbos-python/references/advanced-versioning.md +66 -0
  403. package/templates/.agent/skills/dbos-python/references/client-enqueue.md +54 -0
  404. package/templates/.agent/skills/dbos-python/references/client-setup.md +57 -0
  405. package/templates/.agent/skills/dbos-python/references/comm-events.md +61 -0
  406. package/templates/.agent/skills/dbos-python/references/comm-messages.md +56 -0
  407. package/templates/.agent/skills/dbos-python/references/comm-streaming.md +57 -0
  408. package/templates/.agent/skills/dbos-python/references/lifecycle-config.md +74 -0
  409. package/templates/.agent/skills/dbos-python/references/lifecycle-fastapi.md +66 -0
  410. package/templates/.agent/skills/dbos-python/references/pattern-classes.md +61 -0
  411. package/templates/.agent/skills/dbos-python/references/pattern-debouncing.md +59 -0
  412. package/templates/.agent/skills/dbos-python/references/pattern-idempotency.md +52 -0
  413. package/templates/.agent/skills/dbos-python/references/pattern-scheduled.md +56 -0
  414. package/templates/.agent/skills/dbos-python/references/pattern-sleep.md +58 -0
  415. package/templates/.agent/skills/dbos-python/references/queue-basics.md +60 -0
  416. package/templates/.agent/skills/dbos-python/references/queue-concurrency.md +57 -0
  417. package/templates/.agent/skills/dbos-python/references/queue-deduplication.md +51 -0
  418. package/templates/.agent/skills/dbos-python/references/queue-listening.md +64 -0
  419. package/templates/.agent/skills/dbos-python/references/queue-partitioning.md +62 -0
  420. package/templates/.agent/skills/dbos-python/references/queue-priority.md +62 -0
  421. package/templates/.agent/skills/dbos-python/references/queue-rate-limiting.md +55 -0
  422. package/templates/.agent/skills/dbos-python/references/step-basics.md +53 -0
  423. package/templates/.agent/skills/dbos-python/references/step-retries.md +44 -0
  424. package/templates/.agent/skills/dbos-python/references/step-transactions.md +58 -0
  425. package/templates/.agent/skills/dbos-python/references/test-fixtures.md +63 -0
  426. package/templates/.agent/skills/dbos-python/references/workflow-background.md +58 -0
  427. package/templates/.agent/skills/dbos-python/references/workflow-constraints.md +70 -0
  428. package/templates/.agent/skills/dbos-python/references/workflow-control.md +77 -0
  429. package/templates/.agent/skills/dbos-python/references/workflow-determinism.md +53 -0
  430. package/templates/.agent/skills/dbos-python/references/workflow-introspection.md +68 -0
  431. package/templates/.agent/skills/dbos-python/references/workflow-timeout.md +59 -0
  432. package/templates/.agent/skills/dbos-typescript/AGENTS.md +94 -0
  433. package/templates/.agent/skills/dbos-typescript/SKILL.md +104 -0
  434. package/templates/.agent/skills/dbos-typescript/references/_sections.md +41 -0
  435. package/templates/.agent/skills/dbos-typescript/references/advanced-patching.md +72 -0
  436. package/templates/.agent/skills/dbos-typescript/references/advanced-versioning.md +61 -0
  437. package/templates/.agent/skills/dbos-typescript/references/client-enqueue.md +75 -0
  438. package/templates/.agent/skills/dbos-typescript/references/client-setup.md +60 -0
  439. package/templates/.agent/skills/dbos-typescript/references/comm-events.md +57 -0
  440. package/templates/.agent/skills/dbos-typescript/references/comm-messages.md +55 -0
  441. package/templates/.agent/skills/dbos-typescript/references/comm-streaming.md +53 -0
  442. package/templates/.agent/skills/dbos-typescript/references/lifecycle-config.md +47 -0
  443. package/templates/.agent/skills/dbos-typescript/references/lifecycle-express.md +61 -0
  444. package/templates/.agent/skills/dbos-typescript/references/pattern-classes.md +67 -0
  445. package/templates/.agent/skills/dbos-typescript/references/pattern-debouncing.md +56 -0
  446. package/templates/.agent/skills/dbos-typescript/references/pattern-idempotency.md +53 -0
  447. package/templates/.agent/skills/dbos-typescript/references/pattern-scheduled.md +69 -0
  448. package/templates/.agent/skills/dbos-typescript/references/pattern-sleep.md +59 -0
  449. package/templates/.agent/skills/dbos-typescript/references/queue-basics.md +59 -0
  450. package/templates/.agent/skills/dbos-typescript/references/queue-concurrency.md +53 -0
  451. package/templates/.agent/skills/dbos-typescript/references/queue-deduplication.md +51 -0
  452. package/templates/.agent/skills/dbos-typescript/references/queue-listening.md +63 -0
  453. package/templates/.agent/skills/dbos-typescript/references/queue-partitioning.md +63 -0
  454. package/templates/.agent/skills/dbos-typescript/references/queue-priority.md +48 -0
  455. package/templates/.agent/skills/dbos-typescript/references/queue-rate-limiting.md +44 -0
  456. package/templates/.agent/skills/dbos-typescript/references/step-basics.md +63 -0
  457. package/templates/.agent/skills/dbos-typescript/references/step-retries.md +67 -0
  458. package/templates/.agent/skills/dbos-typescript/references/step-transactions.md +68 -0
  459. package/templates/.agent/skills/dbos-typescript/references/test-setup.md +104 -0
  460. package/templates/.agent/skills/dbos-typescript/references/workflow-background.md +54 -0
  461. package/templates/.agent/skills/dbos-typescript/references/workflow-constraints.md +65 -0
  462. package/templates/.agent/skills/dbos-typescript/references/workflow-control.md +57 -0
  463. package/templates/.agent/skills/dbos-typescript/references/workflow-determinism.md +54 -0
  464. package/templates/.agent/skills/dbos-typescript/references/workflow-introspection.md +70 -0
  465. package/templates/.agent/skills/dbos-typescript/references/workflow-timeout.md +39 -0
  466. package/templates/.agent/skills/dbt-transformation-patterns/SKILL.md +37 -0
  467. package/templates/.agent/skills/dbt-transformation-patterns/resources/implementation-playbook.md +547 -0
  468. package/templates/.agent/skills/ddd-strategic-design/SKILL.md +52 -0
  469. package/templates/.agent/skills/ddd-strategic-design/references/strategic-design-template.md +22 -0
  470. package/templates/.agent/skills/ddd-tactical-patterns/SKILL.md +53 -0
  471. package/templates/.agent/skills/ddd-tactical-patterns/references/tactical-checklist.md +25 -0
  472. package/templates/.agent/skills/debugger/SKILL.md +53 -0
  473. package/templates/.agent/skills/deployment-pipeline-design/SKILL.md +374 -0
  474. package/templates/.agent/skills/design-md/SKILL.md +179 -0
  475. package/templates/.agent/skills/design-orchestration/SKILL.md +169 -0
  476. package/templates/.agent/skills/design-spells/SKILL.md +36 -0
  477. package/templates/.agent/skills/devops-deploy/SKILL.md +294 -0
  478. package/templates/.agent/skills/devops-troubleshooter/SKILL.md +157 -0
  479. package/templates/.agent/skills/discord-bot-architect/SKILL.md +282 -0
  480. package/templates/.agent/skills/dispatching-parallel-agents/SKILL.md +182 -0
  481. package/templates/.agent/skills/django-access-review/SKILL.md +346 -0
  482. package/templates/.agent/skills/django-perf-review/SKILL.md +398 -0
  483. package/templates/.agent/skills/django-pro/SKILL.md +178 -0
  484. package/templates/.agent/skills/doc-coauthoring/SKILL.md +381 -0
  485. package/templates/.agent/skills/docker-expert/SKILL.md +413 -0
  486. package/templates/.agent/skills/docs-architect/SKILL.md +96 -0
  487. package/templates/.agent/skills/domain-driven-design/SKILL.md +74 -0
  488. package/templates/.agent/skills/domain-driven-design/references/ddd-deliverables.md +24 -0
  489. package/templates/.agent/skills/dotnet-architect/SKILL.md +194 -0
  490. package/templates/.agent/skills/dotnet-backend/SKILL.md +264 -0
  491. package/templates/.agent/skills/dotnet-backend-patterns/SKILL.md +40 -0
  492. package/templates/.agent/skills/dotnet-backend-patterns/assets/repository-template.cs.template +523 -0
  493. package/templates/.agent/skills/dotnet-backend-patterns/assets/service-template.cs.template +336 -0
  494. package/templates/.agent/skills/dotnet-backend-patterns/references/dapper-patterns.md +544 -0
  495. package/templates/.agent/skills/dotnet-backend-patterns/references/ef-core-best-practices.md +355 -0
  496. package/templates/.agent/skills/dotnet-backend-patterns/resources/implementation-playbook.md +799 -0
  497. package/templates/.agent/skills/e2e-testing/SKILL.md +165 -0
  498. package/templates/.agent/skills/e2e-testing-patterns/SKILL.md +44 -0
  499. package/templates/.agent/skills/e2e-testing-patterns/resources/implementation-playbook.md +531 -0
  500. package/templates/.agent/skills/enhance-prompt/SKILL.md +206 -0
  501. package/templates/.agent/skills/error-debugging-multi-agent-review/SKILL.md +219 -0
  502. package/templates/.agent/skills/error-handling-patterns/SKILL.md +38 -0
  503. package/templates/.agent/skills/error-handling-patterns/resources/implementation-playbook.md +635 -0
  504. package/templates/.agent/skills/event-sourcing-architect/SKILL.md +66 -0
  505. package/templates/.agent/skills/event-store-design/SKILL.md +452 -0
  506. package/templates/.agent/skills/event-store-design/resources/implementation-playbook.md +25 -0
  507. package/templates/.agent/skills/expo-api-routes/SKILL.md +370 -0
  508. package/templates/.agent/skills/expo-tailwind-setup/SKILL.md +482 -0
  509. package/templates/.agent/skills/expo-ui-swift-ui/SKILL.md +46 -0
  510. package/templates/.agent/skills/fastapi-pro/SKILL.md +190 -0
  511. package/templates/.agent/skills/fastapi-router-py/SKILL.md +58 -0
  512. package/templates/.agent/skills/fastapi-templates/SKILL.md +35 -0
  513. package/templates/.agent/skills/fastapi-templates/resources/implementation-playbook.md +566 -0
  514. package/templates/.agent/skills/ffuf-web-fuzzing/SKILL.md +500 -0
  515. package/templates/.agent/skills/figma-automation/SKILL.md +185 -0
  516. package/templates/.agent/skills/firebase/SKILL.md +61 -0
  517. package/templates/.agent/skills/fixing-motion-performance/SKILL.md +152 -0
  518. package/templates/.agent/skills/flutter-expert/SKILL.md +197 -0
  519. package/templates/.agent/skills/food-database-query/SKILL.md +787 -0
  520. package/templates/.agent/skills/fp-backend/SKILL.md +1334 -0
  521. package/templates/.agent/skills/fp-react/SKILL.md +792 -0
  522. package/templates/.agent/skills/fp-ts-react/SKILL.md +797 -0
  523. package/templates/.agent/skills/frontend-design/LICENSE.txt +177 -0
  524. package/templates/.agent/skills/frontend-dev-guidelines/SKILL.md +364 -0
  525. package/templates/.agent/skills/frontend-dev-guidelines/resources/common-patterns.md +331 -0
  526. package/templates/.agent/skills/frontend-dev-guidelines/resources/complete-examples.md +872 -0
  527. package/templates/.agent/skills/frontend-dev-guidelines/resources/component-patterns.md +502 -0
  528. package/templates/.agent/skills/frontend-dev-guidelines/resources/data-fetching.md +767 -0
  529. package/templates/.agent/skills/frontend-dev-guidelines/resources/file-organization.md +502 -0
  530. package/templates/.agent/skills/frontend-dev-guidelines/resources/loading-and-error-states.md +501 -0
  531. package/templates/.agent/skills/frontend-dev-guidelines/resources/performance.md +406 -0
  532. package/templates/.agent/skills/frontend-dev-guidelines/resources/routing-guide.md +364 -0
  533. package/templates/.agent/skills/frontend-dev-guidelines/resources/styling-guide.md +428 -0
  534. package/templates/.agent/skills/frontend-dev-guidelines/resources/typescript-standards.md +418 -0
  535. package/templates/.agent/skills/frontend-developer/SKILL.md +169 -0
  536. package/templates/.agent/skills/frontend-mobile-development-component-scaffold/SKILL.md +406 -0
  537. package/templates/.agent/skills/frontend-mobile-security-xss-scan/SKILL.md +325 -0
  538. package/templates/.agent/skills/frontend-security-coder/SKILL.md +168 -0
  539. package/templates/.agent/skills/frontend-slides/SKILL.md +236 -0
  540. package/templates/.agent/skills/frontend-slides/STYLE_PRESETS.md +347 -0
  541. package/templates/.agent/skills/frontend-slides/animation-patterns.md +110 -0
  542. package/templates/.agent/skills/frontend-slides/html-template.md +347 -0
  543. package/templates/.agent/skills/frontend-slides/scripts/extract-pptx.py +96 -0
  544. package/templates/.agent/skills/frontend-slides/viewport-base.css +153 -0
  545. package/templates/.agent/skills/frontend-ui-dark-ts/SKILL.md +594 -0
  546. package/templates/.agent/skills/gemini-api-dev/SKILL.md +133 -0
  547. package/templates/.agent/skills/gemini-api-integration/SKILL.md +188 -0
  548. package/templates/.agent/skills/gha-security-review/SKILL.md +188 -0
  549. package/templates/.agent/skills/git-advanced-workflows/SKILL.md +415 -0
  550. package/templates/.agent/skills/git-hooks-automation/SKILL.md +416 -0
  551. package/templates/.agent/skills/git-pr-workflows-git-workflow/SKILL.md +143 -0
  552. package/templates/.agent/skills/git-pr-workflows-onboard/SKILL.md +419 -0
  553. package/templates/.agent/skills/git-pr-workflows-pr-enhance/SKILL.md +51 -0
  554. package/templates/.agent/skills/git-pr-workflows-pr-enhance/resources/implementation-playbook.md +701 -0
  555. package/templates/.agent/skills/git-pushing/SKILL.md +35 -0
  556. package/templates/.agent/skills/git-pushing/scripts/smart_commit.sh +19 -0
  557. package/templates/.agent/skills/github/SKILL.md +76 -0
  558. package/templates/.agent/skills/github/agents/openai.yaml +4 -0
  559. package/templates/.agent/skills/github-actions-templates/SKILL.md +348 -0
  560. package/templates/.agent/skills/github-automation/SKILL.md +230 -0
  561. package/templates/.agent/skills/github-issue-creator/SKILL.md +143 -0
  562. package/templates/.agent/skills/github-workflow-automation/SKILL.md +849 -0
  563. package/templates/.agent/skills/gitlab-automation/SKILL.md +257 -0
  564. package/templates/.agent/skills/gitlab-ci-patterns/SKILL.md +286 -0
  565. package/templates/.agent/skills/gitops-workflow/SKILL.md +306 -0
  566. package/templates/.agent/skills/gitops-workflow/references/argocd-setup.md +134 -0
  567. package/templates/.agent/skills/gitops-workflow/references/sync-policies.md +131 -0
  568. package/templates/.agent/skills/go-concurrency-patterns/SKILL.md +36 -0
  569. package/templates/.agent/skills/go-concurrency-patterns/resources/implementation-playbook.md +654 -0
  570. package/templates/.agent/skills/go-playwright/SKILL.md +76 -0
  571. package/templates/.agent/skills/go-playwright/resources/implementation-playbook.md +110 -0
  572. package/templates/.agent/skills/go-rod-master/SKILL.md +545 -0
  573. package/templates/.agent/skills/go-rod-master/examples/basic_scrape.go +41 -0
  574. package/templates/.agent/skills/go-rod-master/examples/concurrent_pages.go +81 -0
  575. package/templates/.agent/skills/go-rod-master/examples/request_hijacking.go +85 -0
  576. package/templates/.agent/skills/go-rod-master/examples/stealth_page.go +91 -0
  577. package/templates/.agent/skills/go-rod-master/references/api-reference.md +148 -0
  578. package/templates/.agent/skills/goal-analyzer/SKILL.md +607 -0
  579. package/templates/.agent/skills/godot-4-migration/SKILL.md +127 -0
  580. package/templates/.agent/skills/godot-gdscript-patterns/SKILL.md +36 -0
  581. package/templates/.agent/skills/godot-gdscript-patterns/resources/implementation-playbook.md +804 -0
  582. package/templates/.agent/skills/golang-pro/SKILL.md +176 -0
  583. package/templates/.agent/skills/google-analytics-automation/SKILL.md +231 -0
  584. package/templates/.agent/skills/google-calendar-automation/SKILL.md +158 -0
  585. package/templates/.agent/skills/google-docs-automation/SKILL.md +81 -0
  586. package/templates/.agent/skills/google-drive-automation/SKILL.md +135 -0
  587. package/templates/.agent/skills/google-sheets-automation/SKILL.md +144 -0
  588. package/templates/.agent/skills/google-slides-automation/SKILL.md +140 -0
  589. package/templates/.agent/skills/googlesheets-automation/SKILL.md +200 -0
  590. package/templates/.agent/skills/graphql-architect/SKILL.md +180 -0
  591. package/templates/.agent/skills/grpc-golang/SKILL.md +104 -0
  592. package/templates/.agent/skills/grpc-golang/resources/implementation-playbook.md +548 -0
  593. package/templates/.agent/skills/hierarchical-agent-memory/SKILL.md +133 -0
  594. package/templates/.agent/skills/hig-patterns/SKILL.md +99 -0
  595. package/templates/.agent/skills/hig-patterns/references/charting-data.md +81 -0
  596. package/templates/.agent/skills/hig-patterns/references/collaboration-and-sharing.md +86 -0
  597. package/templates/.agent/skills/hig-patterns/references/drag-and-drop.md +134 -0
  598. package/templates/.agent/skills/hig-patterns/references/entering-data.md +69 -0
  599. package/templates/.agent/skills/hig-patterns/references/feedback.md +67 -0
  600. package/templates/.agent/skills/hig-patterns/references/file-management.md +135 -0
  601. package/templates/.agent/skills/hig-patterns/references/going-full-screen.md +79 -0
  602. package/templates/.agent/skills/hig-patterns/references/launching.md +81 -0
  603. package/templates/.agent/skills/hig-patterns/references/live-viewing-apps.md +79 -0
  604. package/templates/.agent/skills/hig-patterns/references/loading.md +59 -0
  605. package/templates/.agent/skills/hig-patterns/references/managing-accounts.md +107 -0
  606. package/templates/.agent/skills/hig-patterns/references/managing-notifications.md +99 -0
  607. package/templates/.agent/skills/hig-patterns/references/modality.md +82 -0
  608. package/templates/.agent/skills/hig-patterns/references/multitasking.md +131 -0
  609. package/templates/.agent/skills/hig-patterns/references/offering-help.md +117 -0
  610. package/templates/.agent/skills/hig-patterns/references/onboarding.md +69 -0
  611. package/templates/.agent/skills/hig-patterns/references/playing-audio.md +124 -0
  612. package/templates/.agent/skills/hig-patterns/references/playing-haptics.md +280 -0
  613. package/templates/.agent/skills/hig-patterns/references/playing-video.md +180 -0
  614. package/templates/.agent/skills/hig-patterns/references/printing.md +50 -0
  615. package/templates/.agent/skills/hig-patterns/references/ratings-and-reviews.md +48 -0
  616. package/templates/.agent/skills/hig-patterns/references/searching.md +70 -0
  617. package/templates/.agent/skills/hig-patterns/references/settings.md +84 -0
  618. package/templates/.agent/skills/hig-patterns/references/undo-and-redo.md +58 -0
  619. package/templates/.agent/skills/hig-patterns/references/workouts.md +76 -0
  620. package/templates/.agent/skills/hosted-agents/SKILL.md +283 -0
  621. package/templates/.agent/skills/hosted-agents-v2-py/SKILL.md +326 -0
  622. package/templates/.agent/skills/html-injection-testing/SKILL.md +502 -0
  623. package/templates/.agent/skills/hybrid-cloud-architect/SKILL.md +164 -0
  624. package/templates/.agent/skills/idor-testing/SKILL.md +446 -0
  625. package/templates/.agent/skills/intelligent-routing/SKILL.md +41 -44
  626. package/templates/.agent/skills/ios-debugger-agent/SKILL.md +59 -0
  627. package/templates/.agent/skills/ios-debugger-agent/agents/openai.yaml +4 -0
  628. package/templates/.agent/skills/javascript-mastery/SKILL.md +648 -0
  629. package/templates/.agent/skills/javascript-pro/SKILL.md +55 -0
  630. package/templates/.agent/skills/javascript-testing-patterns/SKILL.md +38 -0
  631. package/templates/.agent/skills/javascript-testing-patterns/resources/implementation-playbook.md +1024 -0
  632. package/templates/.agent/skills/javascript-typescript-typescript-scaffold/SKILL.md +364 -0
  633. package/templates/.agent/skills/k6-load-testing/SKILL.md +627 -0
  634. package/templates/.agent/skills/k8s-security-policies/SKILL.md +349 -0
  635. package/templates/.agent/skills/k8s-security-policies/assets/network-policy-template.yaml +177 -0
  636. package/templates/.agent/skills/k8s-security-policies/references/rbac-patterns.md +187 -0
  637. package/templates/.agent/skills/kpi-dashboard-design/SKILL.md +443 -0
  638. package/templates/.agent/skills/kubernetes-architect/SKILL.md +165 -0
  639. package/templates/.agent/skills/kubernetes-deployment/SKILL.md +166 -0
  640. package/templates/.agent/skills/langchain-architecture/SKILL.md +353 -0
  641. package/templates/.agent/skills/laravel-security-audit/SKILL.md +224 -0
  642. package/templates/.agent/skills/lightning-architecture-review/SKILL.md +52 -0
  643. package/templates/.agent/skills/linkerd-patterns/SKILL.md +326 -0
  644. package/templates/.agent/skills/linux-privilege-escalation/SKILL.md +510 -0
  645. package/templates/.agent/skills/linux-shell-scripting/SKILL.md +508 -0
  646. package/templates/.agent/skills/linux-troubleshooting/SKILL.md +220 -0
  647. package/templates/.agent/skills/llm-app-patterns/SKILL.md +763 -0
  648. package/templates/.agent/skills/llm-application-dev-langchain-agent/SKILL.md +249 -0
  649. package/templates/.agent/skills/llm-application-dev-prompt-optimize/SKILL.md +40 -0
  650. package/templates/.agent/skills/llm-application-dev-prompt-optimize/resources/implementation-playbook.md +591 -0
  651. package/templates/.agent/skills/llm-prompt-optimizer/SKILL.md +182 -0
  652. package/templates/.agent/skills/local-legal-seo-audit/SKILL.md +347 -0
  653. package/templates/.agent/skills/m365-agents-dotnet/SKILL.md +294 -0
  654. package/templates/.agent/skills/m365-agents-py/SKILL.md +345 -0
  655. package/templates/.agent/skills/m365-agents-ts/SKILL.md +186 -0
  656. package/templates/.agent/skills/memory-safety-patterns/SKILL.md +36 -0
  657. package/templates/.agent/skills/memory-safety-patterns/resources/implementation-playbook.md +603 -0
  658. package/templates/.agent/skills/microservices-patterns/SKILL.md +38 -0
  659. package/templates/.agent/skills/microservices-patterns/resources/implementation-playbook.md +607 -0
  660. package/templates/.agent/skills/microsoft-azure-webjobs-extensions-authentication-events-dotnet/SKILL.md +445 -0
  661. package/templates/.agent/skills/mobile-developer/SKILL.md +203 -0
  662. package/templates/.agent/skills/mobile-security-coder/SKILL.md +182 -0
  663. package/templates/.agent/skills/modern-javascript-patterns/SKILL.md +38 -0
  664. package/templates/.agent/skills/modern-javascript-patterns/resources/implementation-playbook.md +910 -0
  665. package/templates/.agent/skills/monorepo-architect/SKILL.md +64 -0
  666. package/templates/.agent/skills/moodle-external-api-development/SKILL.md +600 -0
  667. package/templates/.agent/skills/multi-agent-brainstorming/SKILL.md +256 -0
  668. package/templates/.agent/skills/multi-agent-patterns/SKILL.md +256 -0
  669. package/templates/.agent/skills/multi-cloud-architecture/SKILL.md +192 -0
  670. package/templates/.agent/skills/n8n-code-javascript/SKILL.md +701 -0
  671. package/templates/.agent/skills/n8n-code-python/SKILL.md +750 -0
  672. package/templates/.agent/skills/n8n-node-configuration/SKILL.md +787 -0
  673. package/templates/.agent/skills/n8n-workflow-patterns/SKILL.md +413 -0
  674. package/templates/.agent/skills/nextjs-app-router-patterns/SKILL.md +36 -0
  675. package/templates/.agent/skills/nextjs-app-router-patterns/resources/implementation-playbook.md +543 -0
  676. package/templates/.agent/skills/nextjs-best-practices/SKILL.md +208 -0
  677. package/templates/.agent/skills/nextjs-supabase-auth/SKILL.md +61 -0
  678. package/templates/.agent/skills/nodejs-backend-patterns/SKILL.md +38 -0
  679. package/templates/.agent/skills/nodejs-backend-patterns/resources/implementation-playbook.md +1019 -0
  680. package/templates/.agent/skills/nx-workspace-patterns/SKILL.md +467 -0
  681. package/templates/.agent/skills/odoo-docker-deployment/SKILL.md +139 -0
  682. package/templates/.agent/skills/odoo-performance-tuner/SKILL.md +105 -0
  683. package/templates/.agent/skills/odoo-qweb-templates/SKILL.md +95 -0
  684. package/templates/.agent/skills/odoo-rpc-api/SKILL.md +103 -0
  685. package/templates/.agent/skills/odoo-security-rules/SKILL.md +92 -0
  686. package/templates/.agent/skills/on-call-handoff-patterns/SKILL.md +456 -0
  687. package/templates/.agent/skills/openapi-spec-generation/SKILL.md +36 -0
  688. package/templates/.agent/skills/openapi-spec-generation/resources/implementation-playbook.md +1027 -0
  689. package/templates/.agent/skills/openclaw-github-repo-commander/SKILL.md +95 -0
  690. package/templates/.agent/skills/performance-engineer/SKILL.md +176 -0
  691. package/templates/.agent/skills/performance-optimizer/README.md +20 -0
  692. package/templates/.agent/skills/performance-optimizer/SKILL.md +389 -0
  693. package/templates/.agent/skills/performance-testing-review-ai-review/SKILL.md +453 -0
  694. package/templates/.agent/skills/performance-testing-review-multi-agent-review/SKILL.md +219 -0
  695. package/templates/.agent/skills/pipecat-friday-agent/SKILL.md +79 -0
  696. package/templates/.agent/skills/pipecat-friday-agent/scripts/friday_agent.py +146 -0
  697. package/templates/.agent/skills/postgresql-optimization/SKILL.md +174 -0
  698. package/templates/.agent/skills/prisma-expert/SKILL.md +361 -0
  699. package/templates/.agent/skills/privacy-by-design/README.md +25 -0
  700. package/templates/.agent/skills/privacy-by-design/SKILL.md +208 -0
  701. package/templates/.agent/skills/product-design/SKILL.md +358 -0
  702. package/templates/.agent/skills/programmatic-seo/SKILL.md +351 -0
  703. package/templates/.agent/skills/progressive-web-app/SKILL.md +352 -0
  704. package/templates/.agent/skills/projection-patterns/SKILL.md +36 -0
  705. package/templates/.agent/skills/projection-patterns/resources/implementation-playbook.md +501 -0
  706. package/templates/.agent/skills/prompt-caching/SKILL.md +66 -0
  707. package/templates/.agent/skills/prompt-engineer/README.md +659 -0
  708. package/templates/.agent/skills/prompt-engineer/SKILL.md +248 -0
  709. package/templates/.agent/skills/prompt-engineering/SKILL.md +177 -0
  710. package/templates/.agent/skills/prompt-engineering-patterns/SKILL.md +216 -0
  711. package/templates/.agent/skills/prompt-engineering-patterns/assets/few-shot-examples.json +106 -0
  712. package/templates/.agent/skills/prompt-engineering-patterns/assets/prompt-template-library.md +246 -0
  713. package/templates/.agent/skills/prompt-engineering-patterns/references/chain-of-thought.md +399 -0
  714. package/templates/.agent/skills/prompt-engineering-patterns/references/few-shot-learning.md +369 -0
  715. package/templates/.agent/skills/prompt-engineering-patterns/references/prompt-optimization.md +414 -0
  716. package/templates/.agent/skills/prompt-engineering-patterns/references/prompt-templates.md +470 -0
  717. package/templates/.agent/skills/prompt-engineering-patterns/references/system-prompts.md +189 -0
  718. package/templates/.agent/skills/prompt-engineering-patterns/scripts/optimize-prompt.py +279 -0
  719. package/templates/.agent/skills/prompt-library/SKILL.md +325 -0
  720. package/templates/.agent/skills/pubmed-database/SKILL.md +460 -0
  721. package/templates/.agent/skills/python-development-python-scaffold/SKILL.md +334 -0
  722. package/templates/.agent/skills/python-fastapi-development/SKILL.md +215 -0
  723. package/templates/.agent/skills/python-packaging/SKILL.md +39 -0
  724. package/templates/.agent/skills/python-packaging/resources/implementation-playbook.md +869 -0
  725. package/templates/.agent/skills/python-performance-optimization/SKILL.md +39 -0
  726. package/templates/.agent/skills/python-performance-optimization/resources/implementation-playbook.md +868 -0
  727. package/templates/.agent/skills/python-pro/SKILL.md +156 -0
  728. package/templates/.agent/skills/python-testing-patterns/SKILL.md +40 -0
  729. package/templates/.agent/skills/python-testing-patterns/resources/implementation-playbook.md +906 -0
  730. package/templates/.agent/skills/radix-ui-design-system/SKILL.md +848 -0
  731. package/templates/.agent/skills/radix-ui-design-system/examples/README.md +63 -0
  732. package/templates/.agent/skills/radix-ui-design-system/examples/dialog-example.tsx +128 -0
  733. package/templates/.agent/skills/radix-ui-design-system/examples/dropdown-example.tsx +162 -0
  734. package/templates/.agent/skills/radix-ui-design-system/templates/component-template.tsx.template +148 -0
  735. package/templates/.agent/skills/react-best-practices/AGENTS.md +2249 -0
  736. package/templates/.agent/skills/react-best-practices/README.md +123 -0
  737. package/templates/.agent/skills/react-best-practices/SKILL.md +126 -0
  738. package/templates/.agent/skills/react-best-practices/metadata.json +15 -0
  739. package/templates/.agent/skills/react-best-practices/rules/_sections.md +46 -0
  740. package/templates/.agent/skills/react-best-practices/rules/_template.md +28 -0
  741. package/templates/.agent/skills/react-best-practices/rules/advanced-event-handler-refs.md +55 -0
  742. package/templates/.agent/skills/react-best-practices/rules/advanced-use-latest.md +49 -0
  743. package/templates/.agent/skills/react-best-practices/rules/async-api-routes.md +38 -0
  744. package/templates/.agent/skills/react-best-practices/rules/async-defer-await.md +80 -0
  745. package/templates/.agent/skills/react-best-practices/rules/async-dependencies.md +36 -0
  746. package/templates/.agent/skills/react-best-practices/rules/async-parallel.md +28 -0
  747. package/templates/.agent/skills/react-best-practices/rules/async-suspense-boundaries.md +99 -0
  748. package/templates/.agent/skills/react-best-practices/rules/bundle-barrel-imports.md +59 -0
  749. package/templates/.agent/skills/react-best-practices/rules/bundle-conditional.md +31 -0
  750. package/templates/.agent/skills/react-best-practices/rules/bundle-defer-third-party.md +49 -0
  751. package/templates/.agent/skills/react-best-practices/rules/bundle-dynamic-imports.md +35 -0
  752. package/templates/.agent/skills/react-best-practices/rules/bundle-preload.md +50 -0
  753. package/templates/.agent/skills/react-best-practices/rules/client-event-listeners.md +74 -0
  754. package/templates/.agent/skills/react-best-practices/rules/client-swr-dedup.md +56 -0
  755. package/templates/.agent/skills/react-best-practices/rules/js-batch-dom-css.md +82 -0
  756. package/templates/.agent/skills/react-best-practices/rules/js-cache-function-results.md +80 -0
  757. package/templates/.agent/skills/react-best-practices/rules/js-cache-property-access.md +28 -0
  758. package/templates/.agent/skills/react-best-practices/rules/js-cache-storage.md +70 -0
  759. package/templates/.agent/skills/react-best-practices/rules/js-combine-iterations.md +32 -0
  760. package/templates/.agent/skills/react-best-practices/rules/js-early-exit.md +50 -0
  761. package/templates/.agent/skills/react-best-practices/rules/js-hoist-regexp.md +45 -0
  762. package/templates/.agent/skills/react-best-practices/rules/js-index-maps.md +37 -0
  763. package/templates/.agent/skills/react-best-practices/rules/js-length-check-first.md +49 -0
  764. package/templates/.agent/skills/react-best-practices/rules/js-min-max-loop.md +82 -0
  765. package/templates/.agent/skills/react-best-practices/rules/js-set-map-lookups.md +24 -0
  766. package/templates/.agent/skills/react-best-practices/rules/js-tosorted-immutable.md +57 -0
  767. package/templates/.agent/skills/react-best-practices/rules/rendering-activity.md +26 -0
  768. package/templates/.agent/skills/react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
  769. package/templates/.agent/skills/react-best-practices/rules/rendering-conditional-render.md +40 -0
  770. package/templates/.agent/skills/react-best-practices/rules/rendering-content-visibility.md +38 -0
  771. package/templates/.agent/skills/react-best-practices/rules/rendering-hoist-jsx.md +46 -0
  772. package/templates/.agent/skills/react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
  773. package/templates/.agent/skills/react-best-practices/rules/rendering-svg-precision.md +28 -0
  774. package/templates/.agent/skills/react-best-practices/rules/rerender-defer-reads.md +39 -0
  775. package/templates/.agent/skills/react-best-practices/rules/rerender-dependencies.md +45 -0
  776. package/templates/.agent/skills/react-best-practices/rules/rerender-derived-state.md +29 -0
  777. package/templates/.agent/skills/react-best-practices/rules/rerender-functional-setstate.md +74 -0
  778. package/templates/.agent/skills/react-best-practices/rules/rerender-lazy-state-init.md +58 -0
  779. package/templates/.agent/skills/react-best-practices/rules/rerender-memo.md +44 -0
  780. package/templates/.agent/skills/react-best-practices/rules/rerender-transitions.md +40 -0
  781. package/templates/.agent/skills/react-best-practices/rules/server-after-nonblocking.md +73 -0
  782. package/templates/.agent/skills/react-best-practices/rules/server-cache-lru.md +41 -0
  783. package/templates/.agent/skills/react-best-practices/rules/server-cache-react.md +26 -0
  784. package/templates/.agent/skills/react-best-practices/rules/server-parallel-fetching.md +79 -0
  785. package/templates/.agent/skills/react-best-practices/rules/server-serialization.md +38 -0
  786. package/templates/.agent/skills/react-component-performance/SKILL.md +135 -0
  787. package/templates/.agent/skills/react-component-performance/agents/openai.yaml +4 -0
  788. package/templates/.agent/skills/react-component-performance/references/examples.md +88 -0
  789. package/templates/.agent/skills/react-flow-architect/SKILL.md +619 -0
  790. package/templates/.agent/skills/react-flow-node-ts/SKILL.md +72 -0
  791. package/templates/.agent/skills/react-modernization/SKILL.md +37 -0
  792. package/templates/.agent/skills/react-modernization/resources/implementation-playbook.md +512 -0
  793. package/templates/.agent/skills/react-native-architecture/SKILL.md +36 -0
  794. package/templates/.agent/skills/react-native-architecture/resources/implementation-playbook.md +670 -0
  795. package/templates/.agent/skills/react-nextjs-development/SKILL.md +228 -0
  796. package/templates/.agent/skills/react-patterns/SKILL.md +203 -0
  797. package/templates/.agent/skills/react-state-management/SKILL.md +444 -0
  798. package/templates/.agent/skills/react-ui-patterns/SKILL.md +295 -0
  799. package/templates/.agent/skills/robius-app-architecture/SKILL.md +330 -0
  800. package/templates/.agent/skills/robius-widget-patterns/SKILL.md +428 -0
  801. package/templates/.agent/skills/rust-async-patterns/SKILL.md +36 -0
  802. package/templates/.agent/skills/rust-async-patterns/resources/implementation-playbook.md +516 -0
  803. package/templates/.agent/skills/screen-reader-testing/SKILL.md +36 -0
  804. package/templates/.agent/skills/screen-reader-testing/resources/implementation-playbook.md +544 -0
  805. package/templates/.agent/skills/search-specialist/SKILL.md +78 -0
  806. package/templates/.agent/skills/security/aws-compliance-checker/SKILL.md +516 -0
  807. package/templates/.agent/skills/security/aws-iam-best-practices/SKILL.md +397 -0
  808. package/templates/.agent/skills/security/aws-secrets-rotation/SKILL.md +465 -0
  809. package/templates/.agent/skills/security/aws-security-audit/SKILL.md +369 -0
  810. package/templates/.agent/skills/security-audit/SKILL.md +217 -0
  811. package/templates/.agent/skills/security-auditor/SKILL.md +165 -0
  812. package/templates/.agent/skills/security-bluebook-builder/SKILL.md +48 -0
  813. package/templates/.agent/skills/security-compliance-compliance-check/SKILL.md +58 -0
  814. package/templates/.agent/skills/security-compliance-compliance-check/resources/implementation-playbook.md +963 -0
  815. package/templates/.agent/skills/security-requirement-extraction/SKILL.md +36 -0
  816. package/templates/.agent/skills/security-requirement-extraction/resources/implementation-playbook.md +676 -0
  817. package/templates/.agent/skills/security-scanning-security-dependencies/SKILL.md +46 -0
  818. package/templates/.agent/skills/security-scanning-security-dependencies/resources/implementation-playbook.md +544 -0
  819. package/templates/.agent/skills/security-scanning-security-hardening/SKILL.md +150 -0
  820. package/templates/.agent/skills/security-scanning-security-sast/SKILL.md +496 -0
  821. package/templates/.agent/skills/senior-architect/SKILL.md +215 -0
  822. package/templates/.agent/skills/senior-architect/references/architecture_patterns.md +103 -0
  823. package/templates/.agent/skills/senior-architect/references/system_design_workflows.md +103 -0
  824. package/templates/.agent/skills/senior-architect/references/tech_decision_guide.md +103 -0
  825. package/templates/.agent/skills/senior-architect/scripts/architecture_diagram_generator.py +114 -0
  826. package/templates/.agent/skills/senior-architect/scripts/dependency_analyzer.py +114 -0
  827. package/templates/.agent/skills/senior-architect/scripts/project_architect.py +114 -0
  828. package/templates/.agent/skills/senior-frontend/SKILL.md +490 -0
  829. package/templates/.agent/skills/senior-frontend/references/frontend_best_practices.md +806 -0
  830. package/templates/.agent/skills/senior-frontend/references/nextjs_optimization_guide.md +724 -0
  831. package/templates/.agent/skills/senior-frontend/references/react_patterns.md +746 -0
  832. package/templates/.agent/skills/senior-frontend/scripts/bundle_analyzer.py +407 -0
  833. package/templates/.agent/skills/senior-frontend/scripts/component_generator.py +329 -0
  834. package/templates/.agent/skills/senior-frontend/scripts/frontend_scaffolder.py +1005 -0
  835. package/templates/.agent/skills/seo/SKILL.md +139 -0
  836. package/templates/.agent/skills/seo/references/cwv-thresholds.md +108 -0
  837. package/templates/.agent/skills/seo/references/eeat-framework.md +214 -0
  838. package/templates/.agent/skills/seo/references/quality-gates.md +155 -0
  839. package/templates/.agent/skills/seo/references/schema-types.md +118 -0
  840. package/templates/.agent/skills/seo-audit/SKILL.md +487 -0
  841. package/templates/.agent/skills/seo-authority-builder/SKILL.md +141 -0
  842. package/templates/.agent/skills/seo-cannibalization-detector/SKILL.md +122 -0
  843. package/templates/.agent/skills/seo-competitor-pages/SKILL.md +229 -0
  844. package/templates/.agent/skills/seo-content/SKILL.md +186 -0
  845. package/templates/.agent/skills/seo-content-auditor/SKILL.md +82 -0
  846. package/templates/.agent/skills/seo-content-planner/SKILL.md +113 -0
  847. package/templates/.agent/skills/seo-content-refresher/SKILL.md +117 -0
  848. package/templates/.agent/skills/seo-content-writer/SKILL.md +95 -0
  849. package/templates/.agent/skills/seo-dataforseo/SKILL.md +395 -0
  850. package/templates/.agent/skills/seo-forensic-incident-response/SKILL.md +261 -0
  851. package/templates/.agent/skills/seo-geo/SKILL.md +254 -0
  852. package/templates/.agent/skills/seo-hreflang/SKILL.md +209 -0
  853. package/templates/.agent/skills/seo-image-gen/SKILL.md +183 -0
  854. package/templates/.agent/skills/seo-images/SKILL.md +193 -0
  855. package/templates/.agent/skills/seo-keyword-strategist/SKILL.md +94 -0
  856. package/templates/.agent/skills/seo-meta-optimizer/SKILL.md +91 -0
  857. package/templates/.agent/skills/seo-page/SKILL.md +103 -0
  858. package/templates/.agent/skills/seo-plan/SKILL.md +136 -0
  859. package/templates/.agent/skills/seo-plan/assets/agency.md +175 -0
  860. package/templates/.agent/skills/seo-plan/assets/ecommerce.md +167 -0
  861. package/templates/.agent/skills/seo-plan/assets/generic.md +144 -0
  862. package/templates/.agent/skills/seo-plan/assets/local-service.md +160 -0
  863. package/templates/.agent/skills/seo-plan/assets/publisher.md +153 -0
  864. package/templates/.agent/skills/seo-plan/assets/saas.md +135 -0
  865. package/templates/.agent/skills/seo-programmatic/SKILL.md +184 -0
  866. package/templates/.agent/skills/seo-schema/SKILL.md +178 -0
  867. package/templates/.agent/skills/seo-sitemap/SKILL.md +129 -0
  868. package/templates/.agent/skills/seo-snippet-hunter/SKILL.md +113 -0
  869. package/templates/.agent/skills/seo-structure-architect/SKILL.md +107 -0
  870. package/templates/.agent/skills/seo-technical/SKILL.md +175 -0
  871. package/templates/.agent/skills/shadcn/SKILL.md +249 -0
  872. package/templates/.agent/skills/shadcn/agents/openai.yml +5 -0
  873. package/templates/.agent/skills/shadcn/assets/shadcn-small.png +0 -0
  874. package/templates/.agent/skills/shadcn/assets/shadcn.png +0 -0
  875. package/templates/.agent/skills/shadcn/cli.md +255 -0
  876. package/templates/.agent/skills/shadcn/customization.md +202 -0
  877. package/templates/.agent/skills/shadcn/evals/evals.json +47 -0
  878. package/templates/.agent/skills/shadcn/mcp.md +94 -0
  879. package/templates/.agent/skills/shadcn/rules/base-vs-radix.md +306 -0
  880. package/templates/.agent/skills/shadcn/rules/composition.md +195 -0
  881. package/templates/.agent/skills/shadcn/rules/forms.md +192 -0
  882. package/templates/.agent/skills/shadcn/rules/icons.md +101 -0
  883. package/templates/.agent/skills/shadcn/rules/styling.md +162 -0
  884. package/templates/.agent/skills/similarity-search-patterns/SKILL.md +36 -0
  885. package/templates/.agent/skills/similarity-search-patterns/resources/implementation-playbook.md +557 -0
  886. package/templates/.agent/skills/site-architecture/SKILL.md +366 -0
  887. package/templates/.agent/skills/site-architecture/evals/evals.json +88 -0
  888. package/templates/.agent/skills/site-architecture/references/mermaid-templates.md +216 -0
  889. package/templates/.agent/skills/site-architecture/references/navigation-patterns.md +305 -0
  890. package/templates/.agent/skills/site-architecture/references/site-type-templates.md +293 -0
  891. package/templates/.agent/skills/smtp-penetration-testing/SKILL.md +504 -0
  892. package/templates/.agent/skills/social-orchestrator/SKILL.md +299 -0
  893. package/templates/.agent/skills/software-architecture/SKILL.md +81 -0
  894. package/templates/.agent/skills/solidity-security/SKILL.md +37 -0
  895. package/templates/.agent/skills/solidity-security/resources/implementation-playbook.md +524 -0
  896. package/templates/.agent/skills/spark-optimization/SKILL.md +430 -0
  897. package/templates/.agent/skills/spec-to-code-compliance/SKILL.md +358 -0
  898. package/templates/.agent/skills/speckit-updater/SKILL.md +167 -0
  899. package/templates/.agent/skills/sql-injection-testing/SKILL.md +452 -0
  900. package/templates/.agent/skills/sql-optimization-patterns/SKILL.md +38 -0
  901. package/templates/.agent/skills/sql-optimization-patterns/resources/implementation-playbook.md +504 -0
  902. package/templates/.agent/skills/sqlmap-database-pentesting/SKILL.md +404 -0
  903. package/templates/.agent/skills/ssh-penetration-testing/SKILL.md +492 -0
  904. package/templates/.agent/skills/stitch-ui-design/README.md +165 -0
  905. package/templates/.agent/skills/stitch-ui-design/SKILL.md +382 -0
  906. package/templates/.agent/skills/stitch-ui-design/references/advanced-techniques.md +541 -0
  907. package/templates/.agent/skills/stitch-ui-design/references/prompt-examples.md +601 -0
  908. package/templates/.agent/skills/stride-analysis-patterns/SKILL.md +36 -0
  909. package/templates/.agent/skills/stride-analysis-patterns/resources/implementation-playbook.md +655 -0
  910. package/templates/.agent/skills/stripe-automation/SKILL.md +201 -0
  911. package/templates/.agent/skills/stripe-integration/SKILL.md +457 -0
  912. package/templates/.agent/skills/subagent-driven-development/SKILL.md +242 -0
  913. package/templates/.agent/skills/subagent-driven-development/code-quality-reviewer-prompt.md +20 -0
  914. package/templates/.agent/skills/subagent-driven-development/implementer-prompt.md +78 -0
  915. package/templates/.agent/skills/subagent-driven-development/spec-reviewer-prompt.md +61 -0
  916. package/templates/.agent/skills/supabase-automation/SKILL.md +239 -0
  917. package/templates/.agent/skills/swift-concurrency-expert/SKILL.md +113 -0
  918. package/templates/.agent/skills/swift-concurrency-expert/agents/openai.yaml +4 -0
  919. package/templates/.agent/skills/swift-concurrency-expert/references/approachable-concurrency.md +63 -0
  920. package/templates/.agent/skills/swift-concurrency-expert/references/swift-6-2-concurrency.md +272 -0
  921. package/templates/.agent/skills/swift-concurrency-expert/references/swiftui-concurrency-tour-wwdc.md +33 -0
  922. package/templates/.agent/skills/swiftui-expert-skill/SKILL.md +244 -0
  923. package/templates/.agent/skills/swiftui-liquid-glass/SKILL.md +98 -0
  924. package/templates/.agent/skills/swiftui-liquid-glass/agents/openai.yaml +4 -0
  925. package/templates/.agent/skills/swiftui-liquid-glass/references/liquid-glass.md +280 -0
  926. package/templates/.agent/skills/swiftui-performance-audit/SKILL.md +114 -0
  927. package/templates/.agent/skills/swiftui-performance-audit/agents/openai.yaml +4 -0
  928. package/templates/.agent/skills/swiftui-performance-audit/references/code-smells.md +150 -0
  929. package/templates/.agent/skills/swiftui-performance-audit/references/demystify-swiftui-performance-wwdc23.md +46 -0
  930. package/templates/.agent/skills/swiftui-performance-audit/references/optimizing-swiftui-performance-instruments.md +29 -0
  931. package/templates/.agent/skills/swiftui-performance-audit/references/profiling-intake.md +44 -0
  932. package/templates/.agent/skills/swiftui-performance-audit/references/report-template.md +47 -0
  933. package/templates/.agent/skills/swiftui-performance-audit/references/understanding-hangs-in-your-app.md +33 -0
  934. package/templates/.agent/skills/swiftui-performance-audit/references/understanding-improving-swiftui-performance.md +52 -0
  935. package/templates/.agent/skills/swiftui-ui-patterns/SKILL.md +103 -0
  936. package/templates/.agent/skills/swiftui-ui-patterns/agents/openai.yaml +4 -0
  937. package/templates/.agent/skills/swiftui-ui-patterns/references/app-wiring.md +201 -0
  938. package/templates/.agent/skills/swiftui-ui-patterns/references/async-state.md +96 -0
  939. package/templates/.agent/skills/swiftui-ui-patterns/references/components-index.md +50 -0
  940. package/templates/.agent/skills/swiftui-ui-patterns/references/controls.md +57 -0
  941. package/templates/.agent/skills/swiftui-ui-patterns/references/deeplinks.md +66 -0
  942. package/templates/.agent/skills/swiftui-ui-patterns/references/focus.md +90 -0
  943. package/templates/.agent/skills/swiftui-ui-patterns/references/form.md +97 -0
  944. package/templates/.agent/skills/swiftui-ui-patterns/references/grids.md +71 -0
  945. package/templates/.agent/skills/swiftui-ui-patterns/references/haptics.md +71 -0
  946. package/templates/.agent/skills/swiftui-ui-patterns/references/input-toolbar.md +51 -0
  947. package/templates/.agent/skills/swiftui-ui-patterns/references/lightweight-clients.md +93 -0
  948. package/templates/.agent/skills/swiftui-ui-patterns/references/list.md +86 -0
  949. package/templates/.agent/skills/swiftui-ui-patterns/references/loading-placeholders.md +38 -0
  950. package/templates/.agent/skills/swiftui-ui-patterns/references/macos-settings.md +71 -0
  951. package/templates/.agent/skills/swiftui-ui-patterns/references/matched-transitions.md +59 -0
  952. package/templates/.agent/skills/swiftui-ui-patterns/references/media.md +73 -0
  953. package/templates/.agent/skills/swiftui-ui-patterns/references/menu-bar.md +101 -0
  954. package/templates/.agent/skills/swiftui-ui-patterns/references/navigationstack.md +159 -0
  955. package/templates/.agent/skills/swiftui-ui-patterns/references/overlay.md +45 -0
  956. package/templates/.agent/skills/swiftui-ui-patterns/references/performance.md +62 -0
  957. package/templates/.agent/skills/swiftui-ui-patterns/references/previews.md +48 -0
  958. package/templates/.agent/skills/swiftui-ui-patterns/references/scroll-reveal.md +133 -0
  959. package/templates/.agent/skills/swiftui-ui-patterns/references/scrollview.md +87 -0
  960. package/templates/.agent/skills/swiftui-ui-patterns/references/searchable.md +71 -0
  961. package/templates/.agent/skills/swiftui-ui-patterns/references/sheets.md +155 -0
  962. package/templates/.agent/skills/swiftui-ui-patterns/references/split-views.md +72 -0
  963. package/templates/.agent/skills/swiftui-ui-patterns/references/tabview.md +114 -0
  964. package/templates/.agent/skills/swiftui-ui-patterns/references/theming.md +71 -0
  965. package/templates/.agent/skills/swiftui-ui-patterns/references/title-menus.md +93 -0
  966. package/templates/.agent/skills/swiftui-ui-patterns/references/top-bar.md +49 -0
  967. package/templates/.agent/skills/swiftui-view-refactor/SKILL.md +210 -0
  968. package/templates/.agent/skills/swiftui-view-refactor/agents/openai.yaml +4 -0
  969. package/templates/.agent/skills/swiftui-view-refactor/references/mv-patterns.md +161 -0
  970. package/templates/.agent/skills/systematic-debugging/SKILL.md +172 -79
  971. package/templates/.agent/skills/systems-programming-rust-project/SKILL.md +443 -0
  972. package/templates/.agent/skills/tailwind-design-system/SKILL.md +36 -0
  973. package/templates/.agent/skills/tailwind-design-system/resources/implementation-playbook.md +665 -0
  974. package/templates/.agent/skills/tavily-web/SKILL.md +39 -0
  975. package/templates/.agent/skills/tdd-orchestrator/SKILL.md +202 -0
  976. package/templates/.agent/skills/temporal-golang-pro/SKILL.md +216 -0
  977. package/templates/.agent/skills/temporal-golang-pro/resources/implementation-playbook.md +242 -0
  978. package/templates/.agent/skills/temporal-golang-pro/resources/testing-strategies.md +145 -0
  979. package/templates/.agent/skills/temporal-python-pro/SKILL.md +368 -0
  980. package/templates/.agent/skills/temporal-python-testing/SKILL.md +173 -0
  981. package/templates/.agent/skills/temporal-python-testing/resources/integration-testing.md +455 -0
  982. package/templates/.agent/skills/temporal-python-testing/resources/local-setup.md +553 -0
  983. package/templates/.agent/skills/temporal-python-testing/resources/replay-testing.md +462 -0
  984. package/templates/.agent/skills/temporal-python-testing/resources/unit-testing.md +328 -0
  985. package/templates/.agent/skills/terraform-aws-modules/SKILL.md +78 -0
  986. package/templates/.agent/skills/terraform-specialist/SKILL.md +162 -0
  987. package/templates/.agent/skills/test-fixing/SKILL.md +121 -0
  988. package/templates/.agent/skills/testing-qa/SKILL.md +230 -0
  989. package/templates/.agent/skills/tool-design/SKILL.md +318 -0
  990. package/templates/.agent/skills/top-web-vulnerabilities/SKILL.md +547 -0
  991. package/templates/.agent/skills/typescript-advanced-types/SKILL.md +38 -0
  992. package/templates/.agent/skills/typescript-advanced-types/resources/implementation-playbook.md +716 -0
  993. package/templates/.agent/skills/typescript-expert/SKILL.md +426 -0
  994. package/templates/.agent/skills/typescript-expert/references/tsconfig-strict.json +92 -0
  995. package/templates/.agent/skills/typescript-expert/references/typescript-cheatsheet.md +383 -0
  996. package/templates/.agent/skills/typescript-expert/references/utility-types.ts +335 -0
  997. package/templates/.agent/skills/typescript-expert/scripts/ts_diagnostic.py +203 -0
  998. package/templates/.agent/skills/typescript-pro/SKILL.md +53 -0
  999. package/templates/.agent/skills/ui-ux-designer/SKILL.md +207 -0
  1000. package/templates/.agent/skills/ui-ux-pro-max/SKILL.md +356 -0
  1001. package/templates/.agent/skills/ui-ux-pro-max/data/charts.csv +26 -0
  1002. package/templates/.agent/skills/ui-ux-pro-max/data/colors.csv +97 -0
  1003. package/templates/.agent/skills/ui-ux-pro-max/data/icons.csv +101 -0
  1004. package/templates/.agent/skills/ui-ux-pro-max/data/landing.csv +31 -0
  1005. package/templates/.agent/skills/ui-ux-pro-max/data/products.csv +97 -0
  1006. package/templates/.agent/skills/ui-ux-pro-max/data/prompts.csv +24 -0
  1007. package/templates/.agent/skills/ui-ux-pro-max/data/react-performance.csv +45 -0
  1008. package/templates/.agent/skills/ui-ux-pro-max/data/stacks/flutter.csv +53 -0
  1009. package/templates/.agent/skills/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -0
  1010. package/templates/.agent/skills/ui-ux-pro-max/data/stacks/nextjs.csv +53 -0
  1011. package/templates/.agent/skills/ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -0
  1012. package/templates/.agent/skills/ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -0
  1013. package/templates/.agent/skills/ui-ux-pro-max/data/stacks/react-native.csv +52 -0
  1014. package/templates/.agent/skills/ui-ux-pro-max/data/stacks/react.csv +54 -0
  1015. package/templates/.agent/skills/ui-ux-pro-max/data/stacks/shadcn.csv +61 -0
  1016. package/templates/.agent/skills/ui-ux-pro-max/data/stacks/svelte.csv +54 -0
  1017. package/templates/.agent/skills/ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
  1018. package/templates/.agent/skills/ui-ux-pro-max/data/stacks/vue.csv +50 -0
  1019. package/templates/.agent/skills/ui-ux-pro-max/data/styles.csv +59 -0
  1020. package/templates/.agent/skills/ui-ux-pro-max/data/typography.csv +58 -0
  1021. package/templates/.agent/skills/ui-ux-pro-max/data/ui-reasoning.csv +101 -0
  1022. package/templates/.agent/skills/ui-ux-pro-max/data/ux-guidelines.csv +100 -0
  1023. package/templates/.agent/skills/ui-ux-pro-max/data/web-interface.csv +31 -0
  1024. package/templates/.agent/skills/ui-ux-pro-max/scripts/core.py +257 -0
  1025. package/templates/.agent/skills/ui-ux-pro-max/scripts/design_system.py +487 -0
  1026. package/templates/.agent/skills/ui-ux-pro-max/scripts/search.py +76 -0
  1027. package/templates/.agent/skills/uniprot-database/SKILL.md +195 -0
  1028. package/templates/.agent/skills/unit-testing-test-generate/SKILL.md +322 -0
  1029. package/templates/.agent/skills/unity-ecs-patterns/SKILL.md +36 -0
  1030. package/templates/.agent/skills/unity-ecs-patterns/resources/implementation-playbook.md +625 -0
  1031. package/templates/.agent/skills/using-git-worktrees/SKILL.md +223 -0
  1032. package/templates/.agent/skills/vector-database-engineer/SKILL.md +63 -0
  1033. package/templates/.agent/skills/vercel-ai-sdk-expert/SKILL.md +222 -0
  1034. package/templates/.agent/skills/vercel-automation/SKILL.md +230 -0
  1035. package/templates/.agent/skills/vercel-deployment/SKILL.md +80 -0
  1036. package/templates/.agent/skills/vibe-code-auditor/SKILL.md +334 -0
  1037. package/templates/.agent/skills/vibe-prd/SKILL.md +48 -6
  1038. package/templates/.agent/skills/vibers-code-review/SKILL.md +140 -0
  1039. package/templates/.agent/skills/voice-agents/SKILL.md +73 -0
  1040. package/templates/.agent/skills/wcag-audit-patterns/SKILL.md +44 -0
  1041. package/templates/.agent/skills/wcag-audit-patterns/resources/implementation-playbook.md +541 -0
  1042. package/templates/.agent/skills/web-artifacts-builder/LICENSE.txt +202 -0
  1043. package/templates/.agent/skills/web-artifacts-builder/SKILL.md +79 -0
  1044. package/templates/.agent/skills/web-artifacts-builder/scripts/bundle-artifact.sh +54 -0
  1045. package/templates/.agent/skills/web-artifacts-builder/scripts/init-artifact.sh +322 -0
  1046. package/templates/.agent/skills/web-artifacts-builder/scripts/shadcn-components.tar.gz +0 -0
  1047. package/templates/.agent/skills/web-performance-optimization/SKILL.md +649 -0
  1048. package/templates/.agent/skills/web-scraper/SKILL.md +752 -0
  1049. package/templates/.agent/skills/web-scraper/references/data-transforms.md +397 -0
  1050. package/templates/.agent/skills/web-scraper/references/extraction-patterns.md +475 -0
  1051. package/templates/.agent/skills/web-scraper/references/output-templates.md +481 -0
  1052. package/templates/.agent/skills/web-security-testing/SKILL.md +183 -0
  1053. package/templates/.agent/skills/web3-testing/SKILL.md +430 -0
  1054. package/templates/.agent/skills/webapp-testing/LICENSE.txt +202 -0
  1055. package/templates/.agent/skills/webapp-testing/scripts/with_server.py +106 -0
  1056. package/templates/.agent/skills/webflow-automation/SKILL.md +239 -0
  1057. package/templates/.agent/skills/whatsapp-cloud-api/SKILL.md +488 -0
  1058. package/templates/.agent/skills/whatsapp-cloud-api/assets/boilerplate/nodejs/.env.example +20 -0
  1059. package/templates/.agent/skills/whatsapp-cloud-api/assets/boilerplate/nodejs/package.json +22 -0
  1060. package/templates/.agent/skills/whatsapp-cloud-api/assets/boilerplate/nodejs/src/index.ts +125 -0
  1061. package/templates/.agent/skills/whatsapp-cloud-api/assets/boilerplate/nodejs/src/template-manager.ts +67 -0
  1062. package/templates/.agent/skills/whatsapp-cloud-api/assets/boilerplate/nodejs/src/types.ts +216 -0
  1063. package/templates/.agent/skills/whatsapp-cloud-api/assets/boilerplate/nodejs/src/webhook-handler.ts +175 -0
  1064. package/templates/.agent/skills/whatsapp-cloud-api/assets/boilerplate/nodejs/src/whatsapp-client.ts +193 -0
  1065. package/templates/.agent/skills/whatsapp-cloud-api/assets/boilerplate/nodejs/tsconfig.json +17 -0
  1066. package/templates/.agent/skills/whatsapp-cloud-api/assets/boilerplate/python/.env.example +20 -0
  1067. package/templates/.agent/skills/whatsapp-cloud-api/assets/boilerplate/python/app.py +123 -0
  1068. package/templates/.agent/skills/whatsapp-cloud-api/assets/boilerplate/python/requirements.txt +4 -0
  1069. package/templates/.agent/skills/whatsapp-cloud-api/assets/boilerplate/python/template_manager.py +100 -0
  1070. package/templates/.agent/skills/whatsapp-cloud-api/assets/boilerplate/python/webhook_handler.py +139 -0
  1071. package/templates/.agent/skills/whatsapp-cloud-api/assets/boilerplate/python/whatsapp_client.py +219 -0
  1072. package/templates/.agent/skills/whatsapp-cloud-api/assets/examples/flow-example.json +170 -0
  1073. package/templates/.agent/skills/whatsapp-cloud-api/assets/examples/interactive-menu.json +186 -0
  1074. package/templates/.agent/skills/whatsapp-cloud-api/assets/examples/template-messages.json +173 -0
  1075. package/templates/.agent/skills/whatsapp-cloud-api/assets/examples/webhook-payloads.json +240 -0
  1076. package/templates/.agent/skills/whatsapp-cloud-api/references/advanced-features.md +546 -0
  1077. package/templates/.agent/skills/whatsapp-cloud-api/references/api-reference.md +566 -0
  1078. package/templates/.agent/skills/whatsapp-cloud-api/references/automation-patterns.md +690 -0
  1079. package/templates/.agent/skills/whatsapp-cloud-api/references/compliance.md +404 -0
  1080. package/templates/.agent/skills/whatsapp-cloud-api/references/message-types.md +1639 -0
  1081. package/templates/.agent/skills/whatsapp-cloud-api/references/setup-guide.md +692 -0
  1082. package/templates/.agent/skills/whatsapp-cloud-api/references/template-management.md +570 -0
  1083. package/templates/.agent/skills/whatsapp-cloud-api/references/webhook-setup.md +603 -0
  1084. package/templates/.agent/skills/whatsapp-cloud-api/scripts/send_test_message.py +137 -0
  1085. package/templates/.agent/skills/whatsapp-cloud-api/scripts/setup_project.py +118 -0
  1086. package/templates/.agent/skills/whatsapp-cloud-api/scripts/validate_config.py +190 -0
  1087. package/templates/.agent/skills/wiki-architect/SKILL.md +65 -0
  1088. package/templates/.agent/skills/wordpress-penetration-testing/SKILL.md +594 -0
  1089. package/templates/.agent/skills/workflow-orchestration-patterns/SKILL.md +336 -0
  1090. package/templates/.agent/skills/workflow-patterns/SKILL.md +37 -0
  1091. package/templates/.agent/skills/workflow-patterns/resources/implementation-playbook.md +621 -0
  1092. package/templates/.agent/skills/writing-plans/SKILL.md +122 -0
  1093. package/templates/.agent/skills/writing-skills/SKILL.md +121 -0
  1094. package/templates/.agent/skills/writing-skills/anthropic-best-practices.md +1150 -0
  1095. package/templates/.agent/skills/writing-skills/examples.md +282 -0
  1096. package/templates/.agent/skills/writing-skills/gotchas.md +197 -0
  1097. package/templates/.agent/skills/writing-skills/graphviz-conventions.dot +172 -0
  1098. package/templates/.agent/skills/writing-skills/persuasion-principles.md +187 -0
  1099. package/templates/.agent/skills/writing-skills/references/anti-rationalization/README.md +255 -0
  1100. package/templates/.agent/skills/writing-skills/references/cso/README.md +268 -0
  1101. package/templates/.agent/skills/writing-skills/references/standards/README.md +152 -0
  1102. package/templates/.agent/skills/writing-skills/references/standards/metadata-standard.md +65 -0
  1103. package/templates/.agent/skills/writing-skills/references/templates/discipline.md +54 -0
  1104. package/templates/.agent/skills/writing-skills/references/templates/pattern.md +48 -0
  1105. package/templates/.agent/skills/writing-skills/references/templates/reference.md +35 -0
  1106. package/templates/.agent/skills/writing-skills/references/templates/technique.md +59 -0
  1107. package/templates/.agent/skills/writing-skills/references/templates/tier-3-platform.md +19 -0
  1108. package/templates/.agent/skills/writing-skills/references/testing/README.md +204 -0
  1109. package/templates/.agent/skills/writing-skills/references/tier-1-simple/README.md +75 -0
  1110. package/templates/.agent/skills/writing-skills/references/tier-2-expanded/README.md +69 -0
  1111. package/templates/.agent/skills/writing-skills/references/tier-3-platform/README.md +98 -0
  1112. package/templates/.agent/skills/writing-skills/render-graphs.js +168 -0
  1113. package/templates/.agent/skills/writing-skills/testing-skills-with-subagents.md +384 -0
  1114. package/templates/.agent/skills/zapier-make-patterns/SKILL.md +72 -0
  1115. package/templates/.agent/workflows/add-type.md +133 -0
  1116. package/templates/.agent/workflows/apply.md +95 -0
  1117. package/templates/.agent/workflows/graduate.md +150 -0
  1118. package/templates/.agent/workflows/launch.md +127 -0
  1119. package/templates/.agent/workflows/new-feature.md +21 -23
  1120. package/templates/.agent/workflows/pause.md +118 -0
  1121. package/templates/.agent/workflows/pipeline.md +95 -0
  1122. package/templates/.agent/workflows/progress.md +103 -0
  1123. package/templates/.agent/workflows/resume.md +105 -0
  1124. package/templates/.agent/workflows/unify.md +126 -0
  1125. package/templates/.agent/workflows/vibe-plan.md +135 -72
  1126. package/templates/.agent/workflows/vibe-recap.md +89 -12
  1127. package/templates/.antigravity/rules.md +76 -23
  1128. package/templates/AGENTS.md +7 -3
  1129. package/templates/.agent/skills/bullmq-worker/SKILL.md +0 -124
  1130. package/templates/.agent/skills/code-review-checklist/SKILL.md +0 -109
  1131. package/templates/.agent/skills/deployment-procedures/SKILL.md +0 -241
  1132. package/templates/.agent/skills/doc.md +0 -177
  1133. package/templates/.agent/skills/documentation-templates/SKILL.md +0 -194
  1134. package/templates/.agent/skills/game-development/2d-games/SKILL.md +0 -119
  1135. package/templates/.agent/skills/game-development/3d-games/SKILL.md +0 -135
  1136. package/templates/.agent/skills/game-development/SKILL.md +0 -167
  1137. package/templates/.agent/skills/game-development/game-art/SKILL.md +0 -185
  1138. package/templates/.agent/skills/game-development/game-audio/SKILL.md +0 -190
  1139. package/templates/.agent/skills/game-development/game-design/SKILL.md +0 -129
  1140. package/templates/.agent/skills/game-development/mobile-games/SKILL.md +0 -108
  1141. package/templates/.agent/skills/game-development/multiplayer/SKILL.md +0 -132
  1142. package/templates/.agent/skills/game-development/pc-games/SKILL.md +0 -144
  1143. package/templates/.agent/skills/game-development/vr-ar/SKILL.md +0 -123
  1144. package/templates/.agent/skills/game-development/web-games/SKILL.md +0 -150
  1145. package/templates/.agent/skills/geo-fundamentals/SKILL.md +0 -156
  1146. package/templates/.agent/skills/geo-fundamentals/scripts/geo_checker.py +0 -289
  1147. package/templates/.agent/skills/i18n-localization/SKILL.md +0 -154
  1148. package/templates/.agent/skills/i18n-localization/scripts/i18n_checker.py +0 -241
  1149. package/templates/.agent/skills/lint-and-validate/SKILL.md +0 -45
  1150. package/templates/.agent/skills/lint-and-validate/scripts/lint_runner.py +0 -184
  1151. package/templates/.agent/skills/lint-and-validate/scripts/type_coverage.py +0 -173
  1152. package/templates/.agent/skills/mcp-builder/SKILL.md +0 -176
  1153. package/templates/.agent/skills/neo-storage/SKILL.md +0 -115
  1154. package/templates/.agent/skills/plan-writing/SKILL.md +0 -152
  1155. package/templates/.agent/skills/powershell-windows/SKILL.md +0 -167
  1156. package/templates/.agent/skills/rag-vector-db/SKILL.md +0 -67
  1157. package/templates/.agent/skills/red-team-tactics/SKILL.md +0 -199
  1158. package/templates/.agent/skills/server-management/SKILL.md +0 -161
  1159. package/templates/.agent/skills/tdd-workflow/SKILL.md +0 -149
  1160. package/templates/.agent/skills/uu-pdp-feature-check/SKILL.md +0 -116
  1161. package/templates/.agent/skills/vulnerability-scanner/SKILL.md +0 -276
  1162. package/templates/.agent/skills/vulnerability-scanner/checklists.md +0 -121
  1163. package/templates/.agent/skills/vulnerability-scanner/scripts/security_scan.py +0 -458
  1164. package/templates/.agent/skills/xendit-integration/SKILL.md +0 -100
@@ -0,0 +1,1334 @@
1
+ ---
2
+ name: fp-backend
3
+ description: Functional programming patterns for Node.js/Deno backend development using fp-ts, ReaderTaskEither, and functional dependency injection
4
+ risk: unknown
5
+ source: community
6
+ version: 1.0.0
7
+ author: kadu
8
+ tags:
9
+ - fp-ts
10
+ - typescript
11
+ - backend
12
+ - functional-programming
13
+ - node
14
+ - deno
15
+ - dependency-injection
16
+ - reader-task-either
17
+ ---
18
+
19
+ # fp-ts Backend Patterns
20
+
21
+ Functional programming patterns for building type-safe, testable backend services using fp-ts.
22
+
23
+ ## Core Concepts
24
+
25
+ ### ReaderTaskEither (RTE)
26
+
27
+ The `ReaderTaskEither<R, E, A>` type is the backbone of functional backend development:
28
+ - **R** (Reader): Dependencies/environment (database, config, logger)
29
+ - **E** (Either left): Error type
30
+ - **A** (Either right): Success value
31
+
32
+ ```typescript
33
+ import * as RTE from 'fp-ts/ReaderTaskEither'
34
+ import * as TE from 'fp-ts/TaskEither'
35
+ import { pipe } from 'fp-ts/function'
36
+
37
+ // Define your dependencies
38
+ type Deps = {
39
+ db: DatabaseClient
40
+ logger: Logger
41
+ config: Config
42
+ }
43
+
44
+ // Define domain errors
45
+ type AppError =
46
+ | { _tag: 'NotFound'; resource: string; id: string }
47
+ | { _tag: 'ValidationError'; message: string }
48
+ | { _tag: 'DatabaseError'; cause: unknown }
49
+ | { _tag: 'Unauthorized'; reason: string }
50
+
51
+ // A service function
52
+ const getUser = (id: string): RTE.ReaderTaskEither<Deps, AppError, User> =>
53
+ pipe(
54
+ RTE.ask<Deps>(),
55
+ RTE.flatMap(({ db, logger }) =>
56
+ pipe(
57
+ RTE.fromTaskEither(db.users.findById(id)),
58
+ RTE.mapLeft((e): AppError => ({ _tag: 'DatabaseError', cause: e })),
59
+ RTE.flatMap(user =>
60
+ user
61
+ ? RTE.right(user)
62
+ : RTE.left({ _tag: 'NotFound', resource: 'User', id })
63
+ ),
64
+ RTE.tap(user => RTE.fromIO(() => logger.info(`Found user: ${user.id}`)))
65
+ )
66
+ )
67
+ )
68
+ ```
69
+
70
+ ## Service Layer Patterns
71
+
72
+ ### Defining Service Modules
73
+
74
+ Structure services as modules exporting RTE functions:
75
+
76
+ ```typescript
77
+ // src/services/user.service.ts
78
+ import * as RTE from 'fp-ts/ReaderTaskEither'
79
+ import * as TE from 'fp-ts/TaskEither'
80
+ import * as A from 'fp-ts/Array'
81
+ import { pipe } from 'fp-ts/function'
82
+
83
+ type UserDeps = {
84
+ db: DatabaseClient
85
+ hasher: PasswordHasher
86
+ mailer: EmailService
87
+ }
88
+
89
+ type UserError =
90
+ | { _tag: 'UserNotFound'; id: string }
91
+ | { _tag: 'EmailExists'; email: string }
92
+ | { _tag: 'InvalidPassword' }
93
+
94
+ // Create user
95
+ export const create = (
96
+ input: CreateUserInput
97
+ ): RTE.ReaderTaskEither<UserDeps, UserError, User> =>
98
+ pipe(
99
+ RTE.ask<UserDeps>(),
100
+ RTE.flatMap(({ db, hasher }) =>
101
+ pipe(
102
+ // Check email uniqueness
103
+ checkEmailUnique(input.email),
104
+ RTE.flatMap(() =>
105
+ RTE.fromTaskEither(hasher.hash(input.password))
106
+ ),
107
+ RTE.flatMap(hashedPassword =>
108
+ RTE.fromTaskEither(
109
+ db.users.create({
110
+ ...input,
111
+ password: hashedPassword,
112
+ })
113
+ )
114
+ )
115
+ )
116
+ )
117
+ )
118
+
119
+ // Find by ID
120
+ export const findById = (
121
+ id: string
122
+ ): RTE.ReaderTaskEither<UserDeps, UserError, User> =>
123
+ pipe(
124
+ RTE.ask<UserDeps>(),
125
+ RTE.flatMap(({ db }) =>
126
+ pipe(
127
+ RTE.fromTaskEither(db.users.findUnique({ where: { id } })),
128
+ RTE.flatMap(user =>
129
+ user
130
+ ? RTE.right(user)
131
+ : RTE.left({ _tag: 'UserNotFound' as const, id })
132
+ )
133
+ )
134
+ )
135
+ )
136
+
137
+ // Find many with pagination
138
+ export const findMany = (
139
+ params: PaginationParams
140
+ ): RTE.ReaderTaskEither<UserDeps, UserError, PaginatedResult<User>> =>
141
+ pipe(
142
+ RTE.ask<UserDeps>(),
143
+ RTE.flatMap(({ db }) =>
144
+ RTE.fromTaskEither(
145
+ pipe(
146
+ TE.Do,
147
+ TE.bind('users', () => db.users.findMany({
148
+ skip: params.offset,
149
+ take: params.limit,
150
+ })),
151
+ TE.bind('total', () => db.users.count()),
152
+ TE.map(({ users, total }) => ({
153
+ data: users,
154
+ total,
155
+ ...params,
156
+ }))
157
+ )
158
+ )
159
+ )
160
+ )
161
+
162
+ const checkEmailUnique = (
163
+ email: string
164
+ ): RTE.ReaderTaskEither<UserDeps, UserError, void> =>
165
+ pipe(
166
+ RTE.ask<UserDeps>(),
167
+ RTE.flatMap(({ db }) =>
168
+ pipe(
169
+ RTE.fromTaskEither(db.users.findUnique({ where: { email } })),
170
+ RTE.flatMap(existing =>
171
+ existing
172
+ ? RTE.left({ _tag: 'EmailExists' as const, email })
173
+ : RTE.right(undefined)
174
+ )
175
+ )
176
+ )
177
+ )
178
+ ```
179
+
180
+ ### Composing Services
181
+
182
+ ```typescript
183
+ // src/services/order.service.ts
184
+ import * as UserService from './user.service'
185
+ import * as ProductService from './product.service'
186
+ import * as PaymentService from './payment.service'
187
+
188
+ type OrderDeps = UserService.UserDeps &
189
+ ProductService.ProductDeps &
190
+ PaymentService.PaymentDeps & {
191
+ db: DatabaseClient
192
+ }
193
+
194
+ export const createOrder = (
195
+ userId: string,
196
+ items: OrderItem[]
197
+ ): RTE.ReaderTaskEither<OrderDeps, OrderError, Order> =>
198
+ pipe(
199
+ RTE.Do,
200
+ // Validate user exists
201
+ RTE.bind('user', () =>
202
+ pipe(
203
+ UserService.findById(userId),
204
+ RTE.mapLeft(toOrderError)
205
+ )
206
+ ),
207
+ // Validate and get products
208
+ RTE.bind('products', () =>
209
+ pipe(
210
+ items,
211
+ A.traverse(RTE.ApplicativePar)(item =>
212
+ ProductService.findById(item.productId)
213
+ ),
214
+ RTE.mapLeft(toOrderError)
215
+ )
216
+ ),
217
+ // Calculate total
218
+ RTE.bind('total', ({ products }) =>
219
+ RTE.right(calculateTotal(products, items))
220
+ ),
221
+ // Process payment
222
+ RTE.bind('payment', ({ user, total }) =>
223
+ pipe(
224
+ PaymentService.charge(user, total),
225
+ RTE.mapLeft(toOrderError)
226
+ )
227
+ ),
228
+ // Create order
229
+ RTE.flatMap(({ user, products, total, payment }) =>
230
+ createOrderRecord(user, products, items, total, payment)
231
+ )
232
+ )
233
+ ```
234
+
235
+ ## Functional Dependency Injection
236
+
237
+ ### Building the Dependency Container
238
+
239
+ ```typescript
240
+ // src/deps.ts
241
+ import { pipe } from 'fp-ts/function'
242
+ import * as TE from 'fp-ts/TaskEither'
243
+ import * as RTE from 'fp-ts/ReaderTaskEither'
244
+
245
+ // Layer 0: Config (no dependencies)
246
+ type Config = {
247
+ database: { url: string; poolSize: number }
248
+ redis: { url: string }
249
+ jwt: { secret: string; expiresIn: string }
250
+ }
251
+
252
+ const loadConfig = (): TE.TaskEither<Error, Config> =>
253
+ TE.tryCatch(
254
+ async () => ({
255
+ database: {
256
+ url: process.env.DATABASE_URL!,
257
+ poolSize: parseInt(process.env.DB_POOL_SIZE || '10'),
258
+ },
259
+ redis: { url: process.env.REDIS_URL! },
260
+ jwt: {
261
+ secret: process.env.JWT_SECRET!,
262
+ expiresIn: process.env.JWT_EXPIRES || '1d',
263
+ },
264
+ }),
265
+ (e) => new Error(`Config error: ${e}`)
266
+ )
267
+
268
+ // Layer 1: Infrastructure (depends on config)
269
+ type Infrastructure = {
270
+ config: Config
271
+ db: PrismaClient
272
+ redis: RedisClient
273
+ logger: Logger
274
+ }
275
+
276
+ const buildInfrastructure = (
277
+ config: Config
278
+ ): TE.TaskEither<Error, Infrastructure> =>
279
+ pipe(
280
+ TE.Do,
281
+ TE.bind('db', () =>
282
+ TE.tryCatch(
283
+ async () => {
284
+ const prisma = new PrismaClient({
285
+ datasources: { db: { url: config.database.url } },
286
+ })
287
+ await prisma.$connect()
288
+ return prisma
289
+ },
290
+ (e) => new Error(`Database error: ${e}`)
291
+ )
292
+ ),
293
+ TE.bind('redis', () =>
294
+ TE.tryCatch(
295
+ async () => createRedisClient(config.redis.url),
296
+ (e) => new Error(`Redis error: ${e}`)
297
+ )
298
+ ),
299
+ TE.bind('logger', () => TE.right(createLogger())),
300
+ TE.map(({ db, redis, logger }) => ({
301
+ config,
302
+ db,
303
+ redis,
304
+ logger,
305
+ }))
306
+ )
307
+
308
+ // Layer 2: Services (depends on infrastructure)
309
+ type Services = {
310
+ hasher: PasswordHasher
311
+ jwt: JwtService
312
+ mailer: EmailService
313
+ }
314
+
315
+ const buildServices = (infra: Infrastructure): Services => ({
316
+ hasher: createBcryptHasher(),
317
+ jwt: createJwtService(infra.config.jwt),
318
+ mailer: createEmailService(infra.config),
319
+ })
320
+
321
+ // Full application dependencies
322
+ export type AppDeps = Infrastructure & Services
323
+
324
+ export const buildDeps = (): TE.TaskEither<Error, AppDeps> =>
325
+ pipe(
326
+ loadConfig(),
327
+ TE.flatMap(buildInfrastructure),
328
+ TE.map(infra => ({
329
+ ...infra,
330
+ ...buildServices(infra),
331
+ }))
332
+ )
333
+
334
+ // Cleanup
335
+ export const destroyDeps = (deps: AppDeps): TE.TaskEither<Error, void> =>
336
+ pipe(
337
+ TE.tryCatch(
338
+ async () => {
339
+ await deps.db.$disconnect()
340
+ await deps.redis.quit()
341
+ },
342
+ (e) => new Error(`Cleanup error: ${e}`)
343
+ )
344
+ )
345
+ ```
346
+
347
+ ### Running Programs with Dependencies
348
+
349
+ ```typescript
350
+ // src/main.ts
351
+ import { pipe } from 'fp-ts/function'
352
+ import * as TE from 'fp-ts/TaskEither'
353
+ import * as RTE from 'fp-ts/ReaderTaskEither'
354
+
355
+ const program: RTE.ReaderTaskEither<AppDeps, AppError, void> = pipe(
356
+ RTE.ask<AppDeps>(),
357
+ RTE.flatMap(deps =>
358
+ pipe(
359
+ startServer(deps),
360
+ RTE.fromTaskEither
361
+ )
362
+ )
363
+ )
364
+
365
+ const main = async () => {
366
+ const result = await pipe(
367
+ buildDeps(),
368
+ TE.mapLeft((e): AppError => ({ _tag: 'StartupError', cause: e })),
369
+ TE.flatMap(deps =>
370
+ pipe(
371
+ program(deps),
372
+ TE.tap(() => TE.fromIO(() => console.log('Server running'))),
373
+ // Cleanup on exit
374
+ TE.tapError(() => destroyDeps(deps))
375
+ )
376
+ )
377
+ )()
378
+
379
+ if (result._tag === 'Left') {
380
+ console.error('Failed to start:', result.left)
381
+ process.exit(1)
382
+ }
383
+ }
384
+
385
+ main()
386
+ ```
387
+
388
+ ## Database Operations
389
+
390
+ ### Prisma Wrappers
391
+
392
+ ```typescript
393
+ // src/lib/db.ts
394
+ import * as TE from 'fp-ts/TaskEither'
395
+ import * as O from 'fp-ts/Option'
396
+ import { PrismaClient, Prisma } from '@prisma/client'
397
+
398
+ type DbError =
399
+ | { _tag: 'RecordNotFound'; model: string; id: string }
400
+ | { _tag: 'UniqueViolation'; field: string }
401
+ | { _tag: 'ForeignKeyViolation'; field: string }
402
+ | { _tag: 'UnknownDbError'; cause: unknown }
403
+
404
+ // Wrap Prisma operations
405
+ const wrapPrisma = <A>(
406
+ operation: () => Promise<A>
407
+ ): TE.TaskEither<DbError, A> =>
408
+ TE.tryCatch(operation, (error): DbError => {
409
+ if (error instanceof Prisma.PrismaClientKnownRequestError) {
410
+ switch (error.code) {
411
+ case 'P2002':
412
+ return {
413
+ _tag: 'UniqueViolation',
414
+ field: (error.meta?.target as string[])?.join(', ') || 'unknown',
415
+ }
416
+ case 'P2003':
417
+ return {
418
+ _tag: 'ForeignKeyViolation',
419
+ field: error.meta?.field_name as string || 'unknown',
420
+ }
421
+ case 'P2025':
422
+ return {
423
+ _tag: 'RecordNotFound',
424
+ model: error.meta?.modelName as string || 'unknown',
425
+ id: 'unknown',
426
+ }
427
+ }
428
+ }
429
+ return { _tag: 'UnknownDbError', cause: error }
430
+ })
431
+
432
+ // Repository factory
433
+ export const createRepository = <
434
+ Model,
435
+ CreateInput,
436
+ UpdateInput,
437
+ WhereUnique,
438
+ WhereMany
439
+ >(
440
+ db: PrismaClient,
441
+ delegate: {
442
+ findUnique: (args: { where: WhereUnique }) => Promise<Model | null>
443
+ findMany: (args: { where?: WhereMany; skip?: number; take?: number }) => Promise<Model[]>
444
+ create: (args: { data: CreateInput }) => Promise<Model>
445
+ update: (args: { where: WhereUnique; data: UpdateInput }) => Promise<Model>
446
+ delete: (args: { where: WhereUnique }) => Promise<Model>
447
+ count: (args?: { where?: WhereMany }) => Promise<number>
448
+ }
449
+ ) => ({
450
+ findUnique: (where: WhereUnique): TE.TaskEither<DbError, O.Option<Model>> =>
451
+ pipe(
452
+ wrapPrisma(() => delegate.findUnique({ where })),
453
+ TE.map(O.fromNullable)
454
+ ),
455
+
456
+ findMany: (
457
+ where?: WhereMany,
458
+ pagination?: { skip: number; take: number }
459
+ ): TE.TaskEither<DbError, Model[]> =>
460
+ wrapPrisma(() => delegate.findMany({ where, ...pagination })),
461
+
462
+ create: (data: CreateInput): TE.TaskEither<DbError, Model> =>
463
+ wrapPrisma(() => delegate.create({ data })),
464
+
465
+ update: (
466
+ where: WhereUnique,
467
+ data: UpdateInput
468
+ ): TE.TaskEither<DbError, Model> =>
469
+ wrapPrisma(() => delegate.update({ where, data })),
470
+
471
+ delete: (where: WhereUnique): TE.TaskEither<DbError, Model> =>
472
+ wrapPrisma(() => delegate.delete({ where })),
473
+
474
+ count: (where?: WhereMany): TE.TaskEither<DbError, number> =>
475
+ wrapPrisma(() => delegate.count({ where })),
476
+ })
477
+
478
+ // Usage
479
+ const userRepo = createRepository(prisma, prisma.user)
480
+ ```
481
+
482
+ ### Transaction Handling
483
+
484
+ ```typescript
485
+ // src/lib/transaction.ts
486
+ import * as TE from 'fp-ts/TaskEither'
487
+ import * as RTE from 'fp-ts/ReaderTaskEither'
488
+ import { PrismaClient } from '@prisma/client'
489
+ import { pipe } from 'fp-ts/function'
490
+
491
+ type TxClient = Omit<
492
+ PrismaClient,
493
+ '$connect' | '$disconnect' | '$on' | '$transaction' | '$use'
494
+ >
495
+
496
+ type TxDeps = { tx: TxClient }
497
+
498
+ // Transaction wrapper
499
+ export const withTransaction = <R extends { db: PrismaClient }, E, A>(
500
+ program: RTE.ReaderTaskEither<R & TxDeps, E, A>
501
+ ): RTE.ReaderTaskEither<R, E | DbError, A> =>
502
+ pipe(
503
+ RTE.ask<R>(),
504
+ RTE.flatMap(deps =>
505
+ RTE.fromTaskEither(
506
+ TE.tryCatch(
507
+ () =>
508
+ deps.db.$transaction(async tx => {
509
+ const result = await program({ ...deps, tx })()
510
+ if (result._tag === 'Left') {
511
+ throw result.left // Rollback
512
+ }
513
+ return result.right
514
+ }),
515
+ (error): E | DbError => {
516
+ // Re-throw domain errors
517
+ if (typeof error === 'object' && error !== null && '_tag' in error) {
518
+ return error as E
519
+ }
520
+ return { _tag: 'UnknownDbError', cause: error }
521
+ }
522
+ )
523
+ )
524
+ )
525
+ )
526
+
527
+ // Usage in service
528
+ export const transferFunds = (
529
+ fromId: string,
530
+ toId: string,
531
+ amount: number
532
+ ): RTE.ReaderTaskEither<AppDeps, TransferError, Transfer> =>
533
+ withTransaction(
534
+ pipe(
535
+ RTE.Do,
536
+ RTE.bind('from', () => debitAccount(fromId, amount)),
537
+ RTE.bind('to', () => creditAccount(toId, amount)),
538
+ RTE.bind('transfer', ({ from, to }) =>
539
+ createTransferRecord(from, to, amount)
540
+ ),
541
+ RTE.map(({ transfer }) => transfer)
542
+ )
543
+ )
544
+
545
+ // Inside transaction, use tx instead of db
546
+ const debitAccount = (
547
+ accountId: string,
548
+ amount: number
549
+ ): RTE.ReaderTaskEither<TxDeps, TransferError, Account> =>
550
+ pipe(
551
+ RTE.ask<TxDeps>(),
552
+ RTE.flatMap(({ tx }) =>
553
+ RTE.fromTaskEither(
554
+ pipe(
555
+ TE.tryCatch(
556
+ () =>
557
+ tx.account.update({
558
+ where: { id: accountId },
559
+ data: { balance: { decrement: amount } },
560
+ }),
561
+ toDbError
562
+ ),
563
+ TE.flatMap(account =>
564
+ account.balance < 0
565
+ ? TE.left({ _tag: 'InsufficientFunds' as const, accountId })
566
+ : TE.right(account)
567
+ )
568
+ )
569
+ )
570
+ )
571
+ )
572
+ ```
573
+
574
+ ## Middleware Patterns
575
+
576
+ ### Express Middleware
577
+
578
+ ```typescript
579
+ // src/middleware/fp-express.ts
580
+ import { Request, Response, NextFunction, RequestHandler } from 'express'
581
+ import * as TE from 'fp-ts/TaskEither'
582
+ import * as RTE from 'fp-ts/ReaderTaskEither'
583
+ import * as E from 'fp-ts/Either'
584
+ import { pipe } from 'fp-ts/function'
585
+
586
+ // Convert RTE handler to Express middleware
587
+ export const toHandler =
588
+ <R, E, A>(
589
+ getDeps: (req: Request) => R,
590
+ handler: (req: Request) => RTE.ReaderTaskEither<R, E, A>,
591
+ onError: (error: E, res: Response) => void
592
+ ): RequestHandler =>
593
+ async (req, res, next) => {
594
+ const deps = getDeps(req)
595
+ const result = await handler(req)(deps)()
596
+
597
+ pipe(
598
+ result,
599
+ E.fold(
600
+ error => onError(error, res),
601
+ data => res.json(data)
602
+ )
603
+ )
604
+ }
605
+
606
+ // Error handler
607
+ const handleError = (error: AppError, res: Response): void => {
608
+ switch (error._tag) {
609
+ case 'NotFound':
610
+ res.status(404).json({ error: error.resource + ' not found' })
611
+ break
612
+ case 'ValidationError':
613
+ res.status(400).json({ error: error.message })
614
+ break
615
+ case 'Unauthorized':
616
+ res.status(401).json({ error: error.reason })
617
+ break
618
+ default:
619
+ res.status(500).json({ error: 'Internal server error' })
620
+ }
621
+ }
622
+
623
+ // Usage
624
+ const getUserHandler = toHandler(
625
+ req => req.app.locals.deps as AppDeps,
626
+ req => UserService.findById(req.params.id),
627
+ handleError
628
+ )
629
+
630
+ app.get('/users/:id', getUserHandler)
631
+ ```
632
+
633
+ ### Hono Middleware
634
+
635
+ ```typescript
636
+ // src/middleware/fp-hono.ts
637
+ import { Hono, Context, MiddlewareHandler } from 'hono'
638
+ import * as RTE from 'fp-ts/ReaderTaskEither'
639
+ import * as E from 'fp-ts/Either'
640
+ import { pipe } from 'fp-ts/function'
641
+
642
+ // Store deps in context
643
+ declare module 'hono' {
644
+ interface ContextVariableMap {
645
+ deps: AppDeps
646
+ }
647
+ }
648
+
649
+ // Dependency injection middleware
650
+ export const withDeps = (deps: AppDeps): MiddlewareHandler =>
651
+ async (c, next) => {
652
+ c.set('deps', deps)
653
+ await next()
654
+ }
655
+
656
+ // Convert RTE to Hono handler
657
+ export const toHonoHandler =
658
+ <E, A>(
659
+ handler: (c: Context) => RTE.ReaderTaskEither<AppDeps, E, A>,
660
+ onError: (error: E, c: Context) => Response
661
+ ) =>
662
+ async (c: Context): Promise<Response> => {
663
+ const deps = c.get('deps')
664
+ const result = await handler(c)(deps)()
665
+
666
+ return pipe(
667
+ result,
668
+ E.fold(
669
+ error => onError(error, c),
670
+ data => c.json(data)
671
+ )
672
+ )
673
+ }
674
+
675
+ // Validation middleware
676
+ export const validate =
677
+ <T>(schema: z.ZodSchema<T>): MiddlewareHandler =>
678
+ async (c, next) => {
679
+ const body = await c.req.json()
680
+ const result = schema.safeParse(body)
681
+
682
+ if (!result.success) {
683
+ return c.json(
684
+ { error: 'Validation failed', details: result.error.flatten() },
685
+ 400
686
+ )
687
+ }
688
+
689
+ c.set('validatedBody', result.data)
690
+ await next()
691
+ }
692
+
693
+ // Auth middleware using RTE
694
+ export const requireAuth: MiddlewareHandler = async (c, next) => {
695
+ const deps = c.get('deps')
696
+ const token = c.req.header('Authorization')?.replace('Bearer ', '')
697
+
698
+ if (!token) {
699
+ return c.json({ error: 'No token provided' }, 401)
700
+ }
701
+
702
+ const result = await pipe(
703
+ deps.jwt.verify(token),
704
+ TE.mapLeft(() => ({ _tag: 'Unauthorized' as const, reason: 'Invalid token' }))
705
+ )()
706
+
707
+ if (E.isLeft(result)) {
708
+ return c.json({ error: result.left.reason }, 401)
709
+ }
710
+
711
+ c.set('user', result.right)
712
+ await next()
713
+ }
714
+
715
+ // Usage
716
+ const app = new Hono()
717
+
718
+ app.use('*', withDeps(deps))
719
+ app.use('/api/*', requireAuth)
720
+
721
+ app.get(
722
+ '/api/users/:id',
723
+ toHonoHandler(
724
+ c => UserService.findById(c.req.param('id')),
725
+ (error, c) => {
726
+ if (error._tag === 'UserNotFound') {
727
+ return c.json({ error: 'User not found' }, 404)
728
+ }
729
+ return c.json({ error: 'Internal error' }, 500)
730
+ }
731
+ )
732
+ )
733
+ ```
734
+
735
+ ### Request Context Pattern
736
+
737
+ ```typescript
738
+ // src/context.ts
739
+ import * as RTE from 'fp-ts/ReaderTaskEither'
740
+ import { pipe } from 'fp-ts/function'
741
+
742
+ // Request-scoped context
743
+ type RequestContext = {
744
+ requestId: string
745
+ userId: O.Option<string>
746
+ startTime: number
747
+ }
748
+
749
+ type ContextDeps = AppDeps & { ctx: RequestContext }
750
+
751
+ // Logging with context
752
+ const logWithContext =
753
+ (level: 'info' | 'warn' | 'error') =>
754
+ (message: string, meta?: object): RTE.ReaderTaskEither<ContextDeps, never, void> =>
755
+ pipe(
756
+ RTE.ask<ContextDeps>(),
757
+ RTE.flatMap(({ logger, ctx }) =>
758
+ RTE.fromIO(() =>
759
+ loggerlevel,
760
+ elapsed: Date.now() - ctx.startTime,
761
+ })
762
+ )
763
+ )
764
+ )
765
+
766
+ export const log = {
767
+ info: logWithContext('info'),
768
+ warn: logWithContext('warn'),
769
+ error: logWithContext('error'),
770
+ }
771
+
772
+ // Middleware to create context
773
+ export const withContext: MiddlewareHandler = async (c, next) => {
774
+ const deps = c.get('deps')
775
+ const ctx: RequestContext = {
776
+ requestId: crypto.randomUUID(),
777
+ userId: O.fromNullable(c.get('user')?.id),
778
+ startTime: Date.now(),
779
+ }
780
+
781
+ c.set('deps', { ...deps, ctx })
782
+
783
+ // Log request start
784
+ deps.logger.info('Request started', {
785
+ requestId: ctx.requestId,
786
+ method: c.req.method,
787
+ path: c.req.path,
788
+ })
789
+
790
+ await next()
791
+
792
+ // Log request end
793
+ deps.logger.info('Request completed', {
794
+ requestId: ctx.requestId,
795
+ status: c.res.status,
796
+ elapsed: Date.now() - ctx.startTime,
797
+ })
798
+ }
799
+ ```
800
+
801
+ ## Error Handling Patterns
802
+
803
+ ### Typed Error Hierarchy
804
+
805
+ ```typescript
806
+ // src/errors.ts
807
+ import * as E from 'fp-ts/Either'
808
+ import * as O from 'fp-ts/Option'
809
+
810
+ // Base error types
811
+ type DomainError =
812
+ | NotFoundError
813
+ | ValidationError
814
+ | ConflictError
815
+ | AuthError
816
+ | InfrastructureError
817
+
818
+ type NotFoundError = {
819
+ _tag: 'NotFoundError'
820
+ resource: string
821
+ id: string
822
+ }
823
+
824
+ type ValidationError = {
825
+ _tag: 'ValidationError'
826
+ field: string
827
+ message: string
828
+ value?: unknown
829
+ }
830
+
831
+ type ConflictError = {
832
+ _tag: 'ConflictError'
833
+ resource: string
834
+ field: string
835
+ value: string
836
+ }
837
+
838
+ type AuthError =
839
+ | { _tag: 'Unauthenticated' }
840
+ | { _tag: 'Unauthorized'; required: string }
841
+ | { _tag: 'TokenExpired' }
842
+
843
+ type InfrastructureError = {
844
+ _tag: 'InfrastructureError'
845
+ service: string
846
+ cause: unknown
847
+ }
848
+
849
+ // Smart constructors
850
+ export const notFound = (resource: string, id: string): NotFoundError => ({
851
+ _tag: 'NotFoundError',
852
+ resource,
853
+ id,
854
+ })
855
+
856
+ export const validation = (
857
+ field: string,
858
+ message: string,
859
+ value?: unknown
860
+ ): ValidationError => ({
861
+ _tag: 'ValidationError',
862
+ field,
863
+ message,
864
+ value,
865
+ })
866
+
867
+ export const conflict = (
868
+ resource: string,
869
+ field: string,
870
+ value: string
871
+ ): ConflictError => ({
872
+ _tag: 'ConflictError',
873
+ resource,
874
+ field,
875
+ value,
876
+ })
877
+
878
+ // Error to HTTP status mapping
879
+ export const toHttpStatus = (error: DomainError): number => {
880
+ switch (error._tag) {
881
+ case 'NotFoundError':
882
+ return 404
883
+ case 'ValidationError':
884
+ return 400
885
+ case 'ConflictError':
886
+ return 409
887
+ case 'Unauthenticated':
888
+ return 401
889
+ case 'Unauthorized':
890
+ return 403
891
+ case 'TokenExpired':
892
+ return 401
893
+ case 'InfrastructureError':
894
+ return 503
895
+ default:
896
+ return 500
897
+ }
898
+ }
899
+
900
+ // Error to response body
901
+ export const toResponseBody = (
902
+ error: DomainError
903
+ ): { error: string; details?: unknown } => {
904
+ switch (error._tag) {
905
+ case 'NotFoundError':
906
+ return { error: `${error.resource} not found` }
907
+ case 'ValidationError':
908
+ return {
909
+ error: 'Validation failed',
910
+ details: { field: error.field, message: error.message },
911
+ }
912
+ case 'ConflictError':
913
+ return {
914
+ error: `${error.resource} with ${error.field} already exists`,
915
+ }
916
+ case 'Unauthenticated':
917
+ return { error: 'Authentication required' }
918
+ case 'Unauthorized':
919
+ return { error: `Permission denied: ${error.required}` }
920
+ case 'TokenExpired':
921
+ return { error: 'Token expired' }
922
+ case 'InfrastructureError':
923
+ return { error: 'Service temporarily unavailable' }
924
+ }
925
+ }
926
+ ```
927
+
928
+ ### Error Recovery
929
+
930
+ ```typescript
931
+ // src/lib/recovery.ts
932
+ import * as RTE from 'fp-ts/ReaderTaskEither'
933
+ import * as TE from 'fp-ts/TaskEither'
934
+ import { pipe } from 'fp-ts/function'
935
+
936
+ // Retry with exponential backoff
937
+ export const withRetry =
938
+ <R, E, A>(
939
+ maxAttempts: number,
940
+ baseDelayMs: number,
941
+ shouldRetry: (error: E) => boolean
942
+ ) =>
943
+ (
944
+ operation: RTE.ReaderTaskEither<R, E, A>
945
+ ): RTE.ReaderTaskEither<R, E, A> =>
946
+ pipe(
947
+ RTE.ask<R>(),
948
+ RTE.flatMap(deps => {
949
+ const attempt = (
950
+ remaining: number,
951
+ delay: number
952
+ ): TE.TaskEither<E, A> =>
953
+ pipe(
954
+ operation(deps),
955
+ TE.orElse(error => {
956
+ if (remaining <= 0 || !shouldRetry(error)) {
957
+ return TE.left(error)
958
+ }
959
+ return pipe(
960
+ TE.fromTask(() => new Promise(r => setTimeout(r, delay))),
961
+ TE.flatMap(() => attempt(remaining - 1, delay * 2))
962
+ )
963
+ })
964
+ )
965
+
966
+ return RTE.fromTaskEither(attempt(maxAttempts - 1, baseDelayMs))
967
+ })
968
+ )
969
+
970
+ // Fallback to cached value
971
+ export const withFallback =
972
+ <R extends { cache: CacheClient }, E, A>(
973
+ cacheKey: string,
974
+ ttlSeconds: number
975
+ ) =>
976
+ (
977
+ operation: RTE.ReaderTaskEither<R, E, A>
978
+ ): RTE.ReaderTaskEither<R, E, A> =>
979
+ pipe(
980
+ RTE.ask<R>(),
981
+ RTE.flatMap(({ cache, ...rest }) =>
982
+ pipe(
983
+ operation,
984
+ // On success, cache the result
985
+ RTE.tap(result =>
986
+ RTE.fromTaskEither(cache.set(cacheKey, result, ttlSeconds))
987
+ ),
988
+ // On failure, try to get cached value
989
+ RTE.orElse(error =>
990
+ pipe(
991
+ RTE.fromTaskEither(cache.get<A>(cacheKey)),
992
+ RTE.flatMap(cached =>
993
+ cached ? RTE.right(cached) : RTE.left(error)
994
+ )
995
+ )
996
+ )
997
+ )
998
+ )
999
+ )
1000
+
1001
+ // Circuit breaker
1002
+ type CircuitState = 'closed' | 'open' | 'half-open'
1003
+
1004
+ export const createCircuitBreaker = <E>(
1005
+ failureThreshold: number,
1006
+ resetTimeoutMs: number,
1007
+ isFailure: (error: E) => boolean
1008
+ ) => {
1009
+ let state: CircuitState = 'closed'
1010
+ let failures = 0
1011
+ let lastFailure = 0
1012
+
1013
+ return <R, A>(
1014
+ operation: RTE.ReaderTaskEither<R, E, A>
1015
+ ): RTE.ReaderTaskEither<R, E | { _tag: 'CircuitOpen' }, A> =>
1016
+ pipe(
1017
+ RTE.ask<R>(),
1018
+ RTE.flatMap(deps => {
1019
+ // Check if circuit should reset
1020
+ if (
1021
+ state === 'open' &&
1022
+ Date.now() - lastFailure > resetTimeoutMs
1023
+ ) {
1024
+ state = 'half-open'
1025
+ }
1026
+
1027
+ if (state === 'open') {
1028
+ return RTE.left({ _tag: 'CircuitOpen' as const })
1029
+ }
1030
+
1031
+ return pipe(
1032
+ operation,
1033
+ RTE.tap(() => {
1034
+ if (state === 'half-open') {
1035
+ state = 'closed'
1036
+ failures = 0
1037
+ }
1038
+ return RTE.right(undefined)
1039
+ }),
1040
+ RTE.tapError(error => {
1041
+ if (isFailure(error)) {
1042
+ failures++
1043
+ lastFailure = Date.now()
1044
+ if (failures >= failureThreshold) {
1045
+ state = 'open'
1046
+ }
1047
+ }
1048
+ return RTE.right(undefined)
1049
+ })
1050
+ )
1051
+ })
1052
+ )
1053
+ }
1054
+ ```
1055
+
1056
+ ## Testing Strategies
1057
+
1058
+ ### Mocking Dependencies
1059
+
1060
+ ```typescript
1061
+ // src/services/__tests__/user.service.test.ts
1062
+ import * as TE from 'fp-ts/TaskEither'
1063
+ import * as E from 'fp-ts/Either'
1064
+ import * as O from 'fp-ts/Option'
1065
+ import { describe, it, expect, vi } from 'vitest'
1066
+ import * as UserService from '../user.service'
1067
+
1068
+ // Create mock dependencies
1069
+ const createMockDeps = (overrides: Partial<UserDeps> = {}): UserDeps => ({
1070
+ db: {
1071
+ users: {
1072
+ findUnique: vi.fn(() => Promise.resolve(null)),
1073
+ create: vi.fn(data => Promise.resolve({ id: '1', ...data })),
1074
+ update: vi.fn((where, data) => Promise.resolve({ id: where.id, ...data })),
1075
+ },
1076
+ },
1077
+ hasher: {
1078
+ hash: vi.fn(password => TE.right(`hashed_${password}`)),
1079
+ verify: vi.fn(() => TE.right(true)),
1080
+ },
1081
+ mailer: {
1082
+ send: vi.fn(() => TE.right(undefined)),
1083
+ },
1084
+ ...overrides,
1085
+ })
1086
+
1087
+ describe('UserService', () => {
1088
+ describe('create', () => {
1089
+ it('should create a user with hashed password', async () => {
1090
+ const deps = createMockDeps()
1091
+ const input = {
1092
+ email: 'test@example.com',
1093
+ password: 'secret123',
1094
+ name: 'Test User',
1095
+ }
1096
+
1097
+ const result = await UserService.create(input)(deps)()
1098
+
1099
+ expect(E.isRight(result)).toBe(true)
1100
+ if (E.isRight(result)) {
1101
+ expect(result.right.email).toBe(input.email)
1102
+ }
1103
+ expect(deps.hasher.hash).toHaveBeenCalledWith('secret123')
1104
+ })
1105
+
1106
+ it('should fail when email already exists', async () => {
1107
+ const existingUser = { id: '1', email: 'test@example.com' }
1108
+ const deps = createMockDeps({
1109
+ db: {
1110
+ users: {
1111
+ findUnique: vi.fn(() => Promise.resolve(existingUser)),
1112
+ create: vi.fn(),
1113
+ },
1114
+ },
1115
+ })
1116
+
1117
+ const result = await UserService.create({
1118
+ email: 'test@example.com',
1119
+ password: 'secret',
1120
+ name: 'Test',
1121
+ })(deps)()
1122
+
1123
+ expect(E.isLeft(result)).toBe(true)
1124
+ if (E.isLeft(result)) {
1125
+ expect(result.left._tag).toBe('EmailExists')
1126
+ }
1127
+ })
1128
+ })
1129
+
1130
+ describe('findById', () => {
1131
+ it('should return user when found', async () => {
1132
+ const user = { id: '1', email: 'test@example.com', name: 'Test' }
1133
+ const deps = createMockDeps({
1134
+ db: {
1135
+ users: {
1136
+ findUnique: vi.fn(() => Promise.resolve(user)),
1137
+ },
1138
+ },
1139
+ })
1140
+
1141
+ const result = await UserService.findById('1')(deps)()
1142
+
1143
+ expect(E.isRight(result)).toBe(true)
1144
+ if (E.isRight(result)) {
1145
+ expect(result.right).toEqual(user)
1146
+ }
1147
+ })
1148
+
1149
+ it('should return NotFound when user does not exist', async () => {
1150
+ const deps = createMockDeps()
1151
+
1152
+ const result = await UserService.findById('nonexistent')(deps)()
1153
+
1154
+ expect(E.isLeft(result)).toBe(true)
1155
+ if (E.isLeft(result)) {
1156
+ expect(result.left._tag).toBe('UserNotFound')
1157
+ expect(result.left.id).toBe('nonexistent')
1158
+ }
1159
+ })
1160
+ })
1161
+ })
1162
+ ```
1163
+
1164
+ ### Integration Testing with Test Containers
1165
+
1166
+ ```typescript
1167
+ // src/__tests__/integration/user.integration.test.ts
1168
+ import { PostgreSqlContainer } from '@testcontainers/postgresql'
1169
+ import { PrismaClient } from '@prisma/client'
1170
+ import * as TE from 'fp-ts/TaskEither'
1171
+ import * as E from 'fp-ts/Either'
1172
+ import { pipe } from 'fp-ts/function'
1173
+ import { describe, it, expect, beforeAll, afterAll } from 'vitest'
1174
+ import { buildDeps, destroyDeps, AppDeps } from '../../deps'
1175
+ import * as UserService from '../../services/user.service'
1176
+
1177
+ describe('UserService Integration', () => {
1178
+ let container: PostgreSqlContainer
1179
+ let deps: AppDeps
1180
+
1181
+ beforeAll(async () => {
1182
+ // Start PostgreSQL container
1183
+ container = await new PostgreSqlContainer().start()
1184
+
1185
+ // Build real dependencies with test database
1186
+ process.env.DATABASE_URL = container.getConnectionUri()
1187
+
1188
+ const depsResult = await buildDeps()()
1189
+ if (E.isLeft(depsResult)) {
1190
+ throw new Error(`Failed to build deps: ${depsResult.left}`)
1191
+ }
1192
+ deps = depsResult.right
1193
+
1194
+ // Run migrations
1195
+ await deps.db.$executeRaw`CREATE EXTENSION IF NOT EXISTS "uuid-ossp"`
1196
+ // ... run Prisma migrations
1197
+ }, 60000)
1198
+
1199
+ afterAll(async () => {
1200
+ await destroyDeps(deps)()
1201
+ await container.stop()
1202
+ })
1203
+
1204
+ it('should create and retrieve a user', async () => {
1205
+ // Create user
1206
+ const createResult = await UserService.create({
1207
+ email: 'integration@test.com',
1208
+ password: 'password123',
1209
+ name: 'Integration Test',
1210
+ })(deps)()
1211
+
1212
+ expect(E.isRight(createResult)).toBe(true)
1213
+ if (E.isLeft(createResult)) return
1214
+
1215
+ const user = createResult.right
1216
+
1217
+ // Retrieve user
1218
+ const findResult = await UserService.findById(user.id)(deps)()
1219
+
1220
+ expect(E.isRight(findResult)).toBe(true)
1221
+ if (E.isRight(findResult)) {
1222
+ expect(findResult.right.email).toBe('integration@test.com')
1223
+ }
1224
+ })
1225
+ })
1226
+ ```
1227
+
1228
+ ### Property-Based Testing
1229
+
1230
+ ```typescript
1231
+ // src/__tests__/property/user.property.test.ts
1232
+ import * as fc from 'fast-check'
1233
+ import * as E from 'fp-ts/Either'
1234
+ import { describe, it, expect } from 'vitest'
1235
+ import { validateEmail, validatePassword } from '../../validation'
1236
+
1237
+ describe('Validation Properties', () => {
1238
+ it('valid emails should pass validation', () => {
1239
+ fc.assert(
1240
+ fc.property(fc.emailAddress(), email => {
1241
+ const result = validateEmail(email)
1242
+ return E.isRight(result)
1243
+ })
1244
+ )
1245
+ })
1246
+
1247
+ it('passwords meeting requirements should pass', () => {
1248
+ const validPassword = fc
1249
+ .tuple(
1250
+ fc.stringOf(fc.constantFrom(...'abcdefghijklmnopqrstuvwxyz'), {
1251
+ minLength: 4,
1252
+ }),
1253
+ fc.stringOf(fc.constantFrom(...'ABCDEFGHIJKLMNOPQRSTUVWXYZ'), {
1254
+ minLength: 1,
1255
+ }),
1256
+ fc.stringOf(fc.constantFrom(...'0123456789'), { minLength: 1 }),
1257
+ fc.stringOf(fc.constantFrom(...'!@#$%^&*'), { minLength: 1 })
1258
+ )
1259
+ .map(parts => parts.join(''))
1260
+
1261
+ fc.assert(
1262
+ fc.property(validPassword, password => {
1263
+ const result = validatePassword(password)
1264
+ return E.isRight(result)
1265
+ })
1266
+ )
1267
+ })
1268
+
1269
+ it('empty strings should fail email validation', () => {
1270
+ const result = validateEmail('')
1271
+ expect(E.isLeft(result)).toBe(true)
1272
+ })
1273
+ })
1274
+ ```
1275
+
1276
+ ## Quick Reference
1277
+
1278
+ ### Common Imports
1279
+
1280
+ ```typescript
1281
+ import * as RTE from 'fp-ts/ReaderTaskEither'
1282
+ import * as TE from 'fp-ts/TaskEither'
1283
+ import * as E from 'fp-ts/Either'
1284
+ import * as O from 'fp-ts/Option'
1285
+ import * as A from 'fp-ts/Array'
1286
+ import * as T from 'fp-ts/Task'
1287
+ import { pipe, flow } from 'fp-ts/function'
1288
+ ```
1289
+
1290
+ ### RTE Cheat Sheet
1291
+
1292
+ | Operation | Description |
1293
+ |-----------|-------------|
1294
+ | `RTE.right(a)` | Lift value into success |
1295
+ | `RTE.left(e)` | Create error |
1296
+ | `RTE.ask<R>()` | Get dependencies |
1297
+ | `RTE.fromTaskEither(te)` | Lift TaskEither |
1298
+ | `RTE.fromEither(e)` | Lift Either |
1299
+ | `RTE.fromOption(onNone)(o)` | Lift Option |
1300
+ | `RTE.flatMap(f)` | Chain operations |
1301
+ | `RTE.map(f)` | Transform success |
1302
+ | `RTE.mapLeft(f)` | Transform error |
1303
+ | `RTE.tap(f)` | Side effect on success |
1304
+ | `RTE.tapError(f)` | Side effect on error |
1305
+ | `RTE.orElse(f)` | Recover from error |
1306
+ | `RTE.getOrElse(f)` | Extract with fallback |
1307
+
1308
+ ### Service Template
1309
+
1310
+ ```typescript
1311
+ // Template for a new service
1312
+ import * as RTE from 'fp-ts/ReaderTaskEither'
1313
+ import { pipe } from 'fp-ts/function'
1314
+
1315
+ type MyServiceDeps = {
1316
+ db: DatabaseClient
1317
+ // ... other dependencies
1318
+ }
1319
+
1320
+ type MyServiceError =
1321
+ | { _tag: 'NotFound'; id: string }
1322
+ | { _tag: 'ValidationFailed'; reason: string }
1323
+
1324
+ export const myOperation = (
1325
+ input: Input
1326
+ ): RTE.ReaderTaskEither<MyServiceDeps, MyServiceError, Output> =>
1327
+ pipe(
1328
+ RTE.ask<MyServiceDeps>(),
1329
+ RTE.flatMap(deps =>
1330
+ // Your implementation here
1331
+ RTE.right(output)
1332
+ )
1333
+ )
1334
+ ```