agim-cli 1.2.147 → 1.2.148

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 (347) hide show
  1. package/CHANGELOG.md +58 -0
  2. package/dist/core/skills/builtin/ECC_LICENSE +21 -0
  3. package/dist/core/skills/builtin/ECC_NOTICE.md +22 -0
  4. package/dist/core/skills/builtin/accessibility/SKILL.md +146 -0
  5. package/dist/core/skills/builtin/agent-eval/SKILL.md +145 -0
  6. package/dist/core/skills/builtin/agent-harness-construction/SKILL.md +73 -0
  7. package/dist/core/skills/builtin/agent-introspection-debugging/SKILL.md +153 -0
  8. package/dist/core/skills/builtin/agentic-engineering/SKILL.md +63 -0
  9. package/dist/core/skills/builtin/ai-first-engineering/SKILL.md +51 -0
  10. package/dist/core/skills/builtin/ai-regression-testing/SKILL.md +385 -0
  11. package/dist/core/skills/builtin/android-clean-architecture/SKILL.md +339 -0
  12. package/dist/core/skills/builtin/angular-developer/SKILL.md +154 -0
  13. package/dist/core/skills/builtin/angular-developer/references/angular-animations.md +160 -0
  14. package/dist/core/skills/builtin/angular-developer/references/angular-aria.md +410 -0
  15. package/dist/core/skills/builtin/angular-developer/references/cli.md +86 -0
  16. package/dist/core/skills/builtin/angular-developer/references/component-harnesses.md +59 -0
  17. package/dist/core/skills/builtin/angular-developer/references/component-styling.md +91 -0
  18. package/dist/core/skills/builtin/angular-developer/references/components.md +117 -0
  19. package/dist/core/skills/builtin/angular-developer/references/creating-services.md +97 -0
  20. package/dist/core/skills/builtin/angular-developer/references/data-resolvers.md +69 -0
  21. package/dist/core/skills/builtin/angular-developer/references/define-routes.md +67 -0
  22. package/dist/core/skills/builtin/angular-developer/references/defining-providers.md +72 -0
  23. package/dist/core/skills/builtin/angular-developer/references/di-fundamentals.md +120 -0
  24. package/dist/core/skills/builtin/angular-developer/references/e2e-testing.md +56 -0
  25. package/dist/core/skills/builtin/angular-developer/references/effects.md +83 -0
  26. package/dist/core/skills/builtin/angular-developer/references/hierarchical-injectors.md +43 -0
  27. package/dist/core/skills/builtin/angular-developer/references/host-elements.md +80 -0
  28. package/dist/core/skills/builtin/angular-developer/references/injection-context.md +63 -0
  29. package/dist/core/skills/builtin/angular-developer/references/inputs.md +101 -0
  30. package/dist/core/skills/builtin/angular-developer/references/linked-signal.md +59 -0
  31. package/dist/core/skills/builtin/angular-developer/references/loading-strategies.md +61 -0
  32. package/dist/core/skills/builtin/angular-developer/references/mcp.md +108 -0
  33. package/dist/core/skills/builtin/angular-developer/references/navigate-to-routes.md +69 -0
  34. package/dist/core/skills/builtin/angular-developer/references/outputs.md +86 -0
  35. package/dist/core/skills/builtin/angular-developer/references/reactive-forms.md +122 -0
  36. package/dist/core/skills/builtin/angular-developer/references/rendering-strategies.md +44 -0
  37. package/dist/core/skills/builtin/angular-developer/references/resource.md +77 -0
  38. package/dist/core/skills/builtin/angular-developer/references/route-animations.md +56 -0
  39. package/dist/core/skills/builtin/angular-developer/references/route-guards.md +52 -0
  40. package/dist/core/skills/builtin/angular-developer/references/router-lifecycle.md +45 -0
  41. package/dist/core/skills/builtin/angular-developer/references/router-testing.md +87 -0
  42. package/dist/core/skills/builtin/angular-developer/references/show-routes-with-outlets.md +68 -0
  43. package/dist/core/skills/builtin/angular-developer/references/signal-forms.md +795 -0
  44. package/dist/core/skills/builtin/angular-developer/references/signals-overview.md +94 -0
  45. package/dist/core/skills/builtin/angular-developer/references/tailwind-css.md +69 -0
  46. package/dist/core/skills/builtin/angular-developer/references/template-driven-forms.md +114 -0
  47. package/dist/core/skills/builtin/angular-developer/references/testing-fundamentals.md +65 -0
  48. package/dist/core/skills/builtin/api-connector-builder/SKILL.md +120 -0
  49. package/dist/core/skills/builtin/api-design/SKILL.md +523 -0
  50. package/dist/core/skills/builtin/architecture-decision-records/SKILL.md +179 -0
  51. package/dist/core/skills/builtin/article-writing/SKILL.md +79 -0
  52. package/dist/core/skills/builtin/automation-audit-ops/SKILL.md +142 -0
  53. package/dist/core/skills/builtin/autonomous-agent-harness/SKILL.md +273 -0
  54. package/dist/core/skills/builtin/autonomous-loops/SKILL.md +610 -0
  55. package/dist/core/skills/builtin/backend-patterns/SKILL.md +561 -0
  56. package/dist/core/skills/builtin/benchmark/SKILL.md +93 -0
  57. package/dist/core/skills/builtin/benchmark-optimization-loop/SKILL.md +69 -0
  58. package/dist/core/skills/builtin/blueprint/SKILL.md +105 -0
  59. package/dist/core/skills/builtin/browser-qa/SKILL.md +87 -0
  60. package/dist/core/skills/builtin/bun-runtime/SKILL.md +84 -0
  61. package/dist/core/skills/builtin/cisco-ios-patterns/SKILL.md +163 -0
  62. package/dist/core/skills/builtin/claude-devfleet/SKILL.md +111 -0
  63. package/dist/core/skills/builtin/click-path-audit/SKILL.md +244 -0
  64. package/dist/core/skills/builtin/clickhouse-io/SKILL.md +439 -0
  65. package/dist/core/skills/builtin/code-tour/SKILL.md +236 -0
  66. package/dist/core/skills/builtin/codebase-onboarding/SKILL.md +233 -0
  67. package/dist/core/skills/builtin/codehealth-mcp/SKILL.md +166 -0
  68. package/dist/core/skills/builtin/coding-standards/SKILL.md +550 -0
  69. package/dist/core/skills/builtin/compose-multiplatform-patterns/SKILL.md +299 -0
  70. package/dist/core/skills/builtin/config-gc/SKILL.md +119 -0
  71. package/dist/core/skills/builtin/content-hash-cache-pattern/SKILL.md +161 -0
  72. package/dist/core/skills/builtin/context-budget/SKILL.md +135 -0
  73. package/dist/core/skills/builtin/continuous-agent-loop/SKILL.md +45 -0
  74. package/dist/core/skills/builtin/continuous-learning/SKILL.md +131 -0
  75. package/dist/core/skills/builtin/continuous-learning/config.json +18 -0
  76. package/dist/core/skills/builtin/continuous-learning/evaluate-session.sh +69 -0
  77. package/dist/core/skills/builtin/continuous-learning-v2/SKILL.md +360 -0
  78. package/dist/core/skills/builtin/continuous-learning-v2/agents/observer-loop.sh +335 -0
  79. package/dist/core/skills/builtin/continuous-learning-v2/agents/observer.md +198 -0
  80. package/dist/core/skills/builtin/continuous-learning-v2/agents/session-guardian.sh +150 -0
  81. package/dist/core/skills/builtin/continuous-learning-v2/agents/start-observer.sh +248 -0
  82. package/dist/core/skills/builtin/continuous-learning-v2/config.json +8 -0
  83. package/dist/core/skills/builtin/continuous-learning-v2/hooks/observe.sh +498 -0
  84. package/dist/core/skills/builtin/continuous-learning-v2/scripts/detect-project.sh +322 -0
  85. package/dist/core/skills/builtin/continuous-learning-v2/scripts/instinct-cli.py +1914 -0
  86. package/dist/core/skills/builtin/continuous-learning-v2/scripts/lib/homunculus-dir.sh +31 -0
  87. package/dist/core/skills/builtin/continuous-learning-v2/scripts/migrate-homunculus.sh +62 -0
  88. package/dist/core/skills/builtin/continuous-learning-v2/scripts/test_parse_instinct.py +1045 -0
  89. package/dist/core/skills/builtin/cost-aware-llm-pipeline/SKILL.md +183 -0
  90. package/dist/core/skills/builtin/cost-tracking/SKILL.md +147 -0
  91. package/dist/core/skills/builtin/council/SKILL.md +203 -0
  92. package/dist/core/skills/builtin/cpp-coding-standards/SKILL.md +723 -0
  93. package/dist/core/skills/builtin/cpp-testing/SKILL.md +324 -0
  94. package/dist/core/skills/builtin/crosspost/SKILL.md +111 -0
  95. package/dist/core/skills/builtin/csharp-testing/SKILL.md +321 -0
  96. package/dist/core/skills/builtin/customs-trade-compliance/SKILL.md +263 -0
  97. package/dist/core/skills/builtin/dart-flutter-patterns/SKILL.md +563 -0
  98. package/dist/core/skills/builtin/dashboard-builder/SKILL.md +108 -0
  99. package/dist/core/skills/builtin/data-scraper-agent/SKILL.md +764 -0
  100. package/dist/core/skills/builtin/data-throughput-accelerator/SKILL.md +72 -0
  101. package/dist/core/skills/builtin/database-migrations/SKILL.md +429 -0
  102. package/dist/core/skills/builtin/deep-research/SKILL.md +159 -0
  103. package/dist/core/skills/builtin/defi-amm-security/SKILL.md +166 -0
  104. package/dist/core/skills/builtin/deployment-patterns/SKILL.md +427 -0
  105. package/dist/core/skills/builtin/design-system/SKILL.md +82 -0
  106. package/dist/core/skills/builtin/django-celery/SKILL.md +457 -0
  107. package/dist/core/skills/builtin/django-patterns/SKILL.md +734 -0
  108. package/dist/core/skills/builtin/django-security/SKILL.md +593 -0
  109. package/dist/core/skills/builtin/django-tdd/SKILL.md +729 -0
  110. package/dist/core/skills/builtin/django-verification/SKILL.md +469 -0
  111. package/dist/core/skills/builtin/dmux-workflows/SKILL.md +191 -0
  112. package/dist/core/skills/builtin/docker-patterns/SKILL.md +364 -0
  113. package/dist/core/skills/builtin/documentation-lookup/SKILL.md +90 -0
  114. package/dist/core/skills/builtin/dotnet-patterns/SKILL.md +321 -0
  115. package/dist/core/skills/builtin/dynamic-workflow-mode/SKILL.md +123 -0
  116. package/dist/core/skills/builtin/e2e-testing/SKILL.md +326 -0
  117. package/dist/core/skills/builtin/email-ops/SKILL.md +121 -0
  118. package/dist/core/skills/builtin/energy-procurement/SKILL.md +228 -0
  119. package/dist/core/skills/builtin/enterprise-agent-ops/SKILL.md +50 -0
  120. package/dist/core/skills/builtin/error-handling/SKILL.md +376 -0
  121. package/dist/core/skills/builtin/eval-harness/SKILL.md +270 -0
  122. package/dist/core/skills/builtin/evm-token-decimals/SKILL.md +130 -0
  123. package/dist/core/skills/builtin/exa-search/SKILL.md +107 -0
  124. package/dist/core/skills/builtin/fal-ai-media/SKILL.md +288 -0
  125. package/dist/core/skills/builtin/fastapi-patterns/SKILL.md +513 -0
  126. package/dist/core/skills/builtin/finance-billing-ops/SKILL.md +127 -0
  127. package/dist/core/skills/builtin/flox-environments/SKILL.md +496 -0
  128. package/dist/core/skills/builtin/flutter-dart-code-review/SKILL.md +435 -0
  129. package/dist/core/skills/builtin/foundation-models-on-device/SKILL.md +243 -0
  130. package/dist/core/skills/builtin/frontend-a11y/SKILL.md +445 -0
  131. package/dist/core/skills/builtin/frontend-design-direction/SKILL.md +92 -0
  132. package/dist/core/skills/builtin/frontend-patterns/SKILL.md +656 -0
  133. package/dist/core/skills/builtin/frontend-slides/SKILL.md +184 -0
  134. package/dist/core/skills/builtin/frontend-slides/STYLE_PRESETS.md +330 -0
  135. package/dist/core/skills/builtin/frontend-slides/animation-patterns.md +122 -0
  136. package/dist/core/skills/builtin/frontend-slides/html-template.md +419 -0
  137. package/dist/core/skills/builtin/frontend-slides/scripts/export-pdf.sh +418 -0
  138. package/dist/core/skills/builtin/frontend-slides/scripts/extract-pptx.py +96 -0
  139. package/dist/core/skills/builtin/frontend-slides/viewport-base.css +153 -0
  140. package/dist/core/skills/builtin/fsharp-testing/SKILL.md +280 -0
  141. package/dist/core/skills/builtin/gan-style-harness/SKILL.md +278 -0
  142. package/dist/core/skills/builtin/gateguard/SKILL.md +132 -0
  143. package/dist/core/skills/builtin/git-workflow/SKILL.md +715 -0
  144. package/dist/core/skills/builtin/github-ops/SKILL.md +144 -0
  145. package/dist/core/skills/builtin/golang-patterns/SKILL.md +674 -0
  146. package/dist/core/skills/builtin/golang-testing/SKILL.md +720 -0
  147. package/dist/core/skills/builtin/healthcare-cdss-patterns/SKILL.md +245 -0
  148. package/dist/core/skills/builtin/healthcare-emr-patterns/SKILL.md +159 -0
  149. package/dist/core/skills/builtin/healthcare-eval-harness/SKILL.md +207 -0
  150. package/dist/core/skills/builtin/healthcare-phi-compliance/SKILL.md +145 -0
  151. package/dist/core/skills/builtin/hermes-imports/SKILL.md +88 -0
  152. package/dist/core/skills/builtin/hexagonal-architecture/SKILL.md +276 -0
  153. package/dist/core/skills/builtin/hipaa-compliance/SKILL.md +78 -0
  154. package/dist/core/skills/builtin/hookify-rules/SKILL.md +128 -0
  155. package/dist/core/skills/builtin/inherit-legacy-style/SKILL.md +156 -0
  156. package/dist/core/skills/builtin/intent-driven-development/SKILL.md +360 -0
  157. package/dist/core/skills/builtin/inventory-demand-planning/SKILL.md +247 -0
  158. package/dist/core/skills/builtin/ios-icon-gen/SKILL.md +157 -0
  159. package/dist/core/skills/builtin/ios-icon-gen/scripts/generate_icons.swift +258 -0
  160. package/dist/core/skills/builtin/ios-icon-gen/scripts/iconify_gen.sh +235 -0
  161. package/dist/core/skills/builtin/iterative-retrieval/SKILL.md +211 -0
  162. package/dist/core/skills/builtin/java-coding-standards/SKILL.md +383 -0
  163. package/dist/core/skills/builtin/jira-integration/SKILL.md +302 -0
  164. package/dist/core/skills/builtin/jpa-patterns/SKILL.md +151 -0
  165. package/dist/core/skills/builtin/knowledge-ops/SKILL.md +154 -0
  166. package/dist/core/skills/builtin/kotlin-coroutines-flows/SKILL.md +284 -0
  167. package/dist/core/skills/builtin/kotlin-exposed-patterns/SKILL.md +719 -0
  168. package/dist/core/skills/builtin/kotlin-ktor-patterns/SKILL.md +689 -0
  169. package/dist/core/skills/builtin/kotlin-patterns/SKILL.md +711 -0
  170. package/dist/core/skills/builtin/kotlin-testing/SKILL.md +824 -0
  171. package/dist/core/skills/builtin/kubernetes-patterns/SKILL.md +755 -0
  172. package/dist/core/skills/builtin/laravel-patterns/SKILL.md +415 -0
  173. package/dist/core/skills/builtin/laravel-plugin-discovery/SKILL.md +229 -0
  174. package/dist/core/skills/builtin/laravel-security/SKILL.md +947 -0
  175. package/dist/core/skills/builtin/laravel-tdd/SKILL.md +674 -0
  176. package/dist/core/skills/builtin/laravel-verification/SKILL.md +179 -0
  177. package/dist/core/skills/builtin/latency-critical-systems/SKILL.md +73 -0
  178. package/dist/core/skills/builtin/lead-intelligence/SKILL.md +321 -0
  179. package/dist/core/skills/builtin/lead-intelligence/agents/enrichment-agent.md +85 -0
  180. package/dist/core/skills/builtin/lead-intelligence/agents/mutual-mapper.md +75 -0
  181. package/dist/core/skills/builtin/lead-intelligence/agents/outreach-drafter.md +98 -0
  182. package/dist/core/skills/builtin/lead-intelligence/agents/signal-scorer.md +60 -0
  183. package/dist/core/skills/builtin/liquid-glass-design/SKILL.md +279 -0
  184. package/dist/core/skills/builtin/llm-trading-agent-security/SKILL.md +146 -0
  185. package/dist/core/skills/builtin/logistics-exception-management/SKILL.md +222 -0
  186. package/dist/core/skills/builtin/make-interfaces-feel-better/SKILL.md +151 -0
  187. package/dist/core/skills/builtin/market-research/SKILL.md +75 -0
  188. package/dist/core/skills/builtin/marketing-campaign/SKILL.md +113 -0
  189. package/dist/core/skills/builtin/mcp-server-patterns/SKILL.md +69 -0
  190. package/dist/core/skills/builtin/messages-ops/SKILL.md +104 -0
  191. package/dist/core/skills/builtin/mle-workflow/SKILL.md +346 -0
  192. package/dist/core/skills/builtin/motion-advanced/SKILL.md +596 -0
  193. package/dist/core/skills/builtin/motion-foundations/SKILL.md +299 -0
  194. package/dist/core/skills/builtin/motion-patterns/SKILL.md +434 -0
  195. package/dist/core/skills/builtin/motion-ui/SKILL.md +575 -0
  196. package/dist/core/skills/builtin/mysql-patterns/SKILL.md +412 -0
  197. package/dist/core/skills/builtin/nanoclaw-repl/SKILL.md +33 -0
  198. package/dist/core/skills/builtin/nestjs-patterns/SKILL.md +230 -0
  199. package/dist/core/skills/builtin/netmiko-ssh-automation/SKILL.md +173 -0
  200. package/dist/core/skills/builtin/network-bgp-diagnostics/SKILL.md +167 -0
  201. package/dist/core/skills/builtin/network-config-validation/SKILL.md +210 -0
  202. package/dist/core/skills/builtin/network-interface-health/SKILL.md +152 -0
  203. package/dist/core/skills/builtin/nextjs-turbopack/SKILL.md +57 -0
  204. package/dist/core/skills/builtin/nodejs-keccak256/SKILL.md +102 -0
  205. package/dist/core/skills/builtin/nutrient-document-processing/SKILL.md +167 -0
  206. package/dist/core/skills/builtin/nuxt4-patterns/SKILL.md +100 -0
  207. package/dist/core/skills/builtin/openclaw-persona-forge/SKILL.md +288 -0
  208. package/dist/core/skills/builtin/openclaw-persona-forge/gacha.py +224 -0
  209. package/dist/core/skills/builtin/openclaw-persona-forge/gacha.sh +5 -0
  210. package/dist/core/skills/builtin/openclaw-persona-forge/references/avatar-style.md +124 -0
  211. package/dist/core/skills/builtin/openclaw-persona-forge/references/boundary-rules.md +53 -0
  212. package/dist/core/skills/builtin/openclaw-persona-forge/references/error-handling.md +53 -0
  213. package/dist/core/skills/builtin/openclaw-persona-forge/references/identity-tension.md +48 -0
  214. package/dist/core/skills/builtin/openclaw-persona-forge/references/naming-system.md +39 -0
  215. package/dist/core/skills/builtin/openclaw-persona-forge/references/output-template.md +166 -0
  216. package/dist/core/skills/builtin/opensource-pipeline/SKILL.md +255 -0
  217. package/dist/core/skills/builtin/orch-add-feature/SKILL.md +44 -0
  218. package/dist/core/skills/builtin/orch-build-mvp/SKILL.md +48 -0
  219. package/dist/core/skills/builtin/orch-change-feature/SKILL.md +42 -0
  220. package/dist/core/skills/builtin/orch-fix-defect/SKILL.md +42 -0
  221. package/dist/core/skills/builtin/orch-pipeline/SKILL.md +120 -0
  222. package/dist/core/skills/builtin/orch-refine-code/SKILL.md +43 -0
  223. package/dist/core/skills/builtin/parallel-execution-optimizer/SKILL.md +72 -0
  224. package/dist/core/skills/builtin/perl-patterns/SKILL.md +504 -0
  225. package/dist/core/skills/builtin/perl-security/SKILL.md +503 -0
  226. package/dist/core/skills/builtin/perl-testing/SKILL.md +475 -0
  227. package/dist/core/skills/builtin/plan-orchestrate/SKILL.md +262 -0
  228. package/dist/core/skills/builtin/plankton-code-quality/SKILL.md +236 -0
  229. package/dist/core/skills/builtin/postgres-patterns/SKILL.md +147 -0
  230. package/dist/core/skills/builtin/prediction-market-oracle-research/SKILL.md +63 -0
  231. package/dist/core/skills/builtin/prediction-market-risk-review/SKILL.md +60 -0
  232. package/dist/core/skills/builtin/prisma-patterns/SKILL.md +371 -0
  233. package/dist/core/skills/builtin/product-capability/SKILL.md +141 -0
  234. package/dist/core/skills/builtin/product-lens/SKILL.md +92 -0
  235. package/dist/core/skills/builtin/production-audit/SKILL.md +206 -0
  236. package/dist/core/skills/builtin/production-scheduling/SKILL.md +238 -0
  237. package/dist/core/skills/builtin/prompt-optimizer/SKILL.md +398 -0
  238. package/dist/core/skills/builtin/python-patterns/SKILL.md +750 -0
  239. package/dist/core/skills/builtin/python-testing/SKILL.md +816 -0
  240. package/dist/core/skills/builtin/pytorch-patterns/SKILL.md +396 -0
  241. package/dist/core/skills/builtin/quality-nonconformance/SKILL.md +260 -0
  242. package/dist/core/skills/builtin/quarkus-patterns/SKILL.md +722 -0
  243. package/dist/core/skills/builtin/quarkus-security/SKILL.md +467 -0
  244. package/dist/core/skills/builtin/quarkus-tdd/SKILL.md +811 -0
  245. package/dist/core/skills/builtin/quarkus-verification/SKILL.md +479 -0
  246. package/dist/core/skills/builtin/ralphinho-rfc-pipeline/SKILL.md +67 -0
  247. package/dist/core/skills/builtin/react-patterns/SKILL.md +341 -0
  248. package/dist/core/skills/builtin/react-performance/SKILL.md +574 -0
  249. package/dist/core/skills/builtin/react-testing/SKILL.md +423 -0
  250. package/dist/core/skills/builtin/recsys-pipeline-architect/SKILL.md +114 -0
  251. package/dist/core/skills/builtin/recursive-decision-ledger/SKILL.md +79 -0
  252. package/dist/core/skills/builtin/redis-patterns/SKILL.md +403 -0
  253. package/dist/core/skills/builtin/regex-vs-llm-structured-text/SKILL.md +220 -0
  254. package/dist/core/skills/builtin/repo-scan/SKILL.md +78 -0
  255. package/dist/core/skills/builtin/research-ops/SKILL.md +112 -0
  256. package/dist/core/skills/builtin/returns-reverse-logistics/SKILL.md +240 -0
  257. package/dist/core/skills/builtin/rules-distill/SKILL.md +264 -0
  258. package/dist/core/skills/builtin/rules-distill/scripts/scan-rules.sh +58 -0
  259. package/dist/core/skills/builtin/rules-distill/scripts/scan-skills.sh +129 -0
  260. package/dist/core/skills/builtin/rust-patterns/SKILL.md +499 -0
  261. package/dist/core/skills/builtin/rust-testing/SKILL.md +500 -0
  262. package/dist/core/skills/builtin/safety-guard/SKILL.md +75 -0
  263. package/dist/core/skills/builtin/santa-method/SKILL.md +306 -0
  264. package/dist/core/skills/builtin/scientific-db-pubmed-database/SKILL.md +175 -0
  265. package/dist/core/skills/builtin/scientific-db-uspto-database/SKILL.md +177 -0
  266. package/dist/core/skills/builtin/scientific-pkg-gget/SKILL.md +166 -0
  267. package/dist/core/skills/builtin/scientific-thinking-literature-review/SKILL.md +192 -0
  268. package/dist/core/skills/builtin/scientific-thinking-scholar-evaluation/SKILL.md +160 -0
  269. package/dist/core/skills/builtin/search-first/SKILL.md +182 -0
  270. package/dist/core/skills/builtin/security-bounty-hunter/SKILL.md +99 -0
  271. package/dist/core/skills/builtin/security-review/SKILL.md +503 -0
  272. package/dist/core/skills/builtin/security-review/cloud-infrastructure-security.md +361 -0
  273. package/dist/core/skills/builtin/security-scan/SKILL.md +165 -0
  274. package/dist/core/skills/builtin/seo/SKILL.md +154 -0
  275. package/dist/core/skills/builtin/skill-comply/SKILL.md +58 -0
  276. package/dist/core/skills/builtin/skill-comply/fixtures/compliant_trace.jsonl +5 -0
  277. package/dist/core/skills/builtin/skill-comply/fixtures/noncompliant_trace.jsonl +3 -0
  278. package/dist/core/skills/builtin/skill-comply/fixtures/tdd_spec.yaml +44 -0
  279. package/dist/core/skills/builtin/skill-comply/prompts/classifier.md +24 -0
  280. package/dist/core/skills/builtin/skill-comply/prompts/scenario_generator.md +62 -0
  281. package/dist/core/skills/builtin/skill-comply/prompts/spec_generator.md +42 -0
  282. package/dist/core/skills/builtin/skill-comply/pyproject.toml +15 -0
  283. package/dist/core/skills/builtin/skill-comply/scripts/__init__.py +0 -0
  284. package/dist/core/skills/builtin/skill-comply/scripts/classifier.py +85 -0
  285. package/dist/core/skills/builtin/skill-comply/scripts/grader.py +124 -0
  286. package/dist/core/skills/builtin/skill-comply/scripts/parser.py +107 -0
  287. package/dist/core/skills/builtin/skill-comply/scripts/report.py +170 -0
  288. package/dist/core/skills/builtin/skill-comply/scripts/run.py +127 -0
  289. package/dist/core/skills/builtin/skill-comply/scripts/runner.py +186 -0
  290. package/dist/core/skills/builtin/skill-comply/scripts/scenario_generator.py +70 -0
  291. package/dist/core/skills/builtin/skill-comply/scripts/spec_generator.py +72 -0
  292. package/dist/core/skills/builtin/skill-comply/scripts/utils.py +13 -0
  293. package/dist/core/skills/builtin/skill-comply/tests/test_grader.py +197 -0
  294. package/dist/core/skills/builtin/skill-comply/tests/test_parser.py +90 -0
  295. package/dist/core/skills/builtin/skill-comply/tests/test_runner.py +172 -0
  296. package/dist/core/skills/builtin/skill-scout/SKILL.md +140 -0
  297. package/dist/core/skills/builtin/skill-stocktake/SKILL.md +194 -0
  298. package/dist/core/skills/builtin/skill-stocktake/scripts/quick-diff.sh +87 -0
  299. package/dist/core/skills/builtin/skill-stocktake/scripts/save-results.sh +56 -0
  300. package/dist/core/skills/builtin/skill-stocktake/scripts/scan.sh +170 -0
  301. package/dist/core/skills/builtin/springboot-patterns/SKILL.md +314 -0
  302. package/dist/core/skills/builtin/springboot-security/SKILL.md +272 -0
  303. package/dist/core/skills/builtin/springboot-tdd/SKILL.md +158 -0
  304. package/dist/core/skills/builtin/springboot-verification/SKILL.md +231 -0
  305. package/dist/core/skills/builtin/strategic-compact/SKILL.md +135 -0
  306. package/dist/core/skills/builtin/swift-actor-persistence/SKILL.md +143 -0
  307. package/dist/core/skills/builtin/swift-concurrency-6-2/SKILL.md +216 -0
  308. package/dist/core/skills/builtin/swift-protocol-di-testing/SKILL.md +190 -0
  309. package/dist/core/skills/builtin/swiftui-patterns/SKILL.md +259 -0
  310. package/dist/core/skills/builtin/tdd-workflow/SKILL.md +463 -0
  311. package/dist/core/skills/builtin/team-agent-orchestration/SKILL.md +110 -0
  312. package/dist/core/skills/builtin/team-builder/SKILL.md +168 -0
  313. package/dist/core/skills/builtin/terminal-ops/SKILL.md +109 -0
  314. package/dist/core/skills/builtin/tinystruct-patterns/SKILL.md +203 -0
  315. package/dist/core/skills/builtin/tinystruct-patterns/references/architecture.md +90 -0
  316. package/dist/core/skills/builtin/tinystruct-patterns/references/data-handling.md +60 -0
  317. package/dist/core/skills/builtin/tinystruct-patterns/references/database.md +99 -0
  318. package/dist/core/skills/builtin/tinystruct-patterns/references/routing.md +64 -0
  319. package/dist/core/skills/builtin/tinystruct-patterns/references/system-usage.md +97 -0
  320. package/dist/core/skills/builtin/tinystruct-patterns/references/testing.md +72 -0
  321. package/dist/core/skills/builtin/token-budget-advisor/SKILL.md +133 -0
  322. package/dist/core/skills/builtin/ui-demo/SKILL.md +465 -0
  323. package/dist/core/skills/builtin/ui-to-vue/SKILL.md +134 -0
  324. package/dist/core/skills/builtin/uncloud/SKILL.md +343 -0
  325. package/dist/core/skills/builtin/unified-notifications-ops/SKILL.md +187 -0
  326. package/dist/core/skills/builtin/verification-loop/SKILL.md +126 -0
  327. package/dist/core/skills/builtin/video-editing/SKILL.md +310 -0
  328. package/dist/core/skills/builtin/videodb/SKILL.md +374 -0
  329. package/dist/core/skills/builtin/videodb/reference/api-reference.md +550 -0
  330. package/dist/core/skills/builtin/videodb/reference/capture-reference.md +407 -0
  331. package/dist/core/skills/builtin/videodb/reference/capture.md +101 -0
  332. package/dist/core/skills/builtin/videodb/reference/editor.md +443 -0
  333. package/dist/core/skills/builtin/videodb/reference/generative.md +331 -0
  334. package/dist/core/skills/builtin/videodb/reference/rtstream-reference.md +564 -0
  335. package/dist/core/skills/builtin/videodb/reference/rtstream.md +65 -0
  336. package/dist/core/skills/builtin/videodb/reference/search.md +230 -0
  337. package/dist/core/skills/builtin/videodb/reference/streaming.md +406 -0
  338. package/dist/core/skills/builtin/videodb/reference/use-cases.md +118 -0
  339. package/dist/core/skills/builtin/videodb/scripts/ws_listener.py +282 -0
  340. package/dist/core/skills/builtin/visa-doc-translate/README.md +86 -0
  341. package/dist/core/skills/builtin/visa-doc-translate/SKILL.md +117 -0
  342. package/dist/core/skills/builtin/vite-patterns/SKILL.md +449 -0
  343. package/dist/core/skills/builtin/windows-desktop-e2e/SKILL.md +887 -0
  344. package/dist/core/skills/builtin/x-api/SKILL.md +234 -0
  345. package/dist/core/skills/loader.js +11 -0
  346. package/dist/core/skills/loader.js.map +1 -1
  347. package/package.json +1 -1
@@ -0,0 +1,63 @@
1
+ ---
2
+ name: prediction-market-oracle-research
3
+ description: [ECC] Research prediction markets as data sources or oracle signals for products, agents, dashboards, and corporate decision intelligence. Use for source-grounded analysis of market-implied probabilities, caveats, and integration patterns without investment advice.
4
+ origin: ECC
5
+ ---
6
+
7
+ # Prediction Market Oracle Research
8
+
9
+ Use this skill when prediction markets are being considered as a data source,
10
+ forecasting input, oracle-like signal, or decision-intelligence layer.
11
+
12
+ ## Guardrails
13
+
14
+ - Do not treat market prices as objective truth.
15
+ - Do not provide investment advice or trading recommendations.
16
+ - Separate venue mechanics, liquidity, incentives, and resolution rules from the
17
+ implied signal.
18
+ - Call out manipulation, thin liquidity, stale markets, and ambiguous outcomes.
19
+ - For on-chain or execution-linked systems, run `llm-trading-agent-security`
20
+ before granting any write authority.
21
+
22
+ ## Research Workflow
23
+
24
+ 1. Define the decision the signal is meant to inform.
25
+ 2. Find relevant markets, events, tags, and venues.
26
+ 3. Record market-implied probabilities with timestamps and source links.
27
+ 4. Evaluate signal quality:
28
+ - liquidity
29
+ - spread
30
+ - market age
31
+ - trader/incentive concentration if known
32
+ - resolution authority
33
+ - geography or account restrictions
34
+ 5. Compare against non-market sources such as filings, news, polls, research,
35
+ customer data, or internal KPIs.
36
+ 6. Recommend whether the signal is usable, weak, or unsuitable for the stated
37
+ decision.
38
+
39
+ ## Integration Patterns
40
+
41
+ - Research assistant: source-grounded context for a human analyst.
42
+ - Dashboard signal: market-implied probability alongside internal metrics.
43
+ - Agent memory input: a time-stamped signal that can be retrieved later.
44
+ - Alerting input: notify when probabilities, spreads, or liquidity cross a
45
+ threshold.
46
+ - Scenario planning: compare multiple event outcomes without automating trades.
47
+
48
+ ## Output Contract
49
+
50
+ Use:
51
+
52
+ 1. decision context
53
+ 2. market sources
54
+ 3. signal quality
55
+ 4. comparison sources
56
+ 5. integration recommendation
57
+ 6. caveats
58
+
59
+ End with:
60
+
61
+ ```text
62
+ Prediction-market signals are informational inputs, not investment advice.
63
+ ```
@@ -0,0 +1,60 @@
1
+ ---
2
+ name: prediction-market-risk-review
3
+ description: [ECC] Review prediction-market, basket, oracle, and trading-agent workflows for compliance, safety, data-quality, privacy, and execution risk. Use before any workflow handles venue auth, user portfolio data, API keys, or trade planning.
4
+ origin: ECC
5
+ ---
6
+
7
+ # Prediction Market Risk Review
8
+
9
+ Use this skill before a prediction-market workflow touches user financial
10
+ context, venue authentication, portfolio data, automation, or execution-capable
11
+ tools.
12
+
13
+ ## Review Gates
14
+
15
+ ### Advice Boundary
16
+
17
+ - Confirm the output is informational.
18
+ - Remove buy/sell/hold/size recommendations.
19
+ - Keep manual user decision points explicit.
20
+
21
+ ### Venue And Regulatory Boundary
22
+
23
+ - Identify venue terms, geography restrictions, account limits, and API rules.
24
+ - Flag betting, derivatives, securities, or commodities ambiguity for legal
25
+ review when relevant.
26
+ - Do not bypass venue restrictions or rate limits.
27
+
28
+ ### Data Quality
29
+
30
+ - Check market liquidity, spread, resolution rules, stale prices, and source
31
+ timestamps.
32
+ - Separate public venue data from Itô gated data.
33
+ - Do not mix public and private sources without labels.
34
+
35
+ ### Security
36
+
37
+ - Do not request or store private keys, seed phrases, or passwords.
38
+ - Keep `ITO_API_KEY` and venue API keys out of logs and docs.
39
+ - Use read-only scopes by default.
40
+ - Require circuit breakers, spend limits, dry runs, and human approval before
41
+ any private implementation adds execution.
42
+
43
+ ### Privacy
44
+
45
+ - Minimize user portfolio, financial, and knowledge-base data.
46
+ - Redact private sources in public artifacts.
47
+ - Preserve only the fields needed for the review.
48
+
49
+ ## Output Contract
50
+
51
+ Return:
52
+
53
+ 1. scope reviewed
54
+ 2. pass/warn/fail findings
55
+ 3. blocked actions
56
+ 4. required mitigations
57
+ 5. safe next step
58
+
59
+ If any execution-capable step is requested, require a separate implementation
60
+ plan and explicit user approval.
@@ -0,0 +1,371 @@
1
+ ---
2
+ name: prisma-patterns
3
+ description: [ECC] Prisma ORM patterns for TypeScript backends — schema design, query optimization, transactions, pagination, and critical traps like updateMany returning count not records, $transaction timeouts, migrate dev resetting the DB, @updatedAt skipped on bulk writes, and serverless connection exhaustion.
4
+ origin: ECC
5
+ ---
6
+
7
+ # Prisma Patterns
8
+
9
+ Production patterns and non-obvious traps for Prisma ORM in TypeScript backends.
10
+ Tested against Prisma 5.x and 6.x. Some behaviors differ from Prisma 4.
11
+
12
+ Check the Prisma version before applying version-specific patterns:
13
+
14
+ ```bash
15
+ npx prisma --version
16
+ ```
17
+
18
+ Prisma 5 introduced `relationJoins`, which can load relations via JOIN rather than separate queries depending on query strategy and configuration. The `omit` field modifier and `prisma.$extends` Client Extensions API were also added. Note: `relationJoins` can cause row explosion on large 1:N relations or deep nested `include` — benchmark both approaches when relations may return many rows per parent.
19
+
20
+ ## When to Activate
21
+
22
+ - Designing or modifying Prisma schema models and relations
23
+ - Writing queries, transactions, or pagination logic
24
+ - Using `updateMany`, `deleteMany`, or any bulk operation
25
+ - Running or planning database migrations
26
+ - Deploying to serverless environments (Vercel, Lambda, Cloudflare Workers)
27
+ - Implementing soft delete or multi-tenant row filtering
28
+
29
+ ## Core Concepts
30
+
31
+ ### ID Strategy
32
+
33
+ | Strategy | Use When | Avoid When |
34
+ |---|---|---|
35
+ | `@default(cuid())` | Default choice — URL-safe, sortable, no collisions | Sequential IDs needed for external systems |
36
+ | `@default(uuid())` | Interoperability with non-Prisma systems required | High-write tables (random UUIDs fragment B-tree indexes) |
37
+ | `@default(autoincrement())` | Internal join tables, audit logs | Public-facing IDs (exposes record count) |
38
+
39
+ ### Schema Defaults
40
+
41
+ ```prisma
42
+ model User {
43
+ id String @id @default(cuid())
44
+ email String @unique // @unique already creates an index — no @@index needed
45
+ name String
46
+ role Role @default(USER)
47
+ posts Post[]
48
+ createdAt DateTime @default(now())
49
+ updatedAt DateTime @updatedAt
50
+ deletedAt DateTime?
51
+
52
+ @@index([createdAt])
53
+ @@index([deletedAt, createdAt]) // composite for soft-delete + sort queries
54
+ }
55
+ ```
56
+
57
+ - Add `@@index` on every foreign key and column used in `WHERE` or `ORDER BY`.
58
+ - Declare `deletedAt DateTime?` upfront when soft delete is a foreseeable requirement — adding it later requires a migration on a live table.
59
+ - `updatedAt @updatedAt` is set automatically by Prisma on `update` and `upsert` only (see Anti-Patterns for bulk update trap).
60
+
61
+ ### `include` vs `select`
62
+
63
+ | | `include` | `select` |
64
+ |---|---|---|
65
+ | Returns | All scalar fields + specified relations | Only specified fields |
66
+ | Use when | You need most fields plus a relation | Hot paths, large tables, avoiding over-fetch |
67
+ | Performance | May over-fetch on wide tables | Minimal payload, faster on large datasets |
68
+ | Prisma 5 note | Uses JOIN by default (`relationJoins`) | Same |
69
+
70
+ ```ts
71
+ // include — all columns + relation
72
+ const user = await prisma.user.findUnique({
73
+ where: { id },
74
+ include: { posts: { select: { id: true, title: true } } },
75
+ });
76
+
77
+ // select — explicit allowlist
78
+ const user = await prisma.user.findUnique({
79
+ where: { id },
80
+ select: { id: true, email: true, name: true },
81
+ });
82
+ ```
83
+
84
+ Never return raw Prisma entities from API responses — map to response DTOs to control exposed fields:
85
+
86
+ ```ts
87
+ // BAD: leaks passwordHash, deletedAt, internal fields
88
+ return await prisma.user.findUniqueOrThrow({ where: { id } });
89
+
90
+ // GOOD: explicit DTO mapping
91
+ const user = await prisma.user.findUniqueOrThrow({ where: { id } });
92
+ return { id: user.id, name: user.name, email: user.email };
93
+ ```
94
+
95
+ ### Transaction Form Selection
96
+
97
+ | Situation | Use |
98
+ |---|---|
99
+ | Independent operations, no inter-dependency | Array form |
100
+ | Later step depends on earlier result | Interactive form |
101
+ | External calls (email, HTTP) involved | Outside transaction entirely |
102
+
103
+ ```ts
104
+ // Array form — batched in one round trip
105
+ const [user, post] = await prisma.$transaction([
106
+ prisma.user.update({ where: { id }, data: { name } }),
107
+ prisma.post.create({ data: { title, authorId: id } }),
108
+ ]);
109
+
110
+ // Interactive form — use tx client only, never the outer prisma client
111
+ const post = await prisma.$transaction(async (tx) => {
112
+ const user = await tx.user.findUniqueOrThrow({ where: { id } });
113
+ if (user.role !== 'ADMIN') throw new Error('Forbidden');
114
+ return tx.post.create({ data: { title, authorId: user.id } });
115
+ });
116
+ ```
117
+
118
+ ### PrismaClient Singleton
119
+
120
+ Each `PrismaClient` instance opens its own connection pool. Instantiate once.
121
+
122
+ ```ts
123
+ // lib/prisma.ts
124
+ import { PrismaClient } from '@prisma/client';
125
+
126
+ const globalForPrisma = globalThis as unknown as { prisma?: PrismaClient };
127
+
128
+ export const prisma =
129
+ globalForPrisma.prisma ??
130
+ new PrismaClient({
131
+ log: process.env.NODE_ENV === 'development' ? ['query', 'error'] : ['error'],
132
+ });
133
+
134
+ if (process.env.NODE_ENV !== 'production') globalForPrisma.prisma = prisma;
135
+ ```
136
+
137
+ The `globalThis` pattern prevents duplicate instances during hot reload (Next.js, nodemon, ts-node-dev).
138
+
139
+ ### N+1 Problem
140
+
141
+ Loading relations inside a loop issues one query per row.
142
+
143
+ ```ts
144
+ // BAD: N+1 — one extra query per user
145
+ const users = await prisma.user.findMany();
146
+ for (const user of users) {
147
+ const posts = await prisma.post.findMany({ where: { authorId: user.id } });
148
+ }
149
+
150
+ // GOOD: single query
151
+ const users = await prisma.user.findMany({ include: { posts: true } });
152
+ ```
153
+
154
+ With Prisma 5+ `relationJoins`, the `include` form uses a single JOIN. On large 1:N sets this may increase result set size — benchmark both approaches if the relation can return many rows per parent.
155
+
156
+ ## Code Examples
157
+
158
+ ### Cursor Pagination (preferred for feeds and large datasets)
159
+
160
+ ```ts
161
+ async function getPosts(cursor?: string, limit = 20) {
162
+ const items = await prisma.post.findMany({
163
+ where: { published: true },
164
+ orderBy: [
165
+ { createdAt: 'desc' },
166
+ { id: 'desc' }, // secondary sort prevents unstable pagination on duplicate timestamps
167
+ ],
168
+ take: limit + 1,
169
+ ...(cursor && { cursor: { id: cursor }, skip: 1 }),
170
+ });
171
+
172
+ const hasNextPage = items.length > limit;
173
+ if (hasNextPage) items.pop();
174
+
175
+ return { items, nextCursor: hasNextPage ? items[items.length - 1].id : null };
176
+ }
177
+ ```
178
+
179
+ Fetch `limit + 1` and pop — canonical way to detect `hasNextPage` without an extra count query. Always include a unique field (e.g. `id`) as a secondary `orderBy` to prevent unstable pagination when multiple rows share the same timestamp. Use offset pagination only when users need to jump to arbitrary pages (admin tables).
180
+
181
+ ### Soft Delete
182
+
183
+ ```ts
184
+ // Always filter explicitly — do not rely on middleware (hides behavior, hard to debug)
185
+ const activeUsers = await prisma.user.findMany({ where: { deletedAt: null } });
186
+
187
+ await prisma.user.update({ where: { id }, data: { deletedAt: new Date() } });
188
+ await prisma.user.update({ where: { id }, data: { deletedAt: null } }); // restore
189
+ ```
190
+
191
+ ### Error Handling
192
+
193
+ ```ts
194
+ import { Prisma } from '@prisma/client';
195
+
196
+ try {
197
+ await prisma.user.create({ data: { email } });
198
+ } catch (e) {
199
+ if (e instanceof Prisma.PrismaClientKnownRequestError) {
200
+ if (e.code === 'P2002') throw new ConflictError('Email already exists');
201
+ if (e.code === 'P2025') throw new NotFoundError('Record not found');
202
+ if (e.code === 'P2003') throw new BadRequestError('Referenced record does not exist');
203
+ }
204
+ throw e;
205
+ }
206
+ ```
207
+
208
+ Common codes: `P2002` unique violation · `P2025` not found · `P2003` foreign key violation.
209
+
210
+ Catch at the service boundary and translate to domain errors. Never expose raw Prisma messages to API consumers.
211
+
212
+ ### Connection Pool — Serverless
213
+
214
+ Embed connection params directly in `DATABASE_URL` — string concatenation breaks if the URL already has query parameters (e.g. `?schema=public`):
215
+
216
+ ```bash
217
+ # .env — preferred: embed params in the URL
218
+ DATABASE_URL="postgresql://user:pass@host/db?connection_limit=1&pool_timeout=20"
219
+
220
+ # With an external pooler (PgBouncer, Supabase pooler)
221
+ DATABASE_URL="postgresql://user:pass@host/db?pgbouncer=true&connection_limit=1"
222
+ ```
223
+
224
+ ```ts
225
+ // Vercel, AWS Lambda, and similar serverless runtimes: cap pool to 1 per instance
226
+ // connection_limit and pool_timeout are controlled via DATABASE_URL
227
+ const prisma = new PrismaClient();
228
+ ```
229
+
230
+ ## Anti-Patterns
231
+
232
+ ### `updateMany` returns a count, not records
233
+
234
+ ```ts
235
+ // BAD: result is { count: 2 } — users[0] is undefined
236
+ const users = await prisma.user.updateMany({ where: { role: 'GUEST' }, data: { role: 'USER' } });
237
+
238
+ // GOOD: capture IDs first, then update, then fetch only the affected rows
239
+ const targets = await prisma.user.findMany({
240
+ where: { role: 'GUEST' },
241
+ select: { id: true },
242
+ });
243
+ const ids = targets.map((u) => u.id);
244
+ await prisma.user.updateMany({ where: { id: { in: ids } }, data: { role: 'USER' } });
245
+ const updated = await prisma.user.findMany({ where: { id: { in: ids } } });
246
+ ```
247
+
248
+ Same applies to `deleteMany` — returns `{ count: n }`, never the deleted rows.
249
+
250
+ ### `$transaction` interactive form times out after 5 seconds
251
+
252
+ ```ts
253
+ // BAD: external call inside transaction exceeds 5s default → "Transaction already closed"
254
+ await prisma.$transaction(async (tx) => {
255
+ const user = await tx.user.findUniqueOrThrow({ where: { id } });
256
+ await sendWelcomeEmail(user.email); // external call
257
+ await tx.user.update({ where: { id }, data: { emailSent: true } });
258
+ });
259
+
260
+ // GOOD: external calls outside the transaction
261
+ const user = await prisma.user.findUniqueOrThrow({ where: { id } });
262
+ await sendWelcomeEmail(user.email);
263
+ await prisma.user.update({ where: { id }, data: { emailSent: true } });
264
+
265
+ // Only raise timeout when bulk processing genuinely needs it
266
+ await prisma.$transaction(async (tx) => { ... }, { timeout: 30_000 });
267
+ ```
268
+
269
+ ### `migrate dev` can reset the database
270
+
271
+ `migrate dev` detects schema drift and may prompt to reset the DB, dropping all data.
272
+
273
+ ```bash
274
+ # NEVER on shared dev, staging, or production
275
+ npx prisma migrate dev --name add_column
276
+
277
+ # Safe everywhere except local solo dev
278
+ npx prisma migrate deploy
279
+
280
+ # Check drift without applying
281
+ npx prisma migrate diff \
282
+ --from-migrations ./prisma/migrations \
283
+ --to-schema-datamodel ./prisma/schema.prisma \
284
+ --shadow-database-url "$SHADOW_DATABASE_URL"
285
+ ```
286
+
287
+ ### Manually editing a migration file breaks future deploys
288
+
289
+ Prisma checksums every migration file. Editing after apply causes `P3006 checksum mismatch` on every environment where the original already ran. Create a new migration instead.
290
+
291
+ ### Breaking schema changes require multi-step migration
292
+
293
+ Adding `NOT NULL` to an existing column or renaming a column in one migration will lock the table or drop data. Use expand-and-contract:
294
+
295
+ ```bash
296
+ # Step 1: create migration locally, then deploy
297
+ npx prisma migrate dev --name add_new_column # local only
298
+ npx prisma migrate deploy # staging / production
299
+ ```
300
+
301
+ ```ts
302
+ // Step 2: backfill data (run in a script or migration job, not in the shell)
303
+ await prisma.user.updateMany({ data: { newColumn: derivedValue } });
304
+ ```
305
+
306
+ ```bash
307
+ # Step 3: create the NOT NULL constraint migration locally, then deploy
308
+ npx prisma migrate dev --name make_new_column_required # local only
309
+ npx prisma migrate deploy # staging / production
310
+ ```
311
+
312
+ ### `@updatedAt` does not fire on `updateMany`
313
+
314
+ `@updatedAt` is set automatically only on `update` and `upsert`. Bulk writes leave it stale.
315
+
316
+ ```ts
317
+ // BAD: updatedAt stays at its old value
318
+ await prisma.post.updateMany({ where: { authorId }, data: { published: true } });
319
+
320
+ // GOOD
321
+ await prisma.post.updateMany({
322
+ where: { authorId },
323
+ data: { published: true, updatedAt: new Date() },
324
+ });
325
+ ```
326
+
327
+ ### Soft delete + `findUniqueOrThrow` leaks deleted records
328
+
329
+ `findUniqueOrThrow` throws `P2025` only when the row does not exist in the DB. Soft-deleted rows still exist and are returned without error.
330
+
331
+ `findUniqueOrThrow` requires a unique constraint field in `where` — adding `deletedAt: null` alongside `id` breaks the type because `{ id, deletedAt }` is not a compound unique constraint. Use `findFirstOrThrow` instead.
332
+
333
+ ```ts
334
+ // BAD: returns soft-deleted user
335
+ const user = await prisma.user.findUniqueOrThrow({ where: { id } });
336
+
337
+ // BAD: Prisma type error — { id, deletedAt } is not a unique constraint
338
+ const user = await prisma.user.findUniqueOrThrow({ where: { id, deletedAt: null } });
339
+
340
+ // GOOD: findFirstOrThrow supports arbitrary where conditions
341
+ const user = await prisma.user.findFirstOrThrow({ where: { id, deletedAt: null } });
342
+ ```
343
+
344
+ ### `deleteMany` without `where` deletes every row
345
+
346
+ ```ts
347
+ // BAD: silently wipes the table
348
+ await prisma.post.deleteMany();
349
+
350
+ // GOOD
351
+ await prisma.post.deleteMany({ where: { authorId: userId } });
352
+ ```
353
+
354
+ ## Best Practices
355
+
356
+ | Rule | Reason |
357
+ |---|---|
358
+ | `migrate deploy` in CI/CD, `migrate dev` only locally | `migrate dev` can reset the DB on drift |
359
+ | Map entities to response DTOs | Prevents leaking internal fields |
360
+ | Catch `PrismaClientKnownRequestError` at service boundary | Translate to domain errors |
361
+ | Prefer `*OrThrow` methods over manual null checks | Throws P2025 automatically; use `findFirstOrThrow` when filtering non-unique fields |
362
+ | `connection_limit=1` + external pooler in serverless | Prevents connection exhaustion |
363
+ | Always provide `where` on `deleteMany` | Prevents accidental table wipe |
364
+ | Set `updatedAt: new Date()` manually in `updateMany` | `@updatedAt` skips bulk writes |
365
+
366
+ ## Related Skills
367
+
368
+ - `nestjs-patterns` — NestJS service layer that integrates Prisma
369
+ - `postgres-patterns` — PostgreSQL-level indexing and connection tuning
370
+ - `database-migrations` — multi-step migration planning for production
371
+ - `backend-patterns` — general API and service layer design
@@ -0,0 +1,141 @@
1
+ ---
2
+ name: product-capability
3
+ description: [ECC] Translate PRD intent, roadmap asks, or product discussions into an implementation-ready capability plan that exposes constraints, invariants, interfaces, and unresolved decisions before multi-service work starts. Use when the user needs an ECC-native PRD-to-SRS lane instead of vague planning prose.
4
+ origin: ECC
5
+ ---
6
+
7
+ # Product Capability
8
+
9
+ This skill turns product intent into explicit engineering constraints.
10
+
11
+ Use it when the gap is not "what should we build?" but "what exactly must be true before implementation starts?"
12
+
13
+ ## When to Use
14
+
15
+ - A PRD, roadmap item, discussion, or founder note exists, but the implementation constraints are still implicit
16
+ - A feature crosses multiple services, repos, or teams and needs a capability contract before coding
17
+ - Product intent is clear, but architecture, data, lifecycle, or policy implications are still fuzzy
18
+ - Senior engineers keep restating the same hidden assumptions during review
19
+ - You need a reusable artifact that can survive across harnesses and sessions
20
+
21
+ ## Canonical Artifact
22
+
23
+ If the repo has a durable product-context file such as `PRODUCT.md`, `docs/product/`, or a program-spec directory, update it there.
24
+
25
+ If no capability manifest exists yet, create one using the template at:
26
+
27
+ - `docs/examples/product-capability-template.md`
28
+
29
+ The goal is not to create another planning stack. The goal is to make hidden capability constraints durable and reusable.
30
+
31
+ ## Non-Negotiable Rules
32
+
33
+ - Do not invent product truth. Mark unresolved questions explicitly.
34
+ - Separate user-visible promises from implementation details.
35
+ - Call out what is fixed policy, what is architecture preference, and what is still open.
36
+ - If the request conflicts with existing repo constraints, say so clearly instead of smoothing it over.
37
+ - Prefer one reusable capability artifact over scattered ad hoc notes.
38
+
39
+ ## Inputs
40
+
41
+ Read only what is needed:
42
+
43
+ 1. Product intent
44
+ - issue, discussion, PRD, roadmap note, founder message
45
+ 2. Current architecture
46
+ - relevant repo docs, contracts, schemas, routes, existing workflows
47
+ 3. Existing capability context
48
+ - `PRODUCT.md`, design docs, RFCs, migration notes, operating-model docs
49
+ 4. Delivery constraints
50
+ - auth, billing, compliance, rollout, backwards compatibility, performance, review policy
51
+
52
+ ## Core Workflow
53
+
54
+ ### 1. Restate the capability
55
+
56
+ Compress the ask into one precise statement:
57
+
58
+ - who the user or operator is
59
+ - what new capability exists after this ships
60
+ - what outcome changes because of it
61
+
62
+ If this statement is weak, the implementation will drift.
63
+
64
+ ### 2. Resolve capability constraints
65
+
66
+ Extract the constraints that must hold before implementation:
67
+
68
+ - business rules
69
+ - scope boundaries
70
+ - invariants
71
+ - trust boundaries
72
+ - data ownership
73
+ - lifecycle transitions
74
+ - rollout / migration requirements
75
+ - failure and recovery expectations
76
+
77
+ These are the things that often live only in senior-engineer memory.
78
+
79
+ ### 3. Define the implementation-facing contract
80
+
81
+ Produce an SRS-style capability plan with:
82
+
83
+ - capability summary
84
+ - explicit non-goals
85
+ - actors and surfaces
86
+ - required states and transitions
87
+ - interfaces / inputs / outputs
88
+ - data model implications
89
+ - security / billing / policy constraints
90
+ - observability and operator requirements
91
+ - open questions blocking implementation
92
+
93
+ ### 4. Translate into execution
94
+
95
+ End with the exact handoff:
96
+
97
+ - ready for direct implementation
98
+ - needs architecture review first
99
+ - needs product clarification first
100
+
101
+ If useful, point to the next ECC-native lane:
102
+
103
+ - `project-flow-ops`
104
+ - `workspace-surface-audit`
105
+ - `api-connector-builder`
106
+ - `dashboard-builder`
107
+ - `tdd-workflow`
108
+ - `verification-loop`
109
+
110
+ ## Output Format
111
+
112
+ Return the result in this order:
113
+
114
+ ```text
115
+ CAPABILITY
116
+ - one-paragraph restatement
117
+
118
+ CONSTRAINTS
119
+ - fixed rules, invariants, and boundaries
120
+
121
+ IMPLEMENTATION CONTRACT
122
+ - actors
123
+ - surfaces
124
+ - states and transitions
125
+ - interface/data implications
126
+
127
+ NON-GOALS
128
+ - what this lane explicitly does not own
129
+
130
+ OPEN QUESTIONS
131
+ - blockers or product decisions still required
132
+
133
+ HANDOFF
134
+ - what should happen next and which ECC lane should take it
135
+ ```
136
+
137
+ ## Good Outcomes
138
+
139
+ - Product intent is now concrete enough to implement without rediscovering hidden constraints mid-PR.
140
+ - Engineering review has a durable artifact instead of relying on memory or Slack context.
141
+ - The resulting plan is reusable across Claude Code, Codex, Cursor, OpenCode, and ECC 2.0 planning surfaces.